秦岭淮河GIS数据包:mxd工程、shape文件与DEM裁剪重采样实战 简介这份资源面向地理信息制图、区域地理研究与教学人群提供秦岭淮河地区矢量边界及配套地形数据可用于绘制秦淮分界线、分析南北过渡带空间分布与地形条件。压缩包共19个文件约186.41MB包含标准shape文件shp、shx、dbf、prj等用于边界矢量表达可编辑mxd文件便于按个人制图习惯调整样式标准成图TIF可直接取用另有全国高程TIF与省级行政区划shape文件支持按需裁剪与全国及区域高程图绘制。资源还附带说明文档与坐标投影文件数据来源真实可靠。目前已有215人学习下载适合需要快速获取秦淮地区边界与高程底图、完成课程作业或专题制图的用户参考使用。1. 秦岭淮河地区空间分布及地形条件一套能直接打开、能改、能出图的 GIS 数据包到底长什么样拿到「秦岭淮河地区空间分布及地形条件」这个题目多数人第一反应是去搜论文里的示意图结果发现要么是低分辨率截图要么是没法编辑的 JPG。真正干活的人需要的是一套能落地的数据可编辑的 mxd 工程文件、标准 shape 文件、覆盖全区的高程 TIF以及已经配好符号系统的成图 TIF。这套组合的价值在于你打开 ArcMap 就能看到分界线走向、地形起伏和成图效果改个配色、换个投影、裁个子区域都能直接操作不用从零开始描边界、下 DEM、调符号。它适合做区域地理分析的研究生、做国土空间规划的技术员以及需要快速出图的测绘从业者。秦岭淮河这条线不只是南北分界它牵扯到气候、植被、农业熟制、建筑规范而地形条件又直接决定这条线两侧的过渡带宽度。所以这套数据包的核心不是「一张图」而是「一套可复现的分析底稿」。2. mxd 工程文件与 shape 文件的配合逻辑为什么不能只拿 shape 去出图2.1 mxd 里到底存了什么为什么它比 shape 更「值钱」很多人觉得 shape 文件才是核心mxd 只是个壳。实际干过项目的人知道mxd 里存的是符号系统、标注规则、图层顺序、比例尺范围、版面元素和超链接路径。秦岭淮河这条线如果只给 shape你拿到手是一条默认灰色细线要自己调粗细、颜色、虚线样式还要决定要不要加缓冲区。而 mxd 里通常已经配好了分界线的符号比如红色虚线加注记、地形底图的色带高程分层设色、以及成图版面的图例、比例尺、指北针。换句话说mxd 是「成品车间」shape 是「原材料」。没有 mxd你得花两三个小时重新配图有了 mxd改个标题就能出图。常见做法是mxd 里引用 shape 文件时用相对路径这样整个文件夹拷给别人也能打开。如果你拿到的是绝对路径的 mxd打开后图层前面会出现红色感叹号这时候右键图层 → Data → Repair Data Source重新指到 shape 文件所在位置即可。注意mxd 的版本兼容性是个坑ArcMap 10.x 的 mxd 不能用 ArcGIS Pro 直接打开后保存为旧版本反过来 Pro 的工程也不能降级。所以如果你团队里有人用 Pro有人用 ArcMap最好统一用 ArcMap 10.8 或者提前导出地图文档。2.2 标准 shape 文件的字段结构和坐标系统秦岭淮河分界线的 shape 文件通常是一个线图层字段至少包含 Name分界线名称、Length长度、Type主界线/支线。地形条件相关的 shape 可能是等高线、坡度分级面或者地貌类型面。拿到 shape 后第一件事不是画图而是看坐标系。常见的是 GCS_WGS_1984 或者 GCS_Xian_1980也有投影后的 CGCS2000_3_Degree_GK_Zone_XX。如果分界线和 DEM 的坐标系不一致叠加时会对不上分界线可能偏移几百米。检查方法在 ArcMap 里右键图层 → Properties → Source看 Geographic Coordinate System 和 Projected Coordinate System。如果一个是地理坐标系一个是投影坐标系需要先用 Project 工具统一。对于秦岭淮河这种跨多个经度带的区域建议统一用 Albers 等面积投影中央经线取 105°E双标准纬线取 25°N 和 47°N。这样面积变形小适合做空间分布统计。# 用 arcpy 批量检查 shape 文件的坐标系并统一投影 import arcpy import os # 输入文件夹和输出文件夹 input_folder rD:\Qinling_Huaihe\shape output_folder rD:\Qinling_Huaihe\shape_albers target_proj arcpy.SpatialReference(102025) # Asia_North_Albers_Equal_Area_Conic # 创建输出文件夹 if not os.path.exists(output_folder): os.makedirs(output_folder) # 遍历所有 shape 文件 arcpy.env.workspace input_folder shape_list arcpy.ListFeatureClasses() for shp in shape_list: # 获取原始坐标系 desc arcpy.Describe(shp) src_proj desc.spatialReference print(f处理: {shp}, 原始坐标系: {src_proj.name}) # 输出路径 out_shp os.path.join(output_folder, shp) # 如果已经是目标投影直接复制否则投影转换 if src_proj.name target_proj.name: arcpy.CopyFeatures_management(shp, out_shp) else: arcpy.Project_management(shp, out_shp, target_proj) print(f完成: {out_shp})这段代码的逻辑是遍历指定文件夹下所有 shape 文件读取其坐标系如果和目标 Albers 投影一致就复制不一致就调用 Project 工具转换。参数说明arcpy.SpatialReference(102025)是 Esri 内置的 Asia_North_Albers_Equal_Area_Conic 的工厂代码你也可以用arcpy.SpatialReference(Asia_North_Albers_Equal_Area_Conic)。注意如果 shape 文件本身没有定义坐标系UnknownProject 工具会报错需要先用 Define Projection 工具补上正确的坐标系。这个坑很常见尤其是从某些网站下载的 shape 文件缺少 .prj 文件导致坐标系丢失。2.3 把 shape 和 mxd 关联起来的操作步骤如果你拿到的是散装的 shape 和 mxd但 mxd 里的路径不对按以下步骤修复打开 mxd看到红色感叹号图层。右键图层 → Data → Repair Data Source。在弹出的对话框里导航到 shape 文件所在文件夹选中对应的 .shp 文件。如果多个图层都断了可以右键图层组 → Repair Data Source批量修复。修复后另存为新的 mxd并勾选「Store relative pathnames」选项这样拷贝文件夹不会断链。提示ArcMap 的「Store relative pathnames」在 File → Map Document Properties 里勾选。如果忘了勾换电脑后所有图层都会断链血泪经验。3. 全国高程 TIF 的裁剪与重采样面图层裁剪和掩码提取到底有啥区别3.1 全国 DEM 直接拿来用的问题分辨率、投影和范围全国高程 TIF 通常是 30 米分辨率的 SRTM 或 ASTER GDEM也有 90 米的。直接拿全国 DEM 做秦岭淮河地区分析第一个问题是范围太大加载慢、计算慢第二个问题是投影可能不适合区域分析比如 WGS84 地理坐标系下纬度和经度不等距算坡度会有偏差第三个问题是数据量全国 30 米 DEM 大概几十 GB裁剪到秦岭淮河区域可能只有几百 MB效率差几十倍。所以第一步永远是裁剪。裁剪 DEM 有两种常见方式用矩形范围裁剪Clip和用面图层裁剪Mask。热搜词里提到的「arcmap 中依靠面图层裁剪 dem 栅格 tif 文件」和「依靠面图层掩码提取」的区别本质上是 Clip 和 Extract by Mask 的区别。3.2 Clip 和 Extract by Mask 的底层差异Clip 工具Data Management → Raster → Raster Processing → Clip是按矩形范围或者面要素的最小外接矩形来裁剪输出栅格的像元值不变但范围是矩形的。如果你用一个不规则的面去 Clip它只会取面的外接矩形面以外的区域仍然保留。而 Extract by MaskSpatial Analyst → Extraction → Extract by Mask是按面要素的实际形状裁剪面以外的像元变成 NoData。换句话说Clip 是「切矩形」Mask 是「抠形状」。对于秦岭淮河地区如果你要严格按分界线的缓冲区或者行政区边界提取 DEM必须用 Extract by Mask。如果你只是要一个矩形范围的 DEM用 Clip 更快。但注意Extract by Mask 需要 Spatial Analyst 扩展模块而 Clip 不需要。如果你没有 Spatial Analyst 许可可以用 Clip 加手动设置处理范围Environment → Processing Extent来近似。# 用面图层掩码提取 DEM并重采样到 100 米分辨率 import arcpy from arcpy.sa import * # 启用 Spatial Analyst 扩展 arcpy.CheckOutExtension(Spatial) # 输入数据 dem_tif rD:\Qinling_Huaihe\dem\China_DEM_30m.tif mask_shp rD:\Qinling_Huaihe\shape\Qinling_Huaihe_Buffer.shp output_tif rD:\Qinling_Huaihe\dem\Qinling_Huaihe_DEM_100m.tif # 设置环境输出坐标系、处理范围、像元大小 arcpy.env.outputCoordinateSystem arcpy.SpatialReference(102025) arcpy.env.extent mask_shp arcpy.env.cellSize 100 # 重采样到 100 米 arcpy.env.snapRaster dem_tif # 执行掩码提取 out_extract ExtractByMask(dem_tif, mask_shp) # 保存结果 out_extract.save(output_tif) print(f完成: {output_tif}) arcpy.CheckInExtension(Spatial)这段代码的关键参数arcpy.env.cellSize 100会把输出栅格重采样到 100 米适合区域尺度的地形分析既保留趋势又减少数据量。arcpy.env.snapRaster dem_tif保证输出像元对齐原始 DEM避免出现半像元偏移。arcpy.env.extent mask_shp把处理范围限制在面图层的外接矩形加快处理速度。注意ExtractByMask 默认用双线性插值重采样如果你要做坡度、坡向分析建议用最近邻插值arcpy.env.resamplingMethod NEAREST避免高程值被平滑。3.3 重采样方法怎么选最近邻、双线性、三次卷积重采样是 DEM 处理里最容易翻车的地方。最近邻NEAREST保留原始像元值适合分类数据和高程数据但输出可能有锯齿。双线性BILINEAR用周围 4 个像元加权平均输出平滑但会改变高程值不适合精确地形分析。三次卷积CUBIC用 16 个像元更平滑但计算慢也可能产生超出原始范围的值。我的习惯是如果后续要做坡度、坡向、水文分析用 NEAREST如果只是做可视化底图用 BILINEAR。参数设置在arcpy.env.resamplingMethod里或者在工具对话框的 Environments → Raster Analysis → Resampling Method 里选。注意重采样后的 DEM 如果像元大小不是原始分辨率的整数倍比如 30 米重采样到 100 米会出现像元值偏移。最好用 30 的整数倍比如 90 米、150 米或者直接用原始分辨率裁剪后再聚合。4. 标准成图 TIF 的生成与配色从 DEM 到分层设色图的操作细节4.1 分层设色的色带选择和断点设置成图 TIF 的核心是让读者一眼看出地形起伏和分界线的关系。秦岭淮河地区海拔从几十米到 3700 多米如果直接用默认的灰度色带低海拔的平原和高海拔的山地对比不明显。常见做法是用分层设色低海拔用绿色中海拔用黄色到棕色高海拔用白色或红色。断点可以按 200 米、500 米、1000 米、2000 米、3000 米来分。在 ArcMap 里右键 DEM 图层 → Properties → Symbology → Stretched然后选 Color Ramp。如果想手动设断点选 Classified设置 Break Values。注意Classified 会改变像元值的显示方式但不改变原始数据。导出成图 TIF 时在 File → Export Map 里设置分辨率通常 300 dpi和格式TIFF并勾选「Write World File」以便地理配准。# 用 arcpy 设置 DEM 的分层设色并导出成图 TIF import arcpy # 输入 DEM 和输出 mxd dem_tif rD:\Qinling_Huaihe\dem\Qinling_Huaihe_DEM_100m.tif mxd_path rD:\Qinling_Huaihe\Qinling_Huaihe_Map.mxd output_tif rD:\Qinling_Huaihe\Qinling_Huaihe_Map.tif # 打开 mxd mxd arcpy.mapping.MapDocument(mxd_path) df arcpy.mapping.ListDataFrames(mxd)[0] # 添加 DEM 图层 dem_layer arcpy.mapping.Layer(dem_tif) arcpy.mapping.AddLayer(df, dem_layer, BOTTOM) # 设置符号系统为分层设色 symbology dem_layer.symbology symbology.renderer Classified symbology.classBreaks [200, 500, 1000, 2000, 3000] symbology.colorRamp Elevation #1 # 使用内置色带 dem_layer.symbology symbology # 导出成图 TIF arcpy.mapping.ExportToTIFF(mxd, output_tif, df, resolution300, world_fileTrue) print(f成图已导出: {output_tif})这段代码的逻辑是打开 mxd添加 DEM 图层设置分类断点和色带然后导出 300 dpi 的 TIFF 并附带世界文件。参数说明classBreaks是断点列表colorRamp可以用内置名称或者自定义 .clr 文件。注意arcpy.mapping模块在 ArcMap 10.x 里可用但在 ArcGIS Pro 里要用arcpy.mp。如果你用 Pro代码需要改写。4.2 成图 TIF 的坐标信息和元数据保留导出成图 TIF 时最容易丢的是坐标信息。如果只导出图片不写世界文件TIF 就是一张普通图片没法在 GIS 里叠加。世界文件是一个 .tfw 文本文件记录了左上角像元的坐标和像元大小。在 Export Map 对话框里勾选「Write World File」即可。另外TIF 的元数据里最好保留数据来源、投影信息和处理步骤方便别人复现。提示如果成图 TIF 要用于出版分辨率至少 300 dpi色彩模式用 CMYK。但 CMYK 的 TIF 在 GIS 里显示会偏色建议先导出 RGB 用于分析再转 CMYK 用于印刷。5. 避坑与排查秦岭淮河数据包最常见的 5 个翻车现场5.1 分界线和 DEM 对不上偏移几百米现象把秦岭淮河分界线 shape 叠加到 DEM 上发现分界线跑到山脊旁边去了明显偏移。原因shape 文件和 DEM 的坐标系不一致一个是地理坐标系一个是投影坐标系或者两个都是地理坐标系但基准面不同WGS84 vs Xian80。解决用 Project 工具统一到同一个投影坐标系并且检查基准面转换参数。如果偏移是系统性的可能是基准面转换没设对在 Project 工具里选正确的 Geographic Transformation。5.2 Extract by Mask 输出全黑或者全 NoData现象用面图层掩码提取 DEM结果输出要么全黑要么全是 NoData。原因面图层的范围超出了 DEM 的范围或者面图层的坐标系和 DEM 不一致导致掩码区域落在 DEM 之外。解决先用 Project 统一坐标系再用 Clip 把 DEM 裁到面图层的外接矩形然后再 Extract by Mask。另外检查面图层是否有有效的几何有时候 shape 文件损坏会导致空几何。5.3 mxd 打开后图层全部断链现象拷贝给别人的 mxd 打开后所有图层前面都是红色感叹号。原因mxd 里用的是绝对路径或者相对路径的基准文件夹变了。解决在原始机器上打开 mxdFile → Map Document Properties勾选「Store relative pathnames」另存为。然后把 mxd 和 shape 文件放在同一个文件夹里一起拷贝。如果已经断链右键图层 → Data → Repair Data Source 手动修复。5.4 重采样后坡度计算出现大量零值现象DEM 重采样后算坡度平原地区出现大量 0 度山地坡度也偏小。原因重采样方法用了双线性或三次卷积把高程值平滑了导致相邻像元的高差变小。解决重采样时用 NEAREST或者直接用原始分辨率 DEM 算坡度再重采样坡度栅格。坡度栅格是分类数据重采样也要用 NEAREST。5.5 成图 TIF 没有坐标信息无法叠加现象导出的 TIF 在 ArcMap 里打开提示「Unknown Spatial Reference」无法和 shape 叠加。原因导出时没勾选「Write World File」或者 TIF 本身没有嵌入坐标信息。解决重新导出勾选世界文件如果已经导出可以用 ArcToolbox 里的 Define Projection 工具给 TIF 补上坐标系但像元位置可能不准最好重新导出。6. 进阶技巧用模型构建器批量生成分区域地形统计表如果你不止要一张图还要每个子区域的高程统计均值、最大值、标准差手动一个个算太慢。我一般用 ModelBuilder 搭一个流程输入 DEM 和分区面图层用 Zonal Statistics as Table 批量统计然后导出 CSV。这样换一个区域、换一个 DEM点一下就能跑完。具体步骤打开 ArcMap → ModelBuilder → 拖入 Zonal Statistics as Table 工具 → 设置输入栅格为 DEM输入区域数据为分区面图层输出表为临时表 → 右键工具 → Batch → 添加多组数据 → 运行。如果要用 Python 脚本可以用arcpy.sa.ZonalStatisticsAsTable循环遍历分区图层里的每个要素。注意Zonal Statistics 对 NoData 的处理是忽略所以如果 DEM 有空洞统计结果会偏小。最好先用 IsNull 工具检查 NoData 区域必要时用 Fill 工具填补。# 批量计算每个分区的高程统计 import arcpy from arcpy.sa import * arcpy.CheckOutExtension(Spatial) dem rD:\Qinling_Huaihe\dem\Qinling_Huaihe_DEM_100m.tif zones rD:\Qinling_Huaihe\shape\Sub_Regions.shp out_table rD:\Qinling_Huaihe\stats\Elevation_Stats.dbf # 执行分区统计 ZonalStatisticsAsTable(zones, RegionID, dem, out_table, DATA, ALL) # 导出为 CSV arcpy.TableToTable_conversion(out_table, rD:\Qinling_Huaihe\stats, Elevation_Stats.csv) print(统计完成) arcpy.CheckInExtension(Spatial)参数说明RegionID是分区图层的唯一标识字段DATA表示忽略 NoDataALL表示计算所有统计量均值、最大值、最小值、标准差等。输出表可以进一步在 Excel 里做排序和制图。这套数据包和流程我前后调了三四次最大的教训是坐标系不统一后面全白干。所以拿到任何 shape 和 TIF第一件事永远是看坐标系第二件事是看范围第三件事才是动手做图。希望帮到你。本文还有配套的精品资源点击获取