全国县级行政区划shp文件实战:从数据体检到空间聚合的完整指南
简介全国县级行政区划shp文件面向GIS从业者、地理信息专业学生及区域研究人员提供中国全部县级行政区域的精确边界数据可用于地图制作、人口统计、资源管理、城市规划与灾害响应等空间分析场景。资源包共14个文件约29.94MB以shp、shx、dbf三类核心文件为主分别承载几何边界、空间索引与属性数据另含prj投影定义、xml元数据及sbx、sbn空间索引文件采用GCS_WGS_1984经纬度坐标系可直接在ArcGIS、QGIS等主流软件中打开、编辑与分析。目前已有3477人学习下载。借助这套数据读者可完成投影转换、数据裁剪、缓冲区分析等操作并与人口密度、地形地貌、交通网络等图层叠加支撑区域研究与规划决策是理解中国地理空间格局的实用基础数据。1. 县级行政区划 shp 文件从“找不全”到“一把过”的落地笔记做区域统计、选址分析或者地图底图的时候很多人卡在第一步手头只有全国省界想拆到县一级要么字段缺、要么边界对不上、要么属性表里连行政区代码都没有。我最近把一份全国县级行政区划 shp 文件完整跑了一遍从字段结构到坐标系再到和业务数据挂接踩了几个不大不小的坑。这份资源解决的就是“县级粒度底图从哪来、怎么用、怎么保证能挂上自己的数据”这件事。适合做 GIS 分析、数据可视化、区域报表的从业者也适合刚接触空间数据、需要一份能直接上手底图的新手。下面按我实际拆包的顺序把能复现的步骤和参数选择讲清楚。2. 拆开这份 shp字段、坐标系与几何类型怎么读拿到一个 shp 文件别急着往 QGIS 或 ArcGIS 里拖。先搞清楚三件事它是什么几何类型、用的什么坐标系、属性表里有哪些字段。这三样决定了后面能不能直接算面积、能不能和你的业务表关联、能不能做空间查询。2.1 用 Python 快速体检 shp 文件我一般先用geopandas做一次“体检”比在桌面软件里点来点去快得多。下面这段代码会输出几何类型、坐标系、字段名、记录数和前几行属性。import geopandas as gpd # 读取 shp 文件注意路径不要带中文和空格 gdf gpd.read_file(./data/county_boundary.shp) # 基本信息 print(几何类型:, gdf.geom_type.unique()) print(坐标系:, gdf.crs) print(字段列表:, gdf.columns.tolist()) print(记录数:, len(gdf)) # 看前 3 行属性确认行政区代码和名称字段 print(gdf.head(3).drop(columnsgeometry))逻辑说明geom_type告诉你里面是 Polygon 还是 MultiPolygon。县级行政区划经常出现 MultiPolygon因为一个县可能包含岛屿或飞地。crs是坐标系常见的是 EPSG:4326经纬度或 EPSG:4490CGCS2000 地理坐标。字段列表里重点找行政区代码可能是adcode、code、xzqhdm之类和名称字段。参数说明gpd.read_file默认用 pyogrio 或 fiona 引擎如果报编码错误加encodingutf-8或encodinggbk试。路径尽量用英文Windows 下中文路径偶尔会让底层驱动读不到。2.2 坐标系选型别在 4326 上直接算面积这是血泪经验EPSG:4326 是经纬度单位是度直接拿它算面积得到的是“平方度”没有任何业务意义。要做面积统计、缓冲区分析必须投影到等面积或等距坐标系。常见做法是全国范围用 Albers 等面积投影比如 EPSG:102025 或自定义中央经线 105°省级范围用 UTM 对应带号。如果你只是做展示底图4326 没问题一旦涉及距离和面积先投影。# 投影到 Albers 等面积投影以中国为例中央经线 105 gdf_proj gdf.to_crs(projaea lat_125 lat_247 lat_00 lon_0105 x_00 y_00 datumWGS84 unitsm no_defs) # 现在算面积才是平方米 gdf_proj[area_km2] gdf_proj.geometry.area / 1e6 print(gdf_proj[[name, area_km2]].head())逻辑说明to_crs不改变属性表只重算几何坐标。lat_1和lat_2是双标准纬线中国常用 25°N 和 47°N。算完面积再除 1e6 转平方公里。参数说明如果你的分析只涉及某一个省用该省中央经线的 Albers 或 UTM 更准。不要全国和局部混用同一个投影边缘变形会让你怀疑数据本身有问题。2.3 属性表挂接行政区代码是唯一桥梁县级数据要和你的业务表比如销售额、人口、设备数关联靠的是行政区代码。但这份 shp 里的代码字段名不一定叫adcode可能是code、xzqhdm、district_id。先确认代码位数县级通常是 6 位比如 110101。如果只有 4 位或带省市前缀挂接前要统一。# 假设业务表里也有 6 位行政区代码 biz pd.read_csv(./data/biz_county.csv, dtype{county_code: str}) # 统一 shp 里的代码字段为字符串避免前导零丢失 gdf[adcode] gdf[adcode].astype(str).str.zfill(6) biz[county_code] biz[county_code].astype(str).str.zfill(6) # 挂接 merged gdf.merge(biz, left_onadcode, right_oncounty_code, howleft) print(未匹配上的记录数:, merged[county_code].isna().sum())逻辑说明zfill(6)保证“110101”不会变成“110101”以外的形式也防止 Excel 打开 CSV 时把前导零吃掉。howleft保留所有县级单元未匹配的会显示 NaN方便你排查是代码对不上还是业务表本身缺这个县。参数说明如果未匹配数很多先检查两边代码位数是否一致再检查是否有撤县设区导致的历史代码差异。这类问题没有捷径只能拿代码表逐条对。3. 从 shp 到可用底图裁剪、筛选与导出体检完下一步是把全国数据变成你真正要用的范围。全量县级 shp 动辄几百 MB直接拖进可视化工具会卡。按需裁剪和筛选既省内存也省时间。3.1 按省市筛选用属性查询比空间裁剪快如果你只要某个省的县别用空间裁剪去切直接用属性表筛选更快。前提是属性表里有省代码或省名字段。# 按省筛选假设有 province 字段 gdf_henan gdf[gdf[province].str.contains(河南, naFalse)] print(筛选后县级单元数:, len(gdf_henan)) # 导出为新的 shp gdf_henan.to_file(./output/henan_county.shp, encodingutf-8)逻辑说明str.contains比精确匹配容错高能处理“河南省”“河南”混用。naFalse防止空值报错。导出时指定encodingutf-8避免中文属性乱码。参数说明如果属性表里只有省代码没有省名先用代码表映射。导出 shp 时注意字段名长度限制shp 格式字段名最多 10 个字符超长会被截断建议导出前重命名。3.2 空间裁剪当你只有研究区边界时有时候你手头是一个流域、一个都市圈或者一个自定义多边形没有对应的属性字段。这时候用空间裁剪。from shapely.geometry import box # 定义一个矩形研究区经纬度范围 study_area box(113.0, 34.0, 116.0, 36.0) # 裁剪 gdf_clip gpd.clip(gdf, study_area) print(裁剪后记录数:, len(gdf_clip)) gdf_clip.to_file(./output/clip_county.shp, encodingutf-8)逻辑说明gpd.clip会保留与研究区相交的县级单元并裁掉边界外的部分。如果你只想保留完全落在研究区内的县用gdf[gdf.within(study_area)]。参数说明box的坐标顺序是(minx, miny, maxx, maxy)别写反。裁剪前确保两个数据坐标系一致否则结果会偏移到离谱。3.3 导出 GeoJSON 与 CSV给不同工具留后路shp 不是万能的。前端地图常用 GeoJSON数据分析常用 CSV。同一份数据导出多种格式后面换工具不用重新处理。# 导出 GeoJSON注意指定坐标系 gdf_henan.to_file(./output/henan_county.geojson, driverGeoJSON) # 导出属性表为 CSV去掉几何列 gdf_henan.drop(columnsgeometry).to_csv(./output/henan_county_attr.csv, indexFalse, encodingutf-8-sig)逻辑说明GeoJSON 默认用 WGS84 经纬度如果原数据是投影坐标导出前先to_crs(4326)。CSV 用utf-8-sig是为了 Excel 打开不乱码。参数说明driverGeoJSON是固定写法。如果数据量很大GeoJSON 会膨胀建议先简化几何或只导出需要的字段。4. 避坑与排查县级 shp 最容易翻车的五个地方这一章是我实际用下来最耗时间的部分。很多问题不是数据本身错而是处理方式不对。下面五条按“现象 → 原因 → 解决”写遇到对应情况直接对号入座。4.1 中文属性乱码打开全是问号或方块现象用 QGIS 或 ArcGIS 打开 shp属性表里县名显示为乱码。原因shp 的.dbf文件编码和软件默认编码不一致常见是 GBK 和 UTF-8 冲突。解决在 QGIS 里右键图层 → 属性 → 源把编码改成 GBK 或 UTF-8 试用 Python 读取时显式加encodinggbk。如果导出给别人统一用 UTF-8 并附带说明。4.2 行政区代码前导零丢失现象用 Excel 打开导出的 CSV110101 变成 110101 但 110001 变成 110001更常见的是 110101 变成 110101 没问题但 110001 变成 110001 也没问题——真正的问题是 110101 被存成数字后前导零在位数不足时丢失比如 011101 变成 11101。原因Excel 默认把数字列当数值处理。解决导出 CSV 时用utf-8-sig并提醒对方用“文本”格式导入或者在代码里统一zfill(6)后再挂接。4.3 边界重叠或缝隙相邻县对不上现象把多个县拼起来发现相邻边界有细缝或重叠。原因数据来源不同、精度不一致或者做过简化。解决如果只是可视化缝隙不影响如果要算总面积先做unary_union再算或者用buffer(0)修复几何。注意buffer(0)对某些自相交多边形有效但会轻微改变边界。4.4 坐标系误判地图跑到海里去了现象加载后图层不在中国范围或者和底图对不上。原因把投影坐标当成经纬度或者 crs 定义缺失。解决先用gdf.crs看有没有定义。如果没有根据数据范围判断是 4326 还是投影坐标手动set_crs。如果定义错了用to_crs转不要直接改crs属性。4.5 字段名截断导出后属性列少了一半现象导出 shp 后原本叫county_name的字段变成county_nam。原因shp 格式限制字段名最多 10 个字符。解决导出前重命名字段或者改用 GeoJSON/GPKG 格式这两种没有字段名长度限制。如果必须用 shp提前把字段名控制在 10 字符以内。5. 进阶技巧用县级 shp 做空间聚合与可视化验证数据能用之后真正体现价值的是聚合和验证。这一章讲两个我常用的技巧按省聚合县级数据以及用分级设色快速检查数据质量。5.1 按省聚合从县到省的汇总逻辑如果你有县级业务数据想汇总到省不能简单按省名字段分组求和因为同一个省名可能对应多个县但几何要合并。正确做法是先按省分组再对几何做unary_union。# 按省聚合几何合并数值字段求和 province_gdf gdf_proj.dissolve(byprovince, aggfunc{population: sum, area_km2: sum}) print(province_gdf[[population, area_km2]].head()) # 导出 province_gdf.to_file(./output/province_agg.shp, encodingutf-8)逻辑说明dissolve是 geopandas 里做空间聚合的标准方法by指定分组字段aggfunc指定数值字段的汇总方式。几何会自动合并成该省的整体边界。参数说明如果某个省下面有飞地dissolve会生成 MultiPolygon这是正常的。聚合前确保所有县都属于同一个投影坐标系否则面积汇总会出错。5.2 分级设色验证一眼看出数据有没有问题做完聚合或挂接别急着出图。先用分级设色快速看一眼有没有某个县数值异常大或异常小有没有该有数据的县是空白。import matplotlib.pyplot as plt fig, ax plt.subplots(1, 1, figsize(12, 8)) merged.plot(columnsales, axax, legendTrue, cmapOrRd, missing_kwds{color: lightgrey}) ax.set_title(县级销售额分布灰色为缺失) plt.savefig(./output/check_map.png, dpi150, bbox_inchestight)逻辑说明missing_kwds把没有匹配上业务数据的县标成灰色一眼就能看出是哪些县缺数据。cmap选 sequential 色带适合数值型字段。参数说明dpi150够用再高文件太大。bbox_inchestight去掉多余白边。如果图太卡先筛选再画不要全量渲染。5.3 一个我常犯的错误忘了检查几何有效性有次做空间叠加结果死活对不上排查半天发现是某个县的几何自相交。后来我养成了一个习惯拿到任何 shp先跑一遍is_valid。# 检查几何有效性 invalid gdf[~gdf.geometry.is_valid] print(无效几何数:, len(invalid)) # 修复无效几何 gdf[geometry] gdf.geometry.buffer(0)逻辑说明is_valid返回布尔序列~取反拿到无效的。buffer(0)是常用的修复手段但对复杂自相交可能不完美修复后要再检查一次。参数说明如果无效几何很多别急着全部buffer(0)先看看是不是数据本身有问题。有些无效几何来自坐标精度修复后面积会变做面积统计时要留意。从那以后我每次拿到新的 shp都强制走一遍“体检 → 投影 → 有效性检查 → 挂接验证”这个流程再也没出现过数据对不上的玄学问题。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

