Prerequisites
The prerequisites for running the match graph example are listed below:- Graph server enabled
- Python API
- Match graph script
- Two CSV files:
Python API Installation
Depending on the target operating system, a Python virtual environment may need to be installed first: The native Kinetica Python API is accessible through the following means:Python Virtual Environment
A Python virtual environment is necessary to install in an operating environment where Python is externally managed.-
Install a Python virtual environment:
-
Activate the Python virtual environment:
PyPI
-
Install the API:
-
Test the installation:
If Import Successful is displayed, the API has been installed as is ready for use.
Git
-
In the desired directory, run the following, but be sure to replace
<kinetica-version>with the name of the installed Kinetica version, e.g.,v7.2: -
Change directory into the newly downloaded repository:
-
In the root directory of the unzipped repository, install the Kinetica API:
-
Test the installation (Python3 is necessary for running the API example):
Data Files
The example script references two data files, as mentioned in the Prerequisites, in the current local directory, by default. This directory can specified as a parameter when running the script.Script Detail
This example is going to demonstrate matching raw GPS points to a Seattle road network, relying on timestamps to determine the start and end point of the GPS signal.Constants
Several constants are defined at the beginning of the script:-
SCHEMA— the name of the schema in which the tables supporting the graph creation and match operations will be createdThe schema is created during the table setup portion of the script because the schema must exist prior to creating the tables that will later support the graph creation and match operations. -
TABLE_SRN— the name of the table into which the Seattle road network dataset is loaded -
TABLE_GPS— the name of the table into which the raw GPS samples dataset is loaded -
TABLE_SOLUTION1/TABLE_SOLUTION2— the names of the tables into which the solutions are output -
GRAPH_S— the Seattle road network graph
Constant Definitions
Graph Creation
One graph is used for the match graph example utilized in the script:seattle_road_network_graph, a graph based on the road_weights dataset
(one of the CSV files mentioned in Prerequisites).
The seattle_road_network_graph graph is created with the following
characteristics:
- It is directed because the roads in the graph have directionality (one-way and two-way roads)
- It has no explicitly defined nodes because the example relies on implicit nodes attached to the defined edges
- The edges are identified by
WKTLINE, using WKT LINESTRINGs from theWKTLINEcolumn of theseattle_road_networktable. The road segments’ directionality (DIRECTION) is derived from theTwoWaycolumn of theseattle_road_networktable. - The weights (
VALUESPECIFIED) are represented using the time taken to travel the segment found in thetimecolumn of theseattle_road_networktable. The weights are matched to the edges using the sameWKTLINEcolumn as edges (EDGE_WKTLINE) and the sameTwoWaycolumn as the edge direction (EDGE_DIRECTION). - It has no inherent restrictions for any of the nodes or edges in the graph
- It will be replaced with this instance of the graph if a graph of the same
name exists (
recreate)
Create Seattle Road Network Graph

Matching the Graph without Fold-over Filtering
Matching to a graph typically requires another table’s worth of data. In this case, the data that will be matched to the graph will come from themm_raw_gps dataset (the other CSV file mentioned in Prerequisites). The
sample points are defined using the lon and lat columns as the X and Y
coordinates for each sample point; the datetime column is used for each
sample point’s timestamp. The time component is required for determining the
start and end points of the samples.
Match Graph to GPS Data without Fold-over Filtering
Match Graph to GPS Data without Fold-over Filtering Score

Matching the Graph with Fold-over Filtering
To demonstrate how removing fold-over paths from the match solution yields a different but more accurate score, a similar /match/graph request to the above can be made but note that removing fold-over paths, e.g., settingfilter_folding_paths to true, can increase execution time.
Match Graph to GPS Data with Fold-over Filtering
Match Graph to GPS Data with Fold-over Filtering Score
Download & Run
Included below is a complete example containing all the above requests, the data files, and output. To run the complete sample, ensure that:- the match_graph_seattle_markov.py script is in the current directory
- the road_weights.csv & mm_raw_gps.csv files are
in the current directory or use the
data_dirparameter to specify the local directory containing it
Run Example
