地图数据算法

地图数据开发难免和gis算法打交道,我分类总结了地图数据常用的算法

一、空间索引算法

空间索引的方法很多,但基本原理都类似,即采用分割原理,把查询空间划分为若干区域,查询的时候可以分层。通常为矩形或者是多边形,这些区域包含空间要素并且可唯一标识。目前,分割方法一般可归纳为两种:一种是规则分割法,另一种是对象分割法。规则分割法是将地理空间按照某种规则或半规则方式分割,分割单元间接地与空间要素相关联,空间要素的几何形状可能被分割到几个相邻的单元中,这时空间要素的描述保持完整,而空间索引单元只存储空间要素地址的参考信息。在对象分割法中,索引空间的分割直接由空间要素来确定,索引单元包括空间要素地址的参考信息和空间要素的外包络矩形。常见的空间索引方法一般都是自上而下、逐级划分地理空间,从而形成各种空间索引结构。比较有代表性的规则分割法包括网格系列索引。基于对象的分割法主要是包括R系列树索引。每一类空间索引方法都有其优越性和使用范围的局限。常用的算法

1.1 四叉树

四叉树(Quadtree)或四元树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快速碰撞检测、存储稀疏数据等。需要预先所有数据的空间范围。四叉树是一种树形的数据结构,其中每一个节点都有0个或4个子节点。构建四叉树时,是递归地对整个空间区域进行划分,划分成四个相同的子区域,直到每个子区域中的数据量小于给定的阈值。如下图所示,初始的空间中有9个点,假如阈值为1。由于此时空间的数据量为9>1,故将该空间划分成四个子空间,即橙色部分。之后发现左上角的子空间的数据量为2>1,故再进行一次划分,重复这样的过程后,得到的四叉树如下所示。

在进行空间搜索时,比如给定空间区域S,我们想要知道哪些点位于S之内。搜索过程与R树类似,依然是从根节点向下搜索,碰到与S不相交的节点就进行剪枝,到达有存储数据的节点后就将满足空间约束的数据放入结果集中。四叉树对于处于边界的地方,需要检测2个区域。

1.2 八叉树

八叉树(Octree)主要应用于3D图形处理。对游戏编程,激光雷达点云处理等会很有用。四叉树和八叉树实际上是二叉树在二维和三维的引申。

1.3 R树

R树是一个平衡搜索树(因此所有的叶子节点都在同一高度)


1.4 KD树
1.5 Z曲线以及geohash索引
1.6 希尔伯特曲线以及Google S2索引

二、几何抽稀算法

曲线抽稀的关键是定义抽稀因子,抽稀因子的不同决定的抽稀算法的多样性,在现有抽稀理论中,有按步长,线段长度,垂距等来定义抽稀因子

2.1 Douglas-Peuker算法 (DP算法)

DP算法的抽稀因子是垂距。将待处理曲线的首末点虚连一条直线,求所有中间点与直线的距离,并找出最大距离值dmax ,用dmax与抽稀阈值threshold相比较:

若dmax < threshold,这条曲线上的中间点全部舍去;

若dmax ≥ threshold,则以该点为界,把曲线分为两部分,对这两部分曲线重复上述过程,直至所有的点都被处理完成。

垂距限值法

垂距限值法与DP算法原理一样,但其并非从整体角度考虑一条完整曲线,而是从第一点开始依次筛选,去除冗余点。即以第一点为起点,计算第二点至第一点和第三点连线的垂直距离,若此距离大于某阈值,则保留第二点,并将其作为新起点,计算第三点至第二点和第四点连线的距离;否则,去除第二点,计算第三点至第一点和第四点连线距离,依次类推,直至曲线上最后一点。其阈值一般取相应地物最大允许误差或更小 。
垂距限值法抽稀精度与DP算法一样,但循环简单,易于编程处理。是一种较理想的抽稀算法。

三、平滑算法

3.1 五次多项式

3.2 三阶贝塞尔

3.3 

参考文章:

空间索引概述 - 墨天轮

空间索引 — GIS原理在线教程

机器学习常用算法(一)R树的原理_guttman 算法_Mrchesian的博客-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值