sql - 地理( map )数据的理想数据库

标签 sql database geolocation mapping openstreetmap

我正在寻找用于存储 map 的理想数据库或数据结构的建议。本质上, map 由“道路”组成,如道路、路径等。道路包含节点(具有纬度和经度坐标,有时还有高度。)

任何此类数据库或结构:

  1. 应该能够快速(毫秒)定位边界框内的所有节点

  2. 可选地,当大量节点位于边界框中而不是少量节点,或者如果边界框很大时,速度不应显着降低

  3. 应该能够找到直接连接的节点:例如连接两条路的节点

  4. 只能读

  5. 应该紧凑(避免浪费空间)- 我希望将英国 map 放入不到 1 GB 的空间中。我有一个卫星导航系统,它在 SD 卡上有大约 800 MB 的空间。

我最初想到的是四叉树来存储路径。但是快速实现很棘手,它们不适用于单个节点;所有节点都放在尽可能小的 bbox 中。

(我故意使用与 Open Street Map 相同的术语,因为我打算使用该数据。)

最佳答案

我建议使用 PostGIS 1.5使用 geography 类型,因为它适合您的需要,但是我唯一关心的是在嵌入式设备上使用这样的东西是内存使用。

我使用 Java 中的非 GIS 数据库 (firebird) 构建了一些模糊相关的东西,性能足以在边界框内检索点(尽管需要花哨的 SQL,而 PostGIS 则不需要)。

关于sql - 地理( map )数据的理想数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3847898/

相关文章:

c# - 在 .NET 中使用数据库

android - 为什么osmdroid加载了很多 map 。 & 缩放到错误的位置

java - Android 查询 - 检测位置

sql - 如何使用 Perl 将带有 -- 的 SQL 注释转换为 #?

php - 为什么我的其中一列显示为空?

sql - 为什么为使用 ORDER by 的选择打开的游标不反射(reflect)对后续表的更新

python - Tweepy 位置过滤器不起作用

sql - 如果有相同的记录,我会增加数值,或者如果没有,则插入想做0

sql - 选择小于 site_name 的 site_acr

mysql - OpenSuse - 在 mysql 上设置时区