【PYTHON】ArcGIS-shp地图电子围栏数据的处理
ArcGIS 是一款GIS信息的软件,它的数据中包含一些公开的地理位置信息,如不同区域水系、公园的电子围栏,以 shp 文件保存。
GeoPandas 包安装
这次我们需要的提取 shp 文件中包含的电子围栏信息,需要使用到 GeoPandas 包进行解析提取。
官方建议我们使用 conda 进行安装,相关信息可以参考 geopandas官方网站。
Easy way
The best way to install GeoPandas is using conda and conda-forge channel:
conda install -c conda-forge geopandas
在这里我们使用一个临时的测试环境进行安装,以避免安装出错时可能对原有环境造成污染,这也是我们使用 conda 对 python 进行环境管理的原因之一。
使用 conda 本应是一次性便捷安装,但使用 conda 安装的时候报错安装不成功,所以改用 pip 进行安装
可以看到,在当前环境下,Fiona 包安装错误。这时候需要我们对安装报错的包使用本地 whl 文件进行安装补齐。
whl文件下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
whl文件安装教程:python下载whl到本地自己安装
把需要安装的依赖的包都补齐后,GeoPandas 也就可以成功安装好了。
shp 信息提取
要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf"文件。
表示同一数据的一组文件其文件名前缀应该相同,并且所有的文件都必须位于同一个目录之中。
那么我们使用 GeoPandas 读取时,也需要使用这一规范存储的 shp 文件。
和 pandas 的操作类似,使用 geopandas.read_file() 函数即可解析出相应围栏数据。
这次我们需要的是提取每个位置点对应的电子围栏信息,存储在 geometry 字段。
但和常见的单元格不一致的是,直接对某个单元格提取的话,这个围栏直接就做了可视化展示,属于 Polygon 类型。
此时可以选择使用 list(df.loc[0, 'geometry'].exterior.coords) 的方法,将 Polygon 类型的围栏转换成一个 list of tuple,再在此基础上进行拼接,即可得到我们常见的电子围栏数据。