让我们考虑一个地图引擎系统。。。

本文探讨了GIS数据库引擎的挑战,如经纬度坐标的变化和加密,以及如何通过R树、k-d树等实现多维索引。还讨论了地图引擎中的导航模块,利用Dijkstra算法进行路径规划,并提出了预聚类处理以优化大规模道路网络。同时,实时导航功能的实现需要高效查询性能和速度预测能力。
摘要由CSDN通过智能技术生成

传统的GIS数据库,如ArcGIS这种传统桌面型的软件,主要还是强调测绘模型数据的规范化输入。GIS的本质上在于多维索引,对一个最简单的平面地图来说,主要就是靠最原始的GPS芯片返回的经纬度坐标。问题是,即使静止在同一个位置,由于地球在自转(?),卫星反射返回的信号时间可能不一样,这样得到的经纬度坐标不能保持一模一样。更不用说移动中的目标(汽车)了。中国的GPS坐标还会涉及到一个非线性的加密扰乱,人为地降低精度。

PostgreSQL(pg)数据库有一个插件,可以用于存储POI(Place of Interest,或Point of Interest),即附带了经纬度坐标属性的数据记录。经纬度坐标可以认为是2维的数值型数据,但是坐标系本身却又有额外的问题:经纬度坐标是球面的,并且它有多不同的国际标准。假如我们不考虑这个,即不要求绝对精确的网格系统,只要求保证每个维度上的严格偏序关系成立即可,则GIS数据库引擎本身的目标就是:

给定一个POI查询位置,快速返回一个包含此POI的最小区域范围?

考虑SQL数据库里的key,它是一个1维的value range index。而GIS的key是2维的,如何实现索引呢?一般就是R树(包围盒)、k-d树(相当于扩展的B+树,每个维度轮流索引)或者是某些混合方案,当然还有一个基于GeoHash的快速定位。原则上,不同的最小区域在边界处可能是有重叠的,因此,为保证查询结果不会遗漏,需要查询一个POI所在区域的9宫格邻域,当然也有使用6边形的,不规则多边形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值