距离计算API。 更多...
文件 | |
文件 | distance.hpp |
文件 | distance.cuh |
函数 | |
template<class LonLatItA, class LonLatItB, class OutputIt, class T = typename cuspatial::iterator_vec_base_type<LonLatItA>> | |
OutputIt | cuspatial::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中对应点之间的哈弗赛恩距离。 | |
template<class PointIt, class OffsetIt, class OutputIt> | |
OutputIt | cuspatial::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) |
计算空间集合中所有对之间的豪斯多夫距离。 | |
template<class MultiPointArrayViewA, class MultiPointArrayViewB, class OutputIt> | |
OutputIt | cuspatial::pairwise_point_distance (MultiPointArrayViewA multipoints1, MultiPointArrayViewB multipoints2, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default) |
计算成对的(多)点到(多)点的笛卡尔距离。 | |
template<class MultiPointRange, class MultiLinestringRange, class OutputIt> | |
OutputIt | cuspatial::pairwise_point_linestring_distance (MultiPointRange multipoints, MultiLinestringRange multilinestrings, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default) |
计算成对的多点到多线串距离。 | |
template<class MultiPointRange, class MultiPolygonRange, class OutputIt> | |
OutputIt | cuspatial::pairwise_point_polygon_distance (MultiPointRange multipoints, MultiPolygonRange multipoiygons, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default) |
计算成对的多点到多多边形距离。 | |
template<class MultiLinestringRange1, class MultiLinestringRange2, class OutputIt> | |
OutputIt | cuspatial::pairwise_linestring_distance (MultiLinestringRange1 multilinestrings1, MultiLinestringRange2 multilinestrings2, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default) |
template<class MultiLinestringRange, class MultiPolygonRange, class OutputIt> | |
OutputIt | cuspatial::pairwise_linestring_polygon_distance (MultiLinestringRange multilinestrings, MultiPolygonRange multipoiygons, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default) |
计算成对的多线串到多多边形距离。 | |
template<class MultipolygonRangeA, class MultipolygonRangeB, class OutputIt> | |
OutputIt | cuspatial::pairwise_polygon_distance (MultipolygonRangeA lhs, MultipolygonRangeB rhs, OutputIt distances_first, rmm::cuda_stream_view stream=rmm::cuda_stream_default) |
计算成对的多边形到多边形距离。 | |
距离计算API。
OutputIt cuspatial::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 ) |
计算空间集合中所有对之间的豪斯多夫距离。
https://en.wikipedia.org/wiki/Hausdorff_distance
1D示例(此函数在2D中操作)
[in] | points_first | xs: (x,y)点范围的开始 |
[in] | points_lasts | xs: (x,y)点范围的结束 |
[in] | space_offsets_first | 指向每个空间的索引范围的开始。 |
[in] | space_offsets_first | 指向每个空间的索引范围的结束。最后一个索引是最后一个 |
[in] | distance_first | 每个空间对的输出豪斯多夫距离范围的开始 |
PointIt | 输入点迭代器。点必须是可转换为 cuspatial::vec_2d<T> 的类型。必须满足 [LegacyRandomAccessIterator][LinkLRAI] 的要求并可设备访问。 |
OffsetIt | 空间偏移量迭代器。值类型必须是整数。必须满足 [LegacyRandomAccessIterator][LinkLRAI] 的要求并可设备访问。 |
OutputIt | 输出迭代器。必须满足 [LegacyRandomAccessIterator][LinkLRAI] 的要求并可设备访问和可变。 |
OutputIt cuspatial::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中对应点之间的哈弗赛恩距离。
计算N个哈弗赛恩距离,其中N为 std::distance(a_lonlat_first, a_lonlat_last)
。每个 a_lonlat[i]
和 b_lonlat[i]
点对的距离被赋给 distance_first[i]
。distance_first
必须是指向为N个距离分配的输出存储的迭代器。
计算出的距离将具有与 radius
相同的单位。
https://en.wikipedia.org/wiki/Haversine_formula
[in] | a_lonlat_first | 集合A中 (longitude, latitude) 位置范围的开始 |
[in] | a_lonlat_last | 集合A中 (longitude, latitude) 位置范围的结束 |
[in] | b_lonlat_first | 集合B中 (longitude, latitude) 位置范围的开始 |
[out] | distance_first | 哈弗赛恩距离输出范围的开始 |
[in] | radius | 点所在的球体半径。默认值:6371.0(地球的近似半径,单位:千米) |
[in] | stream | 执行计算和分配内存的CUDA流。 |
LonLatItA | 输入位置集合A的迭代器。必须满足 LegacyRandomAccessIterator 的要求并可设备访问。 |
LonLatItB | 输入位置集合B的迭代器。必须满足 LegacyRandomAccessIterator 的要求并可设备访问。 |
OutputIt | 输出迭代器。必须满足 LegacyRandomAccessIterator 的要求并可设备访问和可变。 |
T | 基础坐标类型。必须是浮点类型。 |
Location
类型,以及相同的基础浮点坐标类型(例如 cuspatial::vec_2d<float>
)。OutputIt cuspatial::pairwise_linestring_distance | ( | MultiLinestringRange1 | multilinestrings1, |
MultiLinestringRange2 | multilinestrings2, | ||
OutputIt | distances_first, | ||
rmm::cuda_stream_view | stream = rmm::cuda_stream_default ) |
两条线串之间的最短距离定义为两条线串所有线段对之间的最短距离。如果任何线段相交,则距离为0。
MultiLinestringRange | 模板类型 multilinestring_range 的一个实例 |
OutputIt | 输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求并可设备写入。 |
multilinestrings1 | 左侧多线串数组的范围对象 |
multilinestrings2 | 右侧多线串数组的范围对象 |
stream | 用于设备内存操作和内核启动的CUDA流。 |
OutputIt cuspatial::pairwise_linestring_polygon_distance | ( | MultiLinestringRange | multilinestrings, |
MultiPolygonRange | multipoiygons, | ||
OutputIt | distances_first, | ||
rmm::cuda_stream_view | stream = rmm::cuda_stream_default ) |
计算成对的多线串到多多边形距离。
MultiLinestringRange | 模板类型 multipoint_range 的一个实例 |
MultiPolygonRange | 模板类型 multipolygon_range 的一个实例 |
OutputIt | 输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。必须是可以从浮点数转换的类型的迭代器。 |
multilinestrings | 多线串的范围,每个计算出的距离对对应一个。 |
multipolygons | 多边形的范围,每个计算出的距离对对应一个。 |
stream | 执行计算的CUDA流 |
OutputIt cuspatial::pairwise_point_distance | ( | MultiPointArrayViewA | multipoints1, |
MultiPointArrayViewB | multipoints2, | ||
OutputIt | distances_first, | ||
rmm::cuda_stream_view | stream = rmm::cuda_stream_default ) |
计算成对的(多)点到(多)点的笛卡尔距离。
计算每对多点之间的笛卡尔距离。
MultiPointArrayViewA | 模板类型 array_view::multipoint_array 的一个实例 |
MultiPointArrayViewB | 模板类型 array_view::multipoint_array 的一个实例 |
multipoints1 | 每个距离对中第一个多点的范围。 |
multipoints2 | 每个距离对中第二个多点的范围。 |
OutputIt cuspatial::pairwise_point_linestring_distance | ( | MultiPointRange | multipoints, |
MultiLinestringRange | multilinestrings, | ||
OutputIt | distances_first, | ||
rmm::cuda_stream_view | stream = rmm::cuda_stream_default ) |
计算成对的多点到多线串距离。
MultiPointRange | 模板类型 multipoint_range 的一个实例 |
MultiLinestringRange | 模板类型 multilinestring_range 的一个实例 |
OutputIt | 输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。 |
multipoints | 多点的范围,每个计算出的距离对对应一个 |
multilinestrings | 多线串的范围,每个计算出的距离对对应一个 |
stream | 用于设备内存操作和内核启动的CUDA流。 |
OutputIt cuspatial::pairwise_point_polygon_distance | ( | MultiPointRange | multipoints, |
MultiPolygonRange | multipoiygons, | ||
OutputIt | distances_first, | ||
rmm::cuda_stream_view | stream = rmm::cuda_stream_default ) |
计算成对的多点到多多边形距离。
MultiPointRange | 模板类型 multipoint_range 的一个实例 |
MultiPolygonRange | 模板类型 multipolygon_range 的一个实例 |
OutputIt | 输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。必须是可以从浮点数转换的类型的迭代器。 |
multipoints | 多点的范围,每个计算出的距离对对应一个。 |
multipolygons | 多线串的范围,每个计算出的距离对对应一个。 |
stream | 执行计算的CUDA流 |
OutputIt cuspatial::pairwise_polygon_distance | ( | MultipolygonRangeA | lhs, |
MultipolygonRangeB | rhs, | ||
OutputIt | distances_first, | ||
rmm::cuda_stream_view | stream = rmm::cuda_stream_default ) |
计算成对的多边形到多边形距离。
MultiPolygonRangeA | 模板类型 multipolygon_range 的一个实例 |
MultiPolygonRangeB | 模板类型 multipolygon_range 的一个实例 |
OutputIt | 输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。必须是可以从浮点数转换的类型的迭代器。 |
lhs | 计算距离的第一个多多边形范围 |
rhs | 计算距离的第二个多多边形范围 |
stream | 执行计算的CUDA流 |