首页 / 资讯中心 / 文章详情

浙江全省矢量底图:省市县三级行政区划与道路网shp数据使用指南

浙江全省矢量底图:省市县三级行政区划与道路网shp数据使用指南 ★ FEATURED ARTICLE
简介包含浙江省省、市、县三级行政区划面状边界以及道路网、铁路网线状要素满足从省级宏观到县级微观的多尺度表达需求面向GIS空间分析与地图制图场景适合城乡规划、交通物流、地理信息等领域的从业者与学习者使用。压缩包共33个文件以.shp存储几何图形、.dbf存储属性数据、.prj记录投影坐标信息并配有.shx几何索引、.sbn/.sbx空间索引及.xml元数据可在ArcGIS、QGIS等桌面GIS软件中直接加载支持边界裁剪、叠加分析、专题图制作等操作。资源包大小约52.15MB已有2553人学习下载。省、市、县边界分层存储道路与铁路分类独立便于按行政级别或交通类型灵活选取属性表中含名称、编码等关键字段可快速定位目标区域辅助完成区域统计、路网分析、地图出版等实际工作。1. 这套省域底图能帮你省掉哪些事做GIS数据处理的人都有这种体会真正卡时间的不一定是分析算法而是底图。边界不对、路网缺失、字段乱码哪一样都能把一个下午耗掉。这份2022年7月的shp压缩包把浙江省省、市、县三级行政区划边界和道路网、公路网放在了一起拿到就能直接当画布用。我自己在处理区划统计、道路现状梳理或者专题制图时最常用的就是这类统一版本的基础数据。适合GIS、规划、数据分析岗也适合想快速出一张可用底图的新手。如果你只是临时画一张示意图它有点重但只要涉及空间统计、相交计算、出图打印这套数据的价值就很直观。2. shp包里到底装了什么图层与字段的第一次确认2.1 解压后先别急着拖进软件先按文件组核对很多新手第一次接触shp以为一个.shp文件就是一个完整数据这其实是踩坑的开始。shp是一种由多个同名文件共同组成的矢量格式至少需要.shp几何、.dbf属性、.shx索引三个文件才能正常打开.prj坐标系虽然不是必需文件但缺失会直接导致后面坐标对不上。解压这套包后我的习惯是先看一眼每个图层的文件组是否完整重点确认.prj在不在。之前接过一份类似的省域边界数据.prj被人为删掉过打开后图层落在赤道附近完全没法用。.prj本身是纯文本用记事本打开就能看到坐标系描述比如常见的GCS_WGS_1984或CGCS2000。用pyshp读取一个图层的属性结构是安装依赖最少的一种确认方式import shapefile # 注意替换成你解压后的实际路径 sf shapefile.Reader(city.shp) # sf.fields第一项是DeletionFlag实际字段从第二项开始 fields sf.fields[1:] print([f[0] for f in fields]) # 查看第一条记录的属性值 print(sf.record(0))这段的作用是快速列出dbf里的字段名判断数据里有没有名称、区划代码、类型等关键信息。pyshp读取时默认按UTF-8解析如果字段或内容出现乱码可以在Reader里加上encodinggbk参数这一点第4章会细说。2.2 省、市、县三级边界不是简单放大缩小这套包里最核心的区划数据分了三级省级边界、地级市边界、县级边界每一级在项目里的用途完全不同。省级边界适合做整体范围裁剪市边界适合做区域统计县边界则是空间连接和里程统计的基本单元。同一份省域数据里三级边界在几何上往往是包含关系但在实际使用中不能直接拿来做空间裁剪。比如用县边界去切割道路网得到的线要素会保留县级边界内部的路段这个没问题但如果你拿县边界和市边界做相交计算会发现边界重叠处出现拓扑不一致因为不同来源的边界在接边处本来就有微小偏移。看待这份数据时我建议把它拆成两类看待区划面图层用来做统计和配色区划边界线图层用来出图时压边线。两者符号化参数不同加载顺序也不一样后面第3章会展开。2.3 道路网和公路网放在一起时怎么分辨这个包里同时包含道路网和公路网两类线图层听起来重复实际上用途差异很大。道路网更偏向全部可通行道路的集合往往包含城市道路、乡村道路、连接线这类较低等级的路段公路网则通常聚焦国道、省道、县道这类干线公路。做路网密度分析、可达性计算一般优先用道路网做干线规划展示、公路里程统计则用公路网更贴合口径。两个图层叠加后在比较密的城区会看到大量重合或平行的线这不算数据错误而是采集来源不一致。判断方式是打开属性表看等级或类别字段比如高速、国道、省道、县道、乡道这类分级。不同来源的数据对字段命名差异较大常见的有class、type、grade、road_level拖进QGIS后先看一眼字段值分布再决定按哪个字段做符号化。3. 让数据在QGIS里跑起来加载顺序、坐标系与基础出图3.1 打开前先确认坐标系避开动态投影的假象QGIS打开shp时如果图层没有.prj文件会弹窗让你选坐标系。很多人随手选了一个WGS84图层能显示但叠加在线影像上位置偏了上百米——这不是数据错了而是坐标系选错了。正确做法是先用文本编辑器打开.prj文件看坐标系字符串再在QGIS里设置。如果省或市边界的.prj写的是CGCS2000相关的字符串那这个图层本身就该按CGCS2000加载不要在弹窗里乱选。还有一种情况是.prj存在但坐标系和实际数据不匹配比如数据明明是投影坐标系.prj却写成了地理坐标系。这种情况靠打开后的变形状态能看出来面要素压扁、角度扭曲通常就是坐标系声明和实际投影不匹配。没有.prj时可以根据要素范围大致判断。浙江省的经纬度范围在东经118°到123°、北纬27°到31°附近如果加载后图层落在这个范围内大概率是经纬度坐标如果数值变成一大串米制数字则是投影坐标。3.2 加载顺序与符号化先底后线、先面后界QGIS里加载这套数据我建议按这个顺序拖入县级边界 → 地级市边界 → 省级边界 → 公路网 → 道路网。先加载面图层作为底色再叠加边界线最后放路网这样路网不会被区划面盖住。符号化的参数直接关系到出图是否能用我常用的参数是县级边界填充色设成浅灰#eeeeee透明度25%边界线宽0.3mm市级边界不填充边界线宽0.5mm用深灰色省级边界线宽0.9mm用黑色。公路网按等级分色显示高速用红色、线宽0.8mm国道用橙色、0.6mm省道用黄色、0.4mm其他道路用深灰色、0.3mm。标签设置上县级名称用8号字、半透明黑市名用10号字加粗省名一般不在市级比例尺下显示。如果不需要文字遮挡太多路网可以只显示县名和高速名称。QGIS里对每个图层右键 → 属性 → 符号化就能做上述配置。3.3 坐标系统一用ogr2ogr做原地转换多图层一起分析时坐标系必须统一。QGIS的画布可以实时重投影显示看起来没问题但做空间计算时如果两个图层坐标系不一致结果会完全错误。我一般不用QGIS界面里的“另存为”去做批量转换命令行工具ogr2ogr更可控。把源数据从CGCS2000地理坐标系转到WGS84常用命令如下ogr2ogr -f ESRI Shapefile output.shp input.shp \ -s_srs EPSG:4490 -t_srs EPSG:4326 \ -overwrite -lco ENCODINGUTF-8-s_srs是输入坐标系-t_srs是目标坐标系EPSG:4490对应CGCS2000地理坐标系EPSG:4326对应WGS84。注意这一步是把几何坐标真正重写不是临时投影显示。-overwrite允许覆盖输出文件-lco ENCODINGUTF-8则让输出的dbf属性用UTF-8保存减少后面乱码概率。如果要把数据转成投影坐标系再做距离计算可以把-t_srs改成EPSG:3857Web墨卡托或者适合浙江的CGCS2000 / 3-degree Gauss-Kruger CM 120EEPSG:4513附近按实际需求选。决定用哪种坐标系取决于你是要出图还是算距离。算长度和面积建议投影坐标系经纬度坐标算出来的距离单位是度没有实际意义。4. 避坑记录编码乱码、边界错位与路网断头的现场排查4.1 属性表打开全是乱码现象在QGIS里打开某个区县级边界的属性表字段名正常但名称列显示“锟斤拷锟斤拷”这类乱码。原因shp的属性存储在.dbf文件里国内能下载到的数据大多按GBK或GB2312编码保存而QGIS新版默认按UTF-8解析两边对不上就会出现乱码。反过来也遇到过数据是UTF-8旧工具按GBK读同样乱。解决图层上右键 → 图层属性 → 数据源 → 数据源编码手动改成GBK或GB18030应用后重新打开属性表。如果是命令行处理pyshp可以在读取时指定编码import shapefile # 用gbk编码读取dbf遇个别无法解析字符时用替换符兜底 sf shapefile.Reader(county.shp, encodinggbk, encodingErrorsreplace) for i in range(3): print(sf.record(i))这里关键参数是encoding和encodingErrors。前者告诉pyshp按GBK解码后者避免某个特殊字符解不了导致整个读取中断。读取正常后再导出成UTF-8编码的新文件之后在QGIS里就不会再有乱码问题。4.2 区划边界与在线影像对不上现象叠加在线底图后道路或边界整体偏移轻的差几十米重的漂移几百米。原因绝大多数情况是.prj缺失或坐标系选错。另一种隐蔽情况是.prj写的坐标系没写错但数据生产时套用的是GCJ-02等偏移坐标系统。浙江省这类行政区划数据一般来自测绘或地图服务商的底图如果套的是偏移坐标系会和WGS84影像差出上百米。解决先排除最简单的情况——右键图层看坐标系确认和在线影像一致。如果一致性没问题但仍有偏移检查.prj内容是否带有投影参数偏移。手里只有shp时可以尝试用已知地物坐标点做配准但更实际的做法是找原始数据来源确认坐标系不要硬纠偏。对大多数制图场景来说只要边界和路网来自同一个包、坐标系一致内部空间关系就是准确的只有叠加外部影像时才需要考虑配准。4.3 两条路明明交叉却没有交点现象做网络分析或取道路交叉点时发现两条道路在图面上看着相交但软件里取不到交点。放大看两条线差了两三米甚至更小的一段距离。原因不同图幅单独数字化拼接时没做拓扑咬合或手绘时没开捕捉。这个情况在路网数据里太常见了不是这套包独有几乎所有路网都逃不掉。坐标精度越高越容易暴露这类拓扑问题。解决QGIS里装Topology Checker插件规则选“不能有悬挂点”跑一遍会把断头位置标出来。再配合GRASS的v.clean工具设置snap阈值为1米甚至更小把靠近未相交的端点捕捉到一起。用代码排查的话可以写一段找出“距离很近但没有相交”的线对import shapefile from shapely.geometry import LineString sf shapefile.Reader(road.shp) lines [LineString(s.points) for s in sf.shapes()] # 阈值按数据坐标系单位来经纬度数据建议先转投影 threshold 0.001 for i, la in enumerate(lines): for j, lb in enumerate(lines): if i j: continue # 已经相交的说明拓扑没问题跳过 if la.intersects(lb): continue d la.distance(lb) if d threshold: print(fline {i} and line {j}: distance{d:.4f})这段复杂度是O(n²)几万条线跑起来会很慢实际用的时候可以先用空间索引过滤候选对。重点在于理解判断逻辑先排除相交再判断最小距离是否小于阈值小于阈值就是疑似断头。4.4 行政区划版本与业务库对不上现象做区县维度统计业务库里的区划代码和shp属性表join不上某几个县找不到对应记录。原因行政区划会随年度调整撤市设区、县改区、乡镇撤并都会影响代码和边界。2022年7月这个版本反映的是当时时点的区划状态和更早或更晚的业务数据对不上很正常。解决先确认业务表里用的是什么时点的区划代码再看shp属性表里的区划代码字段。如果代码只是个别尾号差异可以用名称字段做模糊匹配过渡如果差异很大说明业务数据时点和底图版本跨度太大最稳妥的方式是换一套和业务数据同年份的区划边界。5. 让底图真正跑起来空间连接、里程统计与专题出图5.1 用空间连接给每个县算一遍公路里程拿到这套数据后最高频的需求是把公路网里程按县级行政区汇总。这里不能直接用属性表里已有的长度字段因为长线道路会横跨多个县需要在相交点上打断再归并。用geopandas来做代码很直接import geopandas as gpd county gpd.read_file(county.shp) road gpd.read_file(highway.shp) # 统一坐标系单位不一致时算出的长度是错的 if county.crs ! road.crs: road road.to_crs(county.crs) # 按面相交关系连接 joined gpd.sjoin(county, road, howleft, predicateintersects) # 每条线段长度转成公里 joined[seg_len_km] joined.geometry.length / 1000 # 按区划代码分组汇总 mileage joined.groupby(PAC).seg_len_km.sum().reset_index() # 回填到区划面 result county.merge(mileage, onPAC, howleft)关键参数留意两点一是predicateintersects会被跨越多县的公路重复记录到多个县这正是我们需要的行为二是计算长度前必须确认坐标系。如果数据还在地理坐标系先投影到米制坐标系否则长度单位是度。分组字段建议用PAC这类区划代码不要用名称名称在不同表里可能有空格或简称差异。5.2 一张能直接用的路网专题图空间统计做完最后就是出图。在QGIS打印布局里添加地图、图例、比例尺县级边界透明度设到60%公路按等级给不同线宽和颜色。比例尺放到1:50万左右时能同时看到省界和主要路网放到1:10万时县界和县道及以上等级道路都能显示清楚。图例会覆盖在路网密集区域建议把图例背景设为白色半透明避免遮挡道路。输出格式上导出为PDF或300dpi的PNG都可以。PDF适合后续编进汇报材料PNG适合直接贴进文档。我在处理某次区划底图时因为直接拿了旧版县级边界去叠加当时的新路网里程统计整体偏了几个百分点排查了半天才发现是边界版本不一致导致的。从那以后我每次处理这类行政区划底图都强制先清点一遍图层、核对一次坐标系和版本月份再做任何操作。这套2022年7月的省域shp包边界和道路是同一时点产物直接拿来当底图能省去不少凑数据的功夫希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站