はじめに
国連のGeospatial HubのページがCarto tileで使用されているベクトルタイルの元データとなっているので、その元データからベクトルタイルを作成してみることにします。本当はデータが少し異なるようですが、ほとんど同じようなので今回は練習としてGeoHubのデータを扱います。Carto tileはこちらのページで見ることが出来ます。
shpファイルをダウンロードする
Geospatial Hubのページから、Dataのページに飛びます。その中から、「UN Geodata stylized」を選択します。さらにArcGISのページに行くことで、データがダウンロード出来ます。データが非常に簡略化されているため、サイズは小さく342KBしかありませんでした。
shpファイルの中身を確認する
ダウンロードしたshpファイルの中身をQGISで見てみます。shpファイルが8つありますが、使用するデータは以下の2つです。
・BNDL_stylized(BNDLはBoundary Lineのことだと思われます。)
・BNDA_stylized(BNDAはBoundary Areaのことだと思われます。)
Coordinate Reference System (CRS)を見てみると、「Eckert IV (world)_2」というものが使用されています。
調べてみたところ、ArcGIS では、Eckert IV 投影法が標準でサポートされているようですが、QGISでは標準でサポートされていないようでした。始めはQGISでうまく変換出来ないか色々と試していましたが、無理でした。ArcGISではうまくいったので、そのやり方を記載します。
shpファイルのCRSをArcMapで変更する
ArcMapを使用して、「Eckert IV (world)_2」から「WGS 1984(つまりEPSG:4326)」として、新しくshpファイルをエクスポートしました。作成したshpファイルを、QGISでレイヤ情報を表示してみると、CRSが「EPSG:4326 - WGS 84」となっていることが分かります。
shpファイルからベクトルタイルに変換する際の情報整理
後にスタイル付けをする際に必要になってくるので、この時点で整理しておきます。
レイヤ名 | ソース | Min Zoom | Max Zoom |
---|---|---|---|
bndl | BNDL_stylized4326.shp | 0 | 4 |
bnda | BNDA_stylized4326.shp | 0 | 4 |
shpファイルをGeoJSONファイルに変換する
次にCRSを変更したshpファイルをGeoJSONファイルに変換します。
ogr2ogr -f GeoJSON BNDL_stylized4326.geojson BNDL_stylized4326.shp
ogr2ogr -f GeoJSON BNDA_stylized4326.geojson BNDA_stylized4326.shp
QGISで作成したSHPファイル、GeoJSONファイルを表示したところ以下のようになりました。変換後も、正常に地図が表示されています。
GeoJSONファイルからベクトルタイルに変換する
次にGeoJSONファイルからtippecanoeを用いて、ベクトルタイルに変換します。
tippecanoe -e VTstylized --no-tile-compression --no-feature-limit --no-tile-size-limit --drop-rate=1 -Z0 -z4 -L bndl:BNDL_stylized4326.geojson -L bnda:BNDA_stylized4326.geojson
作成したベクトルタイルデータは、こちらのGithub Pagesで公開しています。アドレスは以下です。
https://k96mz.github.io/20240818CartoTileStylized/Data/VTstylized/{z}/{x}/{y}.pbf
まとめ
Geospatial Hubのshpファイルからベクトルタイルを作成しました。CRSの設定のところで、かなり時間を取られましたが、なんとかベクトルタイルを作成することが出来ました。次は作成したベクトルタイルを使用して、Carto Tileと同等の地図をMaplibre GL JSとMaputnikを用いて作成してみたいと思います。
Reference