ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

全国县级shp数据处理全流程:坐标系校验、属性清洗与格式转换指南

全国县级shp数据处理全流程:坐标系校验、属性清洗与格式转换指南 简介全国县级行政区划shp文件是GIS领域常用的基础地理数据面向地理信息相关专业学生、规划人员及数据分析师用于加载中国所有县级行政区域边界并开展地图制作、人口统计、区域规划等空间分析。整个压缩包共14个文件包含shp几何文件、dbf属性表、shx索引及prj坐标定义等大小约29.94MB结构精简。数据采用GCS_WGS_1984坐标系与GPS及全球数据兼容可直接在ArcGIS、QGIS中打开也可作为底图叠加人口密度、交通等专题图层进行裁剪、投影转换和缓冲区分析。已有3477人学习下载是学习GIS空间分析和开展区域研究的实用素材。配合属性数据库中的县名、代码等信息用户能快速筛选查询某个县级单位的边界省去查找和整理行政边界的步骤在定位、统计、规划等工作中可直接调用。1. 全国县级shp不是下载问题而是数据质量接力赛搜“全国县级行政区划shp文件”的人大多不是找不到下载地址而是下到一堆来路不明的压缩包之后不敢直接用。县级边界和省级不同矢量包里有几千个面要素任何一个包都可能埋着坐标系标错、字段乱码、区划代码过时的雷。这些雷几乎每个人都踩过一遍底图一叠加县界偏出几公里属性表里县名全是乱码统计年份和区划代码对不上。这篇文章按一线处理数据的顺序来推进先选数据源再做坐标系和编码验证然后清洗属性并转成 GeoJSON、WKT、3DTiles 这类交付格式最后把一张全国大图切分成好用的数据资产。适合做 WebGIS 可视化、空间统计和区划数据清洗的工程师照着操作新手能跟着走通全流程熟手可以重点看第 2 章和第 5 章的边界参数与踩坑记录。2. 县级shp从哪来数据源选型与坐标系编码第一关2.1 三类常见渠道怎么选官方公开底图、省市级成果与民间整理包常见的数据来源有三类先别急着挑包按使用场景反过来选。第一类是官方公开数据平台发布的标准版图县级边界为主属性字段干净坐标系和比例尺标注明确适合对公输出和正式项目。缺点是需要逐级申请或按省份下载拿一份全国汇总要拼好几次时效性也要看发布周期。第二类是省级测绘或国土部门公开的成果数据精度往往高于全国版但通常只覆盖本省范围属性表里常见作业软件导出的英文字段缩写坐标系偶尔不带投影文件。第三类是网上流传的“全国县级shp整理包”一个 zip 解决所有问题解压就能用代价是元数据信息经常在多次转存中丢失坐标系、编码、现势性全靠猜。我一般是这样筛选的做全国宏观展示和统计分析优先找公开平台的全国底图做某个省的精细应用去找该省测绘成果或国土调查类数据网上流传的整理包只当备选参考用它做内部测试可以上生产环境前必须逐项做第 2.2 节的检查。还有一种常见需求是“dwg转shp”有的读者手里只有 CAD 规划图需要把地块边界导出成 shp 再和县级底图叠加。这里提醒一句dwg 里的坐标系多数是建筑或规划坐标系转 shp 之前先查明图纸采用的坐标基准否则转出来的面要素坐标可能差几十米到几百米插到县级边界上一看就是错位的。另外好多人的真实需求其实是“省市 shp 下载”只要省级或市级边界并不需要县级。这时别背着几千个县级面跑分析去找对应层级的公开数据或者直接在县级 shp 上做融合第 3 章会讲把县级面按省代码或市代码合并成省级市级面比到处找单层级数据包更可控。还有一类需求是只要某一个街道或社区的边界建议直接找社区级或街道级数据拿县级边界去代表街道级范围放大后细节完全对不上。三类渠道的对比如下渠道精度与字段坐标系与元数据适合场景主要风险公开数据平台稳定字段规范标注明确对公输出、正式项目有时需拼接各省数据省市级测绘成果精度较高常缺元数据省内精细分析字段缩写难读懂民间整理包参差不齐常丢失坐标信息内部测试、快速验证编码乱码、边界过时2.2 拿到文件先验三样坐标系、字段编码、几何有效性不管数据从哪个渠道来拿到手第一件事不是打开地图看颜色而是跑一遍基础检查。做项目时我一般写一个简短的 Python 脚本用 GeoPandas 读取 shp 后依次打印坐标系、字段列表和几何有效性统计结果全部确认过再进入下一步。import geopandas as gpd gdf gpd.read_file(county.shp) print(坐标系:, gdf.crs) print(EPSG:, gdf.crs.to_epsg() if gdf.crs else None) print(字段:, gdf.columns.tolist()) print(要素数:, len(gdf)) print(有效几何占比:, gdf.geometry.is_valid.sum(), /, len(gdf))这段代码的核心是四行输出。第一行坐标系信息最容易被忽略很多民间整理包的 .prj 文件在转存时被删掉读取结果会是 None说明数据没有坐标基准后续叠加分析全部无从谈起。第二行打印 EPSG 编号能直接判断坐标系类别常见的是 EPSG:4326WGS84 地理坐标、EPSG:4490CGCS2000 地理坐标、EPSG:3857Web 墨卡托投影坐标。第三行看字段列表主要目的是确认有没有行政区划代码字段以及中文名字段是否可能乱码。第四行检查几何有效性自相交或者空几何在这种多要素面图层里不算稀奇先统计出数量后面再决定是否修复。坐标系检查还有个容易被坑的点有的 shp 的 .prj 文件里写的是“GCS_WGS_1984”但实际坐标数值却是投影坐标的米制单位两万多、几十万甚至上百万的量级。这是因为制作时坐标系定义和坐标数值不一致软件按属性文件里的坐标系去显示地图上能显示出来一旦做面积计算或距离计算单位就乱了。判断办法很简单看要素的坐标值范围。地理坐标的经纬度在 -180 到 180 之间投影坐标则没有这个范围限制。如果发现坐标数值和坐标系描述对不上修复思路是重新定义坐标系而不是重投影别一上来就套用“转 WGS84”的流程。字段编码的问题在这个阶段也一并确认。shp 的属性存在 dbf 文件里常见两种编码GBK 和 UTF-8。GeoPandas 默认按 UTF-8 读遇到 GBK 编码的中文就会显示乱码。检查方式是打印一列中文名称字段看是否出现“锟斤拷”“å唓????”这类特征字符。如果确认是编码问题读文件时显式指定编码参数gdf gpd.read_file(county.shp, encodinggbk) print(gdf[NAME].head())这里的 encoding 参数取决于 dbf 实际保存的编码常见的是 gbk也有 gb18030两种都试一下看哪边中文正常。第 5 章会单独讲乱码的完整处理流程这里只需要知道编码问题要在读取阶段解决不要等数据进了 QGIS 再后悔。几何有效性的检查相对直接is_valid返回布尔值统计出无效要素数量后可以用“修复几何”或 buffer(0) 来处理具体方案放在避坑章节展开。3. 用QGIS把县级shp跑通图层加载、属性清洗与融合3.1 先看图再碰属性QGIS加载与坐标系复检QGIS 里加载 shp 是最轻量的一步拖拽进图层即可但加载完了别急着做分析先看图。这一步的目的是用视觉判断坐标系是否可叠加。具体做法是把 shp 拖进画布后打开“图层属性—信息”面板确认坐标系描述是否和元数据或第 2 章脚本输出一致。然后叠加一个项目里已经在用的底图瓦片图层把 shp 放到上面看县界走向是否和底图贴合。如果边界整体偏移几百米甚至几公里先别怀疑数据包检查坐标系。常见的两种情况一是 shp 本身是 CGCS2000 地理坐标但被软件按 WGS84 显示这两个坐标系在国内区域相差约几十米肉眼在省市级范围看不出大问题放到县域精度就会露馅。二是数据实际是投影坐标却没有正确的 .prj 文件被按经纬度读取这时边界形状完全变形一看就是错的。复检完成后如果确定只是坐标系定义错误、坐标数值本身没问题在 QGIS 里右键图层重新指定正确的坐标系即可不要使用“重投影”功能那是把坐标数值做变换会把本来的正确数据改坏。加载完确认坐标系可用之后再做一次边界概览。方法是对“NAME”字段做分类符号化看每个县的颜色是否独立显示同时检查属性表里是否有重复名称、空名称、市辖区名称不规范等问题。市辖区在好多数据包里会写成“市辖区”三个字而不是具体的区名这类记录在做统计表关联时非常容易出问题建议在属性清洗阶段统一处理。这一步不花太多时间但能提前暴露第 5 章要讲的相当一部分问题比后面做完整分析时再发现成本低得多。3.2 属性清洗与按区划代码融合一份干净的县级面拿到一份重新加载后能正常显示的县级 shp下一步是把它整理成“干净的县级面”。清洗分为三块删除冗余字段、统一名称字段、按行政区划代码融合多部件面。先说字段。不少民间数据包属性表里带十几个字段包括 FID、Shape_Leng、Shape_Area、创建时间、业务备注等实际业务匹配只需要两到三个字段行政区划代码、县名、可能加一个面积字段。字段越少后续转 GeoJSON 时的文件体积越小前端加载越快。我习惯保留的字段是 PAC区划代码、NAME名称如果属性表里没有标准 PAC 字段那就用六位行政区划代码自行生成规则是前两位省、中间两位市、后两位县。然后是融合。有些县级行政区在矢量数据里不是一个连续面而是由主城区加若干飞地、岛屿组成的多个面要素如果不做融合统计面积时会出现一个县拆成好几行的麻烦。用 GDAL 的 ogr2ogr 可以直接在命令行完成“删除多余字段按县融合”两步操作ogr2ogr county_dissolve.shp county.shp \ -dialect sqlite \ -sql SELECT PAC, NAME, ST_Union(geometry) AS geometry FROM county GROUP BY PAC, NAME这条命令的逻辑是以 count.shp 为输入用 SQLite 方言执行 SQL选出 PAC、NAME 和几何列按 PAC 和 NAME 分组把同县的多个面用ST_Union合并成一个几何。-dialect sqlite是必须的否则 ogr2ogr 默认的 SQL 方言不支持ST_Union这类空间函数。输出文件是 county_dissolve.shp属性表只剩两列几何全部变成单要素对应单县。参数调整方面如果想把县级面进一步融合为市级面把GROUP BY字段换成市代码即可也就是取 PAC 前四位做分组SQL 里写成GROUP BY substr(PAC,1,4)。如果想保留原有面积字段可以在 SELECT 里加一句ST_Area(geometry)生成一个新字段单位取决于你使用的坐标系投影坐标系是平方米地理坐标系则要先投影再计算。需要说明的是这条命令对动辄几千个县的面图层开销并不大几秒钟就能跑完比在 QGIS 里做融合然后手动删字段省事不少。如果你的环境里没有 GDAL也可以改用 QGIS 的“融合”工具在“字段”参数里勾选 PAC效果完全一致只是处理速度会慢一些。如果属性表里存在名称不规范的记录比如“市辖区”这类统称建议在融合之前先做一个名称修正步骤。常规做法是单独整理一份区划代码和规范名称的对照表用代码做关键字段关联替换名称不要用名称去做关联因为名称的写法在数据包和业务表之间经常对不齐代码反而是稳定的。4. 给开发用的转换管线shp转GeoJSON、WKT与3DTiles4.1 ogr2ogr转GeoJSON坐标精度与抽稀容差的取值县级 shp 用在地图前端之前通常要转成 GeoJSON。QGIS 可以导出 GeoJSON但在批量处理或要精确控制输出参数时我更习惯用 ogr2ogr 命令行控制力强、可重复执行。ogr2ogr -f GeoJSON county_web.geojson county_dissolve.shp \ -t_srs EPSG:4326 \ -lco COORDINATE_PRECISION6 \ -simplify 0.0005 \ -where length(PAC) 6逐项说参数。-f GeoJSON指定输出格式county_dissolve.shp是第 3 章处理完的输入数据。-t_srs EPSG:4326是重投影参数把数据统一转到 WGS84 经纬度坐标系这是 Web 地图的事实标准不转的话浏览器端底图会叠不齐。-lco COORDINATE_PRECISION6控制坐标输出精度意思是小数点后保留 6 位大约 0.1 米的精度对 Web 可视化足够如果不设这个参数GDAL 会保留全部有效数字同样的边界 GeoJSON 体积会变大不少。-simplify 0.0005是做几何抽稀容差 0.0005 度约等于 50 米左右适合省级以上缩放下使用如果做县域级别的放大查看建议把容差改成 0.0001 或者干脆去掉这行。-where length(PAC) 6是属性过滤只导出六位代码的县级记录防止属性表里混入地级市记录。抽稀容差的取舍是这个命令里最需要花心思的参数。容差越大文件越小、边界越粗糙容差越小边界细节保留越多、文件越大。一张全国县级边界容差 0.001 度时 GeoJSON 体积可能降到几百 KB但放大会看到明显折线容差 0.0001 度时体积涨到几 MB细节保住但加载变慢。我的经验是先按使用端的最短视距选容差只做全国和省界展示用 0.001做到市县级浏览用 0.0001 到 0.0005做县级精细分析不要抽稀直接保留全精度。注意-simplify的容差单位与源数据坐标系一致你的源数据是地理坐标就按度传是投影坐标就按米传传错单位边界会严重变形。4.2 shp转3DTiles先判断值不值再调三个参数“shp转3dtiles”是这两年三维可视化项目带起来的高频需求不少读者想的是把全国县级边界直接变成三维场景里的底面。这里先说一个可能让你省掉半天时间的话如果只是在地图引擎里叠加 2D 县界GeoJSON 或矢量瓦片就够了完全不需要 3DTiles3DTiles 的价值在于海量三维数据在浏览器端的 LOD 加载只有你的场景里还有建筑体块、地形、倾斜摄影这类三维数据需要和县界一起做统一调度时把 shp 转成 3DTiles 才值得。技术路径一般分两步。第一步还是把 shp 转成坐标系统一的 GeoJSONESRI 3857 或 EPSG:4978 是常见选择第二步用支持 3DTiles 输出的转换工具把 GeoJSON 切片成 b3dm 瓦片生成 tileset.json。目前开源生态里有好几款这类转换器命令行参数叫法略有差异但核心要调的就是下面三个参数以某款开源转换器的参数示例做说明tileset-convert --input county_web.geojson \ --output ./county_tiles \ --geometric-error-root 10000 \ --geometric-error-leaf 10 \ --max-level 6参数说明如下具体名称以你实际使用的转换器文档为准。“geometric error”直译是几何误差它控制瓦片在什么视角距离显示什么细节层级根节点给大值比如 10000表示相机很远时先加载低精度瓦片叶子节点给小值比如 10表示相机拉近后加载最高精度瓦片。max-level限制最大瓦片层级层级越多县界细节越精细但瓦片生成时间也越长。全国县级边界一般 4 到 8 级足够超过 8 级生成的瓦片数量和体积会明显膨胀而县界本身在近距离看只是线框收益很小。参数作用取值建议geometric-error-root远端加载阈值5000 到 20000geometric-error-leaf近端精细阈值5 到 50max-level最大切分层级4 到 83DTiles 转换还有一个容易被忽略的问题面要素的高度。县级边界在三维场景里一般作为贴地要素存在高度设为 0 即可但如果你的转换工具默认给要素一个高度偏移叠加地形后县界会悬浮或穿入地下。处理方式是转换前先把 geometry 的 Z 值清零因为 shp 里偶尔会混入带高程的边界数据。4.3 shp转WKT和CSV给数据库和算法脚本喂数据“shp格式矢量数据导出为wkt”和“shp转txt”属于同一条需求线把空间要素从二进制文件格式转成文本格式方便导入空间数据库或直接喂给算法脚本。WKT 是空间数据的文本表达PostGIS 可以直接用ST_GeomFromText导入算法脚本也容易按字符串解析。GeoPandas 做这个转换很简单核心代码如下import geopandas as gpd gdf gpd.read_file(county_dissolve.shp, encodingutf-8) out gpd.GeoDataFrame({ adm_code: gdf[PAC], name: gdf[NAME], wkt: gdf.geometry.to_wkt(), }) out.to_csv(county_wkt.csv, indexFalse, encodingutf-8-sig) with open(county.txt, w, encodingutf-8) as f: for _, row in out.iterrows(): f.write(f{row[adm_code]}|{row[name]}|{row[wkt]}\n)逻辑说明分三层。第一层读取 shpencodingutf-8对应属性表里中文是 UTF-8 的情况如果你的数据是 GBK 编码则改成 gbk。第二层构造一个新的 GeoDataFrame把几何转换成 WKT 字符串存进叫wkt的列配合行政区划代码和名称组成一份既有人读字段又有空间文本的表。第三层同时输出两种文件county_wkt.csv适合导入数据库或 Excel 查看county.txt用竖线分隔适合给脚本逐行读取。utf-8-sig编码是为了让 CSV 在 Windows 下的 Excel 里打开不乱码这在交付给不熟悉编码的同事时能少很多沟通成本。坐标精度在这个环节同样值得注意。to_wkt()默认输出几何的全部坐标位数全国县级边界的 WKT 文本会非常长。如果只是为了导入数据库做空间匹配可以在转换前先对 geometry 做简化gdf.geometry gdf.geometry.simplify(0.0005)简化容差和第 4.1 节同一个逻辑。但如果你要拿 WKT 做面积计算、空间关系判断这类精度敏感的操作就不要简化全精度 WKT 的体积换来的是结果可靠。这里也顺带说一句“shp转txt”的常见误区有的人把 shp 转 txt 理解为把属性表导出成文本而边界几何被丢弃了。左边这份 txt 不再具备空间能力只能做表格关联。如果你要的是“带坐标边界的文本”那本质上就是 WKT 或者坐标序列导出也就是上面这段代码做的事情。搞清楚这两种“txt”的区别能省去后面重新找边界数据的麻烦。5. 县级shp使用中的5个避坑记录下载、编码、边界与精度5.1 来源不明的“某省三调”shp包属性表备注要打折现象从网盘或群文件里下载到一个标注“某省三调地类图斑shp高精度版”的压缩包解压一看县界特别细致属性表里却全是 FID、SHAPE_LEN、AREA 这类缩写字段没有中文名称更别提坐标系的元数据说明。拿它和业务统计数据一关联县代码对不上面积也对不上。原因这类包大多从专业作业软件里导出坐标系、字段字典、属性含义都是内部作业标准压缩包在多次转存过程中把配套的说明文档丢了。另一个常见问题是打包者为了缩小体积重新另存过坐标系信息在另存时被写错或丢失。解决把它当参考边界不当事务数据。使用前在三个不同地理位置比如省界、县界、城区边缘叠加影像底图抽查确认边界贴合度。属性表里的代码不能直接用于业务关联必须用公开的区划代码标准重新匹配一次。如果你要拿它做面积统计或对公输出建议换第 2.1 节里的正式渠道别在测试阶段省事到交付阶段填坑。5.2 dbf字段乱码中文县名变成“éå”怎么办现象在 QGIS 或代码里打开 shp县名字段显示为“é山甓æµå®å¿”或“????”。检索某个县名时搜不到任何结果属性表里的统计也变得不可读。原因dbf 文件里的字符串编码和读取软件默认编码不一致。中文 shp 常用 GBK 或 GB18030 存储GeoPandas 和部分 QGIS 版本默认按 UTF-8 解码读出来就成乱码。还有一种情况是数据源制作时本身混用了两种编码部分字段是 UTF-8部分字段是 GBK这种情况最麻烦。解决读取阶段显式指定编码。QGIS 在加载 shp 的文件对话框中可以直接设置“数据源编码”选 GBK 或 GB18030乱码字段立即恢复。代码场景下用第 2.2 节的方式encodinggbk重新读取。如果上述方法都不行检查 dbf 文件是不是被第三方工具重写过部分脚本在导出时会把中文转成 UTF-8 但没更新字段描述这时候可以尝试encodingutf-8配合错误处理errorsreplace先把数据读进来再用对照表修正名称字段。编码问题务必在数据进入流程前解决不要等到做完一版图再回头看属性表那是最亏的返工。5.3 区划代码滞后撤县设区后旧边界还在现象用某年度的统计数据做专题图某个县级单位的数值怎么都挂不上去或者挂上去后显示为空。检查后发现 shp 属性表里根本没有对应的行政区划代码地图上这个位置是一片空白。原因行政区划每年都在调整撤县设区、合并、析置在各地都有发生。你拿到的 shp 可能是两三年前的版本属性表里的区划代码还是旧代码新代码在数据包里不存在自然匹配不上。解决使用前先确认数据的基准年份也就是属性表里的区划代码是哪一年的版本。然后获取同一年份的统计用区划代码表把 shp 属性表里的代码与标准代码做一次全量比对找出已废止和新增的代码再做名称或代码的更新映射。这里的关键经验是统计数据、边界数据、区划代码表必须保持同一年份三者缺一个都不能直接关联。如果你的项目会跨年度持续使用建议按年份目录存放边界版本不要新数据覆盖旧数据否则后续做历史对比时没有退路。5.4 几何检查不过关空几何、自相交与重复要素现象做面积统计时某几个县的结果为零或异常大做空间叠加时提示几何错误导出 GeoJSON 后前端加载部分县渲染不出来或显示成奇怪的形状。原因shp 里混入空几何、自相交面或重复要素。空几何多见于格式转换时属性表行被复制但几何写入失败自相交面常见于手工编辑边界或从 CAD 导入后未做拓扑检查重复要素则是在多次合并图层时没有去重。这三个问题用第 2.2 节的is_valid检查能发现大部分但空几何需要单独判断。解决QGIS 里用“修复几何”工具一键处理它会把自相交面拆分为有效多边形。代码场景用 buffer(0) 技巧import geopandas as gpd gdf gpd.read_file(county_dissolve.shp) gdf[geometry] gdf.geometry.buffer(0) gdf gdf[~gdf.geometry.is_empty]buffer(0)的作用是让每个多边形做零距离缓冲把自相交的位置重新拓扑化这是修复经典做法。修复完再过滤掉空几何行最后检查重复要素按 PAC 列去重即可。注意修复几何会改变少量边界的位置修复后抽查几个县与影像底图对比确认没有明显形变。这个步骤建议放进你的常规数据入库流程里不要等分析报错时才做。5.5 比例尺决定精度1:100万的县界做不了1:25万的活现象省级概览图里县界非常干净放大到乡镇尺度后县界和影像底图偏差上百米个别地方明显穿过村庄或地块。原因不是数据坏了是数据精度本来就不支持这个比例尺的展示。1:100 万数据在制图时做了大量概化缩小细节、简化曲线它的设计用途是宏观展示不是精细边界参考。硬要拿它做乡镇级分析等于让一套只适合看轮廓的数据去干测量级的活。解决按用途选精度不要按“能不能下载到”选。数据精度适用场景县界表现1:100万全国省级展示、统计图表轮廓准确放大后明显粗糙1:25万省市级专题图县界较准确乡镇细节缺失1:5万及更大县域规划、项目分析细节丰富适合精细叠加我的经验是一张全国县级边界只承担一个职责不要指望它兼容从全国到乡镇的所有缩放级别。如果你的项目确实需要多级缩放那就准备两套或多套数据按缩放级别切换这也是 WebGIS 项目的常规做法。每次换数据版本时做一个简单的边界抽样对比把新旧版本同一县界的面积、周长差异列出来数据精度变化就能心中有数。6. 进阶技巧用渔网分割与字段精简把全国县级shp变成调得动的数据资产6.1 字段精简让全国县级shp瘦身一张全国县级 shp 在完整字段下体积不小转成 GeoJSON 后更明显。巡检一下属性表往往一半字段对业务没有贡献纯粹是制图软件留下的冗余。精简字段最直接的方式是第 3 章的融合命令SELECT 里只保留需要的列。如果没有融合需求只用 ogr2ogr 重写图层也能达到同样的清场效果ogr2ogr county_compact.shp county_dissolve.shp \ -select PAC, NAME-select参数指定输出的属性字段清单几何不会变化。一个只有代码和名称的全国县级 shp再转 GeoJSON 时体积能缩小三分之一以上。这份精简版可以放心提交给前端或算法组不用担心对方被一堆无说明字段困扰。6.2 渔网分割shp把全量变成可按需加载的分块全国县级 shp 做全量空间运算时几千个县的边界逐个参与计算开销不小。做 Web 加载或并行处理时我习惯用渔网把全量数据切成规则分块。渔网分割的思路是先生成一张覆盖全国的网格面再用空间叠加把县级边界按网格裁剪成多个区块文件前端按当前视野请求对应区块即可。import geopandas as gpd grid gpd.read_file(grid_2d.shp) county gpd.read_file(county_compact.shp) parts gpd.overlay(county, grid, howintersection) parts.to_file(county_split, driverGeoJSON)这段代码用 GeoPandas 的 overlay 做交集运算输出是按网格切碎后的要素集合。渔网的大小直接决定分块数量和每块体积全图范围建议 2 度乘 2 度一格共几十块每块几百 KB只在省市级范围用则网格可以加密到 0.5 度。实际使用中几千个县和几十个网格做 overlay 计算量不小跑不动时优先把网格写入 PostGIS用空间 SQL 做裁剪会快很多。切完之后记得在每块 GeoJSON 里保留省代码或市代码字段方便前端定位区块属于哪个区域。让数据变成可以按需调用的分块比拿着一整张大图到处交付顺手得多这也是我做数据资产管理时的习惯收尾动作。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进