5

介绍

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

我已经做过/尝试过的

  1. 我有 XML 文件^^ 和 MySQL 服务器 (5.6.14)
  2. 我找到了工具Osmosis来转换 OSM 数据并安装了它
  3. 我读了这篇文章:在没有api的情况下将城市和街道读入数据库
  4. 我还阅读了这篇文章:这个配置是否能够导入完整的 osm 星球文件?(这是。)
  5. 我尝试使用 osmosis 插入数据,但它会在几秒钟后引发错误,或者几个小时什么都不做,没有插入一行。我也不明白这应该如何工作,因为我在 MySQL 中没有 OSM 表结构。

问题

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

非常感谢!

4

2 回答 2

4

我相信这个问题的答案现在已经改变了。从 MySQL 5.6 开始,MySQL 中现在有一个功能齐全的 OpenGIS 地理空间功能集(它甚至不是扩展;它是内置的)。因此,从纯理论的角度来看,没有理由不能使用用于 PostgreSQL 的标准、受支持的数据库模式将 OSM 数据导入 MySQL(当然,语法会根据需要进行更改)。事实上,这个演示文稿(仍然是指 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 设置有关。您可以在此邮件列表线程中查看我的解决方案的详细信息。

于 2015-09-23T19:32:33.163 回答
3

好吧,确实有可能:http
://wiki.openstreetmap.org/wiki/MySQL 但是请注意,这是一个没有得到很好支持的解决方案:

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

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

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

于 2013-11-21T16:41:19.337 回答