LoginSignup
4
5

More than 5 years have passed since last update.

緯度経度から都道府県(市区町村)名を取得するembulk-filter_reverse_geocodingプラグインを作りました。

Posted at

業務で使いたいシチュエーションがあったので週末を利用してembulkのfilterプラグインを作りました。
gemに登録して公開しましたのでせっかくだから紹介します。

embulk-filter_reverse_geocoding

URL: https://github.com/oqrusk/embulk-filter-reverse_geocoding

緯度経度(度分秒/世界測地系)から都道府県名、市区町村名、ジオハッシュ(5桁)を生成するフィルタープラグインです。

元となる緯度経度から5桁のジオハッシュを生成して住所データとマッチングしています。
住所データは@masuidriveさんのこちらの記事で紹介されていたものをお借りしました。
https://github.com/FrogAppsDev/jpcities

モチベーション

今回このプラグインを作ろうと思ったのはTableauで色塗りマップを使いたかったからです。

Tableauは都道府県名称や郵便番号の上3桁の文字列から色塗りマップを作ることが出来ます。

ただし、緯度経度をそのまま与えると点になってしまい色塗りマップにならないので緯度経度からリバースジオコーディングするプラグインを作りました。

使い方

input.csv
spot,lat,lon
六本木グランドタワー,35.6641222,139.729426
output.csv
spot,lat,lon,pref,city,hash
六本木グランドタワー,35.6641222,139.729426,東京都,東京都港区,xn76g
config.yml
filters:
  - type: reverse_geocoding
    target_lon: lon
    target_lat: lat
    output_columns:
      - {name: pref, type: string, out: pref}
      - {name: city, type: string, out: city}
      - {name: hash, type: string, out: hash}

target_lat/target_lonというオプションに緯度/経度それぞれのカラムを指定するとoutput_columnsの値を出力することができます。

今のところ生成出来る値は下記の3パターンです。

  • pref : 都道府県
    ex) 東京都
  • city : 都道府県 + 地区町村名
    ex) 東京都港区
  • hash : ジオハッシュ(5桁)
    ex) xn76g

緯度経度は世界測地系(WGS84)の度分秒形式のみ対応しています。
ミリ秒や測地系の変換はまた別のプラグインを作成中です。

最後に

開発にあたってたくさんの記事を参考にさせて頂きました。
ありがとうざいます。

・IntelliJIDEAでデバッグする方法
http://qiita.com/sonots/items/676a2903082fa8528ee5

・UnitTest(JUnit)の書き方
http://qiita.com/Civitaspo/items/c092620577983c9e84cc

・参考にさせていただいたコード
特にoutput schemaやテストコード
https://github.com/sonots/embulk-filter-column

特にPageOutput周り
https://github.com/kamatama41/embulk-filter-hash

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5