2014年10月22日水曜日

2 - ol3ex 20b - WMTS example 2

WMTS データは、「独立行政法人 産業技術総合研究所(http://www.aist.go.jp/)」の「GSJ 地質調査総合センター(https://www.gsj.jp/HomePageJP.html)」の「地質情報配信サービス(https://gbank.gsj.jp/owscontents/)」の「20万分の1日本シームレス地質図 基本版(https://gbank.gsj.jp/seamless/tilemap/basic/WMTSCapabilities.xml)」を使用します。

「Webサイトでのご利用」に「OpenLayersでの利用例」があります。「OpenLayersでのWMTSサービス利用例 (実装例ソースコード)」は OpenLayers 2.x の例ですが、これを参考に ol3 に応用します。

「OpenLayersでのWMTSサービス利用例(https://gbank.gsj.jp/owscontents/ol_example.html#WMTS)」
実装例ソースコード(https://gbank.gsj.jp/owscontents/ol_example_wmts_html.txt)

「wmts.js(220-ol3ex.js)」は、地図を表示するのに必要な javascript です。
「220-ol3ex.js」
var projection = ol.proj.get('EPSG:3857');
// EPSG:900913 -> EPSG:3857 コード名変更(内容は同じ)
/** ol.proj.get(projectionLike)
 * Fetches a Projection object for the code specified.
 * 指定されたコードのプロジェクション·オブジェクトを取得
 * (ol3 API)
 */
var projectionExtent = projection.getExtent();
/** getExtent()
 * Get the validity extent for this projection.
 * この投影の有効範囲を取得。(ol3 API)
 */
var size = ol.extent.getWidth(projectionExtent) / 256;
/** ol.extent.getWidth(extent)
 * Return: Width.(ol3 API)
 */
var resolutions = new Array(14);
/** Array(arraylength)
 * JavaScript は配列を扱うことができます。配列とは順序を持つ複数
 * のデータの集合であり、JavaScript のグローバルオブジェクトであ 
 * る Array は、高位の、(C言語等で云うところの)「リスト」の様
 * な、配列のコンストラクタです。
 * arraylength
 * Array コンストラクタに渡される唯一の引数(arrayLength)に 0 
 * から 4,294,967,295( 232-1 ) までの整数値を指定する場合は、そ
 * の値を要素数とする配列が作成されます。その際に範囲外の値を指
 * 定した場合には、例外: RangeError がスローされます。
 * (MDN[https://developer.mozilla.org/ja/docs/Web/
 * JavaScript/Reference/Global_Objects/Array])
 */
var matrixIds = new Array(14);
for (var z = 0; z < 14; ++z) {
 // generate resolutions and matrixIds arrays for this WMTS
 // この WMTS の解像度と matrixIds 配列の生成。(ol3 API)
 resolutions[z] = size / Math.pow(2, z);
 /** Math.pow(base, exponent)
  * base を exponent 乗した値、つまり、base^exponent の値を返
  * します。
  * (MDN[https://developer.mozilla.org/ja/docs/Web/
  * JavaScript/Reference/Global_Objects/Math/pow])
  */
 matrixIds[z] = z;
}
var attribution = new ol.Attribution({
/** ol.Attribution
 * An attribution for a layer source.
 * レイヤソースの属性(ol3 API)
 */
/**
 * html: 'Tiles &copy; <a href="http://services.arcgisonline.com/arcgis/rest/' +
 * 'services/Demographics/USA_Population_Density/MapServer/">ArcGIS</a>'
 */
 html: 'Tiles &copy; 産総研地質調査総合センター 20万分の1日本シームレス地質図 (基本版) CC BY-ND'
});
var map = new ol.Map({
 layers: [
  new ol.layer.Tile({
  /** ol.layer.Tile 
   * For layer sources that provide pre-rendered, tiled 
   * images in grids that are organized by zoom levels for 
   * specific resolutions. 
   * プリレンダリング(事前描画)を提供するレイヤソースのための、
   * 特定の解像度でのズームレベルによって編成されているグリッドの
   * タイルイメージ。(ol3 API)
   */
   source: new ol.source.OSM(),
   /** ol.source.OSM 
    * Layer source for the OpenStreetMap tile server.
    * OpenStreetMap タイルサーバのレイヤソース。(ol3 API)
    */
   opacity: 0.7 // 透過度
  }),
  new ol.layer.Tile({
   opacity: 0.7,
   extent: projectionExtent, // 範囲
   source: new ol.source.WMTS({
   /** ol.source.WMTS
    * Layer source for tile data from WMTS servers.
    * WMTSサーバからタイルデータのレイヤソース。(ol3 API)
    */
    attributions: [attribution],
    /**
     * url: 'http://services.arcgisonline.com/arcgis/rest/' +
     * 'services/Demographics/USA_Population_Density/MapServer/WMTS/',
     */
    url: 'https://gbank.gsj.jp/seamless/tilemap/basic/glfn/{TileMatrix}/{TileRow}/{TileCol}.png',
    /** WMTSサービスのベースURLを設定します。
      * 標準形式のURLでない場合、URLのテンプレートを設定します。(地質調査総合センター)
      */
    // layer: '0', // The layer identifier.
    layer: 'glfn',
     /** ベースURLから取得するレイヤ名を設定します。
      * このサンプルでは、レイヤ名を固定的に持つURLテンプレートを
      * 設定しているため使用されることはありませんが、WMTS クラス
      * コンストラクタの必須パラメータなので省略できません。
      * (地質調査総合センター)
      */
    matrixSet: 'EPSG:3857',
    // EPSG:900913 -> EPSG:3857 コード名変更(内容は同じ)
    format: 'image/png',
    projection: projection,
    tileGrid: new ol.tilegrid.WMTS({
    /** ol.tilegrid.WMTS
     * Set the grid pattern for sources accessing WMTS tiled-image servers.
     * WMTSタイル画像サーバにアクセスするソースのグリッドパターンを設定(ol3 API)
     */
     origin: ol.extent.getTopLeft(projectionExtent),
     /** ol.extent.getTopLeft
      * Return: Top left coordinate.
      */
     resolutions: resolutions,
     matrixIds: matrixIds
     /** matrixIds
      * matrix IDs. The length of this array needs to match 
      * the length of 
      * the resolutions array.
      * 行列のID。この配列の長さは、解像度配列の数と一致する必要
      * があります。
      * (ol3 API[説明は Stable Only のチェックを外すと表示])
      */
    }),
    style: 'default',
    requestEncoding: "REST"
     /** リクエスト形式が REST か KVP を設定します。
      * 省略するとデフォルトの KVP が適用されます。
      * (地質調査総合センター)
      */
   })
  })
 ],
 target: 'map',
 controls: ol.control.defaults({
 /** controls
  * Controls initially added to the map. 
  * If not specified, ol.control.defaults() is used.
  * 初期設定で、マップに追加されたコントロール。
  * 明示されていなければ、ol.control.defaults() が使用されます。
  * (ol3 API)
  */
 /** ol.control.defaults()
  * デフォルトでは、マップに含まコントロールのセット。
  * 特に設定しない限り、これは、以下の各コントロールの
  * インスタンスを含むコレクションを返します。(ol3 API)
  * ol.control.Zoom, ol.control.Rotate, ol.control.Attribution
  */
  attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
  /** @type 
   * 値のタイプ(型)の説明 - 式などで表示
   * (@use JSDoc[http://usejsdoc.org/]より)
   * attributionOptions の値の型は、
   * olx.control.AttributionOptions の型を使用。
    */
   collapsible: false // 折りたたみ
  })
 }),
& view: new ol.View({
  // center: [-11158582, 4813697],
  center: [15500000,4210000],
  // デフォルトの中心座標を指定しています。(地質調査総合センター)
  //  zoom: 4
  zoom: 6
 })
});

0 件のコメント: