PostgreSQLに格納されたデータをST_asMVT関数を使いバイナリベクトルタイルを配信する

PostGIS2.4からST_AsMVT関数が実装されてバイナリベクトルを作り置きの必要が無くなったので実際に試してみた。

【環境】
Macbook Air2020(M1)

home brewを使いPostgreSQLとPostGISを予めインストールしておく
手順はこちら

タイル元データは気象庁予報区などGISデータにする
以下より「市町村等(地震津波関係) [ zip形式:146 MB ]」ダウンロード
予報区等GISデータの一覧

ダウンロードしたシェープファイルが日本語のため、earthquake_city.shpに名前を変更する。shp2pgsqlにてSQLへ変換

$ shp2pgsql -D -I -s 4326 earthquake_city.shp > earthquake_city.sql

データベースへ登録します

$ psql -U postgres -d {{DB名}} < earthquake_city.sql

PostgreSQLに格納されているデータをバイナリベクトルで配信するプログラムが公開されているので利用させていただきます。

git clone https://github.com/pramsey/minimal-mvt.git
cd minimal-mvt
virtualenv --python python3 venv
source venv/bin/activate
pip install -r requirements.txt

データベースのアクセス情報やテーブル情報は「minimal-mvt.py」ファイルにハードコードされているので書き換えます。

TABLE = {
    'table':'nyc_streets',
    'srid':'26918',
    'geomColumn':'geom',
    'attrColumns':'gid, name, type'
    }
DATABASE = {
    'user':'pramsey',
    'password':'password',
    'host':'localhost',
    'port':'5432',
    'database':'nyc'
    }
python3 minimal-mvt.py

これで http:localhost:8080 でバイナリベクトルが配信されます。

次にOpenLayersで可視化します。

OpenLayersのExamplesを直接書き換えます。
次のページの右上のEditをクリックします

Vector Tile Selection

直接コードを書き換えることが出来ます。
main.js を開き、39行目を次のように変更します。

url: "http://localhost:8080/{z}/{x}/{y}.pbf"

このように表示されれば成功です

コメント

タイトルとURLをコピーしました