Sql 地理(地图)数据的理想数据库
我正在寻找一个理想的数据库或存储地图的数据结构的建议。本质上,地图由“路径”组成,类似于道路、路径等。路径包含节点(有纬度和经度坐标,有时还有海拔) 任何此类数据库或结构:Sql 地理(地图)数据的理想数据库,sql,database,geolocation,mapping,openstreetmap,Sql,Database,Geolocation,Mapping,Openstreetmap,我正在寻找一个理想的数据库或存储地图的数据结构的建议。本质上,地图由“路径”组成,类似于道路、路径等。路径包含节点(有纬度和经度坐标,有时还有海拔) 任何此类数据库或结构: 应该能够快速定位边界框中的所有节点(毫秒) (可选)当大量节点位于边界框中而不是少量节点时,或者如果边界框较大,则速度不应明显减慢 应能够找到直接连接的节点:例如,通过两种方式连接的节点 可以是只读的 应该是紧凑的(避免浪费空间)-我正在寻找适合英国地图不到1 GB。我有一个卫星导航系统,它在SD卡上有大约800MB的空间
(我有意使用与开放街道地图相同的术语,因为我计划使用这些数据。)我不确定空间,但您可能希望为公共数据库服务器使用任何地理扩展(如果可能的话)。它们通常提供快速地理索引、基于边界框(回答1和2)的许多地理过程来进行计算(回答3,
相交(way1,way2)
)
另外,您的问题更符合我建议使用地理类型,因为它适合您所需的内容,但是我唯一关心的是在嵌入式设备上使用类似的内容会占用内存
我使用Java中的非GIS数据库(firebird)构建了一些模糊相关的东西,其性能足以检索边界框中的点(尽管需要花哨的SQL,这与PostGIS不同)。我所知道的最好的地理数据数据库是带有地理扩展的PostgreSQL,但我不知道速度。我知道OSM使用这个,但是他们可以访问一个快速的大型计算机基础设施。我还知道,他们有几个人可以写更快的程序为他们的要求 我想说,四叉树是处理局部数据的一个非常好的选择,从我的判断来看,你似乎允许正方形变得太小。可以使边界更柔和(允许一个节点位于四叉树的两片叶子中),并为每个叶子添加最少数量的节点。假设任何叶都不允许包含少于64个节点,并且不允许包含超过1024个节点 在这里,排序对于速度尤其重要,建议将更有可能首先访问的区域进行排序。假设70%的请求都在伦敦附近,那么将这些数据放在文件开头以缩短搜索时间将是最快的选择。可能是最佳选择。注意:PostGIS是带有地理扩展的PostgreSQL。您可以直接安装postgres,然后运行各种脚本,添加地理功能和类型 看。您可以使用osm2pgsql将OpenStreetMap planet文件/planet摘录加载到PostGIS中,这是在运行Mapnik渲染器的OpenStreetMap tile服务器上完成的。然而
OpenStreetMap数据还有一个更原始的数据库模式(称为“节点”和“方式”等的表),这是主要OpenStreetMap数据库服务器用于存储其地理数据并允许通过API进行编辑的内容。当涉及到空间索引等时,这并不是很聪明,但是很好而且简单。可以通过安装来创建此格式的数据库。这是设置的最新版本(由定义)的最可靠方法。之后,您可以运行该工具来填充数据库。PostGIS不是唯一支持地理空间数据的数据库,但价格点非常好。很难打败“自由” 但是还有其他免费的选择,一些读者可能已经有了另一个关系数据库系统,他们希望利用这些专业知识,而不必学习PostGIS。任何支持开放地理联盟规范(OGC或OpenGeo)的数据库都足以满足您描述的场景 就像摄影界的格言——“最好的相机是你随身携带的”——有时候理想的空间数据库就是你已经拥有并知道如何使用的数据库 下面是我知道的所有选项的列表: 空间RDBMS-提供免费选项
- Oracle(带空间或定位器)(自由选项:Oracle XE+定位器)
- MS SQL Server(2008或更高版本)(免费选项:SQL Server Express)
- 波斯特吉斯
- DB2(使用SpatialExtender)
- Informix(带空间刀片)
- MySQL Spatial(非常有限的函数集)
- ArcSDE(将其添加到现有RDBMS中)