☰
黄土高原GIS数据包:mxd+shape+TIF底图,附裁剪与投影实操
2026/10/26 15:41:57 网站建设 项目流程

简介:这是一份面向地理信息相关专业学习者与研究人员的数据包,聚焦黄土高原空间范围及地形条件,可用于区域制图、地貌分析、空间统计等场景。包内包含标准shapefile矢量边界,附带面积、周长、经纬度等属性信息,另有可编辑的mxd工程文件,便于在ArcGIS中按需调整符号、配色与布局;同时提供标准成图TIF,可直接用于论文插图或汇报展示。数据包还收录全国高程TIF数据,支持绘制全国及黄土高原地区的高程分级图,适合需要快速获取基础底图的GIS初级至中级用户。整体共19个文件,以shp、mxd、tif、dbf、prj等为主,配套说明文档与元数据文件,压缩包大小约186MB,结构清晰、即下即用。目前已有83人浏览学习,是制作黄土高原专题图、开展地形条件分析时较为省时的数据素材。

1. 黄土高原空间分布及地形条件:mxd、shape、TIF 一套配齐的底图数据包

搞 GIS 的都懂,做黄土高原相关项目时最耗时间的不是分析,而是找数据、统坐标系、调符号。这份资源就是干这个用的:一份可编辑的 mxd 工程文件,把黄土高原空间分布范围(标准 shape 面文件)和地形底图(全国高程 TIF + 标准成图 TIF)全部串好,打开 ArcMap 就能直接上手。它解决的是“数据从哪来、怎么对齐、怎么出图”这三件最琐碎的事,适合做水土保持、地貌分类、地质灾害评价、土地利用规划的人,也适合给学生毕设做底图用。省下的时间够你多跑三组实验。

2. 认识这套数据:mxd 工程 + shape 矢量 + TIF 栅格的组合逻辑

2.1 为什么是 mxd + shape + TIF 而不是 gdb

常见的地图数据包有几种组织方式:File Geodatabase(gdb)、Shapefile、以及 mxd 工程文档。这套资源选的是 mxd + shape + TIF 的组合,我猜是作者考虑到通用性。gdb 虽然功能强,但版本兼容性差,ArcGIS 10.2 建的库到 10.8 可能打不开,更别说 QGIS 里读 gdb 还得装驱动。shapefile 是事实上的交换格式,任何 GIS 软件都能读,TIF 更是通用得不能再通用。

mxd 的价值在于“状态保存”。它记录了图层的加载顺序、符号化方式、标注样式、视图范围、出图布局。你拿到 shape 和 TIF 后自己从零开始配,光是调黄土高原边界的分层设色和 DEM 的山体阴影,没一小时下不来。而这份 mxd 已经把这些都预设好,打开即是可用状态。

这套组合的边界也很明确:mxd 只能用 ArcMap 打开(ArcGIS Pro 倒是也能导入,但样式会有兼容性问题),shapefile 有 2GB 大小上限、属性表字段名长度限制在 10 个字符内(dBASE 格式限制),TIF 要是没带 tfw 世界文件,在其他软件里会丢失地理参考。用的时候心里有数就行。

2.2 文件组成与调用逻辑

按标题推断,解压后大约有这几类文件:一个 .mxd 主工程、至少一个黄土高原分布范围 .shp(含 .shx、.dbf、.prj 等伴随文件)、一个全国范围或黄土高原范围的 DEM .tif、一个标准成图 .tif(通常是已经做过分层设色或山体阴影渲染的成果图)。

打开 mxd 后,图层面板里应该能看到这几个图层叠在一起的顺序。正常的顺序是:最底层放 TIF 地形底图(显示山体阴影或高程分级),中间层放黄土高原边界 shape(带半透明填充或粗轮廓线),最顶层放标注或其他点状要素。这个顺序别乱动,一旦把 DEM 挪到最上层,整个图就看不清了。

第一次打开 mxd 大概率会遇到图层显示红色感叹号。这是路径问题——原作者的电脑路径和你解压的路径不一致。解决方法是右键图层 → 数据源 → 替换为本地路径,或者直接用“修复数据源”工具批量指向新路径。我一般会在解压后立刻把整个文件夹的路径固定住,比如 D:\GISData\LoessPlateau,后面再写脚本批处理时路径好记、不易错。

