光栅化函数:无法插入正确的几何图形

2024-09-24 22:25:26 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试使用光栅库中的光栅化函数光栅化具有特定属性的多段线形状文件。此函数需要一个包含(geometry,value)元组的iterable,其中geometry是一个类似GeoJSON的对象(请参见documentation)。这个几何体可以用fiona或geopandas提取,我读过this question并尝试过它(geopandas也是如此),但是这个几何体是不正确的,因为我用“is\u valid\u geom”测试了它,结果是“false”,这似乎是合乎逻辑的,因为当我打印这个几何体时,它显示:<generator object <genexpr> at 0x000001903856C048>。我也尝试过这样的菲奥娜:

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)

注意:我已经阅读了this,并且我的shapefile和用于评级的光栅之间的投影是相同的

有人知道问题出在哪里吗?你知道吗


Tags: 函数inforisvalue光栅thisgeopandas
1条回答
网友
1楼 · 发布于 2024-09-24 22:25:26

几何图形实际上是有效的!features.is_valid_geom(geom_fiona)返回false,因为我将整个几何体作为参数。写入features.is_valid_geom(geom_fiona[0])返回True。但光栅化仍然是不正确的,没有任何改变。。。你知道吗

相关问题 更多 >