19#include <cuspatial/detail/join/intersection.cuh>
20#include <cuspatial/detail/join/traversal.cuh>
21#include <cuspatial/iterator_factory.cuh>
22#include <cuspatial/point_quadtree.cuh>
23#include <cuspatial/traits.hpp>
25#include <rmm/device_uvector.hpp>
62template <
class BoundingBoxIterator,
63 class T =
typename cuspatial::iterator_vec_base_type<BoundingBoxIterator>>
64std::pair<rmm::device_uvector<uint32_t>, rmm::device_uvector<uint32_t>>
67 BoundingBoxIterator bounding_boxes_first,
68 BoundingBoxIterator bounding_boxes_last,
69 vec_2d<T>
const& v_min,
72 rmm::cuda_stream_view stream = rmm::cuda_stream_default,
73 rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
115template <
class PolyIndexIterator,
116 class QuadIndexIterator,
117 class PointIndexIterator,
119 class MultiPolygonRange,
120 class IndexType = iterator_value_type<PointIndexIterator>>
122 PolyIndexIterator poly_indices_first,
123 PolyIndexIterator poly_indices_last,
124 QuadIndexIterator quad_indices_first,
126 PointIndexIterator point_indices_first,
127 PointIndexIterator point_indices_last,
128 PointIterator points_first,
129 MultiPolygonRange polygons,
130 rmm::cuda_stream_view stream = rmm::cuda_stream_default,
131 rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
170template <
class LinestringIndexIterator,
171 class QuadIndexIterator,
172 class PointIndexIterator,
174 class MultiLinestringRange,
175 typename IndexType = iterator_value_type<PointIndexIterator>,
176 typename T = iterator_vec_base_type<PointIterator>>
177std::tuple<rmm::device_uvector<IndexType>, rmm::device_uvector<IndexType>, rmm::device_uvector<T>>
179 LinestringIndexIterator linestring_indices_first,
180 LinestringIndexIterator linestring_indices_last,
181 QuadIndexIterator quad_indices_first,
183 PointIndexIterator point_indices_first,
184 PointIndexIterator point_indices_last,
185 PointIterator points_first,
186 MultiLinestringRange linestrings,
187 rmm::cuda_stream_view stream = rmm::cuda_stream_default,
188 rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
192#include <cuspatial/detail/join/quadtree_bbox_filtering.cuh>
193#include <cuspatial/detail/join/quadtree_point_in_polygon.cuh>
194#include <cuspatial/detail/join/quadtree_point_to_nearest_linestring.cuh>
std::tuple< rmm::device_uvector< IndexType >, rmm::device_uvector< IndexType >, rmm::device_uvector< T > > quadtree_point_to_nearest_linestring(LinestringIndexIterator linestring_indices_first, LinestringIndexIterator linestring_indices_last, QuadIndexIterator quad_indices_first, point_quadtree_ref quadtree, PointIndexIterator point_indices_first, PointIndexIterator point_indices_last, PointIterator points_first, MultiLinestringRange linestrings, rmm::cuda_stream_view stream=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Finds the nearest linestring to each point in a quadrant, and computes the distances between each poi...
std::pair< rmm::device_uvector< IndexType >, rmm::device_uvector< IndexType > > quadtree_point_in_polygon(PolyIndexIterator poly_indices_first, PolyIndexIterator poly_indices_last, QuadIndexIterator quad_indices_first, point_quadtree_ref quadtree, PointIndexIterator point_indices_first, PointIndexIterator point_indices_last, PointIterator points_first, MultiPolygonRange polygons, rmm::cuda_stream_view stream=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Test whether the specified points are inside any of the specified polygons.
std::pair< rmm::device_uvector< uint32_t >, rmm::device_uvector< uint32_t > > join_quadtree_and_bounding_boxes(point_quadtree_ref quadtree, BoundingBoxIterator bounding_boxes_first, BoundingBoxIterator bounding_boxes_last, vec_2d< T > const &v_min, T scale, int8_t max_depth, rmm::cuda_stream_view stream=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Search a quadtree for polygon or linestring bounding box intersections.