我已经展示了使用诸如Open Street Map提供的API在R中以城市或位置名称的形式对空间数据进行地理编码的各种可能性。 在这篇文章中,我将演示使用Geopy在Python中对位置名称进行地理编码的可能性。 Geopy是一个Python模块,可通过提供对各种地理编码服务的访问来允许对字符串进行地理编码。 在下面,我导入Geopy(支持pip install命令),并使用Nominatim服务将其用于对城市名称列表进行地理编码。这是基于开放街道地图的服务。
#导入Geopy import geopy #获取Nominatim服务对象的处理程序 service = geopy.Nominatim(user_agent = "myGeocoder") #使用Nominatim(即OSM)服务对城市名称进行地理编码 service.geocode("Berlin, Germany")
Location(Berlin, Deutschland, (52.5170365, 13.3888599, 0.0))
geocode()函数返回位置类型的特殊数据类型。位置对象具有各种属性:
#通过使用Nominatim服务对德国柏林的城市名称进行地理编码来创建另一个位置对象 locationObj = service.geocode("Berlin, Germany") #纬度 print(locationObj.latitude) # 经度 print(locationObj.longitude)
52.5170365 13.3888599
使用这些纬度和经度,现在可以例如结合使用Python中的Folium模块和Geopy,在地图上放置标记:
#进口大叶 import folium #创建以柏林为中心的基础地图 mapObj = folium.Map(location = [locationObj.latitude,locationObj.longitude], zoom_start = 5) #为柏林创建标记对象 markerObj = folium.Marker(location = [locationObj.latitude,locationObj.longitude]) #在地图上添加标记 markerObj.add_to(mapObj) #显示地图 mapObj
专业领域为优化和仿真的工业工程师(R,Python,SQL,VBA)
Leave a Reply