【干货】免费12.5米精度ALOS DEM:从批量下载到镶嵌重投影全流程自动化
大家好,做地形分析、水文模拟或者三维可视化的朋友们,对 DEM(数字高程模型) 一定不陌生。SRTM的30米/90米数据虽然经典,但在精细化研究面前常常力不从心。
今天我们要介绍的数据是 ALOS PALSAR Hi-Res Terrain Corrected (RTC) 数据。作为目前全网能免费获取的、分辨率最高的全球高程数据之一,绝对是科研和工程的“香饽饽”。
-
分辨率:12.5米(目前全网免费公开精度的天花板)。
-
覆盖:全球。

官网数据界面

示例数据
但痛点也很明显:
-
下载累: ASF官网手动点到手软。
-
文件乱: 下下来全是压缩包,解压后文件一大堆(包含无用的雷达强度图)。
-
处理繁: 几百景数据,光是在ArcGIS里做“镶嵌至新栅格”+“投影转换”,就能让电脑风扇起飞,人也等到崩溃。

官网需要手动添加你需要的影像到购物车,然后逐一点击下载

下载过后还需要逐一解压裁剪,拼接.
但是,今天,我们把这套从官网注册检索,到 Python 批量下载、自动拼接的全流程方案开源给大家。无论你是科研小白还是资深遥感人,这一篇管饱!
🌍 第一阶段:数据哪里找?(官网操作篇)
ALOS 数据最权威的下载源是 ASF (Alaska Satellite Facility)。
1. 注册 Earthdata 账号
这是所有 NASA 系数据的通行证。
-
网址:https://search.asf.alaska.edu/
-
操作:点击 Register,填写信息。记住你的用户名和密码,待会儿写代码要用!

2. 进入 ASF Vertex 检索系统
-
网址:https://search.asf.alaska.edu/
-
定位区域:在地图上框选你的研究区。

3. 关键筛选设置
这是最关键的一步,选错了就下不到 12.5m 的 DEM。
-
Filter (过滤器):
-
File Type: 选
Hi-Res Terrain Corrected(这是获得DEM的关键)。 -
Beam Mode: 选
FBS(Fine Beam Single) 或FBD(Fine Beam Double)。 -
点击 Search。
[建议配图:ASF 左侧侧边栏的 Filter 设置截图。用红框重点圈出 “File Type: Hi-Res Terrain Corrected”,这是核心知识点。]


4. 获取下载链接列表
搜索结果出来后,几十上百景数据,难道要一个个点下载?当然不!
-
点击上方的 “Downloads” 图标(通常是个购物车或下载箭头)。
-
选择导出为 Python Script。
-
我们需要的是那个包含所有
.zip文件下载链接的列表。



然后我们就得到了下载你需要的数据的python代码,接下来我们就利用官网生成的python代码进行自动批量化下载
💻 第二阶段:Python 自动化
拿到了几百个下载链接,接下来的脏活累活,交给 Python。
🛠️ 环境准备
请确保安装了以下库:
pip install requests rasterio numpy
Step 1: 批量自动下载
手动点击下载不仅慢,还容易断。我们用脚本实现断点续传。
import osimport requests# 1. 你的下载链接列表 (从第一阶段获取的链接放这里)download_urls = ["https://datapool.asf.alaska.edu/RTC/ALOS/AP_14756_FBS_F0500_RT1.zip","https://datapool.asf.alaska.edu/RTC/ALOS/AP_14121_FBS_F3090_RT1.zip",# ... 粘贴你导出的所有链接]# 2. 配置 Cookie (在ASF官网按F12 -> Network -> 刷新 -> 找个请求看Request Headers)# 或者直接使用 Earthdata 的账号密码登录接口(此处演示Cookie法,最简单)headers = {'Cookie': '你的_urs_user_login_session_cookie','User-Agent': 'Mozilla/5.0 ...'}save_path = r"D:\download"def download_file(url):local_filename = url.split('/')[-1]path = os.path.join(save_path, local_filename)# 流式下载,内存不爆炸with requests.get(url, headers=headers, stream=True) as r:r.raise_for_status()with open(path, 'wb') as f:for chunk in r.iter_content(chunk_size=8192):f.write(chunk)print(f"[√] {local_filename} 下载完毕")for url in download_urls:download_file(url)

