GeoJSON 格式简介
GeoJSON 是一种基于 JSON 的地理空间数据交换格式,于 2016 年正式成为 RFC 7946 标准。它以纯文本方式描述地理要素的几何形状与属性信息,具有结构清晰、易于解析、跨平台兼容的特点,已成为 Web 地图领域最主流的数据格式之一。
无论是点状的兴趣点、线状的道路网络,还是面状的行政区划,GeoJSON 都能用统一的 JSON 结构来表达,非常适合在前后端之间传递地理数据。
核心结构
GeoJSON 的顶层结构通常是 FeatureCollection,它包含一个 Feature 数组。每个 Feature 代表一个地理要素,由 geometry(几何)和 properties(属性)两部分组成:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [116.404, 39.915]
},
"properties": {
"name": "天安门",
"city": "北京"
}
}
]
}这种嵌套结构清晰地分离了几何信息与业务属性,便于程序解析与处理。
几何类型
GeoJSON 支持以下七种几何类型,覆盖了常见的地理要素表达需求:
- Point(点):单个坐标位置,如兴趣点、标注点
- MultiPoint(多点):多个点坐标的集合
- LineString(线):由两个或更多点组成的线段
- MultiLineString(多线):多条线段的集合,如公交线路网
- Polygon(面):封闭的多边形区域,首尾坐标必须一致
- MultiPolygon(多面):多个多边形的集合,如群岛或飞地
- GeometryCollection(几何集合):混合多种几何类型的组合
其中,Polygon 和 MultiPolygon 支持洞(hole)的定义:外环表示边界,内环表示挖空区域,常用于表示带内部空隙的地块。
坐标格式
GeoJSON 中的坐标统一采用数组形式表示:
- 二维坐标:
[经度, 纬度] - 三维坐标:
[经度, 纬度, 高程]
注意,GeoJSON 规范明确规定坐标顺序为**经度在前、纬度在后**。这与部分传统 GIS 软件(如 Shapefile)的纬度在前习惯不同,在数据转换时需特别留意。
不同几何类型的坐标嵌套层级如下:
Point: [lng, lat]
LineString: [[lng, lat], [lng, lat], ...]
Polygon: [[[lng, lat], [lng, lat], ...]]
MultiPolygon: [[[[lng, lat], [lng, lat], ...]]]层数组嵌套的深度反映了几何类型的复杂度,这是 GeoJSON 解析时需要正确处理的关键点。
properties 属性
每个 Feature 的 properties 字段是一个 JSON 对象,用于存储与该要素关联的自定义属性数据。属性值可以是字符串、数字、布尔值甚至嵌套对象,完全由数据生产者定义:
"properties": {
"name": "北京市",
"population": 21710000,
"area_code": "010",
"is_capital": true
}properties 的灵活性使 GeoJSON 既能承载几何信息,又能携带丰富的业务数据,这也是它广受欢迎的重要原因之一。
在线可视化原理
GeoJSON 在线查看器的可视化流程通常包含以下几个步骤:
- 解析 GeoJSON:校验 JSON 格式合法性,解析出 FeatureCollection 结构
- 提取几何:遍历每个 Feature,根据 geometry.type 获取对应的坐标数据
- 地图渲染:将几何要素绘制到地图底图上,不同类型采用不同样式
- 生成属性表:汇总所有 Feature 的 properties,以表格形式展示
渲染时,Point 通常以圆点或图标表示,LineString 以线条绘制,Polygon 以半透明填充加边界线呈现。通过不同颜色和样式区分各类要素,使数据直观可读。
常见问题
使用 GeoJSON 时,以下几类问题较为常见:
- 坐标系偏移:GeoJSON 默认使用 WGS84 坐标系,若数据实际为 GCJ02 或 BD09,直接叠加到 WGS84 底图上会出现偏移。解决方案是先进行坐标转换再渲染
- 几何无效:多边形未闭合(首尾坐标不一致)、坐标数组嵌套层级错误等,会导致渲染异常或解析失败
- JSON 格式错误:多余的逗号、缺少引号、中文标点混入等,都会使 JSON 解析器报错。建议使用 JSON 校验工具预先检查
在国内使用 GeoJSON 时,坐标系偏移是最容易被忽视的问题。务必明确数据的坐标基准,必要时进行 WGS84 与 GCJ02 的转换。
如需在线查看和验证 GeoJSON 数据,可以使用 GeoJSON 在线查看器,支持几何渲染与属性表展示,帮助您快速检查数据质量。