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

如何自动批量获取土耳其81个省份的VIIRS数据并计算汇总值?

批量处理土耳其省份VIIRS数据的代码调整方案

核心思路

把原代码中针对单个美国区域的逻辑,改成遍历81个省份Shapefile的循环,每个省份重复「加载边界→提取VIIRS数据→计算汇总→收集结果」的流程,最后统一导出Excel。

具体代码调整步骤

1. 搭建循环框架与路径配置

假设你的Shapefile都存放在turkey_provinces文件夹下,命名格式为01.shp、02.shp…81.shp,先构建遍历逻辑:

import os
import geopandas as gpd
import pandas as pd
import rasterio
from rasterio.mask import mask

# 配置路径
shp_folder = "turkey_provinces"
viirs_data_path = "your_viirs_data.tif"  # 替换为你的VIIRS数据路径
results_list = []

# 遍历01到81的省份文件
for province_code in [f"{i:02d}" for i in range(1, 82)]:
    shp_path = os.path.join(shp_folder, f"{province_code}.shp")
    if not os.path.exists(shp_path):
        print(f"警告:未找到省份{province_code}的Shapefile,跳过")
        continue

2. 替换区域加载与数据提取逻辑

把原代码中加载美国边界的部分,替换为当前循环的省份Shapefile,并提取对应范围的VIIRS数据:

# 加载当前省份边界并匹配坐标系
    province_gdf = gpd.read_file(shp_path)
    with rasterio.open(viirs_data_path) as src:
        province_gdf = province_gdf.to_crs(src.crs)
        # 提取省份范围内的VIIRS数据
        out_image, out_transform = mask(src, province_gdf.geometry, crop=True)
        # 过滤无效值
        viirs_values = out_image[out_image != src.nodata]

3. 复用汇总计算逻辑

直接复用原代码的汇总计算逻辑(比如平均值、总和等),计算当前省份的指标并收集:

# 计算汇总指标(按需调整)
    province_summary = {
        "省份代码": province_code,
        "VIIRS平均值": viirs_values.mean(),
        "VIIRS总和": viirs_values.sum(),
        "VIIRS最大值": viirs_values.max(),
        "有效像素数": len(viirs_values)
    }
    results_list.append(province_summary)

4. 统一导出Excel

循环结束后,将所有结果合并为DataFrame并导出:

# 转换为DataFrame并导出
results_df = pd.DataFrame(results_list)
results_df.to_excel("土耳其省份VIIRS汇总结果.xlsx", index=False)
print("批量处理完成,结果已导出")

关键注意事项

  • 坐标系匹配:必须确保VIIRS栅格与Shapefile坐标系一致,代码中已加入to_crs转换,若仍有问题需手动指定投影参数。
  • 无效值处理:不同VIIRS产品的NoData值可能不同(如-9999),需确认src.nodata是否正确,若不正确可手动替换。
  • 异常防护:可在循环中加入try-except块,避免单个省份处理失败导致程序中断:
try:
    # 加载边界、提取数据、计算汇总的代码
except Exception as e:
    print(f"处理省份{province_code}时出错:{str(e)}")
    continue
  • 性能优化:若VIIRS数据量极大,可使用concurrent.futures实现并行处理,提升运行速度。

内容的提问来源于stack exchange,提问作者ayça tabakoğlu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:57:13