《Python地理空间分析指南 第2版》学习笔记-5.10地理化编码

1、地理化编码定义

地理化编码是将街道位置信息转换为经纬度的过程。该操作常见于车辆导航系统和在线位置导航网站。

Python有两个出色的地理编码库可供用户选择,它们分别是geocoder和geopy库。而且它们都提
供高级在线地理编码服务帮助用户实现地理位置编码程序的构建。geopy库甚至还能帮助用户将一个地理编码转换为经纬度以便匹配与之相关的最近位置。

2代码演示

2.1 geocoder

将对geocoder库做一个快速演示,并且默认使用谷歌地图作为其引擎:

  • 首先,将以geojson格式输出谷歌数据库中与该地址相关的所有信息。
  • 其次,输出WKT格式的经纬度
import geocoder
g = geocoder.google("1403 Washington Ave, New Orleans, LA 70130")
print(g.geojson)
print()
print(g.wkt)

注意:
该库的文档还包含调用其他在线地理编码服务的说明,例如Bing地图或者雅虎地图。其中某些服务可能需要申请API密钥并且有访问限制。

2.2 geopy

接下来演示geopy库。在本示例中,将反向地理编码OpenStreetMap数据库。一旦找到和给定位置匹配的地址,将反向地理编码它们,相关代码如下:


from geopy.geocoders import Nominatim
g = Nominatim()
location = g.geocode("88360 Diamondhead Dr E, Diamondhead, MS 39525")
print(location.raw)

# {'lon': '-89.3462139', 'osm_type': 'node',
# 'type': 'yes', 'place_id': '25470846',
# 'display_name': 'NVision Solutions Inc.,
# 88360, Diamondhead Drive East, Diamondhead,
# Hancock County, Mississippi, 39520,
# United States of America', 'boundingbox':
# ['30.3961462', '30.3962462', '-89.3462639',
# '-89.3461639'], 'licence': 'Data ©
# OpenStreetMap contributors, ODbL 1.0.
# http://www.openstreetmap.org/copyright', 'osm_id':
# '2470309304', 'importance': 0.421,
# 'class': 'office', 'lat': '30.3961962'}

rev = g.reverse("{},{}".format(location.latitude, location.longitude))
print(rev)

# Location(88360, Diamondhead Drive East, Diamondhead,
# Hancock County, Mississippi, 39525,
# United States of America, (30.39614105,
# -89.3463617900784, 0.0))



总结:

《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。

猜你喜欢

转载自blog.csdn.net/qq_32390983/article/details/124548092
今日推荐