GeoJSON (.geojson)

IETF 标准

GeoJSON 常用于网络地图,但支持情况各异。GitHub 仅显示符合大小和投影限制的文件;RFC 7946 规定经度在前、纬度在后。

将 GEOJSON 转换为 KML

免费的浏览器端 GEOJSON 转 KML 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 GeoJSON 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 GeoJSON 文件:

十六进制签名 (偏移量 0):

7B 0A 20 20 22 74 79 70 65 22 3A 20 22 46 65 61 74 75 72 65

ASCII 表示形式: {\n "type": "Feature

标准化: IETF RFC 7946

技术规格

容器架构符合 RFC 7946 的 JSON 文档,用于表示地理要素、要素集合和几何对象
压缩方式未压缩文本(可通过 HTTP 使用 Gzip 或 Brotli 轻松压缩)
字节序UTF-8 文本流
色彩空间N/A (Geographic Data)
通道与结构Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection 及自定义属性
最大尺寸世界大地测量系统 1984(WGS 84)坐标空间:经度(-180 至 +180),纬度(-90 至 +90)
透明度None
流式传输与渐进式加载逐行 GeoJSON(GeoJSONL / GeoJSONSeq)支持连续流式处理数百万个要素

技术对比矩阵:GeoJSON 对比同类产品

技术属性GeoJSON (当前)KMLGPXSHP
Web地图采用率100%通用的Web GIS默认标准Google地球默认标准GPS设备和健身追踪默认标准桌面GIS传统标准
坐标顺序[经度, 纬度] (X, Y)经度, 纬度, 高度纬度, 经度X, Y坐标
语法风格清晰的JSON键值对冗长的XML标签 (<kml>)冗长的XML标签 (<gpx>)多文件二进制 (.shp, .shx, .dbf)
属性架构任意JSON属性对象ExtendedData架构标签固定GPX架构标签dBase IV (.dbf)固定列

常见损坏模式与十六进制恢复指南

地图点显示在南极洲附近的海洋中,而不是其真实位置。

根本原因: 坐标数组中的纬度和经度值被意外对调了。

恢复方法: 使用 File2File.app GeoJSON 转换器交换坐标位置 [经度, 纬度]。

安全分析与解析器攻击向量

GeoJSON 属性可以包含任意用户输入;为防止 XSS 攻击,在将其渲染到地图弹出窗口前必须先清理。

已知攻击向量

  • 地图提示框中渲染的 GeoJSON 要素属性若含有未转义 HTML,可能导致跨站脚本攻击(XSS)。
  • 通过深度嵌套的 GeometryCollection 或包含数百万个顶点的多边形发起拒绝服务攻击。
  • 通过加载远程 GeoJSON 要素实施服务器端请求伪造(SSRF)。

防御性最佳实践: 在插入地图弹出窗口之前,使用 DOMPurify 清理所有属性文本字符串。

历史渊源与里程碑

2016IETF 正式将 GeoJSON 格式标准化为 RFC 7946,并要求使用 WGS 84 坐标参考系统。
2014GeoJSON 常用于网络地图,但支持情况各异。GitHub 仅显示符合大小和投影限制的文件;RFC 7946 规定经度在前、纬度在后。
2008Howard Butler、Sean Gillies 和开源 GIS 社区发布了最初的 GeoJSON 1.0 规范。

核心优势与特点

  • 原生 Web 标准:在浏览器地图类库(Mapbox GL JS、Leaflet)中可直接映射为 JavaScript 对象。
  • JSON 结构清晰易读,便于以编程方式创建、筛选和调试。
  • 任意属性架构:可将任何自定义元数据(人口、名称、速度、收入)直接附加到几何形状上。

技术局限与劣势

  • 文本格式较冗长:浮点坐标以重复的 ASCII 数字存储,因此文件比二进制 Shapefile 或 FlatGeobuf 更大。
  • RFC 7946严格规定了[经度, 纬度]的顺序,这常常让习惯了"纬度/经度"的开发人员感到困惑。
  • 包含数百万个顶点的大型多边形可能会导致网页浏览器DOM渲染变慢。

趣味技术冷知识

  • 官方GeoJSON标准将坐标排序为[经度, 纬度](X、Y笛卡尔顺序),这与人们口头表达的顺序("纬度, 经度")正好相反。
  • GeoJSON 常用于网络地图,但支持情况各异。GitHub 仅显示符合大小和投影限制的文件;RFC 7946 规定经度在前、纬度在后。
  • RFC 7946规定多边形边界环必须遵循"右手规则":外部环必须逆时针缠绕。

常见技术问题

为什么我的 GeoJSON 坐标排序是 [经度, 纬度] 而不是 [纬度, 经度]?

GeoJSON 常用于网络地图,但支持情况各异。GitHub 仅显示符合大小和投影限制的文件;RFC 7946 规定经度在前、纬度在后。

如何将 KML 或 Shapefile 转换为 GeoJSON?

您可以直接在浏览器中使用 File2File.app,在几秒内将 Google Earth KML 文件或 Esri Shapefile 转换为格式规范、可用于网页的 GeoJSON。

GeoJSON 和 Shapefile 有什么区别?

Shapefile 仍广泛用于数据交换,并受 GIS 软件支持;不过,其多文件结构和属性限制可能使 GeoJSON 或地理数据库更适合某些工作流程。