目录
Geopy进行地址经纬度等转换
Geopy是怎样工作的呢?
Geopy的下载
Geopy的应用
Geopy官方文档:https://geopy.readthedocs.io/en/latest/#
Geopy可以满足地址经纬度转换等操作。
就像官方说的geopy地理编码由许多不同的服务提供,这些服务与geopy没有任何关联。说到底geopy的地理编码是通过调用API服务得到我们想要的东西。地理编码服务有Google Maps、Bing Maps、Baidu、or Nominatim 等,每个服务都有自己的geopy.geocoders 类,我们调用对应的类来进行数据处理。
可以用pip或是conda来进行下载
pip install geopy
### 通过地址获取经纬度。
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', ...}
上面的案列中 user_agent是必要参数。
### 通过地址来获取经纬度
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.raw)
#{'place_id': '654513', 'osm_type': 'node', ...}
我用的是百度地图API来进行数据的转换。通过地址来获取经纬度
from geopy.geocoders import BaiduV3
geolocator = BaiduV3(api_key='ZWQlUrANoWrhw25GWBUyy.......') # 定义对象
location = geolocator.geocode('北京天安门') # 传入位置字符串
lat,lng = location.latitude,location.longitude
print(location.address) # 打印地址信息
print(lat,lng) # 打印纬度、经度
print(location.altitude) # 打印海拔
上面的api_key是必要参数。可以到百度地图开发平台进行注册并获取。但是这些服务都有次数的限制。如果你的数据比较大的话可以用【代理池】或是 【申请多个key 随机获取key】(这俩个我没有试,我看到有些大佬这么说,但是觉得有实现的可能性)