涉及到空间数据处理的时候,为了比较清晰方便的看出空间数据所处的区域,通常都需要将省市边界线加到地图中。
Python中也提供了大量的shp文件处理方法,有底层的一些库,也有一些封装比较完整的库。比如:
- fiona:基于ogr的封装,提供了更简洁的API
- pyshp:纯python实现的shape文件处理库,支持shp,shx和dbf文件的读写
ogr
:gdal中的用于处理边界文件的模块- geopandas:基于
fiona
进行了封装
fiona
安装
|
|
读取shp文件
|
|
获取shp文件中属性信息
|
|
获取shp文件编码
|
|
获取shp文件投影信息
|
|
获取shape子文件
|
|
查看shape子文件信息
|
|
Note
type
:表示shape子文件的类型
id
:shape子文件的序号
geometry
:包含shape子文件的类型和经纬度信息(字典类型),包含了 type
和 coordinates
两个关键词
properties
:shape子文件的属性信息
|
|
shps 变量包含了一些方法可以获取shape文件中的每个边界,比如 .next
,.iterms
等。
Warning
.next
方法将在 fiona 2.0版本中移除,可改用 next(iter(shps))进行单个迭代,或者使用 shps.iterms 进行循环迭代。
fiona中提供了shp文件的读取方法,但是并没有提供可视化方法,如果使用fiona处理,还需要单独进行画图的操作。
写shp文件
构建shp文件的操作很少使用,但有时候可能需要从已有的shp文件中提取一个子区域。
|
|
fiona默认的方式是读,只需要改为写,然后提供源文件中的一些信息即可。
|
|
上述方法只是从源文件中随意选择了一个子区域,可以根据需要选择特定的区域,然后写入文件即可。
Note
⚠️:不要忘记更新文件。
pyshp
安装
|
|
文件读取
|
|
读取后返回的 shps
中也包含了很多方法,其中 .fields
包含了shape文件中的一些字段信息,类似 fiona 中的 .schema
方法:
|
|
|
|
读取shape子文件
|
|
获取子文件属性信息
|
|
Note
类似 fiona 中获取shape子文件的属性信息,但fiona返回为字典。
获取子文件坐标信息
|
|
上述两个库,均可以进行shape文件的读写操作,但并没有提供可视化的方法。如果想看图的时候可以使用ArcGIS或者QGIS,导入文件即可。或者使用geopandas进行处理,geopandas提供了shape文件的处理和可视化,具有更为简便的API。
geopandas
安装
|
|
文件处理和可视化
|
|
包括库导入也只需要3行代码即可。