GeoJSON (.geojson)
IETF 标准地理JavaScript对象表示法(GeoJSON)是用于编码地理数据结构的通用Web原生标准,广泛应用于现代Web地图(Leaflet、Mapbox、OpenLayers)和GIS应用程序中。
将 GEOJSON 转换为 KML
免费的浏览器端 GEOJSON 转 KML 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GeoJSON 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 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
技术规格
| 容器架构 | 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 (当前) | 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 GeoJSON转换器交换坐标位置[经度, 纬度]。
安全分析与解析器攻击向量
GeoJSON属性可以包含任意用户输入,在渲染到地图弹出窗口之前必须进行净化处理以防止XSS攻击。
已知攻击向量
- 通过地图工具提示中渲染的GeoJSON要素属性中的未转义HTML进行跨站脚本攻击(XSS)。
- 通过深度嵌套的GeometryCollections或百万顶点多边形引发拒绝服务攻击。
- 通过远程GeoJSON要素加载引发服务器端请求伪造(SSRF)。
防御性最佳实践:
历史渊源与里程碑
核心优势与特点
- 原生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 编写的单文件开放网页格式。