Step 2: 智能解压与清洗
ALOS 的压缩包里有很多无关文件(如雷达强度图、元数据等),我们只需要提取 .dem 文件。
import osimport zipfileTARGET_DIR = r"E:\库区消落带\ALOS_DEM"ZIP_FILES = [r"D:\download\AP_14756_FBS_F0500_RT1.zip", ...] # 你的压缩包路径def full_unzip():if not os.path.exists(TARGET_DIR):os.makedirs(TARGET_DIR)for zip_path in ZIP_FILES:with zipfile.ZipFile(zip_path, 'r') as zf:# 这里我们暴力全解压,后续脚本会自动识别DEM文件zf.extractall(TARGET_DIR)print(f"[√] 解压完成: {os.path.basename(zip_path)}")if __name__ == "__main__":full_unzip()

Step 3: 终极操作——虚拟投影与镶嵌
这是本文的核心。 ALOS 数据原始坐标是 UTM 投影(分带的),直接拼会错位。传统方法要在ArcGIS 里一个个转投影。 我们使用rasterio的 WarpedVRT(虚拟投影技术),在内存中直接将所有分幅数据动态转换为 WGS84 坐标系并完成镶嵌。


import osimport globimport rasteriofrom rasterio.merge import mergefrom rasterio.vrt import WarpedVRTfrom rasterio.enums import Resampling# 输入文件夹 (解压后的目录)INPUT_FOLDERS = [r"E:\库区消落带\ALOS_DEM\AP_14756_FBS_F0500_RT1",# ... 你的所有文件夹路径]OUTPUT_DIR = r"E:\库区消落带\ALOS_DEM"OUTPUT_FILENAME = "ALOS_Mosaic_WGS84_All.tif"def mosaic_final():print("--- 正在搜寻 DEM 文件 ---")tif_files = []for folder in INPUT_FOLDERS:# 自动寻找 .dem.tif 文件found = glob.glob(os.path.join(folder, "*.dem.tif"))if found: tif_files.append(found[0])print(f"--- 开始处理 {len(tif_files)} 个文件 ---")src_files = []try:for fp in tif_files:src = rasterio.open(fp)# 【核心】建立虚拟投影,强制转为 WGS84vrt = WarpedVRT(src, crs='EPSG:4326', resampling=Resampling.bilinear)src_files.append(vrt)# 执行内存镶嵌mosaic, out_trans = merge(src_files)# 更新元数据并输出out_meta = src_files[0].meta.copy()out_meta.update({"driver": "GTiff","height": mosaic.shape[1],"width": mosaic.shape[2],"transform": out_trans,"crs": "EPSG:4326","compress": "lzw"})with rasterio.open(os.path.join(OUTPUT_DIR, OUTPUT_FILENAME), "w", **out_meta) as dest:dest.write(mosaic)print("[成功] 完美拼接!")finally:for src in src_files: src.close()if __name__ == "__main__":mosaic_final()

📊 成果验收
运行完 Step 3,你会得到一个ALOS_Mosaic_WGS84_All.tif。 把它拖进 ArcGIS Pro 看看效果:

单个影像镶嵌为一整张栅格

成果展示

局部细节
📝 写在最后
从 ASF 官网的繁琐点击,到 Python 代码的一键流处理。我们不仅获得了一张高质量的 DEM,更重要的是掌握了一套可复用的数据处理工作流。
以后无论是做流域分析、水库消落带提取,还是三维地形建模,这套方案都能助你事半功倍。
关注公众号【遥感时间轴】,后台回复“ALOS源码”,获取本文所有 Python 脚本!
如果觉得硬核,记得点赞、在看支持一下!我们下期见!
夜雨聆风
