检索一个国家的城市列表
Retrieve cities list of a country
哪个 api 检索给定国家/地区的所有城市最好?
我尝试从 geonames 下载。但似乎数据不可靠。`
是否可以在立交桥中查询城市以及州和国家/地区 api?
能否请您推荐一个更好的下载城市及其点数的方法?
我会回答你关于立交桥的第二个问题API。您可以使用 API 查询特定国家/地区的城市。为了展示其功能,OSM 有一个基于 Web 的查询工具,称为 Overpass Turbo (http://overpass-turbo.eu),您可以在其中提交查询并显示和下载数据。以下查询将提供美国的所有城市,例如:
{{geocodeArea:"United States"}}->.searchArea;
(
node["place"="city"](area.searchArea);
);
out body;
>;
out skel qt;
查询将return以下内容:
每 OSM Wiki, the "city" tag is used "to identify the largest settlement or settlements within a territory, including national, state, and provincial capitals, and other major conurbations." On the same Wiki page, there is a note about differentiating between cities and towns. In the above query, "city" can be replaced with "town". Other possible values (including country and state) are listed here: 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"
},
我通过使用 python 包 overpass api with the help of 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 服务器来说是一项非常艰巨的任务。获取您真正需要的数据。
如果您特定于城市或州或国家的名称,那么您可以使用此 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')
如果您要搜索 APIs 以获取国家列表和特定国家的城市列表,请尝试 https://github.com/shivammathur/countrycity
- 您只需 GET
https://shivammathur.com/countrycity/countries
即可获得所有国家/地区的列表。
https://shivammathur.com/countrycity/countries/ind
只得到
其中有“ind”的县。
https://shivammathur.com/countrycity/cities/India
获取印度的所有城市。
- 您可能会遇到上述用于前端应用程序的 URL 的 CORS 问题,在这种情况下,请尝试 https://countrystatecity.in/。为此,您可以通过填写 google 表格在一天内获得一个 API 密钥。
或者如果你正在寻找JSON持有这个数据,请参考:
哪个 api 检索给定国家/地区的所有城市最好? 我尝试从 geonames 下载。但似乎数据不可靠。` 是否可以在立交桥中查询城市以及州和国家/地区 api?
能否请您推荐一个更好的下载城市及其点数的方法?
我会回答你关于立交桥的第二个问题API。您可以使用 API 查询特定国家/地区的城市。为了展示其功能,OSM 有一个基于 Web 的查询工具,称为 Overpass Turbo (http://overpass-turbo.eu),您可以在其中提交查询并显示和下载数据。以下查询将提供美国的所有城市,例如:
{{geocodeArea:"United States"}}->.searchArea;
(
node["place"="city"](area.searchArea);
);
out body;
>;
out skel qt;
查询将return以下内容:
每 OSM Wiki, the "city" tag is used "to identify the largest settlement or settlements within a territory, including national, state, and provincial capitals, and other major conurbations." On the same Wiki page, there is a note about differentiating between cities and towns. In the above query, "city" can be replaced with "town". Other possible values (including country and state) are listed here: 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"
},
我通过使用 python 包 overpass api with the help of 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 服务器来说是一项非常艰巨的任务。获取您真正需要的数据。
如果您特定于城市或州或国家的名称,那么您可以使用此 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')
如果您要搜索 APIs 以获取国家列表和特定国家的城市列表,请尝试 https://github.com/shivammathur/countrycity
- 您只需 GET
https://shivammathur.com/countrycity/countries
即可获得所有国家/地区的列表。 https://shivammathur.com/countrycity/countries/ind
只得到 其中有“ind”的县。https://shivammathur.com/countrycity/cities/India
获取印度的所有城市。- 您可能会遇到上述用于前端应用程序的 URL 的 CORS 问题,在这种情况下,请尝试 https://countrystatecity.in/。为此,您可以通过填写 google 表格在一天内获得一个 API 密钥。
或者如果你正在寻找JSON持有这个数据,请参考: