你好,我是kelly。
今天分享pyshp+shapely,在分析地理空间数据时常用的2个Python库。在地理信息系统GIS(Geographic Information System)领域,处理和分析地理空间数据是一项非常重要的任务。
一、读写地理空间数据
地理空间数据为矢量格式,一般存储为Shapefile文件,Shapefile文件属于一种矢量图形格式,能够保存几何图形的位置及相关属性。
Shapefile文件是美国环境系统研究所公司(ESRI)在1998年作为一种开放规范发布的矢量数据格式,已成为GIS数据的一种标准,目前几乎所有的地理空间分析软件都支持Shapefile文件。
Shapefile文件是一种文件存储方法,实际包括多个文件,其中最重要文件包含.shp,.shx,.dbf、.prj文件等。
.shp文件:保存要素几何的实体,包括几何图形。
.shx文件:形状几何索引,记录几何体在shp文件的位置。
.dbf文件:数据库文件,存储每个几何形状的属性数据。
.prj文件:保存地理坐标系统与投影信息。
读写地理空间数据最常用的Python库是pyshp,截止本文发表时,pyshp的最新版本为2.3.1。
官方网址:
https://github.com/GeospatialPython/pyshp
安装:
pip3 install pyshp==2.3.1
二、几何对象处理库
读取地理空间数据后,一般还需要进行各种处理操作,这时需要用到其他Python库。
Shapely是一个Python库,可以对笛卡尔坐标平面上的几何对象进行操作和分析,通常配合pyshp库使用。
官方网址:
https://github.com/shapely/shapely
安装:
pip3 install shapely==2.0.2
三、使用示例
在地理空间领域,最常见操作是判断经纬度点是否在某一个空间范围内:
首先,导入库
import shapefile
from shapely import geometry
其次,读取地理空间数据,并转为geometry类型
# 某个空间范围shap文件(一系列经纬度点的多边形)
path_file = ".shp文件的路径"
sf = shapefile.Reader(path_file, encoding="utf-8")
shape_records = sf.shapeRecords()
# 笔者.shp文件存放多个shape数据,这里取第一个shape,并转为geometry
geom = geometry.shape(shape_records[0].shape)
最后,判断点是否在空间范围内
# 给定一个经纬度坐标点
point = (113.559684,23.331406)
# 判断坐标点是否在目标的空间范围内,flag=True表示在,否则不在。
flag = geometry.Point(*point).within(geom)
本文原始版本发表链接:
kelly会在公众号「kelly学技术」不定期更新文章,感兴趣的朋友可以关注一下,期待与您交流。
--over--