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に投入する。