2026-06-01 worldcover 数据原始数据到分窗口切片数据

WorldCover 数据处理文档

1. 概述

WorldCover是OlmoEarth预训练数据集使用的六种派生地图之一,提供全球土地覆盖分类信息。该数据由ESA (European Space Agency) 提供,用于增强模型对地球表面覆盖类型的理解。

与OpenStreetMap不同,WorldCover本身已是栅格数据格式,因此处理流程相对简单,无需额外的栅格化步骤。

2. 模态定义

WorldCover在 olmoearth_pretrain/data/constants.py 中定义如下:

属性 说明
名称 worldcover 模态标识符
分辨率因子 16 对应10m分辨率(BASE_RESOLUTION × 16 = 10m)
波段集 ["B1"] 单波段土地覆盖分类
多时相 False 静态数据,无时间维度
空间变化 True 具有空间分辨率

3. 处理管线架构

3.1 整体架构对比

模态 数据源 中间格式 最终格式 主要处理步骤
OpenStreetMap 矢量GeoJSON GeoJSON GeoTIFF(栅格化) 加载→转换→栅格化
WorldCover 栅格GeoTIFF GeoTIFF GeoTIFF 加载→转换

6. 统一窗口配置

6.1 为什么需要统一窗口

为了确保 WorldCover 与其他模态(如 OSM、Sentinel-1/2、SRTM 等)能够正确对齐并合并到同一空间维度,必须使用统一的窗口定义文件

如果每个模态各自从经纬度范围重新推导 tiles,可能会导致:

  • tile 边界不一致
  • 空间错位
  • 无法正确合并多模态数据

6.2 生成统一窗口 JSON

python scripts/tools/generate_olmoearth_windows.py \
  --bbox 118.2889,29.1564,120.7598,30.5935 \
  --output data/hangzhou_olmoearth_windows.json \
  --resolution 10 \
  --window-size 256

参数说明

  • --bbox: 目标区域的经纬度范围,格式为 min_lon,min_lat,max_lon,max_lat
  • --output: 输出的窗口 JSON 文件路径
  • --resolution: 分辨率(单位:米),WorldCover 使用 10m
  • --window-size: 窗口大小(像素),默认 256

6.3 窗口 JSON 格式

生成的 hangzhou_olmoearth_windows.json 每个条目包含:

字段 说明 示例
id 窗口唯一标识符 EPSG:32650_243_-1324
name 窗口名称(含分辨率) EPSG:32650_10_243_-1324
crs 坐标参考系统 EPSG:32650
resolution 分辨率(米) 10.0
col 网格列索引 243
row 网格行索引 -1324
bounds 米制边界 {"minx": 622080.0, ...}
bbox WGS84 边界 [118.2735, 30.6080, ...]

6.4 多模态处理流程

┌──────────────────────────────────────────────────────────────────────┐
│                        统一窗口生成                                  │
│  generate_olmoearth_windows.py → hangzhou_olmoearth_windows.json   │
└──────────────────────────────────────────────────────────────────────┘
                                  │
          ┌───────────────────────┼───────────────────────┐
          ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   OSM 处理      │    │ WorldCover处理  │    │  Sentinel处理   │
│  (使用同一JSON) │    │  (使用同一JSON) │    │  (使用同一JSON) │
└─────────────────┘    └─────────────────┘    └─────────────────┘
          │                       │                       │
          └───────────────────────┼───────────────────────┘
                                  ▼
                    ┌───────────────────────────┐
                    │    H5 合并与转换           │
                    │  run_h5_conversion.py    │
                    └───────────────────────────┘

9. 数据规范

9.1 时间范围

WorldCover数据使用固定时间范围:

  • 起始时间: 2021-01-01T00:00:00+00:00
  • 结束时间: 2022-01-01T00:00:00+00:00

9.2 空间分辨率

分辨率因子 实际分辨率 说明
16 10m/pixel WorldCover原始分辨率

9.3 数据类型

  • 格式: GeoTIFF
  • 数据类型: 整数(土地覆盖分类编码)
  • NoData值: -99999(全局MISSING_VALUE)

11. 本地TIF文件处理流程

当您拥有本地大尺寸WorldCover TIF文件时,可以使用专用脚本来处理,无需通过rslearn在线下载。

11.1 处理步骤

┌─────────────────────────────────────────────────────────────────┐
│                本地TIF裁剪处理流程                              │
├─────────────────────────────────────────────────────────────────┤
│  输入: 大尺寸TIF文件 (如36000×36000像素,10m分辨率)            │
│        └── 覆盖范围: 118.2889°E ~ 120.7598°E,                │
│                      29.1564°N ~ 30.5935°N                   │
│                           ▼                                    │
│  Step 1: 加载统一窗口配置 (hangzhou_olmoearth_windows.json)    │
│          └── 共6272个窗口,每个256×256像素                    │
│                           ▼                                    │
│  Step 2: 扫描TIF文件目录                                       │
│                           ▼                                    │
│  Step 3: 坐标转换 (窗口EPSG:32650 → TIF的CRS)                 │
│                           ▼                                    │
│  Step 4: 窗口匹配 (查找覆盖窗口的TIF文件)                      │
│                           ▼                                    │
│  Step 5: 裁剪输出 (256×256 GeoTIFF)                           │
│                           ▼                                    │
│  Step 6: 元数据生成 (CSV格式)                                  │
│                           ▼                                    │
│  输出: 10_worldcover/ (GeoTIFF) + 10_worldcover.csv (元数据)  │
└─────────────────────────────────────────────────────────────────┘

11.2 执行命令

# 设置参数
export DATA_PATH="/mnt/si000082vai5/default/embedding/yangxiong/git/data/in/"
export OUTPUT_PATH="/mnt/si000082vai5/default/embedding/yangxiong/git/data/olmoearth_dataset"
export WINDOWS_JSON="/usr/local/olmo_earth/olmoearth_pretrain/data/hangzhou_olmoearth_windows.json"

# 创建输出目录
mkdir -p "$OUTPUT_PATH/10_worldcover"
mkdir -p "$OUTPUT_PATH/10_worldcover_meta"

# 运行处理脚本
cd /usr/local/olmo_earth/olmoearth_pretrain
python3 olmoearth_pretrain/dataset_creation/rslearn_to_olmoearth/worldcover/process_local_worldcover_detailed.py \
    --data_path "$DATA_PATH" \
    --windows_json "$WINDOWS_JSON" \
    --olmoearth_path "$OUTPUT_PATH" \
    --workers 16

我的命令

python olmoearth_pretrain/dataset_creation/rslearn_to_olmoearth/worldcover/process_local_worldcover_detailed.py \
     --data_path "/mnt/si000082vai5/default/Person/kongfanqiang/datatemp/worldcover" \
     --windows_json "/mnt/si000082vai5/default/Person/kongfanqiang/datatemp/kfqceshi_data/hangzhou_kfqSelf_olmoearth_windows.json" \
     --olmoearth_path "/mnt/si000082vai5/default/Person/kongfanqiang/datatemp/kfqceshi_data/output" \
     --workers 16

11.3 关键技术点

步骤 说明
坐标转换 TIF可能使用WGS84经纬度,窗口使用EPSG:32650,需自动转换
窗口匹配 只处理TIF覆盖范围内的窗口,跳过超出范围的窗口
裁剪尺寸 输出固定256×256像素的GeoTIFF文件
并行处理 使用多进程提高大文件处理效率

11.4 脚本位置

olmoearth_pretrain/dataset_creation/rslearn_to_olmoearth/worldcover/
└── process_local_worldcover_detailed.py  # 本地TIF处理脚本

要使用这个脚本,其他脚本都有问题

12. 注意事项

  1. 并行处理: 使用 forkserver 启动方法避免多进程问题
  2. 数据完整性: 跳过未完成的窗口(is_layer_completed检查)
  3. 时间跨度: WorldCover为静态数据,使用 TimeSpan.STATIC
  4. 分辨率一致性: 确保输入输出分辨率匹配(10m)
  5. 与OSM差异: WorldCover无需栅格化步骤,直接转换栅格数据
  6. 元数据汇总: 需要运行 make_meta_summary.py 完成最终元数据合并
  7. 本地TIF处理: 使用 process_local_worldcover.py 处理本地大尺寸TIF文件
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容