Giter Club home page Giter Club logo

cuspatial's Introduction

 cuSpatial - GPU-Accelerated Spatial and Trajectory Data Management and Analytics Library

Build Status

NOTE: cuSpatial depends on cuDF and RMM from RAPIDS.

Operations

cuSpatial supports the following operations on spatial and trajectory data:

  1. Spatial window query
  2. Point-in-polygon test
  3. Haversine distance
  4. Hausdorff distance
  5. Deriving trajectories from point location data
  6. Computing distance/speed of trajectories
  7. Computing spatial bounding boxes of trajectories
  8. Quadtree-based indexing for large-scale point data
  9. Quadtree-based point-in-polygon spatial join
  10. Quadtree-based point-to-polyline nearest neighbor distance

Future support is planned for the following operations:

  1. Temporal window query
  2. Temporal point query (year+month+day+hour+minute+second+millisecond)
  3. Grid-based indexing for points and polygons
  4. R-Tree-based indexing for Polygons/Polylines

Install from Conda

To install via conda:

conda install -c conda-forge -c rapidsai-nightly cuspatial

Install from Source

To build and install cuSpatial from source:

Install dependencies

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.

Clone, build and install cuSpatial

  1. export CUSPATIAL_HOME=$(pwd)/cuspatial

  2. clone the cuSpatial repo

    git clone --recurse-submodules https://github.com/rapidsai/cuspatial.git $CUSPATIAL_HOME
  3. 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.

  4. 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.

cuspatial's People

Contributors

ajschmidt8 avatar beckernick avatar charlesbluca avatar codereport avatar cwharris avatar dillon-cullinan avatar efajardo-nv avatar gputester avatar harrism avatar jakirkham avatar jjacobelli avatar jolorunyomi avatar jrhemstad avatar kkraus14 avatar mike-wendt avatar mluukkainen avatar msadang avatar randerzander avatar raydouglass avatar rlratzel avatar rnyak avatar sean-frye avatar shwina avatar taureandyernv avatar thomcom avatar trxcllnt avatar vishalmehta1991 avatar vyasr avatar weiji14 avatar zhangjianting avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.