加载中...
搜索中...
无匹配项
距离

距离计算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。

函数文档

◆ directed_hausdorff_distance()

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 )

计算空间集合中所有对之间的豪斯多夫距离。

https://en.wikipedia.org/wiki/Hausdorff_distance

1D示例(此函数在2D中操作)

空间
[0 2 5] [9] [3 7]
以每个空间点集和所有点集的连接表示空间
[0 2 5 9 3 7] [3 1 2]
注意:以下矩阵在视觉上是分开的,以突出显示一对
点与产生它的空间对之间的关系
所有点的笛卡尔积
点之间的距离,按空间对分组
+----------+----+-------+ +---------+---+------+
: 00 02 05 : 09 : 03 07 : : 0 2 5 : 9 : 3 7 :
: 20 22 25 : 29 : 23 27 : : 2 0 3 : 7 : 1 5 :
: 50 52 55 : 59 : 53 57 : : 5 3 0 : 4 : 2 2 :
+----------+----+-------+ +---------+---+------+
: 90 92 95 : 99 : 93 97 : : 9 7 4 : 0 : 6 2 :
+----------+----+-------+ +---------+---+------+
: 30 32 35 : 39 : 33 37 : : 3 1 2 : 6 : 0 4 :
: 70 72 75 : 79 : 73 77 : : 7 5 2 : 2 : 4 0 :
+----------+----+-------+ +---------+---+------+
从一个空间中的每个点
到另一空间中的任何点 豪斯多夫距离是
最小距离中的最大值
的最小距离
+----------+----+-------+ +---------+---+------+
: 0 : 9 : 3 : : 0 : 9 : 3 :
: 0 : 7 : 1 : : : : :
: 0 : 4 : 2 : : : : :
+----------+----+-------+ +---------+---+------+
: 4 : 0 : 2 : : 4 : 0 : 2 :
+----------+----+-------+ +---------+---+------+
: 1 : 6 : 0 : : : 6 : 0 :
: 2 : 2 : 0 : : 2 : : :
+----------+----+-------+ +---------+---+------+
作为列的连接返回
[0 2 4 3 0 2 9 6 0]
参数
[in]points_firstxs: (x,y)点范围的开始
[in]points_lastsxs: (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] 的要求并可设备访问和可变。
前置条件
所有迭代器必须具有相同的基础浮点值类型。
返回值
指向计算出的最后一个距离之后的元素的输出迭代器。
注意
豪斯多夫距离是不对称的

◆ haversine_distance()

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中对应点之间的哈弗赛恩距离。

计算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>)。
返回值
指向计算出的最后一个距离之后的元素的输出迭代器。

◆ pairwise_linestring_distance()

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 )

两条线串之间的最短距离定义为两条线串所有线段对之间的最短距离。如果任何线段相交,则距离为0。

模板参数
MultiLinestringRange模板类型 multilinestring_range 的一个实例
OutputIt输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求并可设备写入。
参数
multilinestrings1左侧多线串数组的范围对象
multilinestrings2右侧多线串数组的范围对象
stream用于设备内存操作和内核启动的CUDA流。
返回值
指向计算出的最后一个距离之后的元素的输出迭代器。

◆ pairwise_linestring_polygon_distance()

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 )

计算成对的多线串到多多边形距离。

模板参数
MultiLinestringRange模板类型 multipoint_range 的一个实例
MultiPolygonRange模板类型 multipolygon_range 的一个实例
OutputIt输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。必须是可以从浮点数转换的类型的迭代器。
参数
multilinestrings多线串的范围,每个计算出的距离对对应一个。
multipolygons多边形的范围,每个计算出的距离对对应一个。
stream执行计算的CUDA流
返回值
指向计算出的最后一个距离之后的输出迭代器

◆ pairwise_point_distance()

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 )

计算成对的(多)点到(多)点的笛卡尔距离。

计算每对多点之间的笛卡尔距离。

模板参数
MultiPointArrayViewA模板类型 array_view::multipoint_array 的一个实例
MultiPointArrayViewB模板类型 array_view::multipoint_array 的一个实例
参数
multipoints1每个距离对中第一个多点的范围。
multipoints2每个距离对中第二个多点的范围。
返回值
指向计算出的最后一个距离之后的迭代器

◆ pairwise_point_linestring_distance()

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 )

计算成对的多点到多线串距离。

模板参数
MultiPointRange模板类型 multipoint_range 的一个实例
MultiLinestringRange模板类型 multilinestring_range 的一个实例
OutputIt输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。
参数
multipoints多点的范围,每个计算出的距离对对应一个
multilinestrings多线串的范围,每个计算出的距离对对应一个
stream用于设备内存操作和内核启动的CUDA流。
返回值
指向计算出的最后一个距离之后的元素的输出迭代器。

◆ pairwise_point_polygon_distance()

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 )

计算成对的多点到多多边形距离。

模板参数
MultiPointRange模板类型 multipoint_range 的一个实例
MultiPolygonRange模板类型 multipolygon_range 的一个实例
OutputIt输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。必须是可以从浮点数转换的类型的迭代器。
参数
multipoints多点的范围,每个计算出的距离对对应一个。
multipolygons多线串的范围,每个计算出的距离对对应一个。
stream执行计算的CUDA流
返回值
指向计算出的最后一个距离之后的输出迭代器

◆ pairwise_polygon_distance()

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 )

计算成对的多边形到多边形距离。

模板参数
MultiPolygonRangeA模板类型 multipolygon_range 的一个实例
MultiPolygonRangeB模板类型 multipolygon_range 的一个实例
OutputIt输出数组的迭代器类型。必须满足 [LRAI](LinkLRAI) 的要求。必须是可以从浮点数转换的类型的迭代器。
参数
lhs计算距离的第一个多多边形范围
rhs计算距离的第二个多多边形范围
stream执行计算的CUDA流
返回值
指向计算出的最后一个距离之后的输出迭代器