rch850 の上澄み

技術的な話題とか、雑談とか。タイトルを上澄みに変えました @ 2020/09/02

Leaflet で都道府県の白地図

Leaflet って何?白地図が書けるってほんと?白地図のデータはどこから手に入れるの?ライセンスは?調べてみました!

Leaflet って何?

Leaflet はモバイルフレンドリーなインタラクティブマップのための JavaScript ライブラリです。

白地図が書けるってほんと?

Leaflet では GeoJSON 形式のデータを描画できます。つまり GeoJSON 形式の白地図さえ入手できれば白地図を書くことができます。

ITダッシュボードで表示されている地図は Leaflet で描画されていて、通常の地図画像のレイヤーに白地図のレイヤーが重なっています。

白地図のデータはどこから手に入れるの?

ITダッシュボードの白地図がそのまま使えるといいですね。

先ほどのページで Chrome の Developer Tools を開いて様子を見てみると、色々それらしい通信をしていることが見て取れます。どうやら都道府県の GeoJSON は https://www.itdashboard.go.jp/js/data/prefectures.geojson から取得しているようです。

それを使って白地図を描画するコードです。

<!doctype html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Learning Leaflet</title>
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
        integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
        crossorigin=""/>
    <style>
        #mapid { height: 360px; }
    </style>
</head>
<body>
    <div id="mapid"></div>
    <div>出典:<a href="https://www.itdashboard.go.jp">ITダッシュボード</a></div>

    <!-- Make sure you put this AFTER Leaflet's CSS -->
    <script src="https://unpkg.com/[email protected]/dist/leaflet.js"
        integrity="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og=="
        crossorigin=""></script>
    <script>
        let mymap = L.map('mapid').setView([36.29667, 137.61629], 5);
        fetch('https://www.itdashboard.go.jp/js/data/prefectures.geojson')
        .then(resp => resp.json())
        .then(json => {
            L.geoJSON(json).addTo(mymap);
        })
    </script>
</body>
</html>

ライセンスは?

こんな便利な白地図データ、使わない手はありませんね。気になるライセンスはどうなっているのでしょうか?

ITダッシュボードの利用規約によれば、出典の記載などのルールに従うことで自由に使うことができます。CC BY での利用もできます。

オチは?

先ほどまで見えていたITダッシュボードですが、2019-05-21 01:20:00 現在、503 Service Unavailable となってしまいました。

f:id:rch850:20190521012227p:plain

調子に乗りすぎたのでしょうか、たまたまでしょうか。たまたまであることを祈ります。

(10分後)

アクセスできるようになりました。たまたま落ちていたのでしょう。よかったよかった。