尝试使用 Rasterio 库中的 rasterize 函数对具有特定属性的折线 shapefile 进行光栅化。这个函数需要一个包含 (geometry, value) 元组的可迭代对象,其中几何是一个类似 GeoJSON 的对象(参见文档)。这个几何可以用 fiona 或 geopandas 提取,我读过这个问题并尝试过(所以用 geopandas)但是几何不正确,因为我用“is_valid_geom”测试它,结果是“假”,这似乎是合乎逻辑的因为当我打印这个几何图形时,它会显示:<generator object <genexpr> at 0x000001903856C048>
。我也像这样尝试过 Fiona:
shapeee = fiona.open(shapefile)
geom_fiona = [shapes['geometry'] for shapes in shapeee]
attrib_fiona = [shapes['properties']['OBJECTID'] for shapes in shapeee] # attribute
print(features.is_valid_geom(geom_fiona)) # FALSE
这也返回“false”,但我不明白为什么,因为几何似乎是正确的:
print(geom_fiona)
"[{'type': 'LineString', 'coordinates': [(177421.98120000213, 142766.21020000055), (177409.1555000022, 142781.71609999985), (177392.76659999788, 142801.65300000086) and so on..."
所以最后,当我尝试光栅化时,我没有收到任何错误消息,但输出是一个空白图像,所有值都为 0... 光栅化代码:
tuples = []
for i in range(0,len(geom_fiona)-1,1):
tuples.append([geom_fiona[i],attrib_fiona[i]])
burned = features.rasterize(tuples, out_shape=new_dataset.shape,default_value=-99,dtype=rasterio.float64)
注意:我已经读过这个并且我的 shapefile 和用于分级的栅格之间的投影是相同的
任何人都知道可能是什么问题?