GeoJSON 与 Shapefile 怎么选:结构、编码与场景对照
技术专栏 · 数据格式 · 2026-09-17
两种格式的分工
矢量地理数据长期由两套格式分治:GeoJSON 占据 Web 与数据管道,Shapefile(SHP)占据桌面 GIS。前者是纯文本的 JSON,后者是二进制文件组的集合。多数「格式烦恼」的根源,都是拿其中一种去做另一种更擅长的事。
结构:单文件与「五件套」
GeoJSON 是单一文本文件,本质是一个 FeatureCollection:每个 Feature 带几何(geometry)与属性(properties),属性即普通 JSON 对象,字段名与类型都不受限,可直接用文本编辑器阅读。把一个面复制到其他文件、用脚本批量改写字段,都属于文本层面的操作。
Shapefile 由一组文件协同工作,常被称作「五件套」:.shp 存几何、.shx 存索引、.dbf 存属性表(dBase 格式)、.prj 存坐标系定义、.cpg 声明属性编码。缺任何一个都可能出问题——缺 .prj 会丢失坐标系定义,缺 .cpg 则中文属性可能乱码。它的优势在于桌面 GIS 生态的原生支持:ArcGIS、QGIS 打开即用,属性表可编辑、可关联。
字段与编码:中文字段处理的差异
Shapefile 的 .dbf 属性表字段名限制为 10 个字符,中文属性依赖 .cpg 正确声明编码(UTF-8 或 GBK);拷贝文件时漏掉 .cpg,是中文乱码最常见的成因。GeoJSON 采用 UTF-8 文本,中文键值无损,字段名长度也不受限,配合区划代码字段(如 name / gb)可以直接当作业务表使用。
两套格式的字段惯例并不相同。获取他人数据时,先用 QGIS 或文本编辑器打开属性结构确认一遍,再决定接入方式。
体积与性能
同样的面要素,文本化的 GeoJSON 通常比二进制 Shapefile 更大,浏览器解析大 JSON 也有明显开销。乡镇级、村级这类大数据量场景,通行做法是传输层压缩(gz / zip)、服务端按需切片、客户端按视口加载。Shapefile 在桌面软件中因具备索引与二进制结构,打开大数据反而更从容。
按场景选型
- ECharts / Leaflet / Mapbox 等前端可视化:选 GeoJSON,基本没有争议。fetch 即可加载,官方示例也以它为准。
- QGIS / ArcGIS 制图与空间分析:Shapefile 更顺手;不过新版 QGIS 对 GeoJSON 的支持已经很好,小体量数据直接拖入即可。
- PostGIS / 空间数据库:两者都能导入。属于长期资产的数据建议入库保存,导出时按需生成对应格式。
- 交付给不确定的接收方:以 GeoJSON 为主(通用、易查),并注明坐标系;对方是政务或设计院背景时再补一份 SHP。
- 历史项目对接:按对方系统的既有格式交付,不做无谓转换。
互转方法
装有 GDAL 时,ogr2ogr 一行即可完成互转。例如把 GeoJSON 转为 Shapefile:ogr2ogr -f "ESRI Shapefile" out.shp in.geojson -lco ENCODING=UTF-8。未安装 GDAL 也可用 QGIS 图形界面导出,或直接在本站的地图工作台中加载数据后选择 SHP 格式导出(转换在浏览器端完成)。
延伸阅读:转换之前应先把坐标系确认清楚,见《中国大陆地图坐标系入门》;获取数据后要做填色图,见《行政区划填色图制作指南》。
常见问题
- Shapefile 会被淘汰吗?
- 短期内不会,桌面 GIS 的存量生态太大。但新项目里 GeoJSON(以及 GeoPackage、FlatGeobuf 等现代格式)的份额在快速上升,尤其是 Web 与数据管道场景。
- 为什么我的 SHP 打开中文全是问号?
- 十有八九是 .cpg 丢失或声明错误。用文本编辑器新建一个同名 .cpg 文件写入「UTF-8」即可修复多数情况;源头修复则是导出时指定 UTF-8 编码。
- GeoJSON 能存点线面之外的类型吗?
- 可以存栅格的引用但不适合存栅格本身;它是矢量格式,影像请用 GeoTIFF / COG。
- 本站的数据两种格式都提供吗?
- 边界包以 GeoJSON 交付(乡镇包内含官方版与聚合版两个 GeoJSON),任何数据都可以在工作台免费预览后按 SHP 格式导出。
- 中国行政区划的 shp / GeoJSON 数据从哪里下载?
- 四条常见路径:官方渠道(区县自然资源部门依申请公开,或天地图、全国地理信息资源目录服务系统发布的公众版矢量数据)权威性最高,但申请链路较长、覆盖粒度有限;地方数据开放平台可直接下载已公示的辖区数据,覆盖零散;地图厂商开放接口能下钻到乡镇甚至村级,但返回 GCJ-02 坐标,需转换后使用;第三方整理数据集省去申请时间,代价是来源、时效与授权状态需要自行核验。本站属于最后一类:按四级整理为 WGS84,可在地图工作台预览后按 GeoJSON 或 SHP 取用,整包见省市区县、乡镇与村界各数据页。