【发布时间】:2021-11-02 23:30:54
【问题描述】:
我正在尝试找到一种方法来使用 OpenStreetMap API 来获取特定国家/地区所有城市的列表以及它们的经度和纬度,以便开发 iOS 应用程序。
但是我无法这样做。我一直在尝试使用 Overpass API,但找不到合适的参数来列出所有城市(而不仅仅是前 1000 名左右)。
有人知道返回正确 JSON 的方法吗?
【问题讨论】:
标签: json openstreetmap
我正在尝试找到一种方法来使用 OpenStreetMap API 来获取特定国家/地区所有城市的列表以及它们的经度和纬度,以便开发 iOS 应用程序。
但是我无法这样做。我一直在尝试使用 Overpass API,但找不到合适的参数来列出所有城市(而不仅仅是前 1000 名左右)。
有人知道返回正确 JSON 的方法吗?
【问题讨论】:
标签: json openstreetmap
对于 API,您的查询不是(恕我直言)一个好的查询,因为您的结果非常稀疏,但需要遍历所有数据(没有通用索引)。
所以得到一个OSM extact,用osmosis 过滤它,然后对结果进行自己的处理。
请记住,在 OSM 中可以对城镇进行不同的建模:
【讨论】:
使用 Overpass API。
area["ISO3166-1"="CY"]->.a1;
(
nwr[place="city"](area.a1);
);
out body;
Link。打开控制台,点击运行查看请求和响应。
或者使用 curl
curl 'https://lz4.overpass-api.de/api/interpreter' \
--data-raw 'data=[out:json];area["ISO3166-1"="CY"]->.a1;
(
nwr[place="city"](area.a1);
);
out body;'
【讨论】:
例如,德国的所有州:
http://overpass-api.de/api/interpreter?data=(rel[admin_level="4"](47,6,55,15););out;
【讨论】:
curl 'http://overpass-api.de/api/interpreter' --data-raw 'data=(rel[admin_level="4"](47,6,55,15););out;' 运行它,但它带来了大量数据。可以更简洁吗?顺便说一句,它可以返回 JSON 吗?