如何栅格化每个像素有多个点的 pandas 数据框?

问题描述 投票:0回答:2

我正在使用 rasterio 将点的 geopandas 数据帧转换为 geotif 栅格。 为此,我正在使用这个 python 代码:

with rasterio.open("somepath/rasterized.tif", 'w+', **meta) as out:
    out.nodata = 0
    out_arr = out.read(1)

    # this is where we create a generator of geom, value pairs to use in rasterizing
    shapes = ((geom, value * 2) for geom, value in zip(gdf.geometry, gdf["PositionConfidence"]))

    burned = features.rasterize(shapes=shapes, fill=0, out=out_arr, transform=out.transform)
    out.write_band(1, burned)
    out.write_band(2, burned)
    out.write_band(3, burned)

    out_arr1 = out.read(1)

代码不仅向栅格写入固定值,而且还向栅格写入基于要转换的点的值。

问题在于每个光栅像素有很多点。使用上述方法,仅将单个点值刻录到像素。 我正在寻找的是将每个像素的所有点值的平均值刻录到给定像素。

感谢您的帮助

python rasterizing rasterio
2个回答
0
投票

我找到了一些想法:

首先我们将所有点按像素排序放入字典中。然后我们计算该像素中所有点所需的值,在本例中是某个值的平均值。现在我们将此值分配给具有像素坐标的新点,并使用它代替旧点。


0
投票

令人惊讶的是,“MEAN”合并算法在 GDAL 或 rasterio 中尚不可用,但如果没有向这些项目之一提交 PR,另一种方法如下:

  1. 将所有几何值设置为 1,并使用
    count
    使用
    rasterio.features.rasterize
    ADD
    创建
    MergeAlg
    栅格。
  2. 使用名为
    sum
    的实际几何值创建另一个栅格,该值也使用
    ADD
    MergeAlg
  3. 除以
    sum
    /
    count
    即可得到每像素的平均值。
© www.soinside.com 2019 - 2024. All rights reserved.