社内システム育成日記

デイサービスでの簡単なシステムをファイルメーカーで作成しています。備忘録を綴っていきます。

国土地理院API、ヒュべニの式を使って住所から距離を計算しました【FileMaker】

家から近いラーメン屋、コンビニ…など、距離順に情報を並べたい時があります。

距離を計算するためには、まず住所から緯度経度を求め、2つの緯度経度から距離を計算します。 平面だったら三平方の定理で簡単なのですが、地球は丸いのでちょっと複雑になります。

住所から緯度経度を求める

住所から緯度経度を求めるAPIはいくつかあります。 GoogleAPIでも良いのですが、クレジットカードを登録する必要があり、使いすぎたらお金がかかる仕様になっていて、ちょっと不安です。 そこでとっても良心的なサービス ”国土地理院API”です。

登録なしで利用できます。大量にアクセスするのはやめてくださいね、と注意書きがあります。 マスタ登録するたびにリクエストする、といった常識的な使い方をしていきます。

FileMakerではURLを挿入スクリプトでリクエストします。 返ってきた結果(JSON形式)をちょっと形を整えて、緯度フィールド、経度フィールドに値を入れます。 (結果に[]がついていたのでそれを取り除いたり)

ヒュベニの式を使う

f:id:hotspiringday:20210508164400p:plain

計算式を丸ごと載せてしまうとこんな感じです。 地球の丸みも考慮した計算ができるんですね!

ポータルとボタンバーを使うと、距離を出すためだけのテーブル(家とラーメン屋なら家IDとラーメン屋IDをもったテーブル)を作らずとも、近い距離のリストを表示することができます。 f:id:hotspiringday:20210409105353p:plain

ポータルのフィルタに計算式を入れることができるので、例えば15km圏内のリストを表示させることができます。

ただ、FileMakerのポータルのソートは、フィールドを指定しないとできないので、距離が近い順に並べようと思うと一度どこかフィールドに入れる必要があります。 (私はバーチャルリストを作って、ソートをかけました!)