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"
このように表示されれば成功です
コメント