GeoJSON (.geojson)
IETF 标准GeoJSON 常用于网络地图,但支持情况各异。GitHub 仅显示符合大小和投影限制的文件;RFC 7946 规定经度在前、纬度在后。
将 GEOJSON 转换为 KML
免费的浏览器端 GEOJSON 转 KML 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GeoJSON 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GeoJSON 文件:
十六进制签名 (偏移量 0):
7B 0A 20 20 22 74 79 70 65 22 3A 20 22 46 65 61 74 75 72 65ASCII 表示形式: {\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 (当前) | KML | GPX | SHP |
|---|---|---|---|---|
| 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 或地理数据库更适合某些工作流程。