python中处理空间地理数据时,往往需要处理shp文件PyShp package可以用于shp文件的读取、写入等操作
https://pypi.org/project/pyshp/
以下用代码形式显示其基本读取操作
import shapefile #导入模块
sf = shapefile.Reader('shapefiles/blockgroups.shp') #读入shp文件
sf.shapeType #查询shp属性,NULL = 0; POINT =1;POLYLINE =3; POLYGON =5;MULTIPOINT =8; POINTZ=11;POLYLINZ=13;POLYGONZ=15;MULTIPOINTZ =18; POINTM=21;POLYLINEM =23;POLYGONM=25;MULTIPOINTM=28;MULTIPATCH=31
sf.shapeTypeName #shp属性的具体名称
sf.bbox #shp的bounds
sf.__geo_interface__ #获取整个shp文件属性(一般将shp文件转换为GeoJSON用到)
sf.shape(index) #利用index获取其中单一shape
shapes = sf.shapes() #读取shape的geometry,输出为一个矩阵
#每个shapes都可以独立查询其属性
shapes[0].shapeType
shapes[0].shapeTypeName
shapes[0].bbox
shapes[0].points #线上的每个点坐标(x,y)
#获得shp文件的fields,每个field含有以下属性
##Field name 描述数据的column index
##Field类型:'C'-字符;'N'-数字;'F'-浮点数;'L'-逻辑数;'D'-时间;'M'-Memo
## Field length 在这个列index下数据长度
## Decimal length 小数点后的有效数位数
fields = sf.fields
# 获取 records
records = sf.records()
# 将records整理为字典型
dct = rec.as_dict()
# 同时读取geometry and records
shapeRecs = sf.shapeRecords()