资讯动态

贵州省道路分级矢量数据:坐标基准、质量检查与业务落地

发布时间:2026/9/12 22:31:01 来源:尧图企业网站定制
简介贵州省道路数据最新分级精确到乡道矢量数据面向GIS开发、城市规划与交通分析人员集中提供全省道路矢量成果。内容覆盖城市一级至四级道路以及高速、国道、省道、县道、乡道等行政等级道路也包含OSM来源的铁路、轻轨、地铁、主干道、支路、人行道等多种类型共16种道路分类可用于地图制图、空间分析、路径规划和学术研究。压缩包共96个文件以shp、shx、dbf、prj等矢量标准格式为主并含sbn、sbx空间索引文件及cpg字符集文件同时附有xml元数据与png预览图便于在常见GIS软件中直接加载并快速核对数据信息包体约71.7MB已有491人学习下载。整体道路分级细致、类型互补既满足专业制图对道路精度和分类深度的要求也可作为道路数据整理、坐标校核与成果展示的参考底图和对照资料。1. 贵州省道路数据分级矢量先搞清楚它到底在讲什么「贵州省道路数据最新分级精确到乡道矢量数据」这个标题里信息量最大的不是最新而是精确到乡道。它意味着这份数据在行政等级上覆盖了国道、省道、县道、乡道四级而不是市面上常见的只到县道。贵州的公路网和东部平原完全不一样桥隧占比高、盘山回头弯多高速和县道乡道经常在同一个走廊里反复交叉这就对数据的分级字段和空间精度提出了比平原地带更高的要求。这份数据能支撑的实际工作包括地质灾害危险性区划的路网底图、村村通覆盖核查、乡镇物流路径规划以及省级路网可视化。适合三类人处理过 shapefile 但没深入接触过分级路网的 GIS 工程师需要一套基准底图的外业团队以及要拿路网做拓扑分析或路径服务的后端开发。下面按我处理这类数据的顺序展开先读属性和坐标再做编码与投影整理然后做质量检查最后接进业务系统。2. 道路分级矢量数据的坐标基准与属性组织拿到 rar 解出来的 shapefile 或 GeoPackage第一件事不是急着打开地图而是先回答三个问题坐标系是什么、分级字段叫什么、属性编码是什么。这三个问题里任何一个答错后面所有分析都是错的。2.1 CGCS2000 与高斯-克吕格投影先弄清数据落在哪个带最近几年国土、交通口交付的矢量数据基本都完成了 2000 国家大地坐标系转换。贵州省的经度跨度约在 103°36′E 到 109°35′E横跨三度带的第 34、35、36 带其中大部分地区落在中央经线 105°E 和 108°E 两个带。打开 .prj 文件常见两种写法一种是纯地理坐标系的GEOGCS[China Geodetic Coordinate System 2000]另一种是带了高斯-克吕格投影参数的写法里面会有Central_Meridian或CM字样。cat 道路_线.prj中央经线三度带带号EPSG 编码主要覆盖区域102°E34EPSG:4542毕节西部边缘县市105°E35EPSG:4543贵阳、遵义、安顺等中部区域108°E36EPSG:4544铜仁及黔东南东部区域注意一个常见误用EPSG:4543 和 EPSG:4544 差的不是坐标小数点而是整整一个带把 4544 当成 4543 用元素会整体偏移几十公里。我的习惯是拿到数据后先把 .prj 里的 Central_Meridian 读出来再决定统一到哪个带。如果数据源本身是全国拼接的直接转成 EPSG:4326 经纬度存储也行代价是平面量算和缓冲区操作会变慢且单位不是米。2.2 行政等级和技术等级筛选前先对字段口径精确到乡道里的分级多数情况下指行政等级。国标里道路有一套双轨分类行政等级管的是这条路归谁管技术等级管的是这条路修到什么标准。很多人把这两个字段混在一起筛选结果要么漏掉高速要么把等外小道当成乡道。行政等级在字段里常见的记为 XZJB、Class、Type、Grade 等取值形式可能是代码也可能是汉字比如1或G都可能代表国道。行政等级字母代码常见数值字段编号规则国道含国家高速G1G210、G75省道S2S 加三位数字县道X3X 加三位数字乡道Y4Y 加三位数字村道C5C 加三位数字技术等级则独立存在字段一般叫 JSJB、等级、Road_Level取值为高速公路、一级公路、二级公路、三级公路、四级公路、等外公路。一个典型情况是国家高速 G75 兰海高速在行政等级上是国道但技术等级是高速公路。如果按行政等级高速去筛这条线就丢了按行政等级国道 且 技术等级高速才能筛干净。这个双轨结构是处理贵州道路数据最容易踩的坑先用ogrinfo把字段值枚举出来再写筛选条件。2.3 解开压缩包后核对文件配套与 dbf 编码rar 解出来通常是一整套 shapefile至少包含 .shp、.dbf、.shx、.prj 四个文件有时还带 .cpg、.sbn、.sbx 索引文件。包内如果带了 .mxd、.qgz 或 .lyr 这类工程文件建议只看不要直接依赖因为它们记录的是制图效果不是数据本身。shapefile 的 .dbf 属性表在国内生产中大量使用 GBK 编码而 QGIS、GeoPandas 默认按 UTF-8 读打开后中文乱码是常态。判断方法用文本编辑器打开 .cpg 文件看里面的编码声明或者直接在 QGIS 里加载图层后看属性表是否乱码。这里顺带提一个识别技巧如果 .dbf 里乡道显示成道之类的替换符基本可以判定源是 GBK。另外标题里的最新只代表发布基期生产环境里道路数据更新周期往往以年计使用前先看元数据里的采集时间别用五年前的路网做当下的乡镇选址分析。3. 用 GDAL 把贵州省道路数据整理成坐标、编码统一的路网图层数据整理阶段的目标只有一个把来源混杂、坐标系不一、编码混乱的原始图层变成一份坐标统一、字段干净、可以进 PostGIS 或 GIS 软件的底图。GDAL 是这一阶段最可靠的工具一条ogr2ogr命令能同时完成转码、换投影、删字段三件事。3.1 解压后先用 ogrinfo 做图层体检mkdir -p data 7z x 贵州省道路数据最新分级精确到乡道矢量数据.rar -odata ogrinfo -ro -so -al data/道路_线.shp7z x用 p7zip 解压 rar比 unrar 在 Linux 上更容易装-odata指定解压目录。ogrinfo -ro -so -al只输出概览不读取全部图形能看到要素类型、要素数量、空间范围Extent、坐标系Layer SRS和全部字段名。如果 Extent 是经纬度小数比如 103 到 109说明是地理坐标如果出现几十万量级的数字那是投影坐标。这一步要额外确认字段名行政等级字段到底叫 XZJB 还是 Grade技术等级字段叫 JSJB 还是 Type命名差异极大后面所有的-where条件都依赖这一步的结果。3.2 一次命令完成 GBK 转码与坐标归化ogr2ogr -f GPKG data/guizhou_roads.gpkg data/道路_线.shp \ -oo ENCODINGGBK \ -lco ENCODINGUTF-8 \ -t_srs EPSG:4544 \ -nlt LINESTRING \ -nln guizhou_roads参数作用常见误用-oo ENCODINGGBK指定源 dbf 按 GBK 读取漏写导致中文属性全部乱码-lco ENCODINGUTF-8输出 GeoPackage 内部按 UTF-8 存属性输出 shapefile 时漏写会退回 GBK-t_srs EPSG:4544重投影到目标坐标系与-a_srs混淆后者只改写声明不转换-nlt LINESTRING强制要素类型为线数据里有 MultiLineString 时会报错改成不写即可-nln guizhou_roads指定输出图层名不写会沿用源文件名转 GeoPackage 而不是输出 shapefile是因为 GPKG 单文件存储、字段名长度限制宽松、读写效率高后续进 PostGIS 也少一步转换。如果源数据已经是 CGCS2000 105E 带投影而目标指定 108E 带-t_srs会做跨带换带计算这是合理的但要注意整省数据跨 34、35、36 三个带时硬统一到某一个带会让边缘县市变形加大这时候宁可输出 EPSG:4326 或在 PostGIS 里按带分区存储。3.3 按行政等级抽层用区县边界做空间裁切ogr2ogr -f GPKG data/guizhou_township.gpkg data/guizhou_roads.gpkg \ -nln township \ -where XZJB IN (乡道,Y) \ -select GLDM,NAME,XZJB,JSJB ogr2ogr -f GPKG data/renhuai_township.gpkg data/guizhou_township.gpkg \ -clipsrc data/renhuai_boundary.shp-where后面的 SQL 表达式按字段筛选要素IN (乡道,Y)是对数值型和字符串型字段兼容的写法-select只保留需要的字段能把几百 MB 的图层瘦身到几十 MB。-clipsrc用边界文件做空间裁切裁出来的要素保留完整属性。这里有个业务判断做乡镇物流或地灾分析时不要把道路裁到边界线上就结束路网是连通的跨县乡道在边界处被切断后后续拓扑分析会出现大量假断头正确做法是保留边界外缓冲区 500 到 1000 米内的道路要素裁切后单独标记为境外参考路。3.4 用 QGIS 符号化快速复核分级结果GDAL 处理完打开 QGIS 加载 guizhou_roads.gpkg右键图层属性进入符号化按类别渲染分类字段选 XZJB。高速用红色粗线、国道橙色、省道黄色、县道灰色、乡道细白线一眼就能看出分层是否合理。复核重点有三个一是看高速和国道是否有明显断开二是看县道乡道是否穿过建成区时出现大量短线碎片三是看坐标系选择是否正确。底部状态栏的坐标显示如果切换到 EPSG:4544 后数字异常跳动回图层属性里检查 CRS 是否被误设成 4543。4. 乡道层级的质量检查几何、拓扑与精度判据数据整理完并不代表能用贵州这种山地省份乡道层级的质量问题远比高速国道严重。原因很实际高速国道有完善的竣工测量数据乡道很多来自 1:10000 地形图或第三次全国国土调查的路网层原始采集精度和更新频次都有限。所以这一章的核心是回答这份乡道数据到底能不能用、在什么尺度上用。4.1 先跑一遍几何有效性与重复要素检查import geopandas as gpd roads gpd.read_file(data/guizhou_roads.gpkg, layerguizhou_roads) roads roads[roads.geometry.notna()] roads[is_valid] roads.geometry.is_valid print(roads[is_valid].value_counts()) roads[is_dup] roads.geometry.duplicated() print(重复几何:, roads[is_dup].sum()) invalid roads[~roads[is_valid]] if len(invalid): invalid.to_file(data/invalid_roads.gpkg, driverGPKG)is_valid判断的是 OGC 简单要素规则自相交、闭合环断裂、坐标重复等都会判 False。盘山公路的回头弯处最容易出现自相交因为原始采集时转弯半径小的路段常被压成不规范的折线。geometry.duplicated()检查完全重复的几何对象多源合并时常见处理方式是保留属性完整的那一条删除另一条。筛出来的问题要素单独导出成一个图层方便在 QGIS 里逐个看。修几何不要手改QGIS 处理工具箱里有 GRASS 的 v.clean步骤固定为 break、rmdupl、snap顺序不能颠倒先打断自相交再删重复最后吸附断点。4.2 拓扑规则检查与容差设置乡道路网的数据质量问题主要是拓扑性的该连的没连上不该连的交叉在一起。QGIS 的 Topology Checker 插件默认自带是快速检查工具规则配置见下表。检查规则推荐容差检查对象典型误报must not have dangles1~10 m乡道端点自然断头路需结合影像判定must not have duplicates1 m全图层并行复线会被误判需放大核实must not self-overlap1 m盘山公路回头弯处自身重叠是正常几何must not have invalid geometries自动全图层极少出现则返工dangles 的容差设置值得单独说。容差 1 米时乡道和县道接口处如果存在 2 米的小缺口会被查出来这在县级路网里非常常见容差放到 10 米又可能把真正的断头路掩盖掉。我的做法是先用 1 米跑一遍把结果按是否落在县道以上道路 20 米范围内分组落在范围内的多半是挂接缺口范围外的才是真正的断头路。不要一键修复所有 dangles贵州乡道很多是真正的尽头路修错了会把路网改成闭合假象。4.3 影像对位与里程字段的交叉验证import geopandas as gpd roads gpd.read_file(data/guizhou_roads.gpkg, layerguizhou_roads) roads roads.to_crs(EPSG:4544) roads[len_2d_km] roads.geometry.length / 1000.0 roads[mileage_ratio] roads[里程] / roads[len_2d_km] print(roads[mileage_ratio].describe())上面代码把投影长度换算成公里再用属性表里已有的里程字段求比值。投影坐标系下geometry.length返回的就是米这是 4544 投影的好处。里程比值在 0.98 到 1.05 之间基本正常超出这个区间就要查比值明显大于 1 说明属性里程多了可能是重复路段明显小于 1 说明里程字段缺段或者长度字段方向错了。这里的判断并没有用高精度实测数据只是做数据自洽性检查能查出的是字段错位和空间缺失查不出的是系统性的平面偏移。平面偏移要靠影像对位。在 QGIS 里加载天地图影像或 Esri World Imagery按行政等级分乡道、村道各随机抽 30 个路段沿法线方向目估横向偏移量。乡镇级分析里影像上道路与矢量中线偏差在 5 米以内可接受10 米以上的偏移在做地灾排查时会导致道路与隐患点错误关联只能作为参考层不能当调查界线。另外乡道通过隧道口的路段经常出现 20 米以上的偏移因为隧道内无 GPS 信号采集轨迹在出入口处收敛异常这类偏差要在拓扑修复阶段用隧道起终点坐标强制矫正。4.4 叠加 DEM 计算三维长度抓错线与断崖段贵州的地形决定了二维长度校验不够用。把 ALOS 12.5 米 DEM 加载到 QGIS用处理工具箱里的按栅格值设置 Z 值Drape功能给道路线赋高程然后用字段计算器算三维长度length3D($geometry)三维长度与二维长度的差值占比就是地形起伏对长度的贡献。平缓坝区的乡道这个比值在 1% 以内贵州典型的 6% 到 8% 纵坡路段比值在 2% 左右。如果连续路段的三维二维长度差超过 15%基本可以断定路线被错误吸附到了山脊或边坡上——这是乡道数据在山区最常见的系统性错误属于需要重新采集的硬伤不是修拓扑能解决的。修正后记得重新对比里程字段差距过大的段落优先安排外业抽查。5. 把乡道矢量路网接进业务系统拓扑、瓦片与路径成本质量检查通过后路网数据才能真正进入业务环节。这里给三条最常见的落地路径PostGIS 路由、离线瓦片、以及成本修正。它们对数据的要求各不相同工作量也依次递增。5.1 用 pgRouting 把线图层变成可导航路网ALTER TABLE guizhou_roads ADD COLUMN source integer; ALTER TABLE guizhou_roads ADD COLUMN target integer; ALTER TABLE guizhou_roads ADD COLUMN cost double precision; ALTER TABLE guizhou_roads ADD COLUMN reverse_cost double precision; SELECT pgr_createTopology(guizhou_roads, 0.5, geom, gid); UPDATE guizhou_roads SET cost ST_Length(geom) / 1000.0, reverse_cost ST_Length(geom) / 1000.0;pgr_createTopology的第二个参数是容差单位跟随几何坐标系。数据在 EPSG:4544 下就是 0.5 米这个值太小会漏掉修好的断点太大会把间距小于容差的并行乡道错误合并成一个节点。贵州山区的并行道路比如高速两侧的保通便道间距经常只有几米容差超过 2 米就很容易连错。ST_Length(geom)在投影坐标下返回米除以 1000 转成公里作为成本。这份数据没有单向行驶字段所以 reverse_cost 先等于 cost等后续补齐单向信息再更新。5.2 GeoJSON 转 MBTiles给外业做离线底图ogr2ogr -f GeoJSON -t_srs EPSG:4326 data/township_4326.geojson data/guizhou_township.gpkg tippecanoe -zg -o data/township.mbtiles -l road data/township_4326.geojsontippecanoe 只接受 WGS84 经纬度的 GeoJSON所以必须先转坐标系这一步漏掉会得到坐标完全错位的瓦片。-zg让 tippecanoe 根据要素密度自动判断最大缩放级别-l road指定图层名供 MapLibre 或 Leaflet 的矢量瓦片渲染器引用。贵州盘山公路折点密集tippecanoe 默认的抽稀策略会把小半径回头弯简化成直线如果生成的 mbtiles 在高倍缩放下出现弯道变直需要在生成时调低简化程度保留原始折点后再发布。5.3 用成本系数修正看起来近的盘山乡道UPDATE guizhou_roads SET cost ST_Length(geom) / 1000.0 * CASE WHEN jsjb 一级 THEN 0.9 WHEN jsjb 二级 THEN 1.0 WHEN jsjb 三级 THEN 1.35 WHEN jsjb 四级 THEN 1.8 ELSE 2.2 END;技术等级成本系数业务含义一级0.9优先选择二级1.0基准三级1.35弯多适度规避四级1.8盘山乡道避免当捷径等外2.2最后才考虑这个系数表的思路是路径规划如果只比长度盘山四级乡道在平面距离上往往比绕行县道短但实际行车时间和油耗都更高。系数 1.8 意味着这条乡道每公里相当于 1.8 公里的规划成本可以显著减少抄近道规划结果。更精细的做法是把系数做成速度字段比如四级乡道默认 30 km/hcost 改为ST_Length(geom) / 1000.0 / speed_h * 60单位变成分钟输出结果更贴近导航体验。5.4 先用 QGIS Road Graph 验证连通性再开工跑通 PostGIS 之前先用 QGIS 处理工具箱里的网络分析-交通网络做一次快速验证。这个工具基于 Road Graph 插件接受单一矢量图层把 Speed 或 Length 字段设为成本即可。把国省县乡四级道路合并成一张覆盖图层任意选两个跨县城镇做路径规划。如果结果绕远或者走不通九成是拓扑断点问题回到第四章的 dangle 检查结果里逐个修复。我会在修复后用两个固定起终点做回归一个跑跨县乡道组合一个跑高速为主的长距离路线两次都连通了再把数据交给后端做路径服务——这套验证顺序能省掉大量联调阶段的路线不通工单。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价