INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

RでShape形式のファイルをGeoJSON形式に変換する

estrellita.hatenablog.com

の続き

参考にさせて頂いた総務省のデータを 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/

Shapeファイルから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に投入する。