最新数据处理 之 最新DSM(AW3D30)数据批量拼接--文末附数据获取方式

本文介绍如何使用 ArcPy 对 JAXA 发布的 AW3D30 DSM 数据进行批量拼接处理,提供了两种代码实现方式,一种适用于单个文件夹内的数据拼接,另一种则针对多个文件夹中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要针对JAXA发布的最新版本3.1&3.2(AW3D30)数据进行数据拼接处理。

JAXA利用ALOS的PRISM立体模式制作了全球的DSM数据,并免费分布了30米版本产品。详细的数据介绍和下载:AW3D30

与DEM数据一样,数据是按照格网大小进行分发的,如 N028E090.zip,就是28N, 90E区域的DSM数据。

数据下载完成后,解压出来,里面包括了 "_DSM.tif","_MSK.tif","_STK.tif" 三种tif格式的数据,这里 DSM 数据为例介绍批量拼接。

数据的拼接,在ArcGIS软件中可以很容易的实现,但如果数据过多的话,在ArcGIS中点击会比较繁琐。因此,考虑用 ArcPy 进行批量拼接。废话不多说,代码如下:

# -*- coding: utf-8 -*-
from osgeo import gdal

arcpy.CheckOutExtension("Spatial")

arcpy.env.workspace = "tiff"  # 存放所有数据的目录
outFolder = "output"  # 输出路径
outName = "DEM.tif"  # 输出名称

base = "ALPSMLC30_N028E090_DSM.tif"  # 基础数据, 主要用来提取基本参数 (随便选一幅就可以)

# 获取基本参数
out_coor_system = arcpy.Describe(base).spatialReference
dataType = arcpy.Describe(base).DataType
piexl_type = arcpy.Describe(base).pixelType
cellwidth = arcpy.Describe(base).meanCellWidth
bandcount = arcpy.Describe(base).bandCount

# 获取待拼接的所有数据名称
rasters = []
for ras in arcpy.ListRasters("*DSM.tif"):
    rasters.append(ras)

ras_list = ";".join(rasters)

print ras_list  # 检查名称

# 批量拼接
arcpy.MosaicToNewRaster_management(ras_list, outFolder, outName, out_coor_system, "16_BIT_SIGNED", cellwidth, bandcount, "LAST", "FIRST")

代码经过了测试,没有问题。下图是60景批量拼接的结果部分显示,可以看到没有拼接痕迹。

 对于其他的栅格数据,理论上可以用ArcGIS实现的拼接操作,这个代码稍加修改都可以实现,因为本身就是调用的ArcGIS拼接工具。下图是常用的DEM数据汇总与介绍,感兴趣的可以下载,自行处理一下看看。

常用免费DEM数据汇总(含下载使用方法)

2021.12.24补充

上述代码能够实现同一文件夹内批量数据的拼接,但如果有多个文件夹怎么处理?都放在一个文件夹里,显然操作比较繁琐,而且拼接的时候,处理时间长,需要占用大量的内存。因此,如果数据分布在多个文件夹内,每个文件夹内的数据都需要拼接,那么可以考虑使用下面批量拼接代码:

# -*- coding: utf-8 -*-
import os
import arcpy

dem_path = "tiff"  # 存放数据目录, 如 tiff/N045E090/ALPSMLC30_N049E094_DSM.tif
outFolder = "output"  # 指定输出文件夹

for file in os.listdir(dem_path):
    arcpy.env.workspace = dem_path + '/' + file  # 指定工作目录, 即存放影像的目录

    # 基础数据, 主要用来提取基本参数
    base = os.listdir(dem_path + '/' + file)[1]

    out_coor_system = arcpy.Describe(base).spatialReference
    dataType = arcpy.Describe(base).DataType
    piexl_type = arcpy.Describe(base).pixelType
    cellwidth = arcpy.Describe(base).meanCellWidth
    bandcount = arcpy.Describe(base).bandCount

    arcpy.CheckOutExtension("Spatial")

    # 获取待拼接的所有数据名称
    rasters = []
    for ras in arcpy.ListRasters("*DSM.tif"):
        rasters.append(ras)

    ras_list = ";".join(rasters)

    print(ras_list)  # 检查名称

    outName = file + ".tif"  # 输出名称, 以文件夹命名

    arcpy.MosaicToNewRaster_management(ras_list, outFolder, outName,
                                       out_coor_system,
                                       "16_BIT_SIGNED", cellwidth,
                                       bandcount, "LAST", "FIRST")

这个代码实际上就是上述单个文件夹数据拼接的批量版,都是为了实现批量拼接,减少人工的操作。

获取并验证AW3D30的GeoTIFF文件的元数据信息及数据质量,首先需要了解AW3D30数据集的文件结构和组成。AW3D30数据集包含DSM主文件、头信息文件和质量保证信息文件。头信息文件提供了数据的基本信息,如地理坐标系统、投影方式等,而质量保证信息文件则提供了关于数据质量的详细报告。 参考资源链接:[ALOS世界3D-30米数字表面模型(AW3D30)格式描述](https://wenku.csdn.net/doc/78wiiyh04t?spm=1055.2569.3001.10343)获取数据后,可以使用地理信息系统(GIS)软件,如QGIS或ArcGIS,打开GeoTIFF文件,并查看其属性信息来获取数据。这些属性通常包括文件的创建时间、数据范围、分辨率等,这些都是进行后续分析的重要参考。 至于数据质量的验证,可以通过对比质量保证信息文件中的内容来进行。质量保证信息文件一般会指出数据集中的空值处理情况、云层和雪覆盖区域的处理方法。用户应详细检查这些区域的DSM值是否按照文档描述进行了合理的填充和校正。此外,对于特定的应用场景,还可能需要进一步进行实地验证或与其他数据源进行对比分析,以确保数据的准确性。 在进行这些操作时,建议参考《ALOS世界3D-30米数字表面模型(AW3D30)格式描述》文档,该文档详细描述了数据集的构成、文件格式以及如何使用这些数据,对于用户理解和处理AW3D30数据集具有重要价值。这份由日本宇宙航空研究开发机构(JAXA)发布的官方文档是获取关于AW3D30数据格式和质量保证标准的权威资源,能够帮助用户充分理解数据集的特性,确保数据使用的准确性和有效性。 参考资源链接:[ALOS世界3D-30米数字表面模型(AW3D30)格式描述](https://wenku.csdn.net/doc/78wiiyh04t?spm=1055.2569.3001.10343)
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值