NOTE: cuSpatial depends on cuDF and RMM from RAPIDS.
cuSpatial supports the following operations on spatial and trajectory data:
- Spatial window query
- Point-in-polygon test
- Haversine distance
- Hausdorff distance
- Deriving trajectories from point location data
- Computing distance/speed of trajectories
- Computing spatial bounding boxes of trajectories
- Quadtree-based indexing for large-scale point data
- Quadtree-based point-in-polygon spatial join
- Quadtree-based point-to-polyline nearest neighbor distance
Future support is planned for the following operations:
- Temporal window query
- Temporal point query (year+month+day+hour+minute+second+millisecond)
- Grid-based indexing for points and polygons
- R-Tree-based indexing for Polygons/Polylines
To install via conda:
conda install -c conda-forge -c rapidsai-nightly cuspatial
To build and install cuSpatial from source:
Currently, building cuSpatial requires a source installation of cuDF. Install cuDF by following the instructions
The rest of steps assume the environment variable CUDF_HOME
points to the
root directory of your clone of the cuDF repo, and that the cudf_dev
Anaconda
environment created in step 3 is active.
-
export
CUSPATIAL_HOME=$(pwd)/cuspatial
-
clone the cuSpatial repo
git clone --recurse-submodules https://github.com/rapidsai/cuspatial.git $CUSPATIAL_HOME
-
Compile and install
Similar to cuDF (version 0.20), simply run
build.sh
diectly under$CUSPATIAL_HOME
.Note that a "build" dir is created automatically under
$CUSPATIAL_HOME/cpp
. -
Run C++/Python test code
Some tests using inline data can be run directly, e.g.:
$CUSPATIAL_HOME/cpp/build/gtests/LEGACY_HAUSDORFF_TEST $CUSPATIAL_HOME/cpp/build/gtests/POINT_IN_POLYGON_TEST python python/cuspatial/cuspatial/tests/legacy/test_hausdorff_distance.py python python/cuspatial/cuspatial/tests/test_pip.py
Some other tests involve I/O from data files under $CUSPATIAL_HOME/test_fixtures. For example, $CUSPATIAL_HOME/cpp/build/gtests/SHAPEFILE_READER_TEST requires three pre-generated polygon shapefiles that contain 0, 1 and 2 polygons, respectively. They are available at $CUSPATIAL_HOME/test_fixtures/shapefiles
NOTE: Currently, cuSpatial supports reading point/polyine/polygon data using Structure of Array (SoA) format and a shapefile reader to read polygon data from a shapefile. Alternatively, python users can read any point/polyine/polygon data using existing python packages, e.g., Shapely and Fiona,to generate numpy arrays and feed them to cuSpatial python APIs.