RSF活动轮廓模型:OpenCV3+Python3.6实现弱边界图像分割

RSF活动轮廓模型:OpenCV3+Python3.6实现弱边界图像分割

简介:本资源是一份面向计算机视觉初学者与图像处理进阶学习者的实践型代码教程,聚焦基于Python3.6与OpenCV3实现的RSF区域活动轮廓模型,专用于解决复杂边界、低对比度或模糊边缘图像的精准分割问题。压缩包共2个文件(1个BMP测试图…

2026/10/12 16:04:25 阅读更多 →
生成式AI时代:TaoToken统一API通道如何决定模型性能上限

生成式AI时代:TaoToken统一API通道如何决定模型性能上限

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 16:03:25 阅读更多 →
Windows安装TensorFlow 2.1完整指南:CPU/GPU配置、CUDA/cuDNN与排错

Windows安装TensorFlow 2.1完整指南:CPU/GPU配置、CUDA/cuDNN与排错

先聊聊我的个人体验:TensorFlow 2.1 这个版本,放在 2025 年来看已经算老古董了,但你要是需要维护老项目、复现 2020 年前后的论文代码,或者公司的生产环境锁死了依赖版本,就绕不开它。而在 Windows 上装 2.1&#xff0…

2026/10/12 16:03:25 阅读更多 →

最新新闻

ClaudeCode配置:settings.json 里 ANTHROPIC_BASE_URL 改到 TaoToken 的完整步骤

ClaudeCode配置:settings.json 里 ANTHROPIC_BASE_URL 改到 TaoToken 的完整步骤

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 17:00:15 阅读更多 →
AI Agent Harness Engineering 医疗资源优化:偏远地区医疗服务的AI赋能

AI Agent Harness Engineering 医疗资源优化:偏远地区医疗服务的AI赋能

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 17:00:15 阅读更多 →
迷你SQL免安装包:SQL Server 2000绿色部署与运维实战

迷你SQL免安装包:SQL Server 2000绿色部署与运维实战

简介:这款迷你SQL绿色工具包基于SQL Server 2000设计,主打免安装、轻量化,解压后即可使用,适合开发者在临时环境、教学演示或老旧系统中快速搭建数据库服务。压缩包共三百余个文件,整体约三十一兆,核心由运…

2026/10/12 17:00:15 阅读更多 →
Windows下libcurl+OpenSSL 32/64位开发库配置与HTTPS实战

Windows下libcurl+OpenSSL 32/64位开发库配置与HTTPS实战

简介:本资源为 libcurl 与 OpenSSL 动态开发库合集,面向 Windows 平台下从事 C/C 网络编程、HTTPS 安全通信开发的工程师与学习者,解决编译链接时缺少可用库文件、32 位与 64 位环境不兼容等问题。压缩包内共 3451 个文件,以 3244…

2026/10/12 17:00:15 阅读更多 →
编译原理实验课代码与报告:从词法分析到代码生成的完整复现路径

编译原理实验课代码与报告:从词法分析到代码生成的完整复现路径

简介:这份资源是四川大学编译原理课程的实验课配套资料,面向正在学习编译原理、需要动手实现编译器各阶段组件的高校学生。内容按周次组织,覆盖词法分析、语法分析、语义分析与代码生成等核心环节,并配有课程设计PPT与说明文档&am…

2026/10/12 17:00:14 阅读更多 →
差分约束系统详解:从SCOI2011糖果看SPFA最长路与正环判断

差分约束系统详解:从SCOI2011糖果看SPFA最长路与正环判断

刷过 SCOI2011 这道“糖果”的人,十有八九是从“差分约束”这四个字开始怀疑人生的。题面看起来像模拟题,数据范围看起来像图论题,最后发现它是一道用 SPFA 跑最长路的经典题——或者说,是一道把五条生日规则翻译成不等式的翻译题…

2026/10/12 16:59:11 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →