将OpenStreetMap-Data(OSM-File)导入MySQL-Database / SQL-File

时间:2013-11-21 15:38:10

标签: mysql xml openstreetmap osmosis

简介

我下载并解压缩了OpenStreetMap源文件(See here)。我现在有一个400GB的XML源文件,我想(1)将数据插入MySQL表 OR (2)将其导出到SQL文件,无关紧要。

我已经做过/尝试过的事情

  1. 我有XML文件^^和MySQL服务器(5.6.14)
  2. 我找到了工具Osmosis来转换OSM数据并安装了它
  3. 我读过这篇文章:Read cities and streets into a database without api
  4. 我也读过这篇文章:Is this config is capable to import complete osm planet file?(它是。)
  5. 我尝试使用渗透法插入数据,但是几秒后它会抛出一个错误,或者几个小时都没有做任何事情,而没有插入一行。我也不明白这应该如何工作,因为我没有MySQL中的OSM表结构。
  6. 问题

    通常是否可以在数据库/ SQL文件中导入整个文件,如果是,如何?我在哪里可以找到表/数据库结构?有没人试过?

    非常感谢!

2 个答案:

答案 0 :(得分:3)

嗯,确实有可能:http://wiki.openstreetmap.org/wiki/MySQL
但请注意,这是不受支持的解决方案:

  • 没有地理空间扩展
  • 自定义数据库架构
  • OSM工具链的主要工具不支持

我强烈建议使用PostGIS扩展切换到postgreSQL,这是GIS世界的半标准。

最终它取决于您的用例(原型设计......具有实时OSM数据更新的高可用性DB服务器)。您可以在http://switch2osm.org

找到更多信息

答案 1 :(得分:2)

我相信这个问题的答案现在已经改变了。从MySQL 5.6开始,MySQL现在有一个功能齐全的OpenGIS地理空间功能集(它甚至不是扩展;它是内置的)。因此,从纯粹的理论角度来看,没有理由不能使用您用于PostgreSQL的标准的,支持的数据库模式将OSM数据导入MySQL(当然,必要时会更改语法)。实际上,this presentation(仍然指的是MySQL的OpenGIS支持的旧版本,不完整版本)表明,通过适当的索引,一些MySQL地理空间动作实际上可能比PostgreSQL PostGIS更好,尽管我确信这是最好的辩论。所以剩下的问题是导入工具......

目前,没有正式osm2mysql相当于osm2pgsql。有几个项目名为osm2mysql,但我看到人们只有中等 - 如果有的话 - 使用这些项目。但是,GDAL的开源ogr2ogr似乎是一个非常可行的解决方案。

我下载,编译并安装了ogr2ogr,并且能够将 shapefile 导入到MySQL中的地理空间模式中,并成功地(并且显然准确地)使用类似的东西查询数据ST_Contains(...)。我还没有尝试过OSM(这是我的下一步),但ogr2ogr声称完全支持OSM(XML 二进制),所以考虑到我对shapefile的成功,我想我将与OSM取得类似的成功。

我确实遇到了一些初步问题,其中一个可能与我在make clean次尝试之间未使用configure以及与所涉及的大型查询相关的其他问题有关(一些插入> 1MB )和一些需要调整以补偿的MySQL设置。您可以在this mailing list thread.

中查看我的解决方案的详细信息