GeoJSON (.geojson)
IETF 標準GeoJSON 是一個用於編碼地理資料結構的開放格式。它廣泛應用於網頁地圖中,並受到許多 GIS 應用程式的支援,儘管支援程度與行為各有不同。
將 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 文件,代表地理特徵(Feature)、特徵集合(FeatureCollection)與幾何圖形(Geometry) |
| 壓縮 | 未壓縮文字(可透過 Gzip 或 Brotli 在 HTTP 傳輸時輕鬆壓縮) |
| 位元組序 | UTF-8 文字串流 |
| 色彩空間 | 不適用(地理資料) |
| 色版與結構 | 點(Point)、多點(MultiPoint)、線(LineString)、多線(MultiLineString)、多邊形(Polygon)、多多邊形(MultiPolygon)、幾何圖形集合(GeometryCollection)與自訂屬性 |
| 最大尺寸 | 世界大地測量系統 1984(WGS 84)座標空間:經度(-180 至 +180)、緯度(-90 至 +90) |
| 透明度 | 無 |
| 串流與漸進式 | 以行分隔的 GeoJSON(GeoJSONL / GeoJSONSeq)可支援數百萬個特徵的連續串流 |
技術比較矩陣:GeoJSON 對比競爭格式
| 技術屬性 | GeoJSON (目前) | KML | GPX | SHP |
|---|---|---|---|---|
| 網路地圖採用率 | 廣泛應用於網路地圖;應用程式支援情況各有不同 | Google Earth 預設值 | GPS 裝置與健身預設值 | 桌面 GIS 舊版標準 |
| 座標順序 | [經度, 緯度] (X, Y) | 經度、緯度、高度 | 緯度、經度 | X、Y 座標 |
| 語法風格 | 簡潔的 JSON 鍵值對 | 冗長的 XML 標籤 (<kml>) | 冗長的 XML 標籤 (<gpx>) | 多檔案二進位 (.shp、.shx、.dbf) |
| 屬性結構描述 | 任意 JSON 屬性物件 | ExtendedData 結構描述標籤 | 固定的 GPX 結構描述標籤 | dBase IV (.dbf) 固定欄位 |
常見損壞模式與十六進位修復指南
地圖上的點出現在南極洲附近的海洋中,而非其真實位置。
根本原因: 座標陣列中的緯度和經度數值被意外互換了。
修復: 使用 File2File.app GeoJSON 轉換器互換座標位置 [lon, lat]。
安全性分析與解析器攻擊向量
GeoJSON 屬性可以包含任意的使用者輸入,在算繪至地圖快顯視窗之前必須進行清理,以防止 XSS 攻擊。
已知攻擊向量
- 透過地圖提示框中所算繪之 GeoJSON 圖徵屬性內的未跳脫 HTML 進行跨網站指令碼 (XSS) 攻擊。
- 透過深度巢狀的 GeometryCollection 或百萬頂點多邊形進行阻斷服務攻擊。
- 透過遠端 GeoJSON 圖徵載入發動伺服器端請求偽造(SSRF)。
防禦最佳實務: 在插入地圖彈出視窗之前,請使用 DOMPurify 清理所有屬性文字字串。
歷史起源與里程碑
2016IETF 正式將 GeoJSON 格式標準化為 RFC 7946,強制規定使用 WGS 84 座標參考系統。
2014GitHub 為儲存庫中支援的 GeoJSON 檔案新增地圖呈現功能;部分檔案無法呈現,包括超過文件所述大小限制的檔案。
2008霍華德·巴特勒、肖恩·吉利斯與開源 GIS 社群發布 GeoJSON 1.0 初始規格。
主要優勢與優點
- 原生網頁標準:在瀏覽器地圖函式庫(Mapbox GL JS、Leaflet)中直接對應到 JavaScript 物件。
- 易於閱讀的 JSON 結構,可輕鬆進行程式化建立、篩選與偵錯。
- 任意屬性結構描述:將任何自訂中繼資料(人口、名稱、速度、營收)直接附加到幾何形狀。
技術限制與缺點
- 文字冗長:將浮點數座標儲存為重複的 ASCII 數字,導致檔案大小大於二進位 Shapefile 或 FlatGeobuf。
- RFC 7946 嚴格規定 [經度, 緯度] 的順序,這常讓習慣「緯度/經度」的開發者感到困惑。
- 包含數百萬個頂點的大型多邊形可能會導致網頁瀏覽器 DOM 算繪變慢。
有趣的技術冷知識
- 官方 GeoJSON 標準規定座標順序為 [經度, 緯度](X、Y 笛卡兒座標順序),恰好與人們口語表達的順序(「緯度、經度」)相反。
- GitHub 可以將支援的 GeoJSON 檔案以地圖形式算繪在儲存庫中。算繪有其限制,包含檔案大小與座標參考系統。
- RFC 7946 規定多邊形邊界環必須遵循「右手定則」:外環必須以逆時針方向繞行。
常見技術問題
為什麼我的 GeoJSON 座標順序是 [經度, 緯度],而不是 [緯度, 經度]?
座標順序取決於格式。RFC 7946 GeoJSON 位置使用經度在前、緯度在後;其他格式可能會定義不同的軸順序。
如何將 KML 或 Shapefile 轉換為 GeoJSON?
您可以直接在瀏覽器中使用 File2File.app,在幾秒鐘內將 Google Earth KML 檔案或 Esri Shapefiles 轉換為乾淨、適合網路使用的 GeoJSON。
GeoJSON 與 Shapefile 有什麼差異?
Shapefiles 仍廣泛用於資料交換,也受到 GIS 軟體支援;不過,其多檔案結構與屬性限制,可能使 GeoJSON 或地理資料庫更適合某些工作流程。