geojson rfc7946 gis maps json standards

GeoJSON 标准详解:为地理空间数据掌握 RFC 7946 标准

学习如何根据 RFC 7946 在 JSON 中表示地理特征。包含点 (Point)、线 (LineString)、面 (Polygon) 等的完整指南。

2026-04-11

GeoJSON 标准详解:为地理空间数据掌握 RFC 7946 标准

在 Web 地图和地理信息系统 (GIS) 领域,GeoJSON 已成为共享空间数据的通用语言。无论您使用的是 Leaflet、Mapbox 还是 Google Maps,您很可能都在与 RFC 7946(官方 GeoJSON 标准)进行交互。

什么是 RFC 7946 (GeoJSON)?

RFC 7946 发布于 2016 年,正式规范了 GeoJSON 格式。它是一种基于 JSON(JavaScript 对象表示法)的地理空间数据交换格式。它允许您表示几何图形、特征及其集合。

GeoJSON 支持以下几何类型:

  • Point (点): 单个位置(经度,纬度)。
  • LineString (线): 一系列连接的点。
  • Polygon (面): 封闭区域(起点和终点相同)。
  • MultiPoint, MultiLineString, MultiPolygon: 上述类型的集合。
  • GeometryCollection: 不同几何类型的混合。

GeoJSON 的核心原理

1. 坐标系

RFC 7946 严格规定使用 WGS 84(1984 年世界大地测量系统)基准面。坐标始终按 [经度, 纬度] 排序。 警告:许多开发者会错误地使用 [纬度, 经度],这会导致您的数据出现在地球上完全错误的位置!

2. 特征对象 (Feature)

GeoJSON Feature 对象包含一个几何图形和额外的元数据(属性)。

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [102.0, 0.5]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}

3. 特征集合 (FeatureCollection)

大多数 GeoJSON 文件都是 FeatureCollection 对象,允许您将多个特征打包到单个文件中。


实际应用场景

Web 地图

GeoJSON 是大多数现代 Web 地图库的原生格式。它易于通过 AJAX 加载,并且可以根据 properties 对象进行动态样式设置。

数据库存储

现代数据库(如带有 PostGIS 的 PostgreSQL 和 MongoDB)对 GeoJSON 提供原生支持,允许您执行空间查询(例如,“查找该位置 5 公里范围内的所有点”)。

数据可视化

D3.js 等工具可以读取 GeoJSON 数据并将其渲染为交互式 SVG 地图,非常适合仪表板和信息图表。


GeoJSON vs. KML vs. Shapefile 对比

特性 GeoJSON KML Shapefile
格式 JSON XML 二进制(多个文件)
Web 友好度 极佳 一般 较差
样式设置 通过属性 内置 (XML) 独立文件 (.qml/.sld)
人类可读

常见问题 FAQ

Q: 为什么是 [经度, 纬度] 而不是 [纬度, 经度]?
A: RFC 7946 遵循标准笛卡尔坐标系 [x, y],其中经度对应 X 轴,纬度对应 Y 轴。

Q: 我可以使用不同的坐标参考系统 (CRS) 吗?
A: 虽然旧版本的 GeoJSON 允许自定义 CRS,但 RFC 7946 严格要求使用 WGS 84。如果您的数据位于不同的系统中(如 UTM),则在将其共享为 GeoJSON 之前,必须将其投影到 WGS 84。

Q: 如何处理大型数据集?
A: 对于非常庞大的空间数据集,GeoJSON 的加载速度可能会变慢。对于生产级地图,请考虑使用 TopoJSON(通过共享拓扑减少文件大小)或 矢量切片 (Vector Tiles)


相关工具

  • JSON 格式化 - 验证和清理您的 GeoJSON 结构必备。
  • URL 编解码 - 在将 GeoJSON 数据作为 URL 参数传递时非常有用。
  • UUID 生成器 - 常用于为 GeoJSON 特征生成唯一 ID。