python - Rasterio rasterize 功能:无法插入正确的几何图形
问题描述
尝试使用 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 和用于分级的栅格之间的投影是相同的
任何人都知道可能是什么问题?
解决方案
几何实际上是有效的!features.is_valid_geom(geom_fiona)
返回false
是因为我将整个几何图形作为参数。写作features.is_valid_geom(geom_fiona[0])
归来True
。但是光栅化仍然不正确,没有任何改变......
推荐阅读
- node.js - 如何从仅在最后几分钟内插入的 MongoDB 中获取文档?
- typescript - 故事书构建错误您可能需要刷新浏览器
- excel - 如何在 VBA 中同时选择特定范围和数据透视表?
- arrays - 输出绑定到数组的符号 (C++)
- facebook-graph-api - Facebook API 突然清空潜在客户结果
- terraform - 是否可以使用 terragrunt 调用多个 terraform 模块
- python - Coinbase pro API 在购买订单上返回 None
- c++ - 为什么当我运行一个计数为 5368709120 和几行 memcpy 的 for 循环时性能会大大降低?
- ios - iOS 上的 Google MLKit 对象检测问题
- flipkart-api - 如何使用卖家列表 API 在 Flipkart 中创建产品?