【问题标题】:Getting city boundaries from openstreetmap从openstreetmap获取城市边界
【发布时间】:2015-03-13 03:27:49
【问题描述】:

我正在开发一个网站,我需要根据用户输入来获取给定区域的所有边界。 例如,用户想知道一个名为 x 的城市的边界。我应该如何从 openstreetmap 中获取它?我听说过 xapi 和 osmosis,但在任何地方都找不到任何示例。 谢谢!

【问题讨论】:

标签: php openstreetmap


【解决方案1】:

我在这里尝试使用 JavaScript 进行此操作: https://github.com/pgkelley4/city-boundaries-google-maps

基本上归结为找到 OpenStreetMap 将城市边界存储为的relation

我使用类似以下查询来获取该区域:

area[name="Seattle"]["is_in:state_code"="WA"];foreach(out;);

或者如果没有找到任何东西,则通过节点查找任何相关区域:

node[name="New York"][is_in~"NY"];foreach(out;is_in;out;);

要获得关系 ID,请从上述查询返回的区域 ID 中减去 3600000000。然后从其 ID 中获取关系:

(relation(" + relationID + ");>;);out;

您可以在这里测试查询,我的可能会在以下方面进行改进: http://overpass-api.de/query_form.html

这就是如何获取城市边界,处理它们是另一回事,因为关系中没有任何东西是有序的。为此,请参阅我的 GitHub 项目和: http://wiki.openstreetmap.org/wiki/Relation:multipolygon/Algorithm

我还要注意,城市边界的 OpenStreetMap 数据参差不齐。据我所知,达拉斯和洛杉矶这样的大城市缺少它。

【讨论】:

  • 看起来他们从 2013 年起就加入了洛杉矶。达拉斯仍然不见踪影,但沃思堡和其他周边城市都在那里。见:openstreetmap.org/relation/207359
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多