本系列文章是根据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
的使用条款)。

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