2.3 打开后先做三件事:检查投影、检查范围、检查符号

吃透这套数据包前,先做三个快速检查。第一,右键图层查看属性,确认 shape 和 TIF 的坐标系一致。如果 shape 是 WGS84 地理坐标,TIF 是 Albers 投影坐标,两者叠在一起绝对位置不会对齐。第二,缩放到全图,看黄土高原边界是否跟 TIF 的地形起伏吻合——边界线应该大致沿着地貌 transition zone 走,不会切入到平原腹地。第三,看符号化类型,确认 DEM 不需要重新拉伸。

这三项检查是我拿到任何数据包都强制走一遍的流程,比直接开始出图省去后面返工的麻烦。数据包的可用性,一般在十分钟内就能确认完。

3. 用面图层裁剪 DEM 栅格:提取与掩码提取的区别和实操参数

这个数据包里最常用到的操作,就是用黄土高原分布范围的 shapefile 把全国 DEM 裁剪出黄土高原区域。看起来简单,但 ArcMap 里其实有两条路可以走,结果和适用场景完全不同。很多人在这里吃过亏,下面说清楚。

3.1 ArcMap 中“裁剪”和“掩码提取”两个工具的实质区别

在 ArcToolbox 里找“裁剪”和“按掩膜提取”,两个工具都在“分析工具 → 提取分析”和“Spatial Analyst → 提取分析”下。功能都是拿面去切栅格,但机制不同。

“裁剪”(Clip,数据管理工具)是直接把栅格要素按面要素的几何范围切出来。它的本质是“窗口裁剪”:只认面要素的外包矩形(envelope),而不是面要素的精确边界。也就是说,即使你的黄土高原形状是个不规则多边形,Clip 输出的结果也依然是完整矩形范围内的 DEM,只不过矩形外面是 NoData。

“按掩膜提取”(Extract by Mask,Spatial Analyst 工具)是按面要素的精确几何形状去提取栅格像元。落在面内部的像元保留,面外部的像元变成 NoData。输出的栅格范围是黄土高原的不规则边界,矩形四个角是空的。

两者的对比如下:

对比项裁剪 (Clip)按掩膜提取 (Extract by Mask)
工具位置数据管理工具 → 栅格 → 栅格处理Spatial Analyst → 提取分析
裁剪依据面要素外包矩形面要素精确几何边界
输出范围矩形,多余区域为 NoData不规则多边形区域
处理速度快,适合粗略操作慢,适合精确出图
后续分析视 NoData 为无效值可直接用于区域统计
需要 license无需额外授权需要 Spatial Analyst 授权

实际用下来,做区域均值、面积统计、坡度分区统计时,必须用掩码提取,否则统计结果会把矩形角落的无效区域算进去。纯粹为了出图裁剪,比如把图幅缩小到研究区附近,用 Clip 就够了,速度快一倍。

3.2 操作步骤:掩码提取黄土高原 DEM

假设 mxd 已打开,黄土高原范围图层叫 lp_boundary,全国 DEM 图层叫 dem_china。按掩膜提取的操作如下:

首先打开 ArcToolbox → Spatial Analyst 工具 → 提取分析 → 按掩膜提取。输入栅格选 dem_china,输入栅格数据或要素掩膜数据选 lp_boundary,输出栅格路径指定到你的工作目录,命名 lp_dem_extract.tif。点击环境设置,把“处理范围”设为“与图层黄土高原边界相同”,把“捕捉栅格”设为 dem_china——这一步非常关键,能避免输出栅格的对齐方式跟原 DEM 不一致。

运行完成后,缩放到输出图层,你会看到黄土高原边界内的地形保留,边界外全部无数据。检查属性表里有没有落进 NoData 区域的值,如果有,说明掩膜面有缝隙或自相交,需要修复几何。

3.3 批处理:用 ArcPy 脚本一次跑完多个区域

如果研究区分好几块,比如陕北、陇东、晋西分别要独立 DEM,手动跑三次掩码提取比较浪费时间。这种情况下直接用 ArcPy 写个循环,效率高很多:

