首页软件基础教程GeoPandas【GeoPandas空间数...

【GeoPandas空间数据分析】16.地理编码(Geocoding)


本系列文章是根据GeoPandas官方文档翻译整理,学习任何一个Python第三方库,其官方文档都是最好的学习资料。相比网络搜索得到的一些资料,官方文档是权威的一手资料,其内容全面、准确可靠。通过官方文档入手,能够保证学习认知不会有大偏差。在学习完官方文档后,可以在寻找其他资料进一步学习。

点击“阅读原文”或者直接访问下方链接,查看翻译整理的“GeoPandas 0.12.2 中文文档”。

https://www.mizhushare.com/docs
本系列文章配套代码获取有以下两种途径:
  • 可以通过百度网盘获取,需要在本地配置代码运行环境:
链接:https://pan.baidu.com/s/185Qs6RpVhyP2nm9VV39Ehw?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/geopandas




GeoPandas通过geopy 库支持地理编码(将地名转换为地球上的位置)。
Geopy是一个地理处理包,可以实现地理编码、逆地理编码等功能。使用 地理编码功能时,需要借助 Geopygeocoders 模块,Geopy把所有第三方API封装到 geocoders 中。
支持的第三放平台可以前往官网查看:
1https://geopy.readthedocs.io/en/stable/index.html#

本次以GeoPandas自带的nybb数据集为例。

 1>>> boros = gpd.read_file("./datasets/nybb_16a.zip")
2>>> boros
3   BoroCode       BoroName     Shape_Leng    Shape_Area                                           geometry
40         5  Staten Island  330470.010332  1.623820e+09  MULTIPOLYGON (((970217.022 145643.332970227....
51         4         Queens  896344.047763  3.045213e+09  MULTIPOLYGON (((1029606.077 156073.814102957...
62         3       Brooklyn  741080.523166  1.937479e+09  MULTIPOLYGON (((1021176.479 151374.797102100...
73         1      Manhattan  359299.096471  6.364715e+08  MULTIPOLYGON (((981219.056 188655.316980940....
84         2          Bronx  464392.991824  1.186925e+09  MULTIPOLYGON (((1012821.806 229228.265101278...
9
10>>> boros.BoroName
110    Staten Island
121           Queens
132         Brooklyn
143        Manhattan
154            Bronx
16Name: BoroName, dtype: object

通过geopandas.tools.geocode()实现地理编码:

1>>> boro_locations = gpd.tools.geocode(boros.BoroName)
2>>> boro_locations
3                     geometry                                           address
40  POINT (-74.14960 40.58346)  Staten Island, New York, New York, United States
51  POINT (-73.82831 40.71351)         Queens, New York, New York, United States
62  POINT (-73.94972 40.65260)       Brooklyn, New York, New York, United States
73  POINT (-73.95989 40.78962)      Manhattan, New York, New York, United States
84  POINT (-73.87859 40.84665)      The Bronx, New York, New York, United States

默认情况下,geocode() 函数使用 Photon 地理编码 API。但是可以使用 provider 关键字指定不同的地理编码服务。

provider的参数可以是引用地理编码服务的字符串,例如“google”“bing”“yahoo”“openmapquest”,也可以是来自 geopyGeocoder 实例。

 Geopy支持百度地图API,需要提前前往百度地图开放平台注册账号并申请秘钥(AK)。

例如,要使用 OpenStreetMap Nominatim 地理编码器,需要指定一个用户代理:

1geopandas.tools.geocode(boros.BoroName, provider='nominatim', user_agent="my-application")

需要注意的是,使用前需要先查阅所选供应商的服务条款。例如,在上面的例子中的 “Photon”(默认),如果大量访问将会被限制。(Photon的使用条款)。


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments