GeoJSON (.geojson)

IETF 标准

地理JavaScript对象表示法(GeoJSON)是用于编码地理数据结构的通用Web原生标准,广泛应用于现代Web地图(Leaflet、Mapbox、OpenLayers)和GIS应用程序中。

将 GEOJSON 转换为 KML

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

检查与元数据

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

选择或将文件拖放到此处

100% 浏览器端私密转换 - 文件绝不会离开您的设备

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

字节级文件头签名 (Magic Bytes)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 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

技术规格

容器架构JSON document adhering to RFC 7946 representing geographic Features, FeatureCollections, and Geometries
压缩方式Uncompressed text (readily compressed over HTTP via Gzip or Brotli)
字节序UTF-8 text stream
色彩空间N/A (Geographic Data)
通道与结构Points, MultiPoints, LineStrings, MultiLineStrings, Polygons, MultiPolygons, GeometryCollections, and custom properties
最大尺寸World Geodetic System 1984 (WGS 84) coordinate space: Longitude (-180 to +180), Latitude (-90 to +90)
透明度None
流式传输与渐进式加载Line-delimited GeoJSON (GeoJSONL / GeoJSONSeq) enables continuous streaming of millions of features

技术对比矩阵: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 GeoJSON转换器交换坐标位置[经度, 纬度]。

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

GeoJSON属性可以包含任意用户输入,在渲染到地图弹出窗口之前必须进行净化处理以防止XSS攻击。

已知攻击向量

  • 通过地图工具提示中渲染的GeoJSON要素属性中的未转义HTML进行跨站脚本攻击(XSS)。
  • 通过深度嵌套的GeometryCollections或百万顶点多边形引发拒绝服务攻击。
  • 通过远程GeoJSON要素加载引发服务器端请求伪造(SSRF)。

防御性最佳实践:

历史渊源与里程碑

2016IETF正式将GeoJSON格式标准化为RFC 7946,并强制使用WGS 84坐标参考系统。
2014GitHub引入了对所有.geojson文件的原生交互式可视化地图渲染。
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,GitHub会自动将其渲染为交互式可点击地图。
  • RFC 7946规定多边形边界环必须遵循"右手规则":外部环必须逆时针缠绕。

常见技术问题

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

因为在数学和计算机图形学中,坐标总是指定为 (X, Y)。经度表示水平的 X 轴,纬度表示垂直的 Y 轴。

如何将 KML 或 Shapefile 转换为 GeoJSON?

您可以使用浏览器直接访问 File2File.app,在几秒钟内将 Google Earth KML 文件或 Esri Shapefile 转换为整洁、可在网页上使用的 GeoJSON。

GeoJSON 和 Shapefile 有什么区别?

Shapefile 是 20 世纪 90 年代的陈旧多文件二进制格式(.shp、.shx、.dbf)。GeoJSON 是一种现代的、用整洁的 JSON 编写的单文件开放网页格式。