GIS - Shapefile を GeoJSON に変換!
Updated:
こんにちは。
地理情報データの業界標準である Shapefile を GeoJSON 形式に変換する方法についての記録です。
0. 前提条件
- Linux Mint 17.1(64bit) での作業を想定。
- 今回、Shapefile は国土交通省・国土数値情報を使用する。(参照「QGIS(Quantum GIS) - 国土交通省・国土数値情報からの地図表示!」)
- ポリゴン(地物)を都道府県単位で融合済み。(参照「QGIS(QuantumGIS) - 国土数値情報・ポリゴンの融合!」)
- 全都道府県分の Shapefile を1つ(ファイル名: “japan.shp”)に統合済み。(参照「GDAL/OGR - 国土数値情報の複数 Shapefile を結合!」)
- 変換には GDAL/OGR ライブラリの
ogr2ogr
コマンドを使用する。(インストール済みであること。 QGIS がインストールされていればインストールされている) (使用するogr2ogr
のバージョンは “1.11.1” を想定) - 元々国土交通省・国土数値情報には以下の属性情報が含まれていたが、
N03_001
… 都道府県名N03_002
… 支庁・振興局名N03_003
… 郡・政令市名N03_004
… 市区町村名N03_007
… 行政区域コード
- 今回、都道府県単位で地物融合した際に以下の属性に変更している。
PREF_CODE
… 都道府県コードPREF_NAME
… 都道府県名
1. GeoJSON について
GeoJSON を簡単に説明すると以下のとおり。
- JSON(JavaScript Object Notation) を用いて様々な空間データ(地理情報)構造をエンコードするためのフォーマット。
- サポートされている非空間属性は、ポイント(住所や座標)、ライン(道路や境界線)、 ポリゴン(国や地域等)等。
2. GeoJSON への変換
GUI ツール QGIS で別名保存時にデータ形式 “GeoJSON” を指定する方法もあるが、今回は以下のように ogr2ogr
コマンドを使用する。
(”shp” ファイルの他に “shx” ファイルも必要であることに留意。また、文字エンコードにも注意)
$ ogr2ogr -lco "ENCODING=UTF-8" -f geoJSON japan.geojson japan.shp
78MB ほどあった Shapefile から 175MB ほどの GeoJSON ファイルが生成された。
3. GeoJSON ファイルの内容確認
生成された GeoJSON ファイルの内容を確認してみる。(以下は可読性高めるため整形している)
File: japan.geojson
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"PREF_CODE": "01",
"PREF_NAME": "北海道"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[ 142.222578, 42.422366 ],
[ 142.222599, 42.422462 ],
:
===< 途中省略 >===
:
]
]
]
}
}
:
===< 途中省略 >===
:
]
}
参考サイト
実は GeoJSON データより TopoJSON データを使用したい事案があり、今回はその準備作業でした。
以上。
Comments