您可以使用反向地理编码服务/提供商(如OpenStreetMap、Google或Esri提供的服务/提供商)检索有关位置的信息。
(有一个概述
here
Python的
geocoder
软件包。)
下面是使用
地理编码
包装和
OpenStreetMap (Nominatim)
作为提供者:
# pip install geocoder requests
import time
import requests
import geocoder
locations = (
(40.7368436, -74.1524242),
(44.6371650, -63.5917312),
(47.2233913, 8.817269106),
)
with requests.Session() as session:
for location in locations:
g = geocoder.osm(
location=location,
method="reverse",
lang_code="en",
session=session,
headers={
"User-Agent": "Stackoverflow Question 69578280"
},
)
print(g.osm) # or print(g.json)
# slow down loop in order to comply with the Nominatim's Usage Policy:
# https://operations.osmfoundation.org/policies/nominatim
time.sleep(1)
或者,还有其他Python库,例如
ArcGIS for Python API
或
GeoPy
。下面是一个使用
geopy
同时使用OpenStreetMap(Nagnitm)作为提供程序的软件包:
# pip install geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter
locations = (
(40.7368436, -74.1524242),
(44.6371650, -63.5917312),
(47.2233913, 8.817269106),
)
locator = Nominatim(user_agent="Stackoverflow Question 69578280")
# using RateLimiter to comply with Nominatim's Usage Policy
reverse = RateLimiter(locator.reverse, min_delay_seconds=1)
for location in locations:
result = reverse(location, language="en")
print(result.raw)
注:
确保您阅读了您将要使用的服务的使用条款。诺曼蒂姆的使用政策如下:
https://operations.osmfoundation.org/policies/nominatim