当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cuspatial.quadtree_on_points用法及代码示例


用法:

cuspatial.quadtree_on_points(xs, ys, x_min, x_max, y_min, y_max, scale, max_depth, min_size)

从给定area-of-interest的一组点构造一个四叉树

边界框。

参数

xs

每个点的 x 坐标列

ys

每个点的 y 坐标列

x_min

感兴趣区域边界框的lower-left x 坐标

x_max

感兴趣区域边界框的upper-right x 坐标

y_min

lower-left 感兴趣区域边界框的 y 坐标

y_max

upper-right 感兴趣区域边界框的 y 坐标

scale

缩放以应用于每个点与 (x_min, y_min) 的距离

max_depth

最大四叉树深度

min_size

非叶四叉树节点的最小点数

返回

result元组(cudf.Series,cudf.DataFrame)
keys_to_pointscudf.Series(dtype=np.int32)

原始点索引的一列排序键

四叉树cudf.DataFrame

输入点集的完整四叉树

钥匙cudf.Series(dtype=np.int32)

一个 int32 列的象限键

等级cudf.Series(dtype=np.int8)

四叉树级别的 int8 列

is_quadcudf.Series(dtype=np.bool_)

一个布尔列,指示节点是四边形还是叶子

长度cudf.Series(dtype=np.int32)

如果这是非叶象限(即 is_quadTrue ),则此列的值是非叶象限中的子项数。

否则,此列的值是叶象限中包含的点数。

抵消cudf.Series(dtype=np.int32)

如果这是一个非叶象限(即 is_quadTrue ),则该列的值是非叶象限的第一个子象限的位置。

否则,此列的值是叶子象限的第一个点的位置。

注意

  • 交换 min_xmax_x 如果 min_x > max_x
  • 交换 min_ymax_y 如果 min_y > max_y

例子

根据输入选择 min_sizescale 的示例:

>>> np.random.seed(0)
>>> points = cudf.DataFrame({
        "x": cudf.Series(np.random.normal(size=120)) * 500,
        "y": cudf.Series(np.random.normal(size=120)) * 500,
    })

>>> max_depth = 3
>>> min_size = 50
>>> min_x, min_y, max_x, max_y = (points["x"].min(),
                                  points["y"].min(),
                                  points["x"].max(),
                                  points["y"].max())
>>> scale = max(max_x - min_x, max_y - min_y) // (1 << max_depth)
>>> print(
        "min_size:   " + str(min_size) + "\n"
        "num_points: " + str(len(points)) + "\n"
        "min_x:      " + str(min_x) + "\n"
        "max_x:      " + str(max_x) + "\n"
        "min_y:      " + str(min_y) + "\n"
        "max_y:      " + str(max_y) + "\n"
        "scale:      " + str(scale) + "\n"
    )
min_size:   50
num_points: 120
min_x:      -1577.4949079170394
max_x:      1435.877311993804
min_y:      -1412.7015761122134
max_y:      1492.572387431971
scale:      301.0

>>> key_to_point, quadtree = cuspatial.quadtree_on_points(
        points["x"],
        points["y"],
        min_x,
        max_x,
        min_y,
        max_y,
        scale, max_depth, min_size
    )

>>> print(quadtree)
    key  level  is_quad  length  offset
0     0      0    False      15       0
1     1      0    False      27      15
2     2      0    False      12      42
3     3      0     True       4       8
4     4      0    False       5     106
5     6      0    False       6     111
6     9      0    False       2     117
7    12      0    False       1     119
8    12      1    False      22      54
9    13      1    False      18      76
10   14      1    False       9      94
11   15      1    False       3     103

>>> print(key_to_point)
0       63
1       20
2       33
3       66
4       19
    ...
115    113
116      3
117     78
118     98
119     24
Length: 120, dtype: int32

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuspatial.quadtree_on_points。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。