【问题标题】:Import OpenStreetMap-Data (OSM-File) to a MySQL-Database / SQL-File将 OpenStreetMap 数据(OSM 文件)导入 MySQL 数据库/SQL 文件
【发布时间】:2013-11-21 15:38:09
【问题描述】:

简介

我下载并提取了 OpenStreetMap 源文件 (See here)。我现在有一个 400GB 的 XML 源文件,我想 (1) 在 MySQL 表中插入数据 (2) 将其导出到 SQL 文件,没关系。

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

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

问题

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

非常感谢!

【问题讨论】:

  • 在 2019 年,我开发了一个名为 osm-to-sql 的命令行工具,用于将任何 OSM XML 文件转换为单独的 SQL 文件。转换后,您可以将这些 SQL 文件导入您的 MSSql/SQLite/MySQL ... 等服务器。 github.com/whizsid/osm-to-sql

标签: mysql xml openstreetmap osmosis


【解决方案1】:

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

目前,没有与osm2pgsql 等效的官方osm2mysql。有几个名为osm2mysql 的项目,但我看到人们在使用这些项目时只有中等程度的成功(如果有的话)。不过GDAL 的开源ogr2ogr 似乎是一个非常可行的解决方案。

我下载、编译和安装了ogr2ogr,并且能够将 shapefile 导入 MySQL 的地理空间架构中,并使用 @987654329 之类的东西成功(并且显然准确地)查询数据@。我还没有尝试过 OSM(这是我的下一步),但 ogr2ogr 声称完全支持 OSM(XML 二进制文件),所以考虑到我在 shapefile 方面取得的成功,我想我会有OSM 也取得了类似的成功。

我确实遇到了一些初始问题,其中一个可能与我在 configure 尝试之间没有使用 make clean 有关,而其他问题与涉及的大型查询(一些插入 > 1MB)和一些 MySQL 设置有关这需要调整以弥补。您可以在this mailing list thread.查看我的解决方案的详细信息

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 首先感谢您的回答!不幸的是,到目前为止我从未使用过 postgre,所以我会检查这个链接,谢谢。
    • 我不想把它挖回来,但我认为现在答案已经改变了。这部分:“没有地理空间扩展”不再正确(MySQL 现在有一个与 PostgreSQL 功能相同的地理空间扩展),应该在这个答案和 OpenStreet Map wiki 上进行更新(我会单独联系他们) .因此,鉴于此,答案现在应该有所不同(但我不知道是否如此)。有没有办法将这些地理空间数据放入 MySQL 的地理空间扩展中?来源:dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 2014-04-11
    • 2012-11-22
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2012-10-20
    相关资源
    最近更新 更多