火山ハザードマップデータベース
火山ハザードマップデータベースは
火山ハザードマップデータベース
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>