RでShape形式のファイルをGeoJSON形式に変換する
の続き
参考にさせて頂いた総務省のデータを Elasticsearch にぶち込んで、緯度経度から市区町村の何丁目までを取り出す - Qiitaではオンラインツールを紹介しているが、約1900あるShapeファイルを手動でWebにアップするほうが面倒なのでRで変換する。
前回ダウンロードしたShape形式のファイルを解凍し次のようなフォルダ構成とした場合、以下のスクリプトを実行すると./geojson以下に変換されたJSONファイルが出力される。shapes.csvはリンク先にアップした。
./
|-- shp2geojson.R
|-- shapes.csv
|-- shapes/
| |-- A002005212010DDSWC01101
| | |-- h22ka01101.dbf
| | |-- h22ka01101.prj
| | |-- h22ka01101.shp
| | --- h22ka01101.shx
| |-- A002005212010DDSWC01102
| | |-- h22ka01101.dbf
| | |-- ...
--- geojson/
出力されるGEOJSON形式のファイルは以下のようになる。(整形済み)
{
"type": "FeatureCollection",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [
{
"type": "Feature",
"id": 0,
"properties": {
"KEN_NAME": "東京都",
"GST_NAME": "港区",
"CSS_NAME": null,
"MOJI": "元赤坂2丁目"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [ [ [
[ 139.72793985272736, 35.682592731238707 ],
[ 139.727958614236087, 35.682617781835681 ],
[ 139.728642613078136, 35.682545529454934 ],
(中略)
[ 139.72793985272736, 35.682592731238707 ]
] ] ]
}
},
{
"type": "Feature",
"id": 2,
(以下略)
次は最後にelasticsearchに投入する。