TerraMap API の使い方
TerraMap APIは、エリアマーケティングデータ(統計データ、ポリゴン、住所)を自社で用意せずに自社システムに組み込みたい方向けの地図システム開発支援Web APIです。
と言われてもどんなものか想像しにくいと思います。
何ができるの?使ったらいいことあるの?どうやって使うの?など、このページではリクエストやレスポンス例を紹介しながら、TerraMap APIの使い方をご紹介していきます。
TerraMap APIを使ってどんなことができるか、どんなメリットがあるかご理解いただければ幸いです。
TerraMap APIでは何ができるの?
ポスティングなどの地図を使った見積もり依頼システムを例にご紹介します。
地図を使った見積もり依頼システムでは、Google Mapなどの地図上に配布エリアのポリゴンを描画したり、配布数に応じた配布料金を表示したりする機能が求められる場合があります。
TerraMap APIを使用すると、指定範囲に含まれるポリゴンや住所、統計データなどを取得することができます。TerraMap APIから取得したポリゴンや住所などのデータは簡単に地図に表示することができます。また、取得したエリアの情報とお手持ちの配布数データなどを紐付けることで見積もり機能を実現することができます。
TerraMap APIを使うメリットは?
- 開発工数の削減
- TerraMap APIを利用すると、ポリゴンデータや統計データなどを自社で用意や整備する必要がなくなります。そのため、システム開発のコスト削減や開発期間の短縮を大幅に図ることができます。
- ポリゴン、統計データのメンテナンスが不要に
- 毎年の市区町村合併や新設、変更された住所にも対応しているため、ポリゴンや住所データ、統計データなど最新の状態でご利用いただけます。
TerraMap APIをご活用いただくことで、地図を使ったシステムが少ない手間で楽に構築することができます。
開発会社様から頂いたTerraMap APIの評価
合同会社107社
- そもそも毎年最新にメンテナンスされるポリゴンや、各種推計データがなければ顧客が満足するシステムの構築は難しかった。
- オフショア開発をしているので、ドキュメントだけではなく、APIのエンドポイントで取得可能なデータ一覧などがわかるのはエンジニア向けだと感じた。
- 他社のAPIと比較しても反応速度が早い。サーバー側が最大限チューニングされていると感じた。
- サポートの対応も良く、開発をスムーズに進めることができた。
合同会社107社
受託開発 とくにインドネシアおよびインドの若い人材のプールと日本の企業とを結びつけることに自社の役割を感じており、複数の国々をまたぎプロジェクトを進行するノウハウを蓄積しています。将来的には現地で案件を受託する方向も視野にいれています。
株式会社マーキュリー
- 過去に町丁目データの整備を行ったことがあり大変だったが、TerraMap APIを利用することでデータ整備の開発工数を減らすことができた。
- 開発工数だけではなく将来的な保守工数が削減できるのが大きい。今後TerraMap APIでデータのメンテナンスが行われる度にありがたみがわかってくると思う。
- レスポンス速度も想定より良く驚いている。
- ドキュメントもわかりやすく他のAPIと比較しても問題なく利用できて使いやすかった。
株式会社マーキュリー
株式会社マーキュリーは、1991年の創業以来「不動産ビッグデータ」を武器に、事業を展開してきました。
近年は、従来のビッグデータに新しくAI等のテクノロジーを用い、不動産情報プラットフォームの提供を行っております。
お取引先企業様に高品質なサービスを提供し、「選択に、確信を。」という想いのもと、更なる顧客満足と事業の拡大を目指し、リアルテックイノベーター(不動産業界の革新者)として不動産ビジネスに関わる、あらゆるステークホルダーの最良の選択の為に「確信」を届けてまいります。
株式会社マップル
- 他のAPIだと必要なレスポンスを得るまでに多数のAPIを呼び出す必要がある場合が多いのに対して、TerraMap API では要件を実現するために必要な機能がシンプルにまとめられていて、地図に表示するまでの手順が少なく、スムーズに進めることができました。
- ドキュメントが膨大な量ではなく、各APIともシンプルに記載いただいており速やかに理解できました。また、サポートについても迅速な対応をいただきました。
- 他のAPIと比較して、誤ったリクエストを送ってしまった際のエラーコードの粒度が細かく、問題の切り分けが楽でした。
株式会社マップル
株式会社マップルは、昭文社ホールディングスのグループ企業として、主にデジタル地図データや観光情報データの制作と提供を行っています。また、地図配信サービスや地図ソフトなどのシステム製品も開発・提供しており、近年では、QRコードを活用した認知症の方や迷子の発見、見守りサービス「おかえりQR」や訪日観光客向けメディア「DiGJAPAN!」の運営、AIを活用した製品などもリリースし、様々な分野での事業展開を図っています。創業当初からの主軸である全国の地図情報データとノウハウ、知見をベースに、常にチャレンジ精神をもって<世の中にプラスアルファの価値>を創出することで、社会課題の解決や企業の発展に貢献してまいります。
株式会社イーグリッド
- ドキュメントが開発者目線で書かれており、非常に良く出来ていた。結果として開発準備期間における学習コストを削減することが出来た。まるで前から使っているAPIのように違和感なく自然に使うことが出来ました。
- 今回構築したシステムは、位置情報管理システムにおいて町丁目ポリゴンを使用することが要件であり、これを配信する仕組みを一から作り上げることは予算的に困難でした。TerraMap APIを利用することで、コストとリソースを大幅に削減することができました。
- TerraMap API でのポリゴン取得についてはレスポンスタイムも早く、気になるような遅延はありませんでした。
株式会社イーグリッド
株式会社イーグリッドは、島根と東京に拠点を置くシステム開発会社です。Webシステム・アプリの請負開発、Webサイト制作/Webマーケティング、ニアショア・オフショア開発等の業務を行っています。顧客管理・売り上げ管理・営業支援システム(CRM/SFA)、車(カーテレマティスクス)や人の位置情報システムなどの開発を得意としており、上流工程から下流工程まで請け負っています。
ウェーブオン株式会社
- 自社では、顧客からShape ファイルを預かりポリゴンに変換するツールを持っているが、TerraMap APIでポリゴンを取得するほうが工数削減が出来る。仮に、自前でポリゴンや統計データを準備してAPIを準備するのであれば、それだけで12人月以上かかると思います。
- 統計情報を集計したい範囲をポリゴン、円など様々な形式で指定できるのがよいと思います。必要なパラメータを付与してTerraMap APIを呼ぶだけで済むため、複雑な処理を実装する必要がない点とか、受け取った値の処理も記述例があったのでわかりやすかったです。
- ドキュメントにリクエストとレスポンスの具体例が記載されており、すんなりと開発に入ることが出来ました。また、TerraMap API が使いやすかったので実装がスムーズに進みました。REST API を知っている開発者であればすぐに使えるのではないかと思います。特に地図情報システムに慣れている開発者には使いやすいのではないかと思います。ポリゴンのことなど少し知識がある開発者であれば理解するのもはやいと思います。地図に慣れてない開発者には、サンプルを提供すれば抵抗なく開発に入れると思います。
ウェーブオン株式会社
ウェーブオン株式会社様は、“スマートフォン/モバイル/Webシステム開発”、“ナビゲーションシステム開発”、“位置情報/地図情報システム開発”、この3つの事業を柱としておられます。中でも“位置情報/地図情報システム開発”における、位置情報(車両管理・動態管理等のGPSを利用したサービスやシステム)、地図情報(地理空間情報システム)のソリューション開発を得意としておられます。
各種APIの利用例
お客様システムがWebアプリケーションの場合のイメージ図です。お客様システムのサーバーからTerraMap APIにリクエストしてご利用いただきます。
以下に各APIエンドポイントの利用例を示していきます。
※サンプルのため、以下のリクエスト例にあるTerraMap APIのドメインはダミーとなっております。
レイヤー一覧取得API
# リクエスト例 レイヤー一覧を取得 # URLはダミーです。 curl -H 'X-API-KEY:your_api_key' https://tmapi.example.jp/api/layers
# レスポンス例(一部抜粋) { "layers": [ { "id": "00104", "name": "町丁目", "versions": [ "202001" ], "type_id": "001", "type_name": "行政界", …
統計データ一覧取得API
# リクエスト例 統計データ一覧を取得 # URLはダミーです。 curl -H 'X-API-KEY:your_api_key' https://tmapi.example.jp/api/stats?layer_id=00104
# レスポンス例(一部抜粋) { "stats": [ { "stat_id": "001011500", "layer_id": "00104", "layer_version": "202001", "stat_name": "国勢調査2015その1", "stat_items": [ { "category_id": 5, "item_id": 1, "item_name": "人口総数15", "item_unit": "人", …
エリア取得API
地図上にポリゴンや住所などを表示させたい場合にご活用いただけます。ジオメトリ情報が含まれる場合はGeoJSON形式でレスポンスされるため、地図ライブラリに渡すだけでポリゴンが表示可能です。
# リクエスト例 エリア情報を取得 # URLはダミーです。 curl -X POST -H 'X-API-KEY:your_api_key' -H 'Content-Type: application/json' -d '{"layer_id": "00104", "area_type": "circle", "center_lat": 35.681236, "center_lng": 139.767125, "radius": [500], "output": "polygon,point"}' https://tmapi.example.jp/api/area
# レスポンス例(一部抜粋) { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 139.76573633146, 35.6846769654978 ], [ 139.766366290318, 35.6845469969259 ], …
TerraMap APIから取得したエリア情報をOpenStreetMapに表示してみる
例1~3ではTerraMap APIへのリクエストとレスポンスを見てきました。
例4はTerraMap APIのエリア取得APIからのレスポンスとしてを受け取ったGeoJSONをOpenLayersを使用してOpenStreetMap上に表示するサンプルです。
JavaScriptの地図ライブラリを使用してTerraMap APIのポリゴンなどをWebブラウザに表示させる場合は、JavaScriptから直接TerraMap APIにリクエストするのではなく、お客様システムのサーバーを通してリクエストしてください。
import {Map, View} from 'ol'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; import {fromLonLat} from 'ol/proj'; import VectorLayer from 'ol/layer/Vector'; import VectorSource from 'ol/source/Vector'; import GeoJSON from 'ol/format/GeoJSON'; import Style from 'ol/style/Style'; import Stroke from 'ol/style/Stroke'; import Fill from 'ol/style/Fill'; const styles = { 'MultiPolygon': new Style({ stroke: new Stroke({ color: 'rgba(0, 0, 255, 0.8)', width: 2 }), fill: new Fill({ color: 'rgba(0, 0, 255, 0.3)' }) }) }; const styleFunction = function(feature) { return styles[feature.getGeometry().getType()]; }; const vectorSource = new VectorSource({ //URLはダミーです。TerraMap APIにリクエストを送るサーバーサイドプログラムのURLを指定してください url: 'https://your_domain.example.jp/path/to/terramap_api_request_program', format: new GeoJSON() }); const vectorLayer = new VectorLayer({ source: vectorSource, style: styleFunction }); const map = new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }), vectorLayer ], view: new View({ center: fromLonLat([139.6596281, 35.6720557]), zoom: 15 }) });