加载中...
搜索中...
无匹配项
空间索引

与空间索引相关的API。 更多...

文件

文件  point_quadtree.hpp
 

结构体  cuspatial::point_quadtree
 
结构体  cuspatial::point_quadtree_ref
 

函数

template<class PointIterator, class T = typename cuspatial::iterator_value_type<PointIterator>>
std::pair< rmm::device_uvector< uint32_t >, point_quadtreecuspatial::quadtree_on_points (PointIterator points_first, PointIterator points_last, vec_2d< T > vertex_1, vec_2d< T > vertex_2, T scale, int8_t max_depth, int32_t max_size, rmm::cuda_stream_view stream=rmm::cuda_stream_default, rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
 从点构建四叉树结构。
 
std::pair< std::unique_ptr< cudf::column >, std::unique_ptr< cudf::table > > cuspatial::quadtree_on_points (cudf::column_view const &x, cudf::column_view const &y, double x_min, double x_max, double y_min, double y_max, double scale, int8_t max_depth, cudf::size_type max_size, rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
 从点构建四叉树结构。
 

详细描述

与空间索引相关的API。

函数文档

◆ quadtree_on_points() [1/2]

std::pair< std::unique_ptr< cudf::column >, std::unique_ptr< cudf::table > > cuspatial::quadtree_on_points ( cudf::column_view const & x,
cudf::column_view const & y,
double x_min,
double x_max,
double y_min,
double y_max,
double scale,
int8_t max_depth,
cudf::size_type max_size,
rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource() )

从点构建四叉树结构。

另请参阅
http://www.adms-conf.org/2019-camera-ready/zhang_adms19.pdf 有关详细信息。
注意
scale 应用于 (x - x_min) 和 (y - y_min),将坐标转换为二维空间中的 Morton 码。
max_depth 应小于 16,因为 Morton 码表示为 uint32_t。如果点数较少或 max_size 较大,最终的层数可能会小于 max_depth
所有中间四叉树节点将具有少于 max_size 的点数。叶节点允许(但不保证)具有 >= max_size 的点数。
参数
x每个点的 x 坐标列。
y每个点的 y 坐标列。
x_min感兴趣区域边界框的左下角 x 坐标。
x_max感兴趣区域边界框的右上角 x 坐标。
y_min感兴趣区域边界框的左下角 y 坐标。
y_max感兴趣区域边界框的右上角 y 坐标。
scale应用于与 x_min 和 y_min 的每个 x 和 y 距离的缩放因子。
max_depth四叉树最大深度。
max_size在节点分裂成 4 个叶节点之前允许的最大点数。
mr用于输出设备内存分配的可选资源。
异常
cuspatial::logic_error如果 x 和 y 列大小不同
返回
INT32 列的对,其中包含指向点索引的排序键;以及一个 cudf 表,该表包含完整的四叉树的五列: key - 四叉节点键的 UINT32 列 level - 四叉树层级的 UINT8 列 is_internal_node - 指示节点是四叉节点 (true) 还是叶节点 (false) 的 BOOL8 列 length - 子节点数量 (如果是内部节点) 或点数 (如果是叶节点) 的 UINT32 列 offset - 第一个子节点位置 (如果是内部节点) 或第一个点位置 (如果是叶节点) 的 UINT32 列

◆ quadtree_on_points() [2/2]

template<class PointIterator, class T = typename cuspatial::iterator_value_type<PointIterator>>
std::pair< rmm::device_uvector< uint32_t >, point_quadtree > cuspatial::quadtree_on_points ( PointIterator points_first,
PointIterator points_last,
vec_2d< T > vertex_1,
vec_2d< T > vertex_2,
T scale,
int8_t max_depth,
int32_t max_size,
rmm::cuda_stream_view stream = rmm::cuda_stream_default,
rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource() )

从点构建四叉树结构。

另请参阅
http://www.adms-conf.org/2019-camera-ready/zhang_adms19.pdf 有关详细信息。
注意
通过将每个 x/y 除以 scale,将二维坐标转换为一维 Morton 码:((x - min_x) / scale(y - min_y) / scale)。
max_depth 应小于 16,因为 Morton 码表示为 uint32_t。如果点数较少或 max_size 较大,最终的层数可能会小于 max_depth
所有中间四叉树节点将具有少于 max_size 的点数。叶节点允许(但不保证)具有 >= max_size 的点数。
模板参数
PointIteratorx/y 点的迭代器。必须满足 LegacyRandomAccessIterator 的要求且可设备访问。
T输入 x/y 点的浮点坐标值类型。
参数
points_first(x, y) 点范围的起始迭代器。
points_last(x, y) 点范围的结束迭代器。
vertex_1感兴趣区域边界框的顶点
vertex_2感兴趣区域边界框中与 vertex_1 相对的顶点
scale应用于与 min.x 和 min.y 的每个 x 和 y 距离的缩放因子。
max_depth四叉树最大深度。
max_size在节点分裂成 4 个叶节点之前允许的最大点数。
stream执行计算的 CUDA 流
mr用于输出设备内存分配的可选资源。
返回
包含排序键到点索引的 UINT32 列对以及一个 point_quadtree
前置条件
点迭代器必须具有相同的 vec_2d 值类型,并具有相同的基础浮点坐标类型(例如 cuspatial::vec_2d<float>)。