Loading...
Searching...
No Matches
bounding_boxes.cuh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022, NVIDIA CORPORATION.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <cuspatial/traits.hpp>
20
21#include <rmm/cuda_stream_view.hpp>
22
23namespace cuspatial {
24
65template <typename IdInputIt,
66 typename PointInputIt,
67 typename BoundingBoxOutputIt,
68 typename T = iterator_vec_base_type<PointInputIt>>
69BoundingBoxOutputIt point_bounding_boxes(IdInputIt ids_first,
70 IdInputIt ids_last,
71 PointInputIt points_first,
72 BoundingBoxOutputIt bounding_boxes_first,
73 T expansion_radius = T{0},
74 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
75
106template <class LinestringOffsetIterator,
107 class VertexIterator,
108 class BoundingBoxIterator,
109 class T = iterator_vec_base_type<VertexIterator>,
110 class IndexT = iterator_value_type<LinestringOffsetIterator>>
111BoundingBoxIterator linestring_bounding_boxes(
112 LinestringOffsetIterator linestring_offsets_first,
113 LinestringOffsetIterator linestring_offsets_last,
114 VertexIterator linestring_vertices_first,
115 VertexIterator linestring_vertices_last,
116 BoundingBoxIterator bounding_boxes_first,
117 T expansion_radius = T{0},
118 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
119
157template <class PolygonOffsetIterator,
158 class RingOffsetIterator,
159 class VertexIterator,
160 class BoundingBoxIterator,
161 class T = iterator_vec_base_type<VertexIterator>,
162 class IndexT = iterator_value_type<PolygonOffsetIterator>>
163BoundingBoxIterator polygon_bounding_boxes(PolygonOffsetIterator polygon_offsets_first,
164 PolygonOffsetIterator polygon_offsets_last,
165 RingOffsetIterator polygon_ring_offsets_first,
166 RingOffsetIterator polygon_ring_offsets_last,
167 VertexIterator polygon_vertices_first,
168 VertexIterator polygon_vertices_last,
169 BoundingBoxIterator bounding_boxes_first,
170 T expansion_radius = T{0},
171 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
172
177} // namespace cuspatial
178
179#include <cuspatial/detail/bounding_boxes.cuh>
BoundingBoxOutputIt point_bounding_boxes(IdInputIt ids_first, IdInputIt ids_last, PointInputIt points_first, BoundingBoxOutputIt bounding_boxes_first, T expansion_radius=T{0}, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
Compute the spatial bounding boxes of sequences of points.
BoundingBoxIterator linestring_bounding_boxes(LinestringOffsetIterator linestring_offsets_first, LinestringOffsetIterator linestring_offsets_last, VertexIterator linestring_vertices_first, VertexIterator linestring_vertices_last, BoundingBoxIterator bounding_boxes_first, T expansion_radius=T{0}, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
Compute minimum bounding box for each linestring.
BoundingBoxIterator polygon_bounding_boxes(PolygonOffsetIterator polygon_offsets_first, PolygonOffsetIterator polygon_offsets_last, RingOffsetIterator polygon_ring_offsets_first, RingOffsetIterator polygon_ring_offsets_last, VertexIterator polygon_vertices_first, VertexIterator polygon_vertices_last, BoundingBoxIterator bounding_boxes_first, T expansion_radius=T{0}, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
Compute minimum bounding box for each polygon.