
简介面向ArcGIS使用者的长江流域干流中游区间水系流域地形图数据包包含河流、湖区等shp矢量图层及dem90m栅格地形适合区域水文分析、地图制图、科研教学等多种场景。压缩包共71个文件其中5个shp文件构成水系主体配套shx/dbf/prj完成属性与投影定义adf文件为栅格地形数据mxd工程文档用于一键出图另附jpg、PDF、EPS三种格式成果图整体大小28.47MB。对于不熟悉GIS的用户双击mxd并链接图层即可自动成图或直接使用出图文件夹中的图片免去软件操作十分方便。已有1663人学习下载数据来自网络搜集加工目录结构清晰适合ArcGIS学习者、地理专业学生及科研人员作为基础底图与研究参考使用前建议自行核对数据精度与时效性。1. 长江中游区间水系地形图问题从来不在“图”而在“对齐”拿到“长江流域干流中游区间水系流域地形图 shp 格式矢量文件”这个需求时多数人以为难点在找数据真正做起来才发现问题在 ArcGIS 里的层层对位。中游区间通常指宜昌至湖口鄱阳湖入江口段涉及湖北、湖南、江西三省约 68 万平方公里河网密、湖汊多、区间内跨越多个 3 度带和 6 度带而水系、流域边界、地形三类要素往往来自不同生产单位一份 shp 是 WGS84 经纬度另一份是 CGCS2000 高斯投影第三份可能还套着北京 54 的旧壳。三者叠加后偏移几十米到几公里都很常见。真正能落地的做法不是反复找“更全的数据包”而是用一套固定的流程把坐标系、边界裁剪、拓扑清理、水文提取依次做扎实。ArcGIS 里做这套流程顺序对了命令很朴素顺序错了后边每一步都在返工。2. ArcGIS 坐标系校验与投影设置中游区间 shp 叠加对位的第一步2.1 先确认每份 shp 的坐标系再用数据框做动态投影长江中游区间跨经度约 110°E 至 117°E最常见的三种坐标系来源是WGS84 地理坐标系、CGCS2000 地理坐标系、以及 CGCS2000 高斯-克吕格投影坐标系。前者通常是直接从在线地图服务或 GPS 采集导出的后两者来自测绘生产和第三次全国国土调查等成果。WGS84 与 CGCS2000 在长江中游地区的椭球差异换算后平面偏移量约在 60 至 70 米级别肉眼在地形图上不容易察觉但叠加到高精度影像或与实地调查点位比对时就是“差一条路”的距离。拿到 shp 后第一步不是在 ArcMap 里拖进来而是先看有没有 prj 文件。一个完整的 shp 格式矢量文件至少包含主文件.shp、索引文件.shx和属性表.dbfprj 文件记录坐标系信息但不少从论坛、网盘下载的历史数据包会把 prj 文件丢失。这时 ArcGIS 默认按未知坐标系加载叠加自动失效。常见做法是打开 ArcCatalog 或 ArcGIS Pro 的目录视图 右键 shp 文件 → Properties → 查看 Spatial Reference 若无 prj使用 Define Projection 工具手动指定Define Projection与Project工具的区别要分清前者只是给数据“贴标签”告诉 ArcGIS 这份数据原本是什么坐标系不改变任何坐标数值后者才是真正的坐标转换会重算几何。很多新手把两者混用结果数据彻底错位。2.2 中游区间投影选型3 度带与 Lambert 的参数表中游区间东西跨度近 7 个经度用 3 度带高斯投影会横跨 36、37、38 三个带。若整个区间要作为一张工作底图常见做法是做一个自定义投影基准仍用 CGCS2000投影方式选择兰伯特等角圆锥投影Lambert Conformal Conic两条标准纬线分别取 27°N 和 31°N中央经线取 114°E。这个参数组合在长江中游水利类和气象类项目中几乎成了事实标准。用途投影坐标系关键参数全省/全区间小比例尺出图Lambert Conformal Conic标准纬线 27°N、31°N中央经线 114°E以地市为单位精确量算CGCS2000 3 Degree GK Zone 37 / 38中央经线 111°E 或 114°EFalse_Easting 带号与在线影像底图叠加WGS 1984 Web MercatorArcGIS 在线底图默认动态投影处理流域水文分析统一栅格Albers Equal Area双标准纬线中央经线按河段调整具体字段含义False_Easting表示东偏移量3 度带投影为了保留带号通常设置为 500000 加上带号乘以 1000000如 37 带为 37500000Central_Meridian是中央经线它决定了投影后哪条经线没有长度变形。若数据只在宜昌至荆州段使用选 111°E 中央经线误差最小若范围到岳阳、武汉、九江114°E 更合适。2.3 ArcGIS Pro 与 ArcMap 中设置数据框投影在 ArcMap 中右键图层 → Properties → Coordinate System可以给数据框指定一个投影ArcGIS Pro 则在地图属性Map Properties里设置。两者都是“动态投影”即只改变显示效果不修改原始 shp 的坐标系。注意动态投影的叠加结果取决于原始数据自身坐标系是否正确如果原始数据本身就是被误定义的动态投影只会让错位变得更有规律。处理中游区间时我一般直接在数据框里用 2.2 表的 Lambert 参数建一个自定义投影把全部水系、流域和地形图 shp 拖进去统一显示。确认叠加无误后再用Project工具把需要分析的图层输出成统一的投影坐标 shp。2.4 面积负值与几何异常的快速修复属性表里计算面积出现负值通常不是坐标问题而是面要素的环方向不正确。Shapefile 格式中面要素由外环和内环组成标准要求外环顺时针、内环逆时针部分数据生产软件输出方向相反ArcGIS 在计算面积时按数学规则得到负值。处理步骤如下ArcToolbox → Data Management Tools → Features → Repair Geometry勾选Delete features with null geometry并按需选择Fix geometry errors选项跑完之后再在属性表里用Calculate Geometry重新计算面积。这个操作同时还能解决自相交、空几何等拓扑隐患在后续做拓扑检查前先做这一步能省掉大量无效报错。另外ArcGIS Pro 3.x 环境下老版本 10.8.2 的许可服务在 Windows 11 上常出现点击无响应建议直接在 Pro 中完成上述流程界面与工具集基本一致。3. 河网与流域边界的 shp 编辑提取、裁剪、合并与拓扑清理3.1 用属性选择从全流域水系中提取干流中游区间一份完整的“长江流域干流水系图”往往包含整个长江流域要素分类由属性字段区分。常见字段有NAME河流名称、GB国标编码或HYDC水文编码。提取中游区间干流与支流的思路是先用Select By Attributes按名称定位“长江”及主要支流再按编码范围过滤。SELECT * FROM river_shp WHERE NAME LIKE %长江% OR NAME LIKE %汉江% OR NAME LIKE %湘江% OR NAME LIKE %赣江%执行后右键图层 → Data → Export Data导出所选要素为新 shp。这是一种低风险的过滤方式不修改源数据。注意这里LIKE的模糊匹配会把“长江”“长江南源”“长江北源”都选出来中游区间从宜昌到湖口需要再按经纬度范围或者与面边界相交进行二次筛选。实际操作中更稳妥的做法是用Select By Location选中“与中游区间面相交的线要素”再叠加名称过滤。3.2 跨界大江河的裁剪Clip 工具与输出要素类的选择中游区间范围之外的支流汇入长江直接用面边界裁剪会让河流在边界处出现“假端点”。这是做水系图最常见的坑裁剪后的河网在边界处表现为众多源头点视觉上像断头河。处理方式是在出图时保留边界以外的上游河段只在属性中标记区间内外属性若必须裁剪使用 ArcToolbox 中的Clip工具并勾选Preserve spatial relationshipsArcGIS Pro 中对应为保留相交要素的原有几何。ArcToolbox → Analysis Tools → Extract → Clip Input Features: 全流域河网 shp Clip Features: 中游区间面 shp Output Feature Class: 中游河网.shp裁剪之后建议做一次Integrate处理容差建议设置为 0.001 度或按投影后 10 米把边界处微小的错位吸附到一起避免后续拓扑检查时悬挂点泛滥。参数XY Tolerance决定吸附距离设置过大可能把相邻平行河流吸附成一条中游平原区河汊密集10 米内比较安全。3.3 子流域面合并与聚合从三级区到二级区流域边界 shp 通常是多级嵌套的属性字段中常见LEVEL或SUBBASIN等编码。中游区间内存在大量一二级支流子流域若需要按干流分段展示用Dissolve按字段聚合ArcToolbox → Data Management Tools → Generalization → Dissolve Dissolve Field: 选择二级区编码字段Dissolve会把同一属性值的面合并成一个要素同时可以添加统计字段比如合并时计算总面积、河流总长度合计。需要注意的是Dissolve 后公共边消失相邻流域不再共享边界若后续还要做拓扑分析建议保留一份未合并的原始 shp。ArcGIS Pro 中还有一个Aggregate Polygons工具除了按属性合并还可以设置最小聚合面积阈值把细碎面片合并进相邻大面——这在中游湖区、洲滩密集区域清理零碎图斑时很有用Aggregation Distance参数表示面片之间距离小于该值的会被聚合中游地区的合理取值在 100 至 300 米。3.4 ArcGIS 拓扑检查步骤悬挂点、伪节点与尖锐角修复拓扑检查是数据入库前最消耗时间的一步更是保证后续水文分析结果正确的前提。ArcGIS 中创建拓扑必须先把数据装入要素数据集Feature Dataset步骤如下1. 在 Catalog 中新建 File Geodatabase 2. 在库内新建 Feature Dataset坐标系与数据保持一致 3. 将需要检查的 shp 导入该数据集 4. 右键数据集 → New → Topology 5. 添加规则线要素 Must Not Have Dangles 6. 添加规则面要素 Must Not Overlap 7. 校验并打开 Error Inspector 查看错误中游河网最常见的错误是悬挂点Dangles——在河网与湖汊交汇处本应连续的两条线因数据拼接问题差了几米形成悬空端点。此时可以用Snap工具或拓扑编辑工具把端点捕捉到相邻线容差设置 10 米以内。尖锐角Sharp Angles在中游弯曲河段非常普遍ArcGIS 拓扑规则本身没有直接的“角度下限”规则需要借助第三方插件或Geometry on Z计算转向角一个轻量替代方案是导出折点坐标到表格在 Excel 或 Python 里计算相邻线段夹角筛选小于 30 度的点返回到 ArcGIS 中定位。锐角本身不一定错但若是抽稀生成的伪锐角建议在原数据中处理而不是在容差层面强行抹平。4. 地形图接入与集水区提取从 DEM 栅格到河网 shp 的完整链路4.1 地形图 shp 与 DEM 栅格叠加时的分辨率匹配长江中游区间地形图 shp 常见内容有等高线、高程点和坡度分级面。这类数据与 DEM 栅格叠加时最容易犯的错是把两者当成同一精度使用。等高线 shp 往往来自 1:5 万或 1:25 万地形图数字化而 DEM 可能是 30 米分辨率ASTER GDEM 或 ALOS 12.5 米直接用来做水文分析结果会被等高线的抽稀精度带偏。建议做法等高线只做地形渲染和制图表达水文分析统一用 DEM 栅格完成。若手头只有等高线 shp可以先用Topo to Raster工具插值生成 DEM再做第 3 步的水文分析。ArcToolbox → Spatial Analyst Tools → Interpolation → Topo to Raster Input: 等高线类型 Contour与高程点类型 PointElevation Output Cell Size: 30Topo to Raster相比普通 IDW 插值能保持河网走向不会在陡坡处产生伪洼地专门用于构建水文地貌表面。中游平原区地形平缓Output Cell Size建议不低于 30 米过细会导致大量伪洼地填洼工作量成倍增加。4.2 填洼到累积量用 arcpy 跑通最小水文分析流程水文分析的标准链路是“填洼 → 流向 → 累积量 → 提取河网”每一步依赖上一步输出。中间某个 shp 历史残留的尖角或断裂线反映到 DEM 上就是伪洼地所以前面拓扑清理的意义在这里体现。用 arcpy 执行整套流程关键在参数传递import arcpy from arcpy.sa import * arcpy.env.workspace rD:\yangtze_middle\work.gdb arcpy.env.extent D:\yangtze_middle\extent.shp arcpy.env.cellSize 30 arcpy.env.mask D:\yangtze_middle\extent.shp arcpy.env.overwriteOutput True dem yangtze_dem filled fill_dem flow_dir flow_dir flow_acc flow_acc stream_raster stream_raster stream_vec stream_network # 1. 填洼把所有低于周边像元无法排水的洼地抬升到溢出口 out_fill Fill(dem, z_limit100) out_fill.save(filled) # 2. 流向用 D8 算法计算每个像元到邻域最低点的方向 out_dir FlowDirection(filled, force_flowNORMAL) out_dir.save(flow_dir) # 3. 累积量统计每个像元承接的上游汇水像元数量 out_acc FlowAccumulation(out_dir) out_acc.save(flow_acc) # 4. 提取河网设定累积量阈值大于阈值视为河道 stream_grid Con(out_acc, 1, 0, VALUE 5000) stream_grid.save(stream_raster) # 5. 栅格河网转矢量 streams StreamToFeature(stream_raster, flow_dir) streams.save(stream_vec)z_limit100表示最大填洼深度 100 米防止把真实地形如中游的溶蚀洼地、采石坑误当伪洼地填平。force_flowNORMAL表示允许水流沿栅格边沿流动只有 DEM 边缘存在异常低值时才用FORCE。VALUE 5000这个阈值决定河网密度5000 对应单条河道的集水面积约 4.5 平方公里5000 × 30 米 × 30 米这个密度与 1:5 万地形图上的常流水系基本接近若想得到更稀疏的主干河道可以提升到 20000 以上。4.3 栅格河网转 shp 后的三段式清理流程StreamToFeature输出的矢量河网往往存在碎段和伪分叉直接拿来制图会显得很“毛”。建议按顺序执行三个操作操作工具参数要点去除碎段Eliminate按长度阈值筛选中游建议 500 米以下删除平滑折线Smooth LinePAEK 算法容差 150 米简化节点Simplify Line保留关键转折点容差 30 米Eliminate会把短线段合并到相邻最长的线中而不是直接删除这样能保持河网连通性。Smooth Line的容差过大会让弯曲的荆江段失去本来面貌150 米是一个兼顾制图美观和形态保真的经验值。中游洞庭湖、鄱阳湖周边水网密布碎段数量可能占到总数的一半以上这个步骤不能省略。4.4 坡向与坡度计算地形图上的水势可视化参数水文分析的结果如果要跟地形图配合展示Slope和Aspect两个工具直接决定图面效果。坡度在中游区间整体较缓荆江段以北平原区多在 3 度以下但西北部山区和幕阜山区会达到 30 度以上直接线性拉伸会把平原区细节全部压成同一颜色。建议使用Slope(dem, degree)后再加一个Con判断把 0 到 5 度的区间单独扩大分级坡度按 0-1-2-3-5-8-15-25-45 度分级渲染 坡向按 Flat/N/E/S/W 八方位符号化坡向数据同时是后续做日照分析和植被覆盖度分析的基础输出时建议一起导出为 TIFF 或直接转成 shp 点文件方便和野外核查点叠加。5. 出图前验证与批量转换最后一遍检查决定数据能不能交付5.1 用天地图影像叠加做 shp 精度目检矢量 shp 在制图前最后一步是用在线影像做一次系统性目检。ArcGIS Pro 中直接添加天地图影像服务作为底图叠加第 3 章裁剪好的河网 shp重点检查桥梁、水闸、大堤转弯处这些地点通常有清晰的影像特征。目检时把视图缩放到 1:5000 左右沿河道两侧对比岸线与 shp 线的偏差若偏差超过 20 米说明原始数据的生产精度不足需要标记出来而不是强行修改。操作路径Map → Add Data → Data From Path输入天地图影像服务地址注意 ArcGIS Pro 需要配置网络代理或者直接使用在线底图服务若单位内网无法连接外网可以用已下载的影像切片替代。目检结果可以在属性表中增加一个CHECKED字段赋值为“已检/存疑/错误”存疑要素统一过滤出来到最后一步再处理。5.2 shp 批量转 txt 与批量转 KML 的两种常用命令交付时用户场景各不相同有人要 shp 继续在 ArcGIS 里编辑有人要 txt 去做表格关联有人要 kml 放到移动端查看。批量处理用 Python 在 ArcGIS Pro 的 Python 窗口里直接跑import arcpy import os arcpy.env.workspace rD:\yangtze_middle\shp_output out_dir rD:\yangtze_middle\convert shp_list arcpy.ListFeatureClasses(*.shp) # 方案一shp 转 txt属性表导出为 CSV for shp in shp_list: desc arcpy.Describe(shp) out_csv os.path.join(out_dir, desc.basename .csv) arcpy.TableToTable_conversion(shp, out_dir, desc.basename .csv) # 方案二shp 批量转 KML注意 KML 只能承载一个图层 for shp in shp_list: out_kml os.path.join(out_dir, os.path.basename(shp).replace(.shp, .kml)) arcpy.LayerToKML_conversion(shp, out_kml, MAP, NONE)TableToTable_conversion只导出属性表几何信息会保留在shape字段中若需要将坐标点显式输出到 txt则要先用Add Geometry Attributes把经度、纬度或 X、Y 坐标写入属性表。LayerToKML_conversion的第二个参数是图层文本型 shp 需要先Make Feature Layer再传入输出 KML 时注意Compatibility参数选KML还是KMZ涉及大批量影像符号时用 KMZ 更稳。5.3 拓扑复查与符号化保存交付前的三分钟检查整批转换完回到 ArcGIS Pro 里做最后一遍拓扑复查。删除上一轮修复后残留的悬挂点错误重新运行一次Validate Topology错误数应为 0。若仍有个别错误但确认是数据源头问题在拓扑规则的Exception中手动标记为例外并在交付说明中列出例外要素 ID。随后把符号化方案保存为图层文件.lyrx核心图层建议同时输出一套 SLDStyled Layer Descriptor方便 QGIS 用户直接复用。5.4 分幅输出时按区间和比例尺组织文件交付 shp 文件夹的组织方式建议按“数据类别水系/流域/地形/ 比例尺级别 / 坐标系统”三级目录建立命名中必须带坐标系标识和区间简称例如river_Hunan_CGCS2000_117E.shp。ArcGIS Pro 中的Split By Attributes工具可以按属性字段把一个大 shp 切成多个分幅 shp配合Feature Class To Shapefile批量转换即可完成最终输出。最后用Compress压缩成 zip 包检查大小和文件数量后交付中游区间完整一套河网、子流域、等高线、坡度面压缩后通常在 500MB 左右分幅后单文件控制在 100MB 以内更便于传输。本文还有配套的精品资源点击获取