geopy
2.4.1
geopy 是多种流行地理编码 Web 服务的 Python 客户端。
geopy 使 Python 开发人员可以使用第三方地理编码器和其他数据源轻松定位全球地址、城市、国家和地标的坐标。
geopy 包括 OpenStreetMap Nominatim 的地理编码器类、Google 地理编码 API (V3) 和许多其他地理编码服务。完整列表可在地理编码器文档部分找到。 Geocoder 类位于 geopy.geocoders 中。
geopy 针对 CPython(版本 3.7、3.8、3.9、3.10、3.11、3.12)和 PyPy3 进行了测试。 geopy 1.x 系列还支持 CPython 2.7、3.4 和 PyPy2。
© geopy 贡献者 2006-2018(参见作者),遵循 MIT 许可。
使用 pip 安装:
pip 安装 geopy
或者,从 PyPI 下载轮子或源存档。
要将查询地理定位到地址和坐标:
>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim( user_agent = " specify_your_app_name_here " )
>>> location = geolocator.geocode( " 175 5th Avenue NYC " )
>>> print (location.address)
Flatiron Building, 175, 5th Avenue, Flatiron, New York, NYC, New York, ...
>>> print ((location.latitude, location.longitude))
(40.7410861, -73.9896297241625)
>>> print (location.raw)
{'place_id': '9167009604', 'type': 'attraction', ...}
查找一组坐标对应的地址:
>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim( user_agent = " specify_your_app_name_here " )
>>> location = geolocator.reverse( " 52.509669, 13.376294 " )
>>> print (location.address)
Potsdamer Platz, Mitte, Berlin, 10117, Deutschland, European Union
>>> print ((location.latitude, location.longitude))
(52.5094982, 13.3765983)
>>> print (location.raw)
{'place_id': '654513', 'osm_type': 'node', ...}
Geopy 可以使用测地距离或大圆距离来计算两点之间的测地距离,默认测地距离可用作函数 geopy.distance.distance。
以下是测地距离的示例用法,采用一对(lat, lon)
元组:
>>> from geopy.distance import geodesic
>>> newport_ri = ( 41.49008 , - 71.312796 )
>>> cleveland_oh = ( 41.499498 , - 81.695391 )
>>> print (geodesic(newport_ri, cleveland_oh).miles)
538.390445368
使用大圆距离,还采用一对(lat, lon)
元组:
>>> from geopy.distance import great_circle
>>> newport_ri = ( 41.49008 , - 71.312796 )
>>> cleveland_oh = ( 41.499498 , - 81.695391 )
>>> print (great_circle(newport_ri, cleveland_oh).miles)
536.997990696
更多文档和示例可以在阅读文档中找到。