GeoJSONとは、JavaScript Object Notation(JSON)を基にした地理空間データ交換フォーマットです。様々な地理的データ構造をエンコードするためのフォーマットで複数のGISデータを扱う時に便利です。

GeoJSONのデータを用意するための方法をいくつか紹介します。

①QGISで作成する。
QGISで作成したデータを「名前をつけて保存」でGeoJSON形式で保存します。

Leaflet_007_02


②geojson.ioで作成する。
geojson.ioを利用するとWEB上でGeoJSONの作成が行えます。

Leaflet_007_03


③既存データを利用・変換する。
国土数値情報などの既存データを変換して利用する。
データ利用の際は利用条件を確認してください。


LeafletでGeoJSONでマーカー表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<script src="http://maps.google.com/maps/api/js?v=3.2&amp;sensor=false"></script>
<script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
<link href="stylesheet.css" rel="stylesheet" />

</head>

<body>

<div id="map"></div>

<script src="script.js"></script>

</body>

</html>


stylesheet.css


html, body {
width: 100%;
height: 100%;

}

#map {
width: 100%;
height: 100%;
}

.leaflet-map-pane {
z-index: 2 !important;
}

.leaflet-google-layer {
z-index: 1 !important;
}


script.js


var t_std = new L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
});

var t_pale = new L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
});

var t_ort = new L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
});

var o_std = new L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&amp;copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
});

var g_roadmap = new L.Google('ROADMAP');

var g_satellite = new L.Google('SATELLITE');

var g_hybrid = new L.Google('HYBRID');

var Map_b = {
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid,
};

var map = L.map('map', {
center: [35.6910766, 139.7350616],
zoom: 14,
layers: [t_pale]
});

L.control.scale({ maxWidth: 250, imperial: false }).addTo(map);

L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

var geojson_data = [{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.76712226867676, 35.68107370561057] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.70030307769775, 35.69045025639499] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.7512435913086, 35.707283453190406] } }] }
];

L.geoJson(geojson_data).addTo(map);


index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_007_01


表示させるオブジェクトの内容を変更したい場合:
var geojson_data~の部分の記述を変更します。


var geojson_data = [{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": { "id": 5 }, "geometry": { "type": "Point", "coordinates": [ 139.73025667682498, 35.684728657838271 ] } },{ "type": "Feature", "properties": { "id": 4 }, "geometry": { "type": "Point", "coordinates": [ 139.7404818862039, 35.630246376589362 ] } },{ "type": "Feature", "properties": { "id": 3 }, "geometry": { "type": "Point", "coordinates": [ 139.77705667359774, 35.713791961149241 ] } },{ "type": "Feature", "properties": { "id": 2 }, "geometry": { "type": "Point", "coordinates": [ 139.76722474150262, 35.68153424228494 ] } },{ "type": "Feature", "properties": { "id": 1 }, "geometry": { "type": "Point", "coordinates": [ 139.7001709646139,35.690318577295173 ] } }] }];





book


Q&A