2016年5月31日火曜日

火山ハザードマップデータベース

火山ハザードマップデータベース
火山ハザードマップデータベースは

火山ハザードマップデータベース
http://vivaweb2.bosai.go.jp/v-hazard/

に、「1983年から現在に至るまでに日本で公表された活火山のハザードマップや防災マップを網羅的に収録したデータベースです。」とあります。
KML で火山配置図を配信しているのでマップに表示してみます。

「NIED 国立研究開発法人防災科学技術研究所(http://www.bosai.go.jp/)」の中段にある「データベ公開一覧」をクリックします。

「NIED | 研究紹介 | データベ公開一覧(http://www.bosai.go.jp/activity_special/data/)」の「火山災害関連」の「火山ハザードマップデータベース」をクリックします。

「火山ハザードマップデータベース(http://vivaweb2.bosai.go.jp/v-hazard/)」が表示されます。
火山ハザードマップデータベースを利用するときは、このページの「火山ハザードマップデータベースについて」を参照して下さい。

「火山ハザードマップを見る」の「火山分布図から探す」をクリックします。

「火山ハザードマップデータベース収録火山一覧 収録火山分布図 Web版(http://vivaweb2.bosai.go.jp/v-hazard/vmap.html)」の下の方にある「KML の配信」の「日本の火山ハザードマップ集第2版収録火山KML」をクリックします。

表示された KML ドキュメントを名前(v-hazard.kml)をつけて保存します。



Google Earth で表示される良いなっていますが、OpenLayers3 で表示してみます。Examples の「Earthquakes in KML」を参考にします。
<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>火山ハザードマップデータベース</title>
  <link rel="stylesheet" href="http://openlayers.org/en/v3.15.1/css/ol.css" type="text/css">
  <script src="http://openlayers.org/en/v3.15.1/build/ol.js"></script>

  <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <style>
   #map {
    position: relative;
   }
   #info {
    position: absolute;
    height: 1px;
    width: 1px;
    z-index: 100;
   }
  </style>
 </head>
 <body>
  <div id="map"><div id="info"></div></div>
  <script>
   var projection = ol.proj.get('EPSG:3857');
   /** ol.proj.get(projectionLike)
    * Fetches a Projection object for the code specified.
    * 指定されたコードのプロジェクション・オブジェクトを取得。
    * (ol3 API)
    */
   var raster = 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.XYZ({
    /** ol.source.XYZ
     * Layer source for tile data with URLs in a set XYZ 
     * format that are defined in a URL template. By 
     * default, this follows the widely-used Google grid 
     * where x 0 and y 0 are in the top left. Grids like 
     * TMS where x 0 and y 0 are in the bottom left can 
     * be used by using the {-y} placeholder in the URL 
     * template, so long as the source does not have a 
     * custom tile grid. In this case, ol.source.TileImage 
     * can be used with a tileUrlFunction such as:
     *
     * tileUrlFunction: function(coordinate) { 
     *  return 'http://mapserver.com/' 
     *  + coordinate[0] + '/' 
     *  + coordinate[1] + '/' 
     *  + coordinate[2] + '.png'; }
     * 
     * URL テンプレートで定義されているセット XYZ 形式の URL 
     * を持つタイルデータのレイヤソース。デフォルトでは、これは、
     * x0 と y0 が左上にある広く使用されている Google のグリッ
     * ドに従います。x0 と y0 が左下にある TMS のようなグリッド
     * は、ソースがカスタムタイルグリッドを持っていない限り、URL 
     * テンプレートに {-y} プレースホルダを使用して使用すること
     * ができます。この場合、ol.source.TileImage は 
     * tileUrlFunction で次のように使用できます。(ol3 API)
     */
     attributions: [
      new ol.Attribution({
      /** ol.Attribution
       * An attribution for a layer source.
       * レイヤソースの属性(ol3 API)
       */
       html: "<a href='http://maps.gsi.go.jp/development/ichiran.html' 
             target='_blank'>地理院タイル</a>"
      })
     ],
     url: "http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png",
     /** url
      * URL template. Must include {x}, {y} or {-y}, and 
      * {z} placeholders. A {?-?} template pattern, for 
      * example subdomain{a-f}.domain.com, may be used 
      * instead of defining each one separately in the 
      * urls option.
      * URLテンプレート。 {x}、{y} または {-y}、と {z} プレース
      * ホルダを含める必要があります。例えば 
      * subdomain{a-f}.domain.com の {?-?} テンプレートパター
      * ンは、urls オプションでそれぞれを個別に定義する代わりに、
      * 使用することができます。(ol3 API)
      */
     projection: "EPSG:3857"
    })
   });
   var vector = new ol.layer.Vector({
   /** ol.layer.Vector
    * Vector data that is rendered client-side.
    * クライアント側で描画されるベクタデータ。(ol3 API)
    */
    source: new ol.source.Vector({
    /** ol.source.Vector
     * Provides a source of features for vector layers. 
     * Vector features provided by this source are 
     * suitable for editing. See ol.source.VectorTile for 
     * vector data that is optimized for rendering.
     * ベクタレイヤのフィーチャのソースを用意します。このソース
     * が提供するベクタフィーチャは、編集に適しています。レンダ
     * リングのために最適化されたベクタデータの 
     * ol.source.VectorTile を参照してください。(ol3 API)
     */
     url: 'data/kml/v-hazard.kml',
     /** url:
      * Setting this option instructs the source to use an 
      * XHR loader (see ol.featureloader.xhr). Use a 
      * string and an ol.loadingstrategy.all for a one-off 
      * download of all features from the given URL. Use a 
      * ol.FeatureUrlFunction to generate the url with 
      * other loading strategies. Requires format to be 
      * set as well. When default XHR feature loader is 
      * provided, the features will be transformed from 
      * the data projection to the view projection during 
      * parsing. If your remote data source does not 
      * advertise its projection properly, this 
      * transformation will be incorrect. For some formats, 
      * the default projection (usually EPSG:4326) can be 
      * overridden by setting the defaultDataProjection 
      * constructor option on the format.
      * このオプションを設定することは、XHR ローダーを使用する
      * ソースを指示します(ol.featureloader.xhr 参照)。指
      * 定された URL からすべてのフィーチャの一回限りのダウン
      * ロードのために文字列とol.loadingstrategy.all を使用
      * してください。他のロードストラテジと URL を生成するため
      * に ol.FeatureURLFunction を使用してください。フォー
      * マットも同様に設定する必要があります。デフォルトの XHR 
      * フィーチャローダが提供される場合、フィーチャは解析中に
      * データ投影からビュー投影へ変換されます。リモート・データ
      * ・ソースが適切に投影をアドバタイズしていない場合、この変
      * 換は不正確になります。いくつかのフォーマットについては、
      * デフォルトの投影(通常はEPSG:4326)は、フォーマットの 
      * defaultDataProjection コンストラクタオプションを設
      * 定することで上書きすることができます。
      * (ol3 API[説明は Stable Only のチェックを外すと表示])
      */
     format: new ol.format.KML()
     /** format:
      * The feature format used by the XHR feature loader 
      * when url is set. Required if url is set, otherwise 
      * ignored. Default is undefined.
      * URL が設定されている場合に XHR フィーチャローダによって
      * 使用されるフィーチャフォーマット。 URLが設定されている場
      * 合は必要です、それ以外の場合は無視されます。デフォルトは
      * 未定義です。
      * (ol3 API[説明は Stable Only のチェックを外すと表示])
      */
     /** ol.format.KML 
      * Feature format for reading and writing data in the 
      * KML format.
      * KML フォーマットでデータを読み書きするためのフィーチャ
      * のフォーマット。(ol3 API)
      */
    })
   });
   var map = new ol.Map({
    layers: [raster, vector],
    target: 'map',
    view: new ol.View({
     center: ol.proj.transform([138.7313889, 35.3622222], "EPSG:4326", "EPSG:3857"),
     projection: projection,
     maxZoom: 18,
     zoom: 5
    })
   });
   var info = $('#info');
   info.popover({
   /** Popovers popover.js
    * Add small overlays of content, like those on the iPad, 
    * to any element for housing secondary information. 
    * Popovers whose both title and content are zero-length 
    * are never displayed.
    * コンテンツの小さなオーバーレイを、iPad上のもののように、
    * ハウジング二次情報のための要素に追加します。
    * タイトルと内容の両方が zero-length(の文字列)である 
    * Popover は、表示されません。
    * (Bootstrap[http://getbootstrap.com/javascript/
    * #popovers])
    */
    animation: false,
    /** animation
     * Apply a CSS fade transition to the popover.
     * popover に CSS fade transition を適用します。
   * (Bootstrap[http://getbootstrap.com/javascript/
    * #popovers])
     */
    trigger: 'manual',
    /** trigger
     * How popover is triggered - click | hover | focus | 
     * manual. You may pass multiple triggers; separate 
     * them with a space. manual cannot be combined with 
     * any other trigger.
     * popover がトリガーされる方法 - click | hover | focus | 
     * manual。それらをスペースで区切り複数のトリガーを通すこと
     * ができます。manual は、他のどのトリガーとも組み合わせるこ
     * とができません。
   * (Bootstrap[http://getbootstrap.com/javascript/
    * #popovers])
     */
    html: true
    /** html
     * Insert HTML into the popover. If false, jQuery's text 
     * method will be used to insert content into the DOM. 
     * Use text if you're worried about XSS attacks.
     * popover に HTML を挿入します。false なら、jQuery の text
     * メソッドが DOM にコンテンツを挿入するために使用されます。
     * XSS 攻撃が心配されるなら、text を使用してください。
   * (Bootstrap[http://getbootstrap.com/javascript/
    * #popovers])
     */
   });
   var displayFeatureInfo = function(pixel) {
    info.css({
    /** .css()
     * Get the computed style properties for the first 
     * element in the set of matched elements.
     * マッチした要素のセットの最初の要素の計算されたスタイルプロ
     * パティを取得します。
     * (jQuery[http://api.jquery.com/css/])
     */ 
     left: pixel[0] + 'px',
     top: (pixel[1] - 15) + 'px'
    });
    var feature = map.forEachFeatureAtPixel(pixel, function(feature) {
  /** forEachFeatureAtPixel(pixel, callback, opt_this, 
    * opt_layerFilter, opt_this2)
    * Detect features that intersect a pixel on the viewport, 
    * and execute a callback with each intersecting feature. 
    * Layers included in the detection can be configured 
    * through opt_layerFilter. 
     * ビューポート上のピクセルと交差するフィーチャを検出し、互
     * いに交差するフィーチャと共にコールバックを実行します。
     * 検出に含まれるレイヤが opt_layerFilter を通じて設定する
     * ことができます。(ol3 API)
     */
     return feature;
    });
    if (feature) {
     info.popover('hide')
      /** .popover('hide')
       * Hides an element's popover. Returns to the caller 
       * before the popover has actually been hidden (i.e. 
       * before the hidden.bs.popover event occurs). This is 
       * considered a "manual" triggering of the popover.
       * エレメントの popover を非表示にします。popover が実際
       * に非表示にされる前(すなわち、hidden.bs.popover イベ
       * ントが発生する前)に、caller へ返します。
     * (Bootstrap[http://getbootstrap.com/javascript/
      * #popovers])
       */
         .attr('data-original-title', feature.get('name'))
         /** .attr()
          * Get the value of an attribute for the first 
        * element in the set of matched elements or set 
        * one or more attributes for every matched element.
          * マッチした要素のセットの最初の要素の属性の値を取得す
          * るか、すべての一致した要素の1つ以上の属性を設定しま
          * す。(jQuery[http://api.jquery.com/attr/])
          */
         /** get()
          * Gets a value.
          * (ol3 API)
          */
         .attr('data-content', feature.get('description'))
         .popover('show');
         /** .popover('show')
          * Reveals an element's popover. Returns to the 
          * caller before the popover has actually been 
          * shown (i.e. before the shown.bs.popover event 
          * occurs). This is considered a "manual" 
          * triggering of the popover. Popover with 
          * zero-length titles are never displayed.
          * 要素の popover を表示します。popover が実際に表示さ
          * れる前(すなわち、shown.bs.popoverイベントが発生す
          * る前)に、caller へ返します。これは、popover のト
          * リガ(trigger)が manual とみなされます。title と 
          * conent が zero-length の popover は決して表示され
          * ません。
        * (Bootstrap[http://getbootstrap.com/javascript/
         * #popovers])
          */
    } else {
     info.popover('hide');
    }
   };
   map.on('click', function(evt) {
   /** on
    * Listen for a certain type of event.
    * あるタイプのイベントをリッスンします。(ol3 API)
    */
    displayFeatureInfo(map.getEventPixel(evt.originalEvent));
    /** getEventPixel
     * Returns the map pixel position for a browser event.
     * ブラウザイベントに対して、マップのピクセル位置を返します。
     * (ol3 API)
     */
   });
  </script>
 </body>
</html>


0 件のコメント: