ベクトルタイルのgh-pagesへのデプロイ

ベクトルタイルのgh-pagesへのデプロイ(vtで作業)

スタイルファイルのデザインとmbtilesが完成したら、いよいよベクトルタイルをgh-pagesにデプロイします。postgis2vectortilesのモジュールがベクトルタイルの生成とデプロイを一貫して行なってくれます。

デプロイするには二つのケースがあります。

graph LR A[mbtiles] --> B{対象エリアは大きいですか?} B -->|いいえ|C[narwassco/vt-map] B -->|はい|D[wasac/vt] C -->|ローカルでタイルを生成します|E[gh-pages] D -->|mbtilesをアップロード|F[github masterブランチ] F -->|Github Actionsでタイルを生成します|E

i. [narwassco/vt-mapアプローチ] ケニアのナロックウォーターの場合

もし対象エリアが狭い場合は、ナロックウォーターのアプローチでデプロイすることができます。次のリポジトリを参照してください。

このモジュールはmapbox/tippecanoeを使用してmbtilesを生成します。しかしながら、ナロックウォーターのGISマシンはWindows10 Proのため、tippecanoeの実行が困難であり、Dockerを使用してベクトルタイルを生成するツールを開発しました。

ii. [WASAC/vtアプローチ] ルワンダのWASACの場合 (推奨)

もし対象エリアが広い場合は、Github pagesに数千のベクトルタイルをデプロイすることは容易ではないでしょう。WASACのアプローチを使って、mbtilesを先にアップロードした後、Github Actionsmbtilesからベクトルタイルを取り出すと良いです。次に示すリポジトリをご覧になってください。

  • WASAC/vt これは次のモジュールを使用してMapboxベクトルタイルを生成し、gh-pagesにデプロイします。
    • watergis/postgis2mbtiles: PostGISからmbtilesを生成します。 postgis2mbtilesモジュールはローカルマシンに実行します。
    • watergis/mbtiles2pbf: mbtilespbf(mvt)タイルに変換します。 mbtiles2pbfGithub Actionsで実行します。

次のものはナロックウォーターが使用しているGithub Actionsでmbtilesタイルからpbfタイルを生成しデプロイするためのワークフローファイルです。

name: Node.js CI

on:
  push:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - run: npm ci
      env:
        NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
    - run: npm run extract
    - name: configure git and deploy
      env:
        NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
      run: |
        git config --global user.name "narwassco+githubci"
        git config --global user.email "narwassco+githubci@users.noreply.github.com"
        git remote set-url origin https://x-access-token:${NODE_AUTH_TOKEN}@github.com/narwassco/vt.git
        npm run deploy        
  • ナロックウォーターも[narwassco/vt-mapアプローチ]の代わりに、[WASAC/vtアプローチ]を使い始めました。

  • ナクルウォーターも[WASAC/vtアプローチ]を使い始めました。

ベクトルタイルの容量がgh-pagesのキャパを超える場合

Github Pagesは最大で1GBの容量制限があります。もしこの制限をデータサイズが超えるようなら、gh-pagesへデプロイすることはできません。

しかしながら、もしかしたらNetlifyを使うというオプションがあるかもしれません。

ルワンダでは、ベースマップとしてParcels(筆)データを追加したいという要望がありました。ルワンダ全国のParcelsデータは元々シェープファイルで8GB、pbfのベクトルタイルに変換したところ1.2GBほどになりました。しかしながら、Netlifyを用いてParcelsをデプロイすることに成功しています。

どのように大きなベクトルタイルをNetlifyにデプロイできたか、次のリポジトリが参考になるでしょう。

  • WASAC/vt-parcels-2020: 2020年7月21日時点の最新のルワンダのParcelsデータ
  • WASAC/vt-parcels: 2019年以前の古いルワンダのParcelsデータ(正確なデータの日付は不明)

Parcelsデータが非常に巨大であったため、PostGISからGeoJSONを取り出してtippecanoeを使用することができませんでした。そのためこのケースでは、watergis/mvt-generatorというモジュールを開発し、PostGISから直接pbfタイルを作成することにしました。vtリポジトリで行っていることとはちょっと違うアプローチになっています。