import arcpy from arcpy.sa import ExtractByMask arcpy.env.workspace = r"D:\GISData\LoessPlateau" arcpy.env.extent = r"D:\GISData\LoessPlateau\dem_china.tif" arcpy.env.snapRaster = r"D:\GISData\LoessPlateau\dem_china.tif" arcpy.CheckOutExtension("Spatial") boundary_fc = r"D:\GISData\LoessPlateau\subregions.shp" dem = r"D:\GISData\LoessPlateau\dem_china.tif" with arcpy.da.SearchCursor(boundary_fc, ["FID", "NAME"]) as cursor: for fid, name in cursor: where_clause = f"NAME = '{name}'" out = f"D:\GISData\LoessPlateau\extract\{name}_dem.tif" arcpy.MakeFeatureLayer_management(boundary_fc, "tmp_layer", where_clause) out_raster = ExtractByMask(dem, "tmp_layer") out_raster.save(out) print(f"完成: {name}")

这段代码的核心逻辑是:遍历 subregions 面图层里的每一行,按 NAME 字段逐区域做掩膜提取,输出文件名带地名。需要注意几个参数:arcpy.env.snapRaster 设成原 DEM 可以保证所有输出栅格像元网格对齐,后续做叠加分析时不会出现半像元错位;arcpy.env.extent 限制处理范围,能显著加速大范围 DEM 的读取;如果 subregions 要素类有重叠部分,每个区域独立提取没问题,但合并后统计时要注意重叠区域的重复计算。没装 Spatial Analyst 扩展的话,代码开头会报错,运行前先检查授权状态。

4. 坐标系与投影重投影:让 shape 和 TIF 精确叠加的关键操作

4.1 先看懂数据包里可能遇到的三套坐标系

拿到这套资源后,最常翻车的点在坐标系。黄土高原的数据在不同来源里可能遇到三种情况:GCS_WGS_1984(地理坐标系,单位是度)、WGS_1984_UTM_Zone_49N(投影坐标系,单位是米,适合局部测量)、Albers 等积圆锥投影(全国制图常用,等积特性保证面积量算准确)。

数据包里的全国高程 TIF 大概率是 Albers 或 WGS84,黄土高原边界 shape 多半也是地理坐标系。两者叠在一起时,ArcMap 会做动态投影(on-the-fly projection),就是显示时能对上,但一旦做面积量算、缓冲区、裁剪,结果就可能偏离预期。

动态投影适合目视,不适合分析。这是基本原则。比如你用 GCS_WGS_1984 的 shape 去做缓冲区分析,缓冲区半径 10 公里的圆形在赤道和在高纬度地区显示的偏差不同,因为在地理坐标系下“距离”不是恒定的。必须先统一投影才能算距离。

4.2 重投影的流程和参数选择

如果你决定把整个数据包统一到 Albers 等积投影(适合面积统计和区域分析),操作路径是:ArcToolbox → 数据管理工具 → 投影和变换 → 栅格 → 重投影(栅格),以及要素 → 投影(要素)。

栅格重投影时,注意几个关键参数:

  • 输出坐标系:选择自定义,再填 Albers 参数。黄土高原区域建议中央经线取 105°E,双标准纬线取 30°N 和 42°N(或 25°N 和 47°N 视需求而定),地理坐标系选 GCS_WGS_1984。
  • 重采样技术:DEM 选双线性插值(Bilinear)或三次卷积(Cubic),保持地形平滑;分类数据(如土地利用)选最近邻(Nearest),避免新类别产生。
  • 像元大小:保持与原 DEM 一致,或者按输出范围重新计算。假如原来像元大小是 90 米,重投影后像元大小可能会变成 90.001 米之类的非常规值,这时手动指定为 90 即可。

要素重投影时,只需要选输入要素、输出坐标系、输出要素类路径即可。唯一要注意的是,如果原要素没有 .prj 文件(也就是未定义坐标系),必须先定义坐标系再投影,否则 ArcMap 不知道从哪个坐标系转出来。遇到这种情况,右键图层 → 属性 → 源 → 设置坐标系,选 GCS_WGS_1984,然后再做投影。

4.3 坐标系没对齐时怎么排查

实战里经常遇到形状看起来对但位置整体偏移几百米的情况。这会发生在两种数据来源不统一时——比如 shape 是西安 1980 坐标系的成果,TIF 是 WGS84。两个坐标系之间的转换需要七参数,不是单纯重投影能解决的。

检查方法:在 ArcMap 里分别查看两个图层的属性 → 源 → 范围和坐标系。如果坐标系名称不同但都是地理坐标系,偏差一般在肉眼可见范围内;如果一个是 GCS_Xian_1980 一个是 GCS_WGS_1984,那偏差可能达到几百米到一千米。这时候就需要做“空间校正”或“地理配准”,用同名控制点把 shape 扭到 TIF 上。

具体做法:加载 Georeferencing 工具条,选一个已知点(比如黄河拐弯处、县城中心),输入该点在 shape 里的坐标和实际 GPS 坐标,至少三个控制点做仿射变换,然后矫正。这套资源如果本身是从权威数据源加工的,一般不需要做这步,但如果你叠加了其他来源的野外调查点,就得注意一下。

4.4 输出标准成图的正确姿势

把重投影后的 DEM 和黄土高原边界叠加好,准备出图时,别直接 File → Export Map,先检查一下图层的显示范围。右键图层 → 属性 → 显示范围,把“基于每个栅格”改成“无”,避免裁剪后的 NoData 区域在导出时显示成黑色或白色块。

出图的参数建议:分辨率 300 dpi,格式选 TIFF,背景色设为无,勾选“将地图背景设为透明”以防边界出现白边。命名规则我习惯用“区域_内容_分辨率_坐标系”,例如 LP_DEM_90m_Albers.tif,这样文件丢在文件夹里半年后回看也不会忘。

5. 常见问题与排查:mxd 打不开、图层红感叹号、裁剪结果不对怎么办

数据包在不同版本的 ArcGIS 环境下打开,多多少少会碰到几个高频问题。这里把我实际遇到过的情况逐个讲清楚。

问题一:mxd 打开后图层全部显示红色感叹号

现象:所有数据源丢失,图层内容无法显示。原因:mxd 文件保存的是绝对路径,原作者电脑上的文件路径跟你解压后的路径不一致。解决:右键图层 → 数据源 → 替换数据源,逐个指回本地文件。如果图层超过十个,懒人办法是直接用 ArcMap 的“数据源修复”工具,或者在 Python 里用arcpy.mapping对象批量更新数据源路径:

import arcpy mxd_path = r"D:\GISData\LoessPlateau\loess.mxd" out_mxd = r"D:\GISData\LoessPlateau\loess_fixed.mxd" mxd = arcpy.mapping.MapDocument(mxd_path) for lyr in arcpy.mapping.ListLayers(mxd): if lyr.supports("DATASOURCE"): old_path = lyr.dataSource new_path = old_path.replace("E:\\GIS\\Loess", "D:\\GISData\\LoessPlateau") lyr.replaceDataSource(r"D:\GISData\LoessPlateau", "SHAPEFILE", lyr.name, False) mxd.saveACopy(out_mxd) print("修复完成")

这段代码把数据源根路径从E:\GIS\Loess替换成本地目录,遍历所有图层重新指向数据源。注意replaceDataSource的第二个参数要写对:shapefile 用 "SHAPEFILE",个人地理库用 "PERSONAL_GEODATABASE",文件地理库用 "FILE_GEODATABASE"。写错的话工具会静默失败,图层还是红的。我一般会先检查lyr.datasource的实际后缀格式再填参数,能省很多排查时间。

问题二:裁剪出来的 DEM 是黑的或者全白

现象: Clip 或掩膜提取后的栅格显示一片黑或一片白,没有地形层次。原因:输出栅格的符号化拉伸方式丢了,默认用“无”拉伸,导致像元值范围没映射到色带。解决:右键图层 → 符号系统 → 拉伸 → 类型选“最值”,色带选高程色带,勾选“应用 Gamma 拉伸”。如果还是发灰,检查像元值统计信息——可能是裁剪后 NoData 值(通常为 -9999)混入了有效值范围,需要先在环境设置里把 NoData 值设为 -9999,再做提取。

问题三:掩膜提取的结果范围跟面图层边界不吻合

现象:输出的黄土高原区域跟 shapefile 边界有明显偏移或锯齿状异常。原因:面图层的几何存在自相交或缝隙,或者面要素坐标系与栅格坐标系不一致导致边界处像元归属混乱。解决:先用“修复几何”(数据管理工具 → 要素 → 修复几何)处理面图层,再检查两个图层的坐标系是否一致。如果面是地理坐标系、栅格是投影坐标系,提取结果会沿着投影变形,边界看起来歪。先统一投影,再跑掩膜提取。

问题四:属性表里面积字段计算有误

现象:用 shapefile 的属性表直接算面积,得出数值明显偏大或偏小。原因:未在投影坐标系下计算,地理坐标系下算出来的面积单位是平方度,不能直接当平方米用。解决:先在 ArcToolbox → 数据管理工具 → 投影和变换 → 要素 → 投影,把面图层转到 Albers 或 UTM 投影,再在属性表里右键面积字段 → 计算几何 → 选择平方米。使用这套数据包做分区统计时,这一步一定要提前走完,否则统计结果会让人完全怀疑人生。

问题五:QGIS 打开 mxd 出现样式丢失

现象:mxd 里定义的符号、标注、图例全没了,只剩裸数据和默认样式。原因:mxd 是 ArcMap 专有格式,QGIS 对 mxd 的解析只能读取数据源和部分图层信息,符号化系统无法完整转换。解决:如果想跨软件协作,先把 mxd 里的图层导出为独立文件,形状和说明随文件走,再在每个软件里重新配符号。不做这一步,QGIS 里打开的图层只有原始数据,没有视觉设计。

这些坑踩过一次后基本不会再踩,我后来养成习惯:任何数据包到手,先复制一份原始文件,然后所有修改在副本上进行。这样即使改坏了,原始数据毫发无损,还有后悔药吃。

6. 进阶:用这套数据做分区统计和批量制图的延伸技巧

数据包的最终价值不只是出图,而是能支撑分析。黄土高原研究里最常见的操作就是“分区统计”——把 DEM 按地貌类型或行政区划切割,统计各区域的坡度、海拔、地形起伏度。接下来就看怎么做。

6.1 分区统计:Zonal Statistics 的正确打开方式

先确保面图层和 DEM 坐标系一致,然后 ArcToolbox → Spatial Analyst 工具 → 区域分析 → 分区统计。输入栅格数据或要素区域数据选面图层,区域字段选你用来分区的字段(比如行政区代码或地貌类型),输入赋值栅格选 DEM,输出表格指定到工作目录。

统计类型里勾选平均值、最大值、最小值、范围、标准差。这几项能直接支撑后续分析:平均海拔描述区域整体高度,标准差描述地形起伏程度,最大值和范围用于识别极端地形。不要勾选“忽略 NoData”——如果 DEM 裁剪后有边界 NoData,忽略后统计面积会偏小,不忽略则能看出有效像元数量。

6.2 小比例尺制图的技巧

黄土高原这种边界不太规则的研究区,出小比例尺图时最容易出问题的是“锯齿边界”。明明矢量边界是平滑的,导出的 TIF 图片边界却一格一格的。解决办法是:导出时在“选项”里把“矢量简化”改成“无”,或把输出分辨率提到 600 dpi,边界锯齿会在视觉上缩小到不可见。再配合山体阴影底图叠加半透明边界,图的质感会明显提升。

6.3 数据验证:怎么确认这套数据的边界坐标是可靠的

所有处理做完后,我习惯做一步验证:从 TIF 里提取几个特征点的海拔值(比如延安、榆林、兰州附近),跟已知真实值对比,误差在合理范围内就说明坐标配准没问题。具体操作:ArcToolbox → Spatial Analyst → 提取分析 → 提取值至点,把已知城市点位数据和 DEM 叠在一起跑一次,然后对比提取值。如果几个点都差得离谱,回头检查投影和重采样设置。

从那些踩过的坑里,我给自己定了一条规矩:所有数据包的 mxd 打开后,先花十分钟检查投影、范围、符号,再花五分钟用城市点验证坐标,最后才开始干活。概率从 30% 的翻车率降到接近零,推荐你也这么做,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询