加载中...
搜索中...
无匹配项
distance.cuh
查看此文件的文档。
1/*
2 * 版权所有 (c) 2022-2023, NVIDIA CORPORATION.
3 *
4 * 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
5 * 除非符合许可证的规定,否则您不得使用此文件。
6 * 您可以在以下位置获取许可证副本:
7 *
8 * https://apache.ac.cn/licenses/LICENSE-2.0
9 *
10 * 除非适用法律要求或双方书面同意,否则软件
11 * 根据许可证分发,按“原样”提供,
12 * 不附带任何明示或暗示的保证或条件。
13 * 请参阅许可证,了解管理权限和
14 * 限制的特定语言。
15 */
16
17#pragma once
18
20#include <cuspatial/traits.hpp>
21
22#include <rmm/cuda_stream_view.hpp>
23
24#include <iterator>
25
26namespace cuspatial {
27
32
69template <class LonLatItA,
70 class LonLatItB,
71 class OutputIt,
72 class T = typename cuspatial::iterator_vec_base_type<LonLatItA>>
73OutputIt haversine_distance(LonLatItA a_lonlat_first,
74 LonLatItA a_lonlat_last,
75 LonLatItB b_lonlat_first,
76 OutputIt distance_first,
77 T const radius = EARTH_RADIUS_KM,
78 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
79
149template <class PointIt, class OffsetIt, class OutputIt>
150OutputIt directed_hausdorff_distance(PointIt points_first,
151 PointIt points_last,
152 OffsetIt space_offsets_first,
153 OffsetIt space_offsets_last,
154 OutputIt distance_first,
155 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
156
169template <class MultiPointArrayViewA, class MultiPointArrayViewB, class OutputIt>
170OutputIt pairwise_point_distance(MultiPointArrayViewA multipoints1,
171 MultiPointArrayViewB multipoints2,
172 OutputIt distances_first,
173 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
174
190template <class MultiPointRange, class MultiLinestringRange, class OutputIt>
192 MultiPointRange multipoints,
193 MultiLinestringRange multilinestrings,
194 OutputIt distances_first,
195 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
196
213template <class MultiPointRange, class MultiPolygonRange, class OutputIt>
214OutputIt pairwise_point_polygon_distance(MultiPointRange multipoints,
215 MultiPolygonRange multipoiygons,
216 OutputIt distances_first,
217 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
218
238template <class MultiLinestringRange1, class MultiLinestringRange2, class OutputIt>
239OutputIt pairwise_linestring_distance(MultiLinestringRange1 multilinestrings1,
240 MultiLinestringRange2 multilinestrings2,
241 OutputIt distances_first,
242 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
243
260template <class MultiLinestringRange, class MultiPolygonRange, class OutputIt>
262 MultiLinestringRange multilinestrings,
263 MultiPolygonRange multipoiygons,
264 OutputIt distances_first,
265 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
266
283template <class MultipolygonRangeA, class MultipolygonRangeB, class OutputIt>
284OutputIt pairwise_polygon_distance(MultipolygonRangeA lhs,
285 MultipolygonRangeB rhs,
286 OutputIt distances_first,
287 rmm::cuda_stream_view stream = rmm::cuda_stream_default);
288
292
293} // namespace cuspatial
294
295#include <cuspatial/detail/distance/hausdorff.cuh>
296#include <cuspatial/detail/distance/haversine.cuh>
297#include <cuspatial/detail/distance/linestring_distance.cuh>
298#include <cuspatial/detail/distance/linestring_polygon_distance.cuh>
299#include <cuspatial/detail/distance/point_distance.cuh>
300#include <cuspatial/detail/distance/point_linestring_distance.cuh>
301#include <cuspatial/detail/distance/point_polygon_distance.cuh>
302#include <cuspatial/detail/distance/polygon_distance.cuh>
OutputIt directed_hausdorff_distance(PointIt points_first, PointIt points_last, OffsetIt space_offsets_first, OffsetIt space_offsets_last, OutputIt distance_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算集合中所有空间对的 Hausdorff 距离。
OutputIt pairwise_point_distance(MultiPointArrayViewA multipoints1, MultiPointArrayViewB multipoints2, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算成对的(多)点到(多)点的笛卡尔距离。
OutputIt pairwise_polygon_distance(MultipolygonRangeA lhs, MultipolygonRangeB rhs, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算成对的多边形到多边形的距离。
OutputIt haversine_distance(LonLatItA a_lonlat_first, LonLatItA a_lonlat_last, LonLatItB b_lonlat_first, OutputIt distance_first, T const radius=EARTH_RADIUS_KM, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算集合 A 中的点与集合 B 中对应点之间的 Haversine 距离。
OutputIt pairwise_linestring_distance(MultiLinestringRange1 multilinestrings1, MultiLinestringRange2 multilinestrings2, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
OutputIt pairwise_linestring_polygon_distance(MultiLinestringRange multilinestrings, MultiPolygonRange multipoiygons, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算成对的多线串到多边形的距离。
OutputIt pairwise_point_linestring_distance(MultiPointRange multipoints, MultiLinestringRange multilinestrings, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算成对的多点到多线串的距离。
OutputIt pairwise_point_polygon_distance(MultiPointRange multipoints, MultiPolygonRange multipoiygons, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
计算成对的多点到多边形的距离。