Shapefileビューア|地図表示 & GeoJSON変換

GIS・地理ツール

Shapefile を地図に描画し、GeoJSON(WGS84)に変換します。.prj が無いZIPでは測地系を選んでから、その測地系として描画・変換します。処理はすべてブラウザ内で行われます。

Shapefile・GeoJSON ガイド

Shapefileの構成ファイル

Shapefileは単一のファイルではなく、同じベース名で異なる拡張子を持つファイルの集合体です。各構成ファイルを理解することで変換の成功率が上がります。

拡張子必須/任意説明
.shp必須ジオメトリデータ(点・線・ポリゴン)
.shx必須ジオメトリの空間インデックス
.dbf必須属性データ(dBASE形式)
.prj任意座標系の定義。無い場合は測地系を選べます
.cpg任意文字コードの指定。無い場合は .dbf から判定します

変換について

ZIPを読み込み、GeoJSON(WGS84)に変換します。.dbf の属性は properties に保持し、文字コードは .cpg が無ければ .dbf のヘッダから判定します。座標系は .prj があればそこから再投影します。.prj が無い場合は測地系を選ぶラジオボタンが出ます。緯度経度で記録されたデータは世界測地系でも旧日本測地系でも値の見た目が同じで、自動では判別できないためです。国土数値情報のように .prj を含まない旧日本測地系のデータもあり、選択を誤ると数百メートルずれた位置に描画されます。

使い方のコツ

  • ZIPには .shp・.shx・.dbf の3つが必要です。いずれかが欠けていると読み込めません。
  • .prj があれば座標系を自動で判別します。無い場合は測地系を選ぶと、そこからWGS84に変換します。
  • .cpg が無いZIPでも、.dbf に記録された文字コードから判定します。日本のShapefileに多いShift_JISもそのまま読めます。
  • 複数のレイヤーを含むZIPでは、レイヤーごとにGeoJSONをダウンロードできます。

旧日本測地系とJGD — 位置が約464mずれる理由

国土数値情報などで配布されるShapefileには .prj が入っておらず、世界測地系ではなく旧日本測地系(Tokyo Datum / EPSG:4301)で記録されているものがあります。どちらも経度緯度の見た目は同じなので、座標値だけからソフトウェアが判別することはできません。しかし同じ数値でも東京都心では約464m離れた場所を指します。.prj が無いZIPを読み込むと測地系のセレクタが出るので、世界測地系(WGS84 / JGD2000 / JGD2011)を選べば座標をそのまま使い、旧日本測地系を選べばWGS84へ変換します。ファイル名の末尾が -tky のものは旧日本測地系である可能性が高い目印です。

ポリゴンの向き — Shapefile と GeoJSON で逆になる

Shapefile は外周を時計回り、穴を反時計回りとします。RFC 7946(GeoJSON)はその逆で、外周を反時計回り、穴を時計回りと定めています。変換しただけでは全ポリゴンが仕様違反になります。MapLibre や Leaflet は向きを見ずに描くため、地図の上では気づけません。問題になるのはデータを渡した先で、たとえば Elasticsearch の geo_shape は逆向きのポリゴンを日付変更線をまたぐものと解釈して分割します。このページでは RFC 7946 に揃えて出力します。なお d3-geo は Shapefile と同じ規約(外周が時計回り)を使うため、RFC 7946 に揃えたデータを渡すと裏返って描画されます。d3-geo に渡す前に向きを戻してください。

用語集

Shapefile
Shapefile(シェープファイル)は、ESRIによって開発された広く使用される地理空間ベクトルデータ形式です。.shp、.shx、.dbf、.prjなどの複数ファイルで構成され、ジオメトリ・空間インデックス・属性データ・座標系情報を表現します。ベクトルGISデータ交換のデファクトスタンダードです。
GeoJSON
GeoJSON(Geographic JavaScript Object Notation)は、地理空間データを表現するための軽量なデータ交換フォーマットです。JSON形式を基にしており、Point、LineString、Polygonなどのジオメトリ型をサポートします。RFC 7946で定義され、Webマッピングアプリケーションで広く利用されています。
WGS84(EPSG:4326)
WGS84(World Geodetic System 1984)はGPSの標準座標参照系です。楕円体モデル上で緯度と経度を定義します。EPSG:4326はWGS84の識別コードです。GeoJSONではすべての座標がWGS84であることが求められます。
旧日本測地系(Tokyo Datum)
2002年まで日本で使われていた測地系で、ベッセル楕円体を基準とします。同じ地点でも世界測地系とは緯度経度の値が異なり、位置にして数百メートルの差が出ます(東京都心で約464m)。現在はJGD2011などの世界測地系が使われますが、古いShapefileには旧日本測地系のものが残っています。値の範囲が世界測地系と同じため、.prjが無いと機械的には見分けられません。
EPSGコード
EPSGコードは座標参照系の数値識別子で、国際石油・ガス生産者協会によって管理されています。代表的なものにEPSG:4326(WGS84)、EPSG:3857(Webメルカトル)、EPSG:2451(JGD2000 日本第9系)などがあります。Shapefileの.prjファイルが使用する座標系を定義します。
dBASE(.dbf)
dBASEはShapefileが属性データの保存に使用するレガシーなデータベースファイル形式です。.dbfファイルには各地理フィーチャーに関連付けられた表形式のデータが含まれます。古い形式ですがShapefileの互換性に不可欠で、すべてのGISソフトウェアで読み取り可能です。

よくある質問

Q: ZIPにはどのファイルを入れればよいですか?
A: .shp、.shx、.dbf の3つが必要です。すべて同じベース名である必要があります。.prj(座標系)と .cpg(文字コード)は無くてもかまいません。.prj が無ければ測地系を選べますし、.cpg が無ければ .dbf に記録された文字コードから判定します。
Q: 座標系は自動変換されますか?
A: はい、ZIPに .prj ファイルが含まれていれば、座標は自動的にWGS84(EPSG:4326、GeoJSONの標準)に再投影されます。.prjが無い場合は自動では判別できないため、元データの測地系を選ぶラジオボタンが表示されます。世界測地系(WGS84 / JGD2000 / JGD2011)を選べば座標をそのまま使い、旧日本測地系(Tokyo Datum)を選べばWGS84へ再投影します。両者は緯度経度の値の見た目が同じで区別がつかない一方、位置は数百メートル違います(東京都心で約464m)。
Q: 大きなShapefileは変換できますか?
A: 38レイヤー・47,352フィーチャを含む国土数値情報のZIP(約1.7MB)で、変換から地図描画まで操作が止まらないことを確認しています。すべての処理はブラウザ上で行われるため実用的な上限はデバイスのメモリに依存し、極端に大きなデータでは開けないことがあります。
Q: SHPファイルをどうやって開くの?
A: Shapefileは単体では中身を確認できず、通常はGISソフトが必要です。このページではZIPにまとめた .shp / .shx / .dbf を選んで変換を押すだけで、地図上に描画されます。ソフトのインストールもログインも不要で、無料で使えます。ファイルはブラウザ内だけで処理され、サーバーには送信されません。
Q: QGISを入れずにShapefileを見られますか?
A: 見られます。中身を確認したい、他の人から受け取ったデータがどの範囲のものか知りたい、といった用途ならこのページで足ります。属性の編集や空間解析をしたい場合はQGISなどのGISソフトが必要です。

関連ツール & ゲーム