2023/04/17
事例
はじめに
僕たちは普段、スマートフォンの地図アプリを使って自分が気になるレストランの位置を検索し、休日の予定を立てたりする場面が多いと思います。何気なく行っているキーワードや住所を検索し、地図上に位置を表示させることを、地図業界の専門用語では「Geocoding」と呼びます。
このGeocoding機能が、最も身近な製品は恐らくGoogleが提供する「Googleマップ」ですが、本記事ではGoogleマップ以外にもこのGeocoding機能を提供することができる「Mapbox Search API」について、ご紹介したいと思います。
MapboxではGeocoding機能を提供するサービスは記事執筆時点(2023/03/29)では「Geocoding API」, 「Search API」という2種類のサービスがあります。
両者の差異は利用することができるデータやカバーする地域が異なり、それぞれ以下のような違いがあります。
Search APIではOpenStreetMapデータセットでは提供が難しかったような網羅性や精度などの点において、国内でも高いレベルの精度を提供しているゼンリン社のデータを用いることで、APIサービスとしての精度向上が図られ、日本国内向けにより特化された製品という位置づけです。
※Geocoding APIはOpenStreetMapをデータソースとしているため、Mapboxでは日本国内での利用を推奨しておりません。国内を対象としたジオコーディングについては、Search APIをご利用ください。
Search APIでは、現時点では大きく分けて5つの機能が提供されており、それぞれ以下のような名前の機能になります。
フォワードジオコーディングと呼ばれている機能は住所などのテキスト情報から、該当の緯度経度の位置情報を返却する機能であり、リバースジオコーディングと呼ばれている機能は、フォワードジオコーディングの逆で、緯度経度から住所などのテキスト情報を返却する機能です。
また、パーマネントジオコーディングと呼ばれる機能については、APIから得られる結果としては同様ですが、結果を自身のローカルドライブに保存することが認められている機能になります。パーマネントジオコーディング機能はMapboxのユニークな点で、一般的なWeb API形式でGeocoding機能を提供しているサービスでは、基本的に保存、つまりローカルキャッシュすることは規約上認められていない事が多いですが、パーマネントジオコーディング機能を利用することで、ローカルキャッシュといったユースケースにおいても、対応することができます。ただし、APIあたりの単価はパーマネント機能を用いることでやや増える点には注意です。
※ローカルドライブに保存できるのはMapboxとの契約期間中のみとなります。利用には申請が必要です。
サジェストジオコーディングとは、任意の文字列を入力することで、候補となるデータを返却する機能であり、例えば「新宿 カフェ」と入力をすることで、新宿付近のカフェをリストで返却する機能です。上記例のように、スペースを入れて検索することで「新宿」, 「カフェ」のあいまい検索結果を返却することが可能となり、親しみ慣れているGoogle検索の方法に似た形で、APIの結果を得ることができます。
実際に、Mapboxが提供するデモサイトで図のようにキーワード検索をすることができるので、ご興味があればお試しください。
引用:Mapbox Search API Playground, https://labs.mapbox.com/sbs-playground-japan
また、現時点ではまだ一般公開はされていませんが、前述の5機能に加えて、以下のような機能も開発中です。
カテゴリ機能とは、「カフェ」のようなカテゴリを用いた検索方法です。例えば、「ここから近くのカフェを見つけたい」といった機能を自身のアプリケーションに加えたいときに、本機能を使うことで「カフェ」カテゴリに入っているデータのリストを取得することができ、アプリケーションに表示することができます。
実際に、「カフェ」カテゴリに入っているデータとしては、スターバックスコーヒー、コメダ珈琲店などのカフェ形態の店舗の位置情報や名称、住所などを取得することが可能です。。
カテゴリ検索機能を実現するためには、住所情報のみではなく、POI(Point of Interest)データと呼ばれる、建物やランドマークの性質(i.e. 東京タワーやスターバックスコーヒー新宿店)を示すデータが必要でした。従来のSearch APIではそれらPOI情報を含んだ検索は未対応でしたが、本機能が実装されると共に、POI検索機能が追加されました。
カテゴリ検索が公開されることで、カフェやレストランなどの住所以外での検索方法も可能となり、ユーザーの様々なニーズに答えることができるようになります。更に便利なサービスとなるので、早く一般公開されることを期待したいですね。
Search APIは日本国内向け製品ですので、公式ドキュメントにおいても日本語で整備されています。
本記事で紹介していない機能もたくさんありますので、ご興味のある方は是非こちらのSearch API公式ドキュメントをご確認ください。
次に、前述したSearch API フォワードジオコーディングに焦点を当てて、実際に得られる検索結果の精度比較をしたいと思います。
ここでは、少し意地悪な検証として、全国的にも珍しい、カタカタが含まれている石川県羽咋市役所の住所を使って、Search APIの精度検証を実施してみたいと思います。
引用:Mapbox Search API Playground, https://labs.mapbox.com/sbs-playground-japan
引用:Mapbox Geocoding API Playground, https://docs.mapbox.com/playground/geocoding
引用:Google Maps Platform Geocoding API Overview, https://developers.google.com/maps/documentation/utils/geocoder
引用:地理院地図(電子国土Web), https://maps.gsi.go.jp/
検証で用いた「羽咋市役所」は、1枚目のMapbox Search APIの地図より、「凸形」の建物部分なのですが、それぞれの検証地図を確認してみると、Mapbox Search API(青丸), Google Geocoding API(赤ピン), 地理院地図(青フラッグ)については、多少のブレはあるものの、凡そ同様の位置に検索結果が表示されていることが確認できました。
残念ながら、Mapbox Geocoding APIについては、「石川県羽咋市」の代表点にピンが落ちており、羽咋市より先の住所「旭町ア200」については、どうやらHitしていないようでした。
Mapbox Search APIの結果は、市役所を示す建物形状の範囲内に検索結果がぴったり落ちており、十分な位置精度を持っていることが確認できます。
Google Geocoding APIは、市役所ではなく市役所の横の建物の上に検索結果が落ちており、一見すると精度がやや劣るように見えますが、改めて建物の内容を確認すると「羽咋市役所横体育館」という市営の体育館であり、市役所と同一の住所のようでした。
そのため、GoogleのAPIについても正解と言えるでしょう。
地理院地図については、上記2つと比較するとやや位置がずれており、若干の精度が落ちる結果となりました。
以上をまとめると、本検証結果においては以下のような結果となりました。
※本検証は、サンプル的に1箇所の住所を各種サービスで比較検証した結果であり、各サービス全体の精度を評価するものでは無いので、注意ください。
本投稿では、Mapbox Search APIの一部機能の紹介と、類似サービスとの比較を行い、Search APIの利便性や導入の利点をお伝えしました。
Openstreetmapデータなどの普及により、無料でGeocoding機能を提供するサービスは世の中にいくらか存在しますが、エンタープライズ利用としての精度を担保しようとすると、選択肢はぐっと少なくなってしまうことがあります。Mapbox Search APIでは、そういったニーズにおいても性能を発揮することができるサービスですので、ご興味のある方は弊社、国際航業のMapbox紹介ページより、是非お問い合わせください。
Posted by Mapbox engineering team 吉田魁人
このページをシェア