在Python 3.6中从点(gpd.geodataframe对象)创建栅格

Mik*_*V89 1 python raster geopandas rasterio

我想使用对象从点文件创建光栅文件 (.tif)geopandas.geodataframe.GeoDataFrame

我的数据框有两列:[几何] 和 [值]。目标是使用[Value]值在[geometry]点制作10m 分辨率的栅格

我的数据集是:

geometry |  Value
0  | POINT (520595.000 5720335.000) | 536.678345
1  | POINT (520605.000 5720335.000) | 637.052185
2  | POINT (520615.000 5720335.000) | 1230.553955
3  | POINT (520625.000 5720335.000) | 944.970642
4  | POINT (520635.000 5720335.000) | 1094.613281
5  | POINT (520645.000 5720335.000) | 1123.185181
6  | POINT (520655.000 5720335.000) | 849.37634
7  | POINT (520665.000 5720335.000) | 1333.459839
8  | POINT (520675.000 5720335.000) | 492.866608
9  | POINT (520685.000 5720335.000) | 960.957214
10 | POINT (520695.000 5720335.000) | 539.401978
11 | POINT (520705.000 5720335.000) | 573.015625
12 | POINT (520715.000 5720335.000) | 970.386536
13 | POINT (520725.000 5720335.000) | 390.315094
14 | POINT (520735.000 5720335.000) | 642.036865
Run Code Online (Sandbox Code Playgroud)

我以前尝试过,所以,我知道from geocube.api.core import make_geocube我可以做到这一点,但由于某些库我有限制,我无法使用make_geocube. 任何想法?

Mic*_*ado 5

分配 x 和 y 列,转换为 xarray,然后使用roxarray导出为 tiff :

# do this before sending to xarray
# to ensure extension is loaded
import rioxarray

# assuming your GeoDataFrame is called `gdf`
gdf["x"] = gdf.x
gdf["y"] = gdf.y

da = (
    gdf.set_index(["y", "x"])
    .Value
    .to_xarray()
)

da.rio.to_raster("myfile.tif")
Run Code Online (Sandbox Code Playgroud)

为了使其发挥作用,这些点必须组成一个完整的规则网格,每个组合的 x 和 y 值都重复。如果这只是转换为以 x 和 y 作为垂直维度的 xarray 的任意点的集合,则会消耗您的内存,并且结果几乎完全是 NaN。