地図情報取得API:Bing
- 更新日 2024-10-21
概要
API名称
説明
本APIはNTTインフラネット株式会社の地図情報を取得する為のAPIです。 本APIの利用には、NTTインフラネット株式会社とのライセンス契約が必要となります。 ライセンス契約につきましては、下記の担当までお問い合わせください。
wagri-ml@nttinf.co.jp NTTインフラネット株式会社 Smart Infra推進部 GIS営業担当
データの更新頻度
カテゴリー
添付ファイル
ー
リクエスト
URL
https://api.wagri.net/API/Public/Map/Bing/{type}/{level}/{tilePositionY}/{tilePositionX}?key={key}
説明
Bing 形式の画像を取得します。
HTTPメソッド
パラメータ
URLデータ定義
Bing形式地図画像取得のパラメータ
名称 | 値 | 型 | 値の説明 |
---|---|---|---|
type | 地図種別。GEOSPACE 電子地図の場合はroad、航空写真の場合はaerial、衛星画像の場合はsatellite、ハイブリッドの場合はhybrid | string | Required |
level | 地図表示レベル。地図画像表示縮尺に応じたレベル | integer | Required |
tilePositionY | タイル画像Y方向位置。取得位置の緯度を、Y 方向位置に変換した値 | integer | Required |
tilePositionX | タイル画像X方向位置。取得位置の経度を、X 方向位置に変換した値 | integer | Required |
key | アクセス用一時キー。認証サービスより取得した本サービスアクセス用一時キー(認証サービスのレスポンスパラメータ 「authorizeKey」) | string | Required |
呼出例
ー
レスポンス
レイアウト
レスポンスデータ定義
level、tilePositionX、tilePositionY で指定した位置の地図画像を返します。 地図画像は、256×256ピクセル。GEOSPACE電子地図の場合はPNG8ビットで、それ以外はJPEG形式です。
レスポンス例
ー
ステータスコード
コード | 値 | 値の説明 |
---|---|---|
400 | Bad Request | リクエストが不正です。 |
401 | Unauthorized | 認証情報が不正です。 |
403 | Forbidden | リソースのアクセスが禁止されています。 |
500 | Internal Server Error | サーバー内部でエラーが発生しました。 |
サンプルソースコード
ソースコード
コード例 JavaScript
●index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GEOSPACE CLOUD WMTS at OpenLayers</title> <style> html, body { margin : 0; padding : 0; height : 100%; width : 100%; font-size : 80%; } #map { width : 100%; height : 100%; background-color : #DDDDDD; } </style> <script src="http://openlayers.org/api/OpenLayers.js"></script> <script src="http://code.jquery.com/jquery-1.7.min.js"></script> <script type="text/javascript" src="app.js"></script> </head> <body> <!-- 地図の表示 --> <div id="map"></div> </body> </html>
●app.js
var map; // Geospace CDS API キー格納 var authkey; // OpenLayers 初期化 var init = function() { $.getJSON( "http://CDS 認証&JSONP 返却用Web サービスURL?callback=?", null, function(data){ authkey = data.authorizeKey; map = new OpenLayers.Map({ div : "map", units : "m", projection : "EPSG:3857", displayProjection: new OpenLayers.Projection("EPSG:4326"), maxResolution : 78271.52, numZoomLevels : 19, maxExtent : new OpenLayers.Bounds( -20037508.34, -20037508.34, 20037508.34, 20037508.34), controls : [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.ScaleLine(), new OpenLayers.Control.MouseDefaults(), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.Attribution() ] }); mouseposition = new OpenLayers.Control.MousePosition(); map.addControl(mouseposition); // Geospace CDS 認可キー自動取得処理 var getAuthKey = function(){ $.getJSON( "http://CDS 認証&JSONP 返却用Web サービスURL?callback=?", null, function(d) { authkey = d.authorizeKey; } ); } // GEOSPACE CDS WMTS レイヤをセットします var getWmtsLayers = function(authKey) { var matrixIds = new Array(19); for (var i = 1; i <= 19; i++) { matrixIds[i - 1] = new Object(); matrixIds[i - 1].identifier = "" + i; } // CDS URL var geospaceUrl = "http://cds.geospace.jp/images/wmts"; // 電子地図 var road = new OpenLayers.Layer.WMTS({ name : "Road by WMTS", url : geospaceUrl, requestEncoding : "REST", layer : "road", matrixSet : "EPSG3857", format : "image/png", style : "default", matrixIds : matrixIds, isBaseLayer : true, dimensions : ["KEY"], params : {KEY: authkey}, transitionEffect : "resize", sphericalMercator: true, buffer : 1 }); // 航空写真 var aerial = new OpenLayers.Layer.WMTS({ name : "Aerial by WMTS", url : geospaceUrl, requestEncoding : "REST", layer : "aerial", matrixSet : "EPSG3857", format : "image/jpg", style : "default", matrixIds : matrixIds, dimensions : ["KEY"], params : {KEY: authkey}, transitionEffect : "resize", sphericalMercator: true, buffer : 1 }); // 衛星画像 var satellite = new OpenLayers.Layer.WMTS({ name : "Satellite by WMTS", url : geospaceUrl, requestEncoding : "REST", layer : "satellite", matrixSet : "EPSG3857", format : "image/jpg", style : "default", matrixIds : matrixIds, dimensions : ["KEY"], params : {KEY: authkey}, transitionEffect : "resize", sphericalMercator: true, buffer : 1 }); // ハイブリッド var hybrid = new OpenLayers.Layer.WMTS({ name : "Hybrid by WMTS", url : geospaceUrl, requestEncoding : "REST", layer : "hybrid", matrixSet : "EPSG3857", format : "image/jpg", style : "default", matrixIds : matrixIds, dimensions : ["KEY"], params : {KEY: authkey}, transitionEffect : "resize", sphericalMercator: true, buffer : 1 }); return [road, aerial, hybrid]; } // GEOSPACE CDS Bing レイヤをセットします var getBingLayers = function(authKey) { // CDS URL 及び基本パラメータ var geospaceUrl = "http://cds.geospace.jp/images/bing"; var bingParam = "${z}/${y}/${x}?key=" + authKey; // 電子地図 OpenLayers.Layer.GeospaceBingRoad = OpenLayers.Class(OpenLayers.Layer.XYZ, { name: "Road by Bing", sphericalMercator: true, url: geospaceUrl + '/road/' + bingParam, CLASS_NAME: "OpenLayers.Layer.GeospaceBingRoad" }); // 航空写真 OpenLayers.Layer.GeospaceBingAerial = OpenLayers.Class(OpenLayers.Layer.XYZ, { name: "Aerial by Bing", sphericalMercator: true, url: geospaceUrl + '/aerial/' + bingParam, CLASS_NAME: "OpenLayers.Layer.GeospaceBingAerial" }); // 衛星画像 OpenLayers.Layer.GeospaceBingSatellite = OpenLayers.Class(OpenLayers.Layer.XYZ, { name: "Satellite by Bing", sphericalMercator: true, url: geospaceUrl + '/satellite/' + bingParam, CLASS_NAME: "OpenLayers.Layer.GeospaceBingSatellite" }); // ハイブリッド OpenLayers.Layer.GeospaceBingHybrid = OpenLayers.Class(OpenLayers.Layer.XYZ, { name: "Hybrid by Bing", sphericalMercator: true, url: geospaceUrl + '/hybrid/' + bingParam, CLASS_NAME: "OpenLayers.Layer.GeospaceBingHybrid" }); var road = new OpenLayers.Layer.GeospaceBingRoad(); var aerial = new OpenLayers.Layer.GeospaceBingAerial(); var satellite = new OpenLayers.Layer.GeospaceBingSatellite(); var hybrid = new OpenLayers.Layer.GeospaceBingHybrid(); return [road, aerial, satellite, hybrid]; } // 処理の実施 $(document).ready(function(){ // OpenLayers 初期化処理 init(); // Geospace CDS 認可キー自動取得処理起動 setInterval(getAuthKey,360000); });
通常のWMTS との違いはdimensions/params を指定していることです。 OpenLayers では、WMTS のDimension をdimensions プロパティ、params プロパ ティの2 つで指定します。本サービスではdimension に認可キーをセットすることで REST 形式をサポートするようにしています。 なお、dimensions 配列の各項目を小文字から大文字に変換した上で使用するため、 dimensions とparams のキー項目(この場合は’KEY’)は双方大文字としてください。 dimensions とparams の2 つは「おまじない」と考えていただいた方が良いかもしれません。