行政界データ描画 TopoJSONファイル

MAP(地図)

 .shp ⇒ GeoJSON ⇒ TopoJSONの最後の部分。

スポンサーリンク

TopoJSONについて

 TopoJSONファイルはJSONファイルの一種。
 公式ページ(github.com/topojson/topojson)。

 エディタで開いてみると

  •  arcsという配列
  •  緯度・経度とは異なる数字

がズラズラと並んでいる。

  •  ポリゴンの隣接部分(重複部分)を簡素化
  •  相対座標で記録

することで、ファイルサイズが小さくなる、とのこと。

LeafletでTopoJSONファイル描画

 ちょっと邪道な感じもするが、R言語のleafletRパッケージを使って生成したHTMLを使わせてもらった。
 以下のleafletRでコロプレスでやったことと同じ。色塗り(色分け)の部分を省いただけ。

 R言語のleafletRパッケージで(自動)作成されたHTMLファイルの中の
 // styling
の部分を少しいじった。

 // stylingの中のfunction getValue(x) { }を削って、function style1(feature) { }の中で線の色 colorを変えた。

 -例1-
 イギリスの行政界データをオンライン地図 OpenStreetMapに上乗せ。

 イギリスの地図描画は以下のページへ(移した)。

 Leafletの
 map.fitBounds(group.getBounds())
で、自動的にサイズ調整して表示してくれる。これはいいなと思って世界の国々の地図次々描画。
  ※ leafletRで作成されたHTMLの中
    getBounds()で、groupの中の座標(緯度・経度)から四隅を取得してくれる

 -例2-以前作ったページから移した)

 やや重い感じもするが(mapshaperでSimplify15%のTopoJSON読み込み)、許容範囲ギリギリラインか。

LeafletでTopoJSON(leafletRで生成したソースコードを改変)   

TopoJSON v3

 TopoJSONはv2(version2)以降(現在はv3)、コマンドが変わってしまったので、v1からアップデートしていなかったが、
 Linuxをインストールしたついでにv3をインストールしてみた。

 conda環境が使えるので、ターミナルエミュレーターから 

conda install nodejs

でNode.jsをインストールした後、

npm install -g topojson

でインストール。

 TopoJSONプラグインは、以前は、

<script src="https://d3js.org/topojson.v1.min.js"></script>

といった具合に使っていたが、現在、公式ページでは、

<script src="https://unpkg.com/topojson@3"></script>

となっている。

 ※ JQueryも必要

 v1では

topojson -p NAME_1 -o gadm36_GBR_1.topojson gadm36_GBR_1.geojson

で変換できたが、v2以降は、

geo2topo -q 1e5 gadm36_GBR_1.geojson > gadm36_GBR_1.topojson

といった具合。

 -pで属性(列)を選んで残すことができない。

 ファイルサイズもv1の時ほど小さくならない。
 -q 1e4とか-q 1e3にすれば小さくなっていくが、
  ※ 1e5 = 100000、1e4 = 10000、1e3 = 1000
この-q quantization(量子化)のオプションが感覚的にいまいち分からなかった。
 mapshaperで簡素化できるからいいけど……。

 以下のページが詳しい。

TopoJSON v2, v3の使い方 -コマンドライン編-   

スポンサーリンク
ふシゼン
タイトルとURLをコピーしました