
【ジオコーディングの中身を解説】住所が指す場所ってどうやって特定してるの?
こんにちは!技術開発本部の吉岡です。
今回は当社のMarketAnalyzer®5をはじめとしたGIS(Geographic Information System:地図情報システム)の技術的な仕組みについてご紹介したいと思います。
タイトルの通り、GISにおいて住所がどのように扱われるのかを解説しますので最後までお付き合いいただければ幸いです。
GISで住所を扱う
みなさんは普段どのくらい住所に触れていますか?
郵便物が減り、キーワードで場所を探せる時代になったことで住所が持つ価値は減っているかもしれません。しかし店舗や顧客の位置情報を住所として管理しているケースはまだまだ多いかと思います。それをインポートして地図上にプロット表示し分析する...GIS(Geographic Information System:地図情報システム)を使っている方ならそういったことを当たり前にやっているのではないでしょうか。
ただ、よく考えるとここには一つの疑問があります。それは、住所は人間にしか読めないはずなのに、なんでGISには位置がわかるの?ということです。
今回はこの疑問について紐解いていきたいと思います。
住所を座標に変換するジオコーディング
住所はほぼ自然言語な文字列なので、当然(基本的には)人間にしか解読することができません。これをGISをはじめとするソフトウェアで扱うには、座標(緯度、経度)に変換する必要があります。この住所→座標の変換を我々の世界ではジオコーディング(geocoding)と呼んでいます。GISに住所を読み込んだ際にちゃんと地図上のその位置にプロットされるのは、内部でこのジオコーディングを行っているおかげなのです。
では、ジオコーディングは具体的にどのように行っているのでしょうか?ここから少し技術的な話をしつつ解説していきたいと思います。
ジオコーディングの基本的な流れは以下の通りです。
1.住所をレベルに分割する
2.マッチする地域をデータベースから探す
3.マッチングレベルと座標を決定する
1.住所をレベルに分割する
住所は都道府県、市区町村、番地などのようにいくつかの要素から構成されます。ジオコーディングではまず住所をこういった要素に分割します。
住所の要素は都道府県など左側にあるものほど粒度が大きく、番地など右側にあるものほど粒度が小さくなります。
このように「地域をどの程度細かく分割するのか」に関わるため、ジオコーディングの世界ではこれらの要素はレベルと呼ばれます。
例として、新宿にある弊社オフィスの住所をレベルに分割してみましょう。

※GISが機械的にこの分割を行う際はいろいろと工夫しているのですが、少しボリューミーになりすぎるのでここでは省略します...。
2.マッチする地域をデータベースから探す
レベルへの分割が終わったら、各レベルにマッチする地域をデータベースから探します。
このデータベースには地域とその座標の組み合わせがデータとして保存されており、そこから地域を探し当てることができれば座標が特定できるというわけです。
たとえば、都道府県レベルである「東京都」をデータベースから探してみましょう。

東京都のデータがありました。経度が139.6949436、緯度が35.6862217となっていますね。「東京都」という文字だけではGISは地図上のどの位置か判断できませんが、これで具体的な位置がわかるようになりました。
ただ、これで終わりではありません。
今わかったのはあくまで東京都という広い地域の座標ですが、今知りたいのはこの広大な東京都の中のもっと細かい、住居や商業施設やオフィスビルなどのはずです。
なので、ここからより小さいレベルでも同じことを繰り返していきます。
3.マッチングレベルと座標を決定する
さて、市区町村以降のより小さいレベルでも同じように座標を特定していった結果、番地までは特定することができました。

しかし、ここで問題発生です。
次のレベルである号をデータベースから見つけることができませんでした。
データベースが最新の地図を反映していなかったり、住所がデータベース上と異なる表記になっていたりするとこのようにマッチングに失敗することがしばしばあります。
実際にはこれらの問題を回避するために様々な工夫がなされるのですが、それでもマッチングの失敗はある程度起きてしまいます。
こうなった場合、精度として完璧ではないものの番地の座標を最終的なジオコーディング結果とします。また、この座標がどの程度の精度で元の住所の位置を表しているのかがわかるように、最後にマッチング成功したレベルも結果に含めます。
よって今回のジオコーディング結果は以下になります。

おわりに
さて、今回はGISが住所を座標に変換するリアルな流れをご紹介しましたがいかがでしたか?ここでの説明はかなり簡略化していますが、少しでも具体的なイメージをつかめていただけていたら嬉しいです。
「スキ!」ボタンのクリックもぜひお願いします!
それではまた次回もよろしくお願いします。
\無償提供キャンペーン中/
・店舗データや顧客データをジオコーディングにより地図上に可視化。各種分析が可能な商圏分析GIS:「MarketAnalyzer® 5」
\2週間無料トライアル可能/
・MarketAnalyzer® 5 のサテライト版。最短3クリックでどこでも商圏分析:「MarketAnalyzer® satellite」
その他、当社へのお問い合わせは こちら まで。
<執筆者プロフィール>
技術開発本部 吉岡
2022年より技研商事インターナショナルに入社。
C#メインでMarketAnalyzer®の開発全般を担当しています。
週末はだいたいロードバイクで山を駆け回っています。