本系列文章是根据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是一个地理处理包,可以实现地理编码、逆地理编码等功能。使用 地理编码功能时,需要借助 Geopy的 geocoders 模块,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.332, 970227....
51 4 Queens 896344.047763 3.045213e+09 MULTIPOLYGON (((1029606.077 156073.814, 102957...
62 3 Brooklyn 741080.523166 1.937479e+09 MULTIPOLYGON (((1021176.479 151374.797, 102100...
73 1 Manhattan 359299.096471 6.364715e+08 MULTIPOLYGON (((981219.056 188655.316, 980940....
84 2 Bronx 464392.991824 1.186925e+09 MULTIPOLYGON (((1012821.806 229228.265, 101278...
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”,也可以是来自 geopy的Geocoder 实例。
Geopy支持百度地图API,需要提前前往百度地图开放平台注册账号并申请秘钥(AK)。

例如,要使用 OpenStreetMap Nominatim 地理编码器,需要指定一个用户代理:
1geopandas.tools.geocode(boros.BoroName, provider='nominatim', user_agent="my-application")
需要注意的是,使用前需要先查阅所选供应商的服务条款。例如,在上面的例子中的 “Photon”(默认),如果大量访问将会被限制。(Photon的使用条款)。


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