从全国边界数据中提取指定省市区县:三种做法
技术专栏 · 数据处理 · 2026-09-20
「提取」与「裁剪」的区别
提取(按属性选择)是保留几何与属性都不变的完整要素,例如从全国县级数据里取出所有属于某省的要素,每个要素的形状与字段与原始数据完全一致。裁剪(clip)是用一个范围去切另一个图层,切出来的几何会被截断,边界处会重新生成顶点。
两者的选择取决于目的:做省内市区县分布,用提取;要把某个流域范围切出来,用裁剪。混用会导致不必要的数据损失——用裁剪做提取,省界会被目标范围截断,出现不属于任何省的多余边界段。
做法一:ArcGIS 按属性导出
- 打开全国图层,在属性表中按省级名称或省级代码字段做筛选(Select by Attributes),得到目标省的要素集合。
- 在图层右键选择导出数据(Export Data),导出范围选择「所选要素」,指定输出格式与路径。
- 如需进一步细分到市或区县,在同一层内继续按代码前缀筛选即可——行政区划代码是层级拼接的,省级与地市级前缀相同,可以用前缀匹配快速下钻。
注意两点:导出时选择保留原始坐标系,不要勾选「使用数据框坐标系」,否则可能触发一次动态投影;字段若含中文,确认输出编码设置,避免再次导出时出现乱码。
做法二:QGIS 导出所选要素
QGIS 的路径更短:选中目标要素后右键图层,选择导出 → 保存所选要素为,指定格式、坐标系与编码即可。它的优势在于:
- 可以在导出前直接编辑属性,例如把省级字段的值统一规整,避免导出后再单独处理。
- 支持批量导出多个图层,适合按若干省份分别输出的场景。
- 内置几何有效性检查,导出前可以直接运行检查并查看问题位置。
做法三:ogr2ogr 命令行
需要按省批量切割时,命令行是最省力的选择。GDAL 的 ogr2ogr 支持按 SQL 条件过滤:ogr2ogr -f "ESRI Shapefile" out_gd.shp in.geojson -where "gb LIKE '44%'",其中 -where 后面的条件即筛选依据。
把它放进一个循环、按省级代码前缀逐个调用,就能一次得到三十余个省份文件。要注意三处:一是 -lco ENCODING=UTF-8 保证中文字段不乱码;二是条件字段名要按实际属性表填写,不同来源的字段名并不一致;三是若源数据没有代码字段,需要先补一列再切分,否则只能靠名称匹配,容易遗漏。
三个常见问题
- 导出后字段变少了:Shapefile 的字段名上限为 10 个字符,超出会被截断,长字段名甚至可能互相冲突被丢弃。若字段重要,改用 GeoPackage 或 GeoJSON 承载。
- 相邻省份拼起来有缝隙:多半是不同批次数据经过各自的简化处理,边界顶点不一致。按需提取应始终从同一份全国数据中操作,不要在多次导出之间混用来源。
- 提取后的文件仍然很大:说明原始数据顶点密度高。网页用途可在导出时做几何简化,桌面分析则保留完整精度。
数据来源与取用
本站提供按层级整理的全国边界数据,含名称与代码字段,统一为 WGS84(EPSG:4326),也可按省直接下载,省去自行切割的步骤。范围与顶点密度可在地图工作台预览;整包数据见省 / 市 / 区县边界包,更细的粒度见乡镇街道边界与村界数据。
如果提取后的用途是做可视化,可继续参考《ECharts 地图数据准备》。
常见问题
- ArcGIS 里怎么从全国数据中只导出某个省?
- 三步:在属性表中按省级名称或代码字段执行按属性选择,得到目标省的要素;在图层右键选择导出数据,导出范围选「所选要素」;指定输出路径与格式。导出时注意保留原始坐标系,不要选用数据框坐标系,并确认中文编码设置。若源数据带行政区划代码字段,用代码前缀筛选比按名称筛选更可靠。
- 裁剪后边界出现缝隙或多余线是什么原因?
- 通常是选错了操作。用裁剪(clip)代替提取,目标范围外的部分会被截断,裁剪边界上会生成不属于任何行政区的新线段;用提取则每个要素保持完整。另外,若提取来源不是同一份全国数据,不同批次数据的简化程度不同,拼合时也会出现缝隙。按需提取应始终从同一份原始数据出发。
- 命令行按省批量切割怎么做?
- 使用 GDAL 的 ogr2ogr,按 SQL 条件过滤并循环调用:
ogr2ogr -f "ESRI Shapefile" out.shp in.geojson -where "gb LIKE '44%'"。把省级代码前缀放进循环即可一次生成全部省份文件。注意加-lco ENCODING=UTF-8保证中文不乱码,并确认条件字段名与源数据一致;没有代码字段时建议先补列。 - 提取后的数据字段会丢失吗?
- 用提取方式(按属性选择后导出)不会丢失字段,几何与属性都与原数据一致。真正会丢字段的是输出为 Shapefile 时:其字段名上限为 10 个字符,超长会被截断,长且相近的字段名还可能互相冲突。若字段较多或名称较长,改用 GeoPackage、GeoJSON 等格式承载,或保留原始数据另存一份处理过程。
- 按省下载和下载全国再自己切割,哪个更好?
- 看项目范围。只涉及一两个省,直接按省取用最快,也避免处理大文件;要做跨省对比或需要保证各省数据来自同一批次,则应取全国整包后自行提取,这样能确保简化口径与坐标系完全一致,拼合不会出现缝隙。无论哪种方式,都建议在成果中记录数据年份。
延伸阅读:《省市区县边界数据下载:粒度选择与字段说明》、《ECharts 地图数据准备:GeoJSON 格式与下钻实现》、《中国地图 Shapefile 下载:渠道对比与完整性核验》。