代码之家  ›  专栏  ›  技术社区  ›  Thomas O

地理(地图)数据的理想数据库

  •  9
  • Thomas O  · 技术社区  · 14 年前

    我正在寻找一个理想的数据库或数据结构存储地图的建议。从本质上说,地图由“道路”组成,就像道路、路径等。道路包含节点(有经纬度坐标,有时还有海拔高度)

    1. 应该能够快速找到边界框中的所有节点(毫秒)

    2. 可选地,当边界框中有大量节点时,与少数节点相比,或者如果边界框很大,则不应显著降低速度

    3. 应该能够找到直接连接的节点:例如,通过两种方式连接的节点

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

    (我故意使用开放式街道地图的相同术语,因为我计划使用这些数据。)

    5 回复  |  直到 11 年前
        1
  •  6
  •   Richard Harrison    14 年前

    我推荐 PostGIS 1.5 使用 输入,因为它适合你想要的,但是我唯一关心的是在嵌入式设备上使用这样的东西会占用内存。

        2
  •  5
  •   Harry Wood    14 年前

    PostGIS 可能是最好的选择。注:PostGIS 带地理扩展的PostgreSQL。你可以直接安装postgres,然后运行各种脚本来添加geo函数和类型。

    OpenStreetMap information about PostGIS . 您可以使用osm2pgsql将OpenStreetMap planet文件/planet摘要加载到PostGIS中,这是在OpenStreetMap tile服务器上执行的操作,Mapnik渲染器在该服务器上运行。然而。。。

    OpenStreetMap数据还有一个更原始的数据库模式(表名为“节点”和“方式”等),这是什么 主要的 OpenStreetMap数据库服务器用于存储其地理数据并允许通过API进行编辑。当涉及到空间索引等时,这并不是很聪明,但是很好很简单。您可以通过安装 OpenStreetMap API/website ruby on rails code database schema (定义人 the rails migrations ). 之后,你可以运行 osmosis

        3
  •  1
  •   Frank    14 年前

    据我所知,最好的地理数据数据库是PostgreSQL和geo扩展,但我不知道速度。我知道OSM使用这个,但是他们可以访问一个巨大的计算机基础设施 快速的 . 我还知道,他们有几个要求,可以为他们编写更快的程序。

    我想说,四叉树是处理地理部分数据的一个很好的选择,从我所能知道的看来,你似乎让正方形变得太小了。您可以使边界更柔和(允许一个节点位于四叉树的两个叶子中),并为每个叶子添加最少数量的节点。假设任何叶都不允许包含少于64个节点,且不超过1024个节点。

    排序对于速度来说尤其重要,建议首先对更可能被访问的rea进行排序。假设70%的请求都在伦敦附近,那么将这些数据放在文件的开头以减少搜索时间将是最快的。

        4
  •  1
  •   Jonathan Van Matre    13 年前

    PostGIS不是唯一一个支持地理空间数据的数据库,但是它的价格非常好。“难以击败”。

    就像摄影界的格言——“最好的相机就是你随身携带的相机”——有时候理想的空间数据库就是你已经拥有并知道如何使用的数据库。

    下面是我所知道的所有选项的列表:

    • Oracle(带Spatial或Locator)(免费选项:Oracle XE+Locator)
    • MS SQL Server(2008或更高版本)(免费选项:SQL Server Express)

    空间关系数据库-没有免费选项

    • DB2(带Spatial Extender)

    不太理想的空间关系数据库

    空间“扩展件”

    • ArcSDE(将其添加到现有的RDBMS中)
        5
  •  0
  •   Vinko Vrsalovic    14 年前

    我不确定空间,但您可能需要考虑使用通用数据库服务器的任何地理扩展(如果可能的话)。它们通常提供快速地理索引,基于边界框(回答1和2)许多地理过程来进行计算(回答3, intersect(way1,way2) ).

    而且,你的问题更符合 http://gis.stackexchange.com