KML 轉 GeoJSON 轉換器
將 Google KML 檔案轉換為 GeoJSON,可將階層式 XML 地理資料轉換為適用於現代網路地圖的輕量向量 JavaScript Object Notation。
格式比較與技術規格
| 規格 | KML | GEOJSON |
|---|---|---|
| MIME 類型 | application/ | application/ |
| 類型 | 地理 XML 標記法 | 地理向量 JSON |
| 壓縮 | XML 文字(以 ZIP 壓縮時為 KMZ) | 無(JSON 文字) |
| 標準規格 | OGC KML 2.3 | IETF RFC 7946 |
| 檔案簽章(magic bytes)標頭 | 3C 3F 78 6D 6C ... 3C 6B 6D 6C (<kml) | 7B 22 74 79 70 65 22 3A 20 22 ({"type": ") JSON header |
格式概述與應用
地理資料經常需要在桌面地圖工具與網頁應用程式之間轉換。Google KML 是 Google Earth 使用的標準格式,會在 XML 樹狀結構中組織點、線與多邊形。現代網頁瀏覽器與 Mapbox、Leaflet 等地圖函式庫更偏好 GeoJSON,因為它能直接對應 JavaScript 原生使用的資料結構。開發人員與 GIS 分析師會將 KML 轉為 GeoJSON,以便在網頁上快速載入地圖圖層,而不必使用專門的桌面軟體。相較於解析大型 XML 文件,網頁應用程式能更快處理 JSON。使用者載入網頁地圖時,GeoJSON 檔案會直接傳送至向量算繪引擎。這種轉換省去了執行時轉換 XML 標籤的額外負擔,讓地圖在維持座標幾何資料精確度的同時,也能流暢顯示數千個圖徵。
技術規格與編解碼器解析
Google KML 使用 MIME 類型 application/vnd.google-earth.kml+xml,依 XML 文字語法組成;壓縮後則會成為稱為 KMZ 的 ZIP 容器。GeoJSON 使用 MIME 類型 application/geo+json,由未壓縮的純文字組成,並以 JSON 物件的結構組織。KML 檔案通常以標準 XML 宣告開頭,而 KMZ 封存檔則以 ZIP 本機檔案標頭位元組 50 4B 03 04 開頭。GeoJSON 檔案以代表根 JSON 物件的 ASCII 字元「{」開頭。轉換時會解析 XML 文件樹、提取座標陣列與中繼資料標籤,再將其改寫為符合 RFC 7946 規範的 JSON 圖徵集合,且不會失去座標精度。
作業系統與瀏覽器相容性
這兩種格式適用於 Windows、macOS、Linux、iOS 與 Android 等大多數現代作業系統。由於瀏覽器能原生解析 JSON,GeoJSON 可在 Chrome、Firefox、Safari 與 Edge 等大多數現代網頁瀏覽器中直接使用。Google KML 則需要 Google Earth 等專用桌面軟體,或 QGIS 等轉換工具才能正確算繪;網頁瀏覽器若沒有第三方解析函式庫,就無法原生顯示 KML 檔案。
實用資訊
轉換為 GeoJSON 之前,務必確認來源 KML 使用 WGS 84 地理座標,以避免網頁地圖出現空間位移錯誤。
常見問題
如何在不失真的情況下將 Google KML 轉為 GeoJSON?
就座標資料而言,這項轉換在數學上是無損的。這兩種格式都使用 WGS 84 空間參考系統儲存地理座標。不過,KML 中的特定樣式規則,例如自訂圖示 URL 與複雜的多邊形突出高度,在標準 GeoJSON 中可能沒有直接對應項目,因此可能需要手動重新建立。
Google KML 與 GeoJSON 有什麼差異?
Google KML 是專為地球瀏覽器設計的 XML 語言,採用階層式節點結構,支援豐富的樣式、相機視角與 3D 元素。GeoJSON 則是以 JSON 為基礎的輕量格式,針對網頁 API 與向量圖形最佳化,採用包含圖徵集合、幾何圖形與簡單屬性的扁平結構。