はじめに
世界中を3m x 3mの正方形に区切り、それぞれに単語3つを組み合わせた「地名」を新たにつける「What3Words」、砂漠地帯はもちろんのこと、大きな駅での待ち合わせにも使える便利なアプリケーションです。
what3words | Addressing the world
そんなWhat3Wordsをオープンソースプロジェクトにしたのが「WhatFreeWords」です。アイデアは同じ、世界中を一辺3mの正方形で区切り、40,000語の単語から割り当てます。もちろん、3つの単語から一意の位置情報も取得できます。
本記事ではそれをGo言語で利用した流れを掲載します。
Open-source geocoding for What3Words
利用手順
ライブラリインストール
go get でインストールをすべく、GOPATH
が設定済である必要があります。
設定されてなければ.bashrcに下記を入れてsourceコマンドで再読み込みを行えば
export GOPATH=/usr/local/go/dev
環境変数として読み込まれます。
$ echo $GOPATH /usr/local/go/dev
以下のコマンドでインストールができます。
$ go get -v whatfreewords.org/whatfreewords-go Fetching https://whatfreewords.org/whatfreewords-go?go-get=1 Parsing meta tags from https://whatfreewords.org/whatfreewords-go?go-get=1 (status code 200) get "whatfreewords.org/whatfreewords-go": found meta tag get.metaImport{Prefix:"whatfreewords.org/whatfreewords-go", VCS:"git", RepoRoot:"https://whatfreewords.org/whatfreewords-go.git"} at https://whatfreewords.org/whatfreewords-go?go-get=1 whatfreewords.org/whatfreewords-go (download) whatfreewords.org/whatfreewords-go
インストールしたパッケージ情報を確認すると以下のような構成です。--charset=C
は文字化け対策です。
$ tree --charset=C $GOPATH /usr/local/go/dev |-- pkg | `-- linux_amd64 | `-- whatfreewords.org | `-- whatfreewords-go.a `-- src `-- whatfreewords.org `-- whatfreewords-go |-- cmd | |-- whatfreewords | | `-- main.go | `-- whatfreewordsd | `-- main.go |-- example | `-- main.go |-- go.mod |-- LICENSE |-- math.go |-- README |-- regions.go |-- shuffling.go |-- whatfreewords.go `-- words.go
ライブラリ利用手順
サンプルコードです。
こちらを実行すると以下です。
$ go run whatfreewords_sample.go joyful.nail.harmonica
サンプルコードにもありますが以下で逆変換もできます。
lat, lon, err := whatfreewords.Words2LatLon("joyful.nail.harmonica") fmt.Printf("%.6f %.6f\n", lat, lon)
終わりに
アイデアとしては非常におもしろく、待ち合わせ場所を単語3つで正確に伝達できるのは今後スタンダードになる可能性を秘めています。そんなWhat3Wordsをフリーソフトとして利用できるので、興味がある方はサクッと動かしてみてください。
以上、ご参考になれば幸いです。