KMLをGeoJSONに変換
Google KMLファイルをGeoJSONに変換することで、階層型のXML地理データを、モダンなWebマップ向けの軽量なベクターJavaScript Object Notationへと変換します。
フォーマットの比較と技術仕様
| 仕様 | KML | GEOJSON |
|---|---|---|
| MIMEタイプ | application/ | application/ |
| タイプ | 地理情報XML表記 | 地理ベクターJSON |
| 圧縮 | XMLテキスト(ZIP圧縮時はKMZ) | なし(JSONテキスト) |
| 標準仕様 | OGC KML 2.3 | IETF RFC 7946 |
| マジックバイトヘッダー | 3C 3F 78 6D 6C ... 3C 6B 6D 6C (<kml) | 7B 22 74 79 70 65 22 3A 20 22 ({"type": ") JSON header |
フォーマットの概要と用途
地理データは、デスクトップマッピングツールとWebアプリケーションの間で頻繁にやり取りされます。Google KMLはGoogle Earthで使用される標準フォーマットであり、XMLツリー内にポイント、ライン、ポリゴンを構造化します。MapboxやLeafletなどのモダンなWebブラウザやマッピングライブラリは、JavaScriptが使用するデータ構造とネイティブに一致するため、GeoJSONを好みます。開発者やGISアナリストは、専門的なデスクトップソフトウェアを必要とせずにWebページ上でマップオーバーレイを素早く読み込むために、KMLをGeoJSONに変換します。 Webアプリケーションは、大きなXMLドキュメントを解析するのと比較して、JSONを即座に処理します。ユーザーがWebマップを読み込む際、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フィーチャコレクションへと書き換えます。
OSとブラウザの互換性
両方のフォーマットは、Windows、macOS、Linux、iOS、Androidを含む多くの最新オペレーティングシステムで動作します。ブラウザがJSONをネイティブに解析するため、GeoJSONはChrome、Firefox、Safari、Edgeなどの多くの最新Webブラウザでネイティブに実行されます。Google KMLを適切に表示するには、Google Earthなどの専用デスクトップソフトウェアやQGISなどの変換ツールが必要です。Webブラウザでは、サードパーティの解析ライブラリなしにKMLファイルをネイティブ表示できません。
役立つ情報
Webマップ上の空間オフセットエラーを防ぐため、変換する前にソースのKMLがWGS 84地理座標を使用していることを常に確認してください。
よくある質問
品質を落とさずにGoogle KMLをGeoJSONに変換するにはどうすればよいですか?
座標データに対する変換は、数学的にロスレス(可逆)です。どちらのフォーマットも、WGS 84空間参照系を使用して地理座標を格納します。ただし、カスタムアイコンのURLや複雑なポリゴンの押し出し高さなど、KMLの特定のスタイルルールは、標準のGeoJSONに直接の同等物がない場合があり、手動での再作成が必要になることがあります。
Google KMLとGeoJSONの違いは何ですか?
Google KMLは、Earthブラウザ向けに設計されたXMLベースの言語であり、リッチなスタイリング、カメラビュー、3D要素をサポートする階層的なノード構造を備えています。GeoJSONは、JSON上に構築された軽量なフォーマットであり、Web APIやベクターグラフィックスに最適化されており、フィーチャコレクション、ジオメトリ、シンプルなプロパティを含むフラットな構造を持っています。