GeoJSON (.geojson)
IETF 標準GeoJSONはWeb地図で広く使われますが、対応は異なります。GitHubの地図表示には制限があり、RFC 7946は経度、緯度の順を定めています。
GEOJSON を KML に変換
無料のブラウザ内 GEOJSON から KML へのコンバーター。お使いのデバイスでファイルを即座に変換します。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してGeoJSONファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してGeoJSONファイルを識別します:
16進数シグネチャ(オフセット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
技術仕様
| コンテナアーキテクチャ | 地理的なFeatures、FeatureCollections、Geometriesを表すRFC 7946準拠のJSON文書 |
| 圧縮 | 非圧縮テキスト(HTTP経由ではGzipまたはBrotliで容易に圧縮可能) |
| バイトエンディアン | UTF-8テキストストリーム |
| 色空間 | 該当なし(地理データ) |
| チャンネルと構造 | Points、MultiPoints、LineStrings、MultiLineStrings、Polygons、MultiPolygons、GeometryCollections、およびカスタムプロパティ |
| 最大寸法 | World Geodetic System 1984(WGS 84)の座標空間:経度(-180~+180)、緯度(-90~+90) |
| 透過性 | なし |
| ストリーミングとプログレッシブ | 改行区切りGeoJSON(GeoJSONL / GeoJSONSeq)により、数百万件のフィーチャーを連続ストリーミング可能 |
技術比較表:GeoJSONと競合製品
| 技術属性 | GeoJSON (現在) | KML | GPX | SHP |
|---|---|---|---|---|
| Webマッピングの採用 | Web GISで広く使われるデフォルト(100%) | Google Earthのデフォルト | GPSデバイスおよびフィットネスのデフォルト | デスクトップGISのレガシー標準 |
| 座標の順序 | [経度, 緯度] (X, Y) | 経度, 緯度, 高度 | 緯度, 経度 | X, Y座標 |
| 構文スタイル | 簡潔なJSONのキーと値 | 冗長なXMLタグ (<kml>) | 冗長なXMLタグ (<gpx>) | マルチファイルバイナリ (.shp, .shx, .dbf) |
| プロパティスキーマ | 任意のJSONプロパティオブジェクト | ExtendedDataスキーマタグ | 固定GPXスキーマタグ | dBase IV (.dbf) 固定列 |
一般的な破損モードと16進数リカバリガイド
マップ上のポイントが実際の場所ではなく、南極近くの海上に表示される。
根本原因: 座標配列内で緯度と経度の値が誤って入れ替わっていました。
復旧: File2File.app GeoJSONコンバーターを使用して座標位置 [lon, lat] を入れ替えます。
セキュリティ分析とパーサー攻撃ベクトル
GeoJSONプロパティには任意のユーザー入力が含まれる可能性があり、XSSを防ぐためにマップポップアップにレンダリングする前にサニタイズする必要があります。
既知の攻撃ベクター
- マップツールチップでレンダリングされるGeoJSONフィーチャプロパティ内のエスケープされていないHTMLを介したクロスサイトスクリプティング(XSS)。
- 深くネストされたGeometryCollectionまたは数百万の頂点を持つポリゴンを通じたサービス拒否(DoS)。
- リモートGeoJSONフィーチャの読み込みを通じたサーバーサイドリクエストフォージェリ(SSRF)。
防御的ベストプラクティス: マップのポップアップウィンドウに挿入する前に、すべてのプロパティのテキスト文字列をDOMPurifyでサニタイズします。
歴史的背景とマイルストーン
主なメリット
- ネイティブWeb標準:ブラウザのマッピングライブラリ(Mapbox GL JS、Leaflet)内のJavaScriptオブジェクトに直接マップされます。
- 人間が読めるJSON構造により、プログラムによる作成、フィルタリング、デバッグを簡単に行うことができます。
- 任意のプロパティスキーマ:人口、名前、速度、収益などのカスタムメタデータを幾何学的形状に直接アタッチできます。
技術的な制限とデメリット
- テキストの冗長性:浮動小数点座標を繰り返しのASCII数字として保存するため、バイナリのShapefileやFlatGeobufよりもファイルサイズが大きくなります。
- RFC 7946では[経度, 緯度]の順序が厳密に義務付けられており、「緯度/経度」に慣れている開発者をしばしば混乱させます。
- 数百万の頂点を持つ大きなポリゴンは、WebブラウザのDOM描画の速度低下を引き起こす可能性があります。
興味深い技術トリビア
- 公式のGeoJSON標準では、座標の順序を[経度, 緯度](X、Yのデカルト順)としており、これは人間が話す順序(「緯度, 経度」)とは正反対です。
- GeoJSONはWeb地図で広く使われますが、対応は異なります。GitHubの地図表示には制限があり、RFC 7946は経度、緯度の順を定めています。
- RFC 7946では、ポリゴンの境界リングが「右手の法則」に従う必要があり、外側のリングは反時計回りに巻く必要があると義務付けられています。
よくある技術的な質問
GeoJSONの座標が[緯度, 経度]ではなく[経度, 緯度]の順になっているのはなぜですか?
GeoJSONはWeb地図で広く使われますが、対応は異なります。GitHubの地図表示には制限があり、RFC 7946は経度、緯度の順を定めています。
KMLやShapefileをGeoJSONに変換するにはどうすればよいですか?
ブラウザ上でFile2File.appを直接使用して、Google EarthのKMLファイルやEsri Shapefileを数秒でWeb向けの整ったGeoJSONに変換できます。
GeoJSONとShapefileの違いは何ですか?
Shapefileは現在もデータ交換で広く使われ、GISソフトウェアでもサポートされています。ただし、複数ファイルで構成される点や属性の制限から、用途によってはGeoJSONやジオデータベースの方が適しています。
関連するGeoJSON変換ペア
GeoJSONのベクターデータをGoogle KMLに変換すると、軽量なJSON座標配列がGoogle EarthやGoogle Maps向けの構造化XMLドキュメントになります。
Google KMLファイルをGeoJSONに変換することで、階層型のXML地理データを、モダンなWebマップ向けの軽量なベクターJavaScript Object Notationへと変換します。
GeoJSONのベクターデータをGPXに変換すると、標準的な地理情報JSONオブジェクトが、実機のナビゲーション機器向けに最適化されたXMLベースの形式になります。