【问题标题】:Shapefile quadtree in shapelibshapelib 中的 shapefile 四叉树
【发布时间】:2013-08-13 06:26:38
【问题描述】:

shapelib 中,我注意到相当多的代码用于处理Shapefile 四叉树。例如,工具 shptreedump(在 shapelib 源代码中)。

warmerda@gdal[207]% shptreedump -maxdepth 6 eg_data/polygon.shp ( SHPTreeNode 最小值 = (471127.19,4751545.00) 最大值 = (489292.31,4765610.50)形状(0):(SHPTreeNode 最小值 = (471127.19,4751545.00) 最大值 = (481118.01,4765610.50) 形状(0): ( SHPTreeNode 最小值 = (471127.19,4751545.00) 最大值 = (481118.01,4759281.03) 形状(0): ( SHPTreeNode 最小值 = (471127.19,4751545.00) 最大值 = (476622.14,4759281.03) 形状(0): ( SHPTreeNode 最小值 = (471127.19,4751545.00) 最大值 = (476622.14,4755799.81) 形状(0): ( SHPTreeNode 最小值 = (471127.19,4751545.00) 最大值 = (474149.41,4755799.81) 形状(6):395 397 402 404 405 422 ) ( SHPTreeNode 最小值 = (473599.92,4751545.00) 最大值 = (476622.14,4755799.81) 形状(10):392 394 403 413 414 417 426 433 434 447 ) ) ...

在阅读ESRI Shapefile Technical Description 之后,我想我已经对 shapefile 格式非常熟悉了。但我看不到任何内部树结构本身。所以我的问题是,shapefile 四叉树有什么用?如果可能的话,解释 shapefile 四叉树的实现。

谢谢。

【问题讨论】:

    标签: c shapefile quadtree


    【解决方案1】:

    如果您查看引用文本的末尾,就在您停止的地方,很多右括号...良好的旧 Lisp 样式编码:

    (R(st1(st21()()()()))()()())(st2)(st3)(st4))

    R 代表树的根,那么 () 中有四个子树加上实际数据 st1,我用 st1...st4 表示这 4 个子树。 st21 代表第二层的第一个子树。子树可以被标记,或者如果它们中的任何一个为空,则用 () 表示。易于解析和打印。

    【讨论】:

    • +1 谢谢,虽然它不能直接解决我的问题,但它会有所帮助。
    • lisp 表示法解释了树结构。四叉树是将 2d 空间空间分解为由 2 个对角标识的区域,因此您可以快速找到其中的一个点。它是二叉树的推广,用于在一维空间中搜索“数字”。维基百科将是实施细节的良好开端。
    猜你喜欢
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2013-05-12
    • 2014-06-14
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多