Apply current workspace changes

This commit is contained in:
2026-04-22 01:52:21 +08:00
parent cf34b9a8ed
commit cb518b431f
449 changed files with 92252 additions and 321 deletions
+265
View File
@@ -0,0 +1,265 @@
# DEM 数据下载指南
本文档介绍如何使用 `makedem.py` 下载和处理不同来源的 DEM 数据。
## 支持的 DEM 数据源
### 1. Copernicus DEM (默认推荐)
**特点:**
- 分辨率: 30米
- 覆盖: 全球 (60°S - 80°N)
- 数据质量: 高精度,全球一致性
- 下载方式: 自动从 AWS/OpenTopography 下载
- 费用: 免费
**使用方法:**
```bash
# 基本使用
python makedem.py -r 116/117/39/40 --dem-source copernicus
# 指定并行下载数量(加速下载)
python makedem.py -r 116/117/39/40 --dem-source copernicus --num-workers 8
# 指定输出目录
python makedem.py -r 116/117/39/40 --dem-source copernicus --dir /path/to/output
```
**优点:**
- ✓ 全自动下载
- ✓ 高精度数据
- ✓ 全球覆盖
- ✓ 支持并行下载加速
**缺点:**
- ✗ 需要网络连接
- ✗ 下载时间取决于网络速度
---
### 2. NASADEM
**特点:**
- 分辨率: 30米
- 覆盖: 全球 (60°S - 60°N)
- 数据质量: SRTM + ICESat 数据融合
- 下载方式: 通过 NASADEM Python 库自动下载
- 费用: 免费
**依赖安装:**
```bash
pip install nasadem rasters
```
**使用方法:**
```bash
# 基本使用
python makedem.py -r 116/117/39/40 --dem-source nasadem
# 指定输出目录
python makedem.py -r 116/117/39/40 --dem-source nasadem --dir /path/to/output
```
**优点:**
- ✓ 全自动下载
- ✓ NASA官方数据
- ✓ 融合多源数据,精度提升
**缺点:**
- ✗ 需要网络连接
- ✗ 首次下载可能较慢
- ✗ 需要额外安装库
- ✗ 覆盖范围小于 Copernicus (南北纬60°限制)
---
### 3. SRTM (需要预下载数据)
**特点:**
- 分辨率: 30米 (SRTM 1 arc-second) 或 90米 (SRTM 3 arc-second)
- 覆盖: 全球 (60°S - 60°N)
- 数据质量: 良好
- 下载方式: 需要手动预下载 .hgt 文件
- 费用: 免费
**依赖安装:**
```bash
# 注意: srtm库需要 Python >= 3.12
pip install srtm
# 检查Python版本
python --version # 应该显示 3.12 或更高版本
```
**Python版本要求:**
- srtm 库要求 Python >= 3.12
- 如果您的Python版本 < 3.12,建议使用 Copernicus 或 NASADEM
**数据准备步骤:**
1. **下载 SRTM .hgt 文件**
从以下网站之一下载所需区域的 .hgt 或 .hgt.zip 文件:
- **CSI-CGIAR SRTM**: https://srtm.csi.cgiar.org/ (推荐,无需注册)
- **USGS EarthExplorer**: https://earthexplorer.usgs.gov/ (需要注册)
- **NASA EarthData**: https://urs.earthdata.nasa.gov/ (需要注册)
2. **文件命名规则**
SRTM 文件按 1°×1° 分块命名:
- `N39E116.hgt` → 北纬39-40°, 东经116-117°
- `N39W110.hgt` → 北纬39-40°, 西经110-109°
- `S10E120.hgt` → 南纬10-9°, 东经120-121°
3. **数据组织**
将所有 .hgt 文件放在同一目录下,例如:
```
/path/to/srtm_data/
├── N39E116.hgt
├── N39E117.hgt
├── N40E116.hgt
└── N40E117.hgt
```
**使用方法:**
```bash
# 指定SRTM数据目录
python makedem.py -r 116/117/39/40 --dem-source srtm --srtm-data-dir /path/to/srtm_data
# 注意:如果不指定 --srtm-data-dir,程序会报错并提示
python makedem.py -r 116/117/39/40 --dem-source srtm
# 错误: 使用 SRTM 数据源需要指定 --srtm-data-dir 参数
```
**优点:**
- ✓ 离线使用(数据预下载后)
- ✓ 不依赖实时网络下载
- ✓ 数据源多样化
**缺点:**
- ✗ 需要手动下载数据文件
- ✗ 需要自行管理数据文件
- ✗ 需要确保覆盖目标区域的所有分块
- ✗ srtm 库对 .hgt.zip 压缩文件支持不稳定,建议解压后使用
---
## 使用建议
### 推荐使用顺序:
1. **首选: Copernicus DEM**
- 全自动,高精度,全球覆盖
- 使用 `--num-workers 8` 加速下载
2. **备选: NASADEM**
- 全自动,NASA官方数据
- 适合北纬60°以南,南纬60°以北区域
3. **离线环境: SRTM**
- 仅在无网络环境或已有SRTM数据时使用
- 需要提前准备数据文件
### 性能对比:
| DEM源 | 下载速度 | 数据精度 | 全球覆盖 | 离线使用 | 推荐指数 |
|-------|---------|---------|---------|---------|---------|
| Copernicus | ★★★★☆ | ★★★★★ | ★★★★★ | ✗ | ★★★★★ |
| NASADEM | ★★★☆☆ | ★★★★☆ | ★★★☆☆ | ✗ | ★★★★☆ |
| SRTM | N/A (离线) | ★★★★☆ | ★★★☆☆ | ✓ | ★★★☆☆ |
### 常见问题:
**Q: 如何确定需要下载哪些 SRTM 文件?**
A: 根据目标区域范围计算所需文件:
```python
# 示例: 区域 116/117/39/40 (东经116-117°, 北纬39-40°)
west, east, south, north = 116, 117, 39, 40
# 需要下载的文件:
# N39E116.hgt (39-40°N, 116-117°E)
# 如果区域更大,需要下载多个文件
```
**Q: SRTM .hgt.zip 文件可以直接使用吗?**
A: srtm 库对压缩文件支持不稳定,建议先解压:
```bash
cd /path/to/srtm_data/
unzip "*.hgt.zip"
```
**Q: 如何加速 Copernicus DEM 下载?**
A: 增加并行下载数量:
```bash
# 默认使用 4 个线程
python makedem.py -r 116/117/39/40 --dem-source copernicus --num-workers 4
# 加速到 8-16 个线程(根据网络情况调整)
python makedem.py -r 116/117/39/40 --dem-source copernicus --num-workers 16
```
**Q: 下载的数据格式是什么?**
A: 所有DEM源最终都会转换为 GAMMA/ROI_PAC 格式:
- `.dem` 文件: 二进制高程数据 (big-endian for GAMMA)
- `.dem.par` 文件: 参数文件
---
## 示例工作流程
### 场景1: 处理Sentinel-1数据(推荐Copernicus)
```bash
# 1. 确定研究区域范围
# 使用 SLC 参数文件自动确定
python makedem.py -s /path/to/slc.par --dem-source copernicus --num-workers 8
# 或手动指定区域
python makedem.py -r 116/117/39/40 --dem-source copernicus --num-workers 8
```
### 场景2: 离线处理(使用SRTM)
```bash
# 1. 提前下载SRTM数据
# 从 https://srtm.csi.cgiar.org/ 下载 N39E116.hgt, N39E117.hgt 等
# 2. 组织数据
mkdir -p ~/data/SRTM
mv N*.hgt ~/data/SRTM/
# 3. 使用预下载数据生成DEM
python makedem.py -r 116/117/39/40 --dem-source srtm --srtm-data-dir ~/data/SRTM
```
### 场景3: NASADEM对比测试
```bash
# 下载Copernicus DEM
python makedem.py -r 116/117/39/40 --dem-source copernicus --dir ./copernicus
# 下载NASADEM
python makedem.py -r 116/117/39/40 --dem-source nasadem --dir ./nasadem
# 对比两个DEM文件
# 使用 GMT 或其他工具进行可视化和分析
```
---
## 参考资料
- **Copernicus DEM**: https://copernicus-dem-90m.s3.amazonaws.com/readme.html
- **NASADEM**: https://github.com/DFS-iData/NASADEM
- **SRTM CSI-CGIAR**: https://srtm.csi.cgiar.org/
- **GAMMA Software**: https://gamma-rs.ch/
---
**最后更新**: 2026-03-13
**作者**: iFlow CLI