Python 地理编码工具箱
项目描述
geopy 是几个流行的地理编码网络服务的 Python 客户端。
geopy 使 Python 开发人员可以使用第三方地理编码器和其他数据源轻松定位全球地址、城市、国家和地标的坐标。
geopy 包括用于OpenStreetMap Nominatim的地理编码器类、 Google 地理编码 API (V3)和许多其他地理编码服务。完整列表可在Geocoders 文档部分找到。地理编码器类位于geopy.geocoders。
geopy 针对 CPython(版本 3.5、3.6、3.7、3.8、3.9)和 PyPy3 进行了测试。geopy 1.x 系列还支持 CPython 2.7、3.4 和 PyPy2。
© geopy 贡献者 2006-2018(参见作者)在MIT 许可下。
安装
使用pip安装:
pip install 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
文档
更多文档和示例可以在 Read the Docs中找到。