You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

xArray+GeoPandas批量多边形统计处理问题求助

批量用GeoPandas多边形裁剪xArray数据集并计算统计量的问题

我在用xArray和GeoPandas做时间序列数据分析时碰到了问题。手里有个cum_magn_ds的xArray数据集,还有包含200个多边形的GeoDataFrame(selected_gdf)。需求是遍历每个多边形,裁剪数据集后计算均值这类基础统计量。单个多边形处理完全正常,但批量处理时,把每行多边形几何参数传入xArray_dataset.rio.clip()的环节出错了。

我尝试的代码如下(几何参数处理存在错误):

results_from_three = []

for row in selected_gdf.iterfeatures():
    # print(type(row))
    # print(row['geometry']['coordinates'])
    aoi_coords = row['geometry']['coordinates']
    # print(aoi_coords)
    aoi = cum_magn_ds.rio.clip(aoi_coords)
    mp = aoi.cum_disp.mean(dim=["x", "y"], skipna=True)
    results_from_three.append(mp)

# Concatenate results into a single DataFrame
df = xr.concat(results_from_three, dim='polygon').to_dataframe()

单个多边形处理的可行代码参考:
获取最大多边形:

single_poly_gdf = gdf.loc[[gdf['area_m2'].idxmax()]]

裁剪并计算均值:

cum_magn_ds.rio.clip(single_poly_gdf.geometry.values, single_poly_gdf.crs).cum_disp.mean(dim=["x", "y"], skipna=True)

问题原因与解决办法

你用iterfeatures()拿到的是GeoJSON格式的坐标,但rio.clip()需要的是Shapely几何对象,且最好同时传入CRS参数(确保和数据集CRS匹配),直接传坐标数组会导致格式不兼容。

优化后的批量处理代码:

results_from_three = []

# 先确认数据集与GeoDataFrame的CRS一致,不一致则先转换
# selected_gdf = selected_gdf.to_crs(cum_magn_ds.rio.crs)

for idx, row in selected_gdf.iterrows():
    # 获取当前行的Shapely几何对象
    geom = row.geometry
    # 裁剪时传入几何对象和CRS
    aoi = cum_magn_ds.rio.clip([geom], selected_gdf.crs)
    # 计算均值并添加到结果列表
    mp = aoi.cum_disp.mean(dim=["x", "y"], skipna=True)
    # 带上多边形索引,方便后续对应
    mp = mp.assign_coords(polygon=idx)
    results_from_three.append(mp)

# 合并结果为DataFrame
df = xr.concat(results_from_three, dim='polygon').to_dataframe()

额外优化建议

如果多边形数量较多,循环调用rio.clip()效率较低,可以用xarray-spatial的zonal_stats函数做分区统计,底层经过优化,处理速度更快:

from xrspatial.zonal import zonal_stats

# 确保GeoDataFrame与数据集CRS一致
selected_gdf = selected_gdf.to_crs(cum_magn_ds.rio.crs)
# 提取数据集的目标变量数组
data_array = cum_magn_ds.cum_disp
# 计算分区统计,可指定多个统计量
stats_df = zonal_stats(selected_gdf, data_array, stats_funcs=['mean'])

内容的提问来源于stack exchange,提问作者Diomauricio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:18:33