检索给定国家/地区中所有城市的最佳api是哪个? 我尝试从地名下载。但似乎数据不可靠。 可以在立交桥api中查询城市以及州和国家/地区吗?
您能建议一种下载城市及其地点的更好方法吗?
答案 0 :(得分:1)
在overpass api(它是一个python软件包)的帮助下,我通过使用overpy完成了类似的任务。
首先,我使用查询检索了所有国家/地区
[out:json];
area["ISO3166-1"="IN"];
(rel(area)["admin_level"="4"];);
out;
现在,我已为admin_level=5
的每个州提取了所有地区。
[out:json];
area["ISO3166-2"="IN-KL"];
(rel(area)["admin_level"="5"];);
out;
状态ISO3166-2
来自从API接收的数据。
现在,您可以使用API中的数据来获取每个地区的城市。
[out:json];
area["ISO3166-2"="{0}"]["admin_level"="4"];
(rel["name"="Thiruvananthapuram"](area);)->.center;
node(around.center:10000)["place"];
out;"""
这对我有用。 记住,对于OSM服务器来说,获取一个国家的所有城市是一项非常艰巨的任务。提取您真正需要的数据。
答案 1 :(得分:0)
我将回答您有关Overpass API的第二个问题。您可以使用该API查询特定国家/地区的城市。仅为了证明其功能,有一个针对OSM的基于Web的查询工具,称为Overpass Turbo(http://overpass-turbo.eu),您可以在其中提交查询以及显示和下载数据。以下查询将提供美国的所有城市,例如:
{{geocodeArea:"United States"}}->.searchArea;
(
node["place"="city"](area.searchArea);
);
out body;
>;
out skel qt;
查询将返回以下内容:
每OSM Wiki,“城市”标签用于“识别一个领土内最大的一个或多个定居点,包括国家,州和省府以及其他主要城市。”在同一Wiki页面上,有关于区分城镇的注释。在上面的查询中,“城市”可以替换为“城镇”。其他可能的值(包括国家和州)在此处列出:https://wiki.openstreetmap.org/wiki/Key:place#Values
如果您希望从数据中获取城市与州之间的关系,则可能不会总是获得可靠的结果。例如,您可能会获得明尼苏达州德卢斯的以下详细GeoJSON条目:
{
"type": "Feature",
"properties": {
"@id": "node/19188464",
"is_in": "Minnesota USA",
"is_in:continent": "North America",
"is_in:country": "USA",
"is_in:country_code": "US",
"is_in:state": "Minnesota",
"name": "Duluth",
"name:ja": "ダルース",
"name:oj": "Onigamiinsing",
"name:ru": "Дулут",
"place": "city",
"population": "86265",
"population:source": "2010",
"wikidata": "Q485708",
"wikipedia": "en:Duluth, Minnesota"
},
"geometry": {
"type": "Point",
"coordinates": [
-92.1251218,
46.7729322
]
},
"id": "node/19188464"
},
但只有威斯康星州麦迪逊市的以下条目:
{
"type": "Feature",
"properties": {
"@id": "node/29941752",
"alt_name:ru": "ÐœÑдиÑон",
"capital": "4",
"is_in:continent": "North America",
"is_in:country": "USA",
"name": "Madison",
"name:en": "Madison",
"name:pl": "Madison",
"name:ru": "МадиÑон",
"name:ta": "மேடிசனà¯",
"name:uk": "МедіÑон",
"place": "city",
"population": "243344",
"state_capital": "yes",
"website": "http://www.cityofmadison.com/",
"wikidata": "Q43788",
"wikipedia": "en:Madison, Wisconsin"
},
"geometry": {
"type": "Point",
"coordinates": [
-89.3837613,
43.074761
]
},
"id": "node/29941752"
},
答案 2 :(得分:0)
如果您特定于城市,州或国家/地区的名称,那么您可以使用此API。 https://pypi.org/project/geosky/
此API记录了所有国家,州和城市。这是示例代码...
from geosky import geo_plug
geo_plug.all_CountryNames()
geo_plug.all_Country_StateNames()
geo_plug.all_State_CityNames(name)# name == 'all' or state name
geo_plug.all_State_CityNames('Odisha')