ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DEM与DSM辨析:亚洲12.5米ALOS DEM下载及水文分析实战

DEM与DSM辨析:亚洲12.5米ALOS DEM下载及水文分析实战 简介这是一份覆盖东亚区域的数字高程模型DEM数据集合面向GIS初学者、地理信息专业学生以及从事地形分析、城市规划、地质灾害评估等工作的工程技术人员可直接用于理解栅格高程数据的组织方式与常用分析流程。数据采用ArcGIS与MapGIS均可读取的ESRI Grid格式压缩包内共8个文件其中7个adf文件构成完整的高程网格及坐标边界、属性统计等支撑数据1个xml文件为元数据说明整体体积约49.45MB体量适中适合快速下载与小范围地形实验。该套数据按子区域划分‘c1’代表东亚范围内的局部区块每个网格节点记录对应经纬度处的海拔高度可在主流GIS平台中直接执行坡度计算、等高线生成、洪水淹没模拟、日照分析及三维可视化等操作也可作为不同DEM精度对比的素材。资源自发布以来已有907人学习下载凭借其标准格式与典型结构特别适合课堂教学、软件实训及作为区域地形分析算法验证的样例数据。 做GIS和遥感这行跟DEM打交道几乎是家常便饭。不管你是算流域面积、做场地平整的土方量、提取山脊线还是给项目做选址分析数字高程模型DEM都是最底层的那张底图。尤其是处理亚洲区域的项目地形从高海拔雪山到河谷平原落差跨度极大数据选型和处理流程稍微马虎分析结果就完全不能用。这篇内容我就围绕“亚洲DEM文件”这个话题从DEM基础概念讲起对比几大主流数据源的优劣手把手走一遍12.5米分辨率ALOS DEM的下载流程再用ArcGIS实测提取河网、计算流域面积最后分享用Python把DEM和DXF叠加分析的完整做法。不管你是刚入门GIS的新手还是已经和DEM打过不少交道的工程师这里面的操作步骤和踩坑经验应该都用得上。1. DEM到底是什么先从“亚洲DEM文件”这个话题说起1.1 DEM和DSM一字之差差在哪很多人一开始容易把DEM和DSM混在一起其实这两个概念直接决定了你拿到的数据能不能用。DEM的全称是Digital Elevation Model数字高程模型描述的是裸地表面高程也就是“地表下面”的地形骨架。DSM是Digital Surface Model数字表面模型描述的是地物顶面高程也就是地表以上所有东西的高度包括楼房、树木、输电塔这些。举个最直观的例子在城市里测一栋30米高的楼DSM上这个位置的高程是楼顶标高DEM上则是脚下的地面标高。森林里也一样DSM看到的是树冠DEM看到的才是地表。所以在水文分析、地形制图、填挖方量计算这些场景里我们用的基本都是DEM。而像通信基站覆盖分析、城市天际线可视域分析更喜欢用DSM因为要模拟真实的遮挡物。那“dsm生成dem”是怎么实现的呢如果是LiDAR点云数据最可靠的做法是用地面点分类算法做点云滤波再插值生成DEM如果没有点云只有DSM栅格可以用形态学开运算或者局部最小值滤波做一个近似估计但这种方法在建筑密集区误差会很大只能作为快速估值手段。1.2 12.5米到底意味着什么分辨率这个数字通俗点说就是每个像元对应地面多大面积。12.5米分辨率意味着每一个栅格点代表地面上12.5米乘以12.5米的范围。相比常见的30米数据12.5米能看清更细的冲沟、小河道、山脊线和人工地形这对小流域分析和工程选址来说往往就是能不能用的分界线。拿实际体验来说30米SRTM在平原区域看大范围地貌没问题但想找到一条只有几米到十几米宽的季节性冲沟就成了盲区换成12.5米ALOS数据至少能看出连续的低洼带走向。代价也很直接——数据量大、下载慢、存储占用多处理时内存也容易扛不住。后面我会专门讲怎么高效下载和大区域拼接避免被数据体积卡死。2. 亚洲区域DEM数据源怎么选ALOS为什么常被推荐2.1 主流开源DEM数据源横向对比我这些年接触过的免费开源DEM主要就这几种SRTM、ASTER GDEM、ALOS AW3D30、ALOS PALSAR 12.5米以及欧洲的Copernicus GLO-30。它们在覆盖范围、分辨率、高程精度和数据来源上各有偏向直接做成表格看更清楚。数据源覆盖范围分辨率高程精度数据来源适合场景SRTM全球约60°N至56°S30米/90米相对精度约6米2000年航天飞机雷达地形测绘广域地形、老项目校验ASTER GDEM全球30米10米到25米波动较大光学立体像对细节要求不高的全球/区域分析ALOS AW3D30全球30米约5米级别日本ALOS卫星PRISM光学影像亚洲区域综合地形分析ALOS PALSAR 12.5米覆盖东南亚等大部分区域12.5米约10米左右山区更差L波段SAR雷达数据小流域、冲沟、细部地形识别Copernicus GLO-30全球30米精度表现不错欧洲哨兵系列卫星多源融合全球统一标准的现代分析这里想特别提一下ALOS PALSAR的12.5米产品。它是用L波段SAR合成孔径雷达生成的雷达波的优点是不受云雾影响很多光学数据拍不到的区域它反而有数据缺点也明显就是相干噪声比较多在城市和密集植被区会出现明显颗粒感需要后期处理时多加注意。2.2 针对亚洲地形的选型建议亚洲的地形特点是高差极端、类型丰富喜马拉雅到东南亚平原的落差巨大选数据源不能一刀切。我自己的使用习惯是这样的做广域地形、省级或国家级分析时首选用ALOS AW3D30做底图它在亚洲区域的整体表现比SRTM和ASTER稳定得多尤其是山地区域的细节好不少。想进一步看小流域或具体工程范围才会动用ALOS PALSAR 12.5米专门提取冲沟、河漫滩和小型地形断面。需要特别提醒一个容易踩的坑不要迷信“分辨率越高越好”。12.5米数据虽然在细节上更丰富但雷达数据的噪声也和高分辨率绑在一起如果只是做宏观地势分析反而用30米数据更省事、结果更干净。多源数据做对比校验也是不错的办法比如在山谷陡峭地带把AW3D30和PALSAR 12.5米叠在一起看差异能快速发现哪份数据在某个区域明显失准。3. 12.5米DEM下载实操OpenTopography和ASF的完整流程3.1 OpenTopography下载高分辨率DEM的步骤OpenTopography是全球地形数据圈子里用得比较多的平台它的优势是集成了多种全球数据集而且可以直接框选区域下载不用自己处理瓦片。整体流程分五步第一步打开OpenTopography官网并注册账号数据下载免费但账户能让你保存下载历史。第二步进入Download Data页面在Global Datasets列表里找到ALOS World 3D相关数据集这个就是ALOS系列数据。第三步在地图上框选你的研究区也可以用上传GeoJSON或KML的方式精确划定边界。第四步在Output Settings里选择GeoTIFF格式坐标系按需选WGS84或UTM如果平台提供分辨率选项想拿12.5米就选对应选项。第五步提交任务平台处理完成会发邮件通知再回来点击下载就行。注意一次框选的范围不建议超过1°乘1°区域太大的话处理任务会排很久下载下来的文件也容易几个GB起步本地打开都费劲。我通常都是研究区域小步快跑分块下载后自己再拼。3.2 ASF DAAC下载ALOS PALSAR 12.5米的补充路径OpenTopography拿到的是光学数据产品为主而很多人口中的“12.5米DEM”其实特指ALOS PALSAR雷达生成的DEM这个数据在ASF DAAC平台更全。操作上也不复杂注册一个NASA Earthdata账号进入ASF DAAC的Search界面数据源选择ALOS PALSAR再勾选Radiometric Terrain CorrectionRTC类型的产品这类数据在解算过程中就做了地形校正DEM精度比原始RAW产品稳定得多。然后同样框选研究区域筛选出目标文件加入下载队列。下载完一般是一个压缩包解压后能看到关键的高程文件后缀通常是.tif。这个路径比OpenTopography稍微绕一点但对于需要最新版本雷达DEM的人ASF的数据目录更干净也更容易按轨道号精确匹配覆盖范围。3.3 大区域数据分块下载与拼接亚洲范围太大一次性下载单张完整数据不现实最后都会落到分块下载再拼接这条路上。我的常规操作是先把每个分块区域下载成GeoTIFF然后用GDAL命令行工具做拼接和裁剪。# 把多个分块构建成虚拟栅格先不实际拼接 gdalbuildvrt asia_dem.vrt tile_01.tif tile_02.tif tile_03.tif # 导出成单张压缩GeoTIFF gdal_translate -co COMPRESSDEFLATE asia_dem.vrt asia_dem_combined.tif # 按研究区范围裁剪坐标顺序是 xmin ymax xmax ymin gdal_translate -projwin 100.0 35.0 105.0 30.0 -of GTiff asia_dem_combined.tif aoi_dem.tif分块拼接时有一点必须盯紧所有分块的坐标系、分辨率必须一致不然拼接后会出现错位和重采样变形。不同来源的瓦片如果需要统一坐标系先把它们用gdalwarp转成同一投影再一起建VRT否则后续分析肯定出问题。4. ArcGIS实战用DEM提取河网并计算流域面积4.1 水文分析前置处理很多人在ArcGIS里做流域分析第一步就直接开始算流向结果算出来的河网断断续续、流向乱扭。这里的关键前提是填洼Fill。原理不复杂DEM里如果有低于周围的地形洼地数据噪声会构成一个个“小坑”水流方向计算时水会陷在坑里出不去河网自然就断在中间。打开ArcToolbox找Spatial Analyst Tools下的Hydrology工具集先运行Fill。填洼能把DEM内部那些“坑”填平让水流能顺畅地从高处流到低处。这里我习惯把填洼后的DEM另存为一份新文件原版保留因为填洼是有信息损失的万一后面想对照原始断面对比原版还能救回来。4.2 从流向到河网提取的完整流程填洼完成后按顺序执行以下操作运行Hydrology工具集中的Flow Direction输入填洼后的DEM默认D8单向流算法就可以。运行Flow Accumulation权重栅格不用填得到累计汇流量栅格。用栅格计算器提取河网阈值需要根据分辨率和地貌调公式写Con(FlowAcc 2000, 1, NoData)。把河网栅格转为矢量用Stream to Feature工具。重点说下第三步的阈值。阈值设小了河网会密得吓人随便一个低洼带都是“河流”设大了又把真正的支流切没了。我跑12.5米数据时的常用实验区间是2000到500030米数据则经常从500到2000开始试。最有效的做法是把不同阈值的结果叠在山体阴影图上面目测对比选一条最贴近自然河道走向的。4.3 流域面积计算和结果整理河网提好以后如果只是看河流范围到上一步就够了但要算某个出水口对应的流域面积得用Watershed工具。这个工具需要两个输入填洼后的流向栅格以及一个出水口点要素。出水口位置一般放在河网干流的某个断面位置用经纬度或投影坐标画一个点就行。运行Watershed后会得到流域栅格再用Raster to Polygon转成面要素。面积计算这一步最容易犯的错误就是用WGS84经纬度直接算面积ArcGIS会按度为单位算出一个毫无意义的数字。正确做法是先把DEM和流域面要素都投影到UTM或Albers等投影坐标系再在属性表里添加双精度字段右键Calculate Geometry选平方千米这样面积才是可靠的。如果想看流域内高程、坡度等统计值接着用Zonal Statistics as Table工具输入流域面和高程栅格输出结果里直接有平均高程、最大高差这些数据。5. Python进阶DEM与DXF叠加分析的完整姿势5.1 实际场景与核心思路地形数据经常要和设计图纸放在一起看。很多项目里的用地红线、建筑轮廓、道路中线都是用CAD画的格式无非DXF或DWG。把DXF里的关键线和DEM叠加可以快速评估场地内高差、算填挖方边界、判断道路纵断面坡度这就是“dem dxf 叠加 python”这个热词背后最常见的需求。核心思路其实就三步先用Python把DXF里的矢量坐标读出来再从DEM上提取对应位置的高程最后做统计或者可视化。听起来简单但实际跑起来有两个主要坑坐标系统一和图层过滤。5.2 基于GDAL/rasterio加ezdxf的代码实现我习惯用rasterio读DEMezdxf读DXF两个库都是Python处理空间数据的熟面孔。下面这段代码可以拿来改着用import rasterio import numpy as np from ezdxf import readfile dem_path aoi_12_5m_dem.tif dxf_path site_boundary.dxf target_layer 用地红线 with rasterio.open(dem_path) as src: dem src.read(1) transform src.transform nodata src.nodata doc readfile(dxf_path) msp doc.modelspace() coords [] for entity in msp: if entity.dxf.layer ! target_layer: continue if entity.dxftype() LWPOLYLINE: coords.extend([(p[0], p[1]) for p in entity.get_points(xy)]) elif entity.dxftype() LINE: coords.append(entity.dxf.start[:2]) coords.append(entity.dxf.end[:2]) def xy_to_elevation(x, y): row, col ~transform * (x, y) row, col int(round(row)), int(round(col)) if 0 row dem.shape[0] and 0 col dem.shape[1]: val dem[row, col] return np.nan if val nodata else val return np.nan elevations [xy_to_elevation(x, y) for x, y in coords] valid [v for v in elevations if not np.isnan(v)] if valid: print(顶点高程统计min %.2f, max %.2f, mean %.2f % ( np.min(valid), np.max(valid), np.mean(valid)))这段代码只处理了LWPOLYLINE和LINE两种实体实际项目中还可能碰到POLYLINE、SPLINE需要按需扩展。重点解释一下~transform * (x, y)这行rasterio的transform是仿射变换矩阵用取反求解正好能把地理坐标转成栅格的行列号这是整个提取流程里最核心的一步。5.3 坐标转换与单位统一代码能跑起来是一回事结果对不对又是另一回事。我见过最多的问题是CAD里的DXF坐标和DEM对不上。常见原因有两类一类是DXF本身是地方坐标系或者国家2000坐标系而DEM是WGS84经纬度另一类是把图纸坐标当成了米制其实CAD单位可能是毫米。解决办法也很直接先用pyproj或其他工具把DXF坐标转换到DEM所在坐标系再套用上面的高程提取逻辑。例如在pyproj里做投影转换只需要把源坐标系的EPSG代码和目标坐标系的EPSG代码传进去一行transformer.transform(x, y)就能解决。注意在叠加分析前先分别在ArcGIS或QGIS里打开两个数据源目测一下控制点是否对齐不要一开始就闷头算。6. 常见问题与排查技巧实录6.1 数据下载与预处理高频问题现象可能原因解决办法下载的DEM大面积黑色空洞光学数据受云覆盖或SAR阴影区用gdal_fillnodata做孔洞填充或换用互补数据源拼接整张亚洲范围数据打不开文件大得离谱超出内存用gdal_translate裁剪研究区或转Cloud Optimized GeoTIFFDEM表面条纹感严重原始数据处理时未做坡向校正下载RTC产品或用多时相数据平均12.5米数据噪声大雷达相干噪声植被密集区明显辅助30米光学DEM校验或做一次中值滤波拼接后瓦片之间有明显接缝坐标系或分辨率不一致先统一投影到同一EPSG重采样到同一分辨率再拼接6.2 DEM处理与叠加分析高频问题现象可能原因解决办法河网断断续续流向乱扭DEM洼地未填平或平坡区域过广先Fill再配合DEM的平坦区域约束流域面积和现实对不上直接用地理坐标系算面积统一转UTM或Albers投影后再计算提取的河网密密麻麻全是支流Flow Accumulation阈值偏低提高阈值或设置最小河流长度过滤DXF与DEM整体偏移、旋转坐标系、基准面、单位不一致用重投影工具统一坐标系或用控制点做仿射配准程序跑着跑着内存溢出栅格太大或循环读取无窗口限制用rasterio的window参数分块读取处理最后说点个人的实际体会。DEM数据看着简单但坑全在细节里坐标基准没对齐、分辨率不一致、NoData没处理任何一个疏忽都能让分析结果变成一张废图。我这些年养成的习惯是下载完成的DEM都顺手写一句元数据记录数据源、分辨率、下载日期、是否做过填洼或裁剪都记清楚特别是12.5米这类处理链比较长的数据谁动过处理流程一定要写明白不然半年后你自己都会对着文件发呆。建议刚接触的朋友先把这篇里的流程在小范围区域各跑一遍再上大区域能省掉一大堆返工时间。数据处理这件事永远是实际跑过才知道怎么回事。本文还有配套的精品资源点击获取
返回列表