我有一个从以下位置下载的 shapefile (blockgroups.shp): https ://github.com/GeospatialPython/pyshp/tree/master/shapefiles
我想使用 PyShp 创建一个只有四个属性(bkg_key、pop1990、白色和黑色)的新 Shapefile。
我试过这段代码:
import shapefile
file= "blockgroups.shp"
outFile = "newblockgroup3000"
sf = shapefile.Reader(file)
shapeRec= sf.shapeRecords()
w = shapefile.Writer(shapefile.POLYGON)
w.field('BKG_KEY', 'C', 40)
w.field('POP1990', 'N', 40)
w.field('NWHITES', 'N', 40)
w.field('NBLACKS', 'N', 40)
for row in shapeRec:
bkg_key = row.record[1]
pop1990 = row.record[2]
white = row.record[7]
black = row.record[8]
points = row.shape.points
parts = row.shape.parts
w.parts = parts
w.poly([points])
w.record(bkg_key,pop1990,white,black)
w.save(outFile)
它适用于除一种以外的所有形状。
有一个记录有多个部分。包含多个部分的记录是'BKG_KEY = 060750601001'和'POP = 4531'。在新的 shapefile 中,这条记录有一个奇怪的形状,因为 pyShp 自动连接来自特征不同部分的第一个和最后一个顶点。
如果我只选择'POP1990 <4531'的记录和'POP1990>4531'的记录(不包括提到的记录),它会起作用,所以只有当有多个部分的记录时才会出现问题。
当我创建新的 shapefile 时,有什么方法可以保留原始 shapefile 的部分数量?我该如何处理这个问题。
我会很感激一些帮助。谢谢