2024江苏省河流水系矢量图层获取与处理指南

发布时间:2026/9/11 23:48:07
2024江苏省河流水系矢量图层获取与处理指南 简介2024年江苏省河流水系矢量图层shp格式数据包面向地理信息系统数据处理、水利规划与环境制图相关开发或研究人员提供最新版水系线与水系面两类核心地理要素。压缩包内共十一个文件主体为线、面两套矢量数据及其配套索引、属性、坐标参考文件同时附赠格式转换脚本便于将矢量数据转为其他常用格式整个压缩包大小约二十七兆。数据采用全球通用的WGS84坐标系要素数量达数千至上万条细化程度较高可在常用桌面地理信息软件中直接加载用于地图制图、空间查询、叠加分析、河网密度计算以及水资源分布研究等场景。值得一提的是水系线数据与水系面数据分开存储方便使用者依据不同业务需求进行符号渲染、精度抽稀或局部裁剪。当前已有501人学习下载配合附带脚本可进一步完成矢量格式到轻量交换格式的转换为后续在线地图发布或二次开发提供便利。1. 2024江苏省河流水系矢量图层先认准这三件事“2024江苏省河流水系矢量图层”这个标题第一反应是找下载链接真正做 GIS 的人都知道这个标题本身是一个工程问题。做水环境底图或防汛一张图时需要的是能放进 ArcGIS Pro、能按名称查询、能按河流等级分级的 shp而不是从某个网站扒下来的“最新版”截图。合法且可用的公开数据源确实存在但拿到之后一般要过坐标系、编码和断线三道关才能算真正可用的“最新版”。这篇内容按找数据、整理数据、核对数据、交付数据的顺序展开适合需要做河网底图的数据工程师、水利与规划从业者以及做空间分析的学生。2. 江苏河流水系shp数据源对比与下载命令2.1 四个数据源怎么选更新速度、要素内容和坐标系“2024江苏省河流水系矢量图层”并不存在一个官方发布、统一命名的 shp 文件更常见的做法是从几个公开渠道分别取数再按项目标准整理成一套。下面四个源是我日常工作中会反复比较的它们各有侧重数据源更新节奏能拿到的内容坐标系适用场景全国地理信息资源目录服务系统不定期的年度/多年整饰HYDL 水系线、HYDA 水系面、RESA 水库CGCS2000省级宏观底图、正式专题图OSM 经 Geofabrik 下载近乎实时waterwayriver/stream/canal/drain 线要素WGS84需自行转现状河网、快速制图、断面监测天地图省级节点在线服务服务发布即更新WMTS 影像与矢量瓦片不直接给 shpCGCS2000屏幕作业底图、影像校核第一次水利普查河湖名录2011 年前后一次河湖名录表有名称代码无几何无几何与 shp 做名称属性挂接全国地理信息资源目录服务系统适合做“底图级”的水系它从上到下分类规范字段里有国标分类码适合报规划成果。缺点是部分中小河流停留在早期基础地理数据状态人工修改过的河道形态不一定反映 2024 年的现状。OSM 的优势在于社区持续更新江苏境内不少河道做了裁弯取直、新建水闸后OSM 里能更快看到变化缺点是属性字段很杂几何上常出现断线。天地图可以用于校核 shp 有没有过时但不提供文件级下载。水利普查名录没有几何却可以作为属性匹配的字典把河名和编码挂到矢量上。2.2 用curl加ogr2ogr从OSM导出可用的河流线shp如果你接受 OSM 这套河网作为基础最小可复现的下载命令是这样。Geofabrik 提供了江苏省级的 OSM 原始文件下载后用 GDAL 的 ogr2ogr 直接过滤水系要素并写成 shp# 1. 下载江苏省 OSM 原始数据PBF 格式几百MB curl -L -C - -o jiangsu-latest.osm.pbf \ https://download.geofabrik.de/asia/china/jiangsu-latest.osm.pbf # 2. 只保留水系线要素输出为 ESRI Shapefile ogr2ogr -f ESRI Shapefile \ -where waterway IN (river,stream,canal,drain,ditch) \ -nlt PROMOTE_TO_MULTILINESTRING \ -lco ENCODINGUTF-8 \ jiangsu_rivers.shp jiangsu-latest.osm.pbf lines第一段命令里的-C -表示支持断点续传江苏省 PBF 体积不小网络不稳定时这个参数能省掉重下整个文件的麻烦。第二段命令中-where是过滤条件waterway是 OSM 的要素标签river 是干流stream 是支流和季节性小溪canal 是人工渠drain 和 ditch 是排水沟-nlt PROMOTE_TO_MULTILINESTRING用来统一输出成多段线避免单线要素被 shp 的几何类型限制拆散-lco ENCODINGUTF-8是给 shp 附属的 dbf 属性表指定 UTF-8 编码后面处理中文时会少很多麻烦。如果机器内存不大建议用 osmium 替代 ogr2ogrOGR 的 OSM 驱动首次读取会构建临时数据库耗时较长。osmium 是流式处理内存占用低命令同样简洁osmium tags-filter jiangsu-latest.osm.pbf \ w/waterwayriver w/waterwaystream w/waterwaycanal w/waterwaydrain \ -o jiangsu_rivers.osm.pbf osmium export jiangsu_rivers.osm.pbf -f shapefile -o jiangsu_rivers_osm.shptags-filter中w/waterwayriver的写法表示只筛选水系标签为 river 的 way 对象并存成一个更小的 PBF之后的osmium export再把这个小文件转成 shp。相比 ogr2ogr 的-where方式这一步更省时间但输出 shp 里会保留 OSM 的许多原始字段后面需要自己删列。2.3 怎么判断手里的shp算不算“2024版”下载完成后先别急着进制图软件用 QGIS 打开属性表看有没有类似osm_timestamp或lastedit的字段OSM 数据每个要素都带最后修改时间。按这个字段排序能看到江苏的河网有大量要素在最近一两年被编辑过这就是“2024最新版”的实际含义——不是某个机构在某天统一发布了新版而是河网数据在持续滚动更新。另一个判断方法是和官方名录比对。把水利普查河湖名录整理成 CSV用名称字段和 shp 做一次属性连接匹配率在七成以上说明这套水系对现状表达是可用的如果匹配率低于五成可能你下载的是某早年的裁剪版而不是 OSM 的完整江苏数据。这一步建议直接用 QGIS 的“按属性连接”操作不需要写 SQL。3. 水系shp坐标系、编码和断线修复进ArcGIS Pro前先做三件事3.1 坐标系对不上从WGS84转到CGCS2000或高斯投影OSM 下载的 shp 坐标系是 WGS84 经纬度也就是 EPSG:4326而省内常见的国土空间规划底图是 CGCS2000高斯投影的居多。直接把两份数据叠在一起会出现几十米到上百米的位移越往大比例尺看越明显。这不是数据错了是坐标参考不一致。常规做法是以项目底图为准做重投影。如果底图用的是 CGCS2000 地理坐标就转 EPSG:4490如果底图是高斯投影苏南苏中通常用 3 度分带、中央经线 120°E也就是 EPSG:4548。命令仍然用 ogr2ogr# 转成 CGCS2000 地理坐标系 ogr2ogr -f ESRI Shapefile -t_srs EPSG:4490 \ jiangsu_rivers_4490.shp jiangsu_rivers.shp # 转成 CGCS2000 / 3-degree Gauss-Kruger CM 120E ogr2ogr -f ESRI Shapefile -t_srs EPSG:4548 \ jiangsu_rivers_4548.shp jiangsu_rivers.shp-t_srs指定输出坐标系转完之后 shp 会生成对应的.prj文件ArcGIS Pro 和 QGIS 打开时都能自动识别。如果你在 ArcGIS Pro 里发现要素位置正确但“单位变成了度”说明加载的是 EPSG:4490 版本而不是高斯投影版本这在做长度计算和缓冲区分析时会产生不小误差需要回到上一步按需求选投影。3.2 shp属性中文变乱码问题常在编码不在文件打开 shp 属性表看到“锟斤拷”或者成串问号绝大多数情况不是属性数据坏了而是 dbf 的编码声明和读取端使用的字符集不一致。老式 dbf 文件本身没有标准的编码位GDAL 写 OSM 数据时默认带 UTF-8 的.cpg文件Windows 下的 ArcMap 却常按 GBK/GB2312 去读于是中文全部变成乱码。在 QGIS 里可以直接指定图层编码右键图层选择“图层属性”在“数据源”的“数据源编码”里把 Automatic 改成 UTF-8 或 GBK显示立刻恢复正常。如果要给别人交付一份绝对不出乱码的文件建议在 QGIS Python 控制台里做一次强制转码另存# 把当前活动图层另存为 UTF-8 编码的 shp from qgis.core import QgsVectorFileWriter layer iface.activeLayer() options QgsVectorFileWriter.SaveVectorOptions() options.driverName ESRI Shapefile options.fileEncoding UTF-8 options.onlySelectedFeatures False QgsVectorFileWriter.writeAsVectorFormatV3( layer, rD:\gis\2024water\fix_utf8.shp, QgsCoordinateTransformContext(), options )fileEncoding参数直接控制输出 dbf 的字符集与-lco ENCODINGUTF-8在命令行里是同一个目的。这里的要点是如果你的源文件是在 Windows 中文环境里生产的 GBK shp先按 GBK 打开再另存为 UTF-8才能保证中文字段内容不丢失。3.3 河网断裂和碎线刷掉100米以下的杂线OSM 的河流数据在江苏省内整体密度不错但支流的上游常常是一条断掉的短线或者在行政区边界处被切开肉眼看着连续放大后实际上是若干条独立要素。直接做制图和拓扑分析时这些断线会造成统计口径混乱一条河的长度被拆成十几条记录网络分析完全没法用。先处理碎线。把坐标统一到投影坐标系后在 QGIS 字段计算器里新建一个长度字段用表达式计算每条要素的实际长度然后按长度筛选删除length(transform($geometry, EPSG:4490, EPSG:4548))这里transform把经纬度几何临时转成投影坐标系再量测结果单位是米如果图层本身已经是 EPSG:4548表达式可以直接写成length($geometry)。筛选出长度小于 100 米的要素后在属性表中按表达式选择并删除。阈值按图面比例尺调整做 1:10 万图500 米以下的碎线也可以清掉做 1:5 万图100 米阈值已经足够保守。断线合并比删碎线复杂一点。如果断点处节点坐标完全一致QGIS 的“处理工具箱”里有“合并线要素”工具可以把首尾相接的同属性线合并为单要素。对已经带名称的河段用后处理 SQL 更高效SELECT ST_LineMerge(ST_Union(geom)) AS geom, name FROM jiangsu_rivers GROUP BY name;ST_Union先把同名河段的几何全部叠合ST_LineMerge再把能连接的部分合并成一条线。这个查询只对名称字段可靠的图层有意义OSM 里大量无名支流的 name 为空会被聚成一条无名线使用时要先对 name 字段做空值处理。设计院交来的 DWG 转 shp 的水系默认也会遇到同样的断线问题规律完全一致处理思路可以复用。4. 在ArcGIS Pro/QGIS中加载遥感影像对照影像校核水系shp4.1 用在线遥感影像底图做位置校核拿到整理好的水系 shp第一步不是急着出图而是叠加最新遥感影像做位置抽查。QGIS 里加载 Esri World Imagery 的 XYZ 地址即可https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}在 QGIS 浏览器面板里展开“XYZ Tiles”右键新建连接把地址粘贴进去双击添加到画布。ArcGIS Pro 没有同名的 XYZ 面板较新版本可以在 Catalog 窗格中通过“添加数据来自路径”直接贴这个 URL但不同许可模式下兼容性不一我一般会在 QGIS 里把影像和 shp 分别截图再放到 Pro 工程里比对这样更省时间。抽查时重点关注河道裁弯取直段、新建水库淹没区、城市河道改线段。如果影像上河道已改道而 shp 还是老位置说明数据时效性不足如果 shp 里的河与影像上的河始终存在固定偏移优先检查坐标参考按第 3.1 节重新投影而不是怀疑影像有问题。4.2 按河流等级做分级符号化江苏水系在 OSM 里有明确的fclass字段river 代表自然干流canal 是人工运河和灌溉渠stream 是自然支流。省级图面不需要把所有要素画成同一种蓝色那样既看不出水系结构也压住了底图。在 QGIS 图层属性的“符号化”里选择“基于规则”用表达式设置线宽CASE WHEN fclass IN (river, canal) THEN 0.8 WHEN fclass stream THEN 0.35 WHEN fclass IN (drain, ditch) THEN 0.2 END这个表达式放到“线宽”的辅助数据源里颜色统一用深蓝#2b6fd6不用再单独给每条河流配颜色。river 保持 0.8mm 能让长江、淮河入海水道这类骨架河流在图上第一眼被识别stream 压到 0.35mm 以下后支流层次自然显现。如果你的数据来自全国地理信息资源目录服务系统而不是 OSM字段名会对应国标分类码 GB 而非fclass规则渲染时改成按 GB 代码前缀匹配即可。4.3 用DEM水文分析反查shp漏掉的支流水系 shp 里缺支流靠肉眼很难发现尤其在山丘区。常规做法是用 DEM 做一次水文分析生成模拟河网再和下载的矢量河网做空间对比。ArcGIS Spatial Analyst 的工具链是固定的工具作用与 shp 对照时的意义Fill 填洼消除 DEM 中的伪洼地避免水流停滞在错误位置Flow Direction 流向计算每个像元的水流方向提供河网提取的基础Flow Accumulation 流量累计汇水面积用阈值控制河网密度Raster to Polyline栅格河网转矢量和下载 shp 做距离比对在 Flow Accumulation 结果里用栅格计算器设置阈值比如FlowAcc 1000把高流量像元提取成栅格河网再用 Raster to Polyline 转成临时矢量然后对两套河网做 Near 近邻分析。模拟河网存在、而下载 shp 里没有对应线的位置就是需要重点补绘的支流反之如果 shp 里有河而 DEM 没模拟出来通常是阈值设太高或采集时河段太短可以降低阈值到 500 再试。5. 收尾从shp转txt到渔网分割和批量压缩的技巧5.1 转txt不如转CSV/GeoJSON不少人是想把属性表拿到 Excel 或审图系统里看这才有了“shp 转 txt”的需求。shp 的几何写进 txt 里基本没法再还原更实用的做法是导出成 CSV 或 GeoJSON。用 geopandas 可以一步完成import geopandas as gpd gdf gpd.read_file(jiangsu_rivers.shp, encodingutf-8) gdf[[osm_id, name, fclass, geometry]].to_csv( jiangsu_rivers.txt, sep\t, indexFalse ) gdf.to_file(jiangsu_rivers.geojson, driverGeoJSON)sep\t输出制表符分割的文本Excel 直接打开不需要做分列这和“转 txt”的实际目的基本一致GeoJSON 版本留给 Web 地图或需要保留几何的跨软件协作。注意到 CSV 输出时geometry字段会以 WKT 文本写入不是丢样式是便于导入关系型数据库。5.2 渔网分割shp方便分幅出图省级水利图往往需要按图幅或按乡镇边界切成多个 shp再用“渔网分割”的思路先生成格网再用格网去裁河流线。QGIS 里矢量菜单的研究工具中有“创建渔网”设置好格网间距后输出面要素再用“裁剪”工具把水系线裁到格网内。大比例尺分幅建议用投影坐标的 2000m 或 5000m 间距小比例尺出图直接按经纬度用 0.05°×0.04° 也可以关键是要保证渔网范围完全覆盖目标水系避免边缘河道被忽略。5.3 批量压缩shp别把.prj和.cpg落下shp 不是单文件格式一个图层由 .shp、.shx、.dbf、.prj、.cpg 等至少五个文件组成。交付时只压缩 .shp 文件对方打开就是“缺少 .shx 或 .dbf”坐标系也全靠猜。批量打包时用 Python 完整处理import zipfile import glob import os for shp in glob.glob(rD:\gis\2024water\*.shp): base os.path.splitext(shp)[0] with zipfile.ZipFile(base .zip, w, zipfile.ZIP_DEFLATED) as z: for ext in (.shp, .shx, .dbf, .prj, .cpg, .sbn, .sbx): f base ext if os.path.exists(f): z.write(f, os.path.basename(f))ZIP_DEFLATED启用压缩对河网线层这种几何简单、属性字段少的 shp压缩率能到一半以上。.cpg文件记录了 dbf 的字符集压缩时漏掉它对方在 Linux 环境下打开可能直接乱码.prj漏掉则坐标系识别失败。打包前先跑一下这段脚本再在 QGIS 里重新打开验证至少一个压缩包整个“2024江苏省河流水系矢量图层”的下载、整理与交付流程就闭环了。本文还有配套的精品资源点击获取