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. 任何想法?
分配 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。
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |