0

我正在使用 OpenStreetMap 和 OpenLayers 做一个项目。目前,我的任务是将我拥有的 OSM 文件中的数据插入 PostgreSQL。当我检查 Osmosis(用于将数据从 OSM 文件传输到数据库的工具)时,它说,在一个示例中,“将行星文件导入本地 PostgreSQL rails 端口数据库。”。这是否意味着我的项目必须使用 Ruby on Rails?我不了解 Rails,学习它会花费我太多时间。我可以使用 PHP 访问数据库吗?请帮我。非常感谢!

4

2 回答 2

2

您可以将节点、方式、标签等导入数据库模式,就像在 OpenStreetMap 服务器上使用的模式一样。Ruby on Rails迁移最终是 OSM 服务器使用的最新模式的唯一真正来源。但是您可能希望使用与脚本/contrib 目录中的 Osmosis 发行版捆绑在一起的数据库创建脚本来创建具有类似架构的数据库。

或者,对于某些应用程序,您可能希望 PostGIS 启用 Postgres 数据库(加载地理空间函数和数据类型的负载),然后以使用这些类型的格式加载 OpenStreetMap 数据。您可以使用 Osmosis 或 osm2pgsql 来做到这一点。见 PostGIS

或者,对于更基本的应用程序,您可以查看自己解析 .osm 格式。一个osm 文件包含一些“node”和“way”元素。每一个都可以有几个“标签”元素。还有“关系”元素。对于许多应用程序来说,这些可能是不必要的,但这完全取决于您想要做什么。也许您只需要节点(用于 POI 数据应用程序) 对于某些工作,直接使用 .osm 文件可能是可行的,在 PHP 中解析而不涉及数据库,尽管通常不适用于任何有意义的大面积地图数据。

您可能会在Category:PHP列出的工具中发现一些有用的代码

于 2010-09-10T16:08:11.387 回答
0

您需要知道打开 www.openstreetmap.org 时看到的界面/应用程序是用 RoR 编写的。用于访问数据的 API(地理编码)是通过 PHP API 完成的。因此,如果您不打算使用 Rails,则不需要它。数据库不在乎。

顺便说一句,Osmosis 的替代方案是 osm2pgsql,它不会“说出”任何关于 Rails 依赖项的内容(也就是说,如前所述,无论如何都不会使用)。

于 2010-09-07T08:22:51.683 回答