-
Notifications
You must be signed in to change notification settings - Fork 157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce data structure to simplify multigeometry API #703
Labels
improvement
Improvement / enhancement to an existing function
libcuspatial
Relates to the cuSpatial C++ library
Milestone
Comments
This was referenced Sep 29, 2022
harrism
changed the title
Introduce certain structure to simplify multigeometry API
Introduce data structure to simplify multigeometry API
Oct 4, 2022
3 tasks
rapids-bot bot
pushed a commit
that referenced
this issue
Oct 19, 2022
…I to support multipoint to multipoint distance. (#731) closes #704 Contributes to #703 This PR introduces `Multipoint_range` interface, and simplifies the API of `point_distance`. Also updates the `point_distance` to support multipoint-multipoint distance. Authors: - Michael Wang (https://github.com/isVoid) Approvers: - H. Thomson Comer (https://github.com/thomcom) - Mark Harris (https://github.com/harrism) URL: #731
3 tasks
rapids-bot bot
pushed a commit
that referenced
this issue
Nov 7, 2022
…nge`, adds support to multilinestring distance (#755) Note, this is the first part of `pairwise_linestring_distance` refactoring, part 1 of PR: #753 Depends on #752 Contributes to #706, #703 Closes #745 Authors: - Michael Wang (https://github.com/isVoid) Approvers: - H. Thomson Comer (https://github.com/thomcom) - Mark Harris (https://github.com/harrism) URL: #755
3 tasks
rapids-bot bot
pushed a commit
that referenced
this issue
Mar 17, 2023
…cts (#976) - Adds `multipolygon_range`, `multipolygon_ref`, `polygon_ref` as non-owning objects for geoarrow compliant polygon types. - Adds `pairwise_point_polygon_distance` to compute the shortest distances between two columns of multipoints and multipolygons. - Refactors `is_point_in_polygon` with geometry object input. Dependent on #973 since geometry objects requires geoarrow input. closes #703 Authors: - Michael Wang (https://github.com/isVoid) Approvers: - Mark Harris (https://github.com/harrism) - H. Thomson Comer (https://github.com/thomcom) URL: #976
Since the related PR lists haven't all completed. Reopening this issue. |
3 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
improvement
Improvement / enhancement to an existing function
libcuspatial
Relates to the cuSpatial C++ library
[UPDATE] 04/10/2023
Recent development added
multipoint_range
,multilinestring_range
,multipolygon_range
, which are flexible views over geometry arrays. cuspatial's API should be refactored using these data structures. For refactor demos. see:#979 (polygons argument of
quadtree_point_in_polygon
)and
https://github.com/rapidsai/cuspatial/blob/branch-23.06/cpp/include/cuspatial/experimental/linestring_distance.cuh
Original Post
As demonstrated in #677, the geometry input of the header only API can quickly get out of control for complex geometry. We should try to simplify the APIs to improve developer experience.
Device view over the physical memory of nested types
The data structure should be a view over the physical memory layouts, thus it should be cheap to construct the data structure on host, passing the structure to device and invoke the method on device.
Unlike
cudf::column_view
andcudf::column_device_view
, the data structure is completely templated (not type erased), and always assumes the view are device views.Assumes GeoArrow memory layout (#649)
The structures holds a view to offset arrays and point arrays. Offset arrays are assumed to always conform to arrow's offset array layout, which is specified in (https://arrow.apache.org/docs/format/Columnar.html#variable-size-binary-layout).
Accessors
Due to the complex nature of geometries, developers may want to support different patterns of access from the data structure.
Element-wise accessors (top-down access)
The simplest of all is element-wise accessor. A kernel is launched on a per-geometry level, accessors like
.element(idx)
should return a geometry object from the array.Component-wise accessors (bottom-up access)
Other parallel patterns may require a thread to work on one component from the array, such as paralleled on a point of a
multilinestring_array
. In this case bottom-up traversal utilities should be supported, and should be easily implemented by a binary search in the offset array.Tasks
The text was updated successfully, but these errors were encountered: