☮️
pg_tileservで、UCDP GED(ウプサラ紛争データプログラム 地理参照事件データセット)をベクトルタイルとして配信する
タイトルの通り。
UCDP(Uppsala Conflict Data Program、ウプサラ紛争データプログラム)の
GED(Georeferenced Events Dataset、地理参照事件データセット)を
pg_tileservでベクトルタイルとして配信する。
Docker composeで、
PostgreSQL + PostGISのデータベースと、
pg_tileservを起動する:
services:
pg_tileserv:
image: pramsey/pg_tileserv:20240312
container_name: pg_tileserv
environment:
- DATABASE_URL=postgres://postgres:postgres@pg_tileserv_db/tileserv
depends_on:
- pg_tileserv_db
ports:
- "7800:7800"
restart: always
pg_tileserv_db:
image: postgis/postgis:15-3.4
container_name: pg_tileserv_db
volumes:
- pg_tileserv_db:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: tileserv
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=C"
ports:
# localの5432が塞がっていると超ハマるので注意
- "0.0.0.0:54321:5432"
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
volumes:
pg_tileserv_db:
docker compose up
で起動する。
http://localhost:7800/ でpg_tileservが動作していれば成功。
以後、基本的には docker compose up
しっぱなしで作業する。
UCDP GED をダウンロードして展開する。
wget https://ucdp.uu.se/downloads/ged/ged231-csv.zip
unzip ged231-csv.zip
GEDEvent_v23_1.csv
というファイルが展開されるはず。
GEDEvent_v23_1.csv
を、ogr2ogrを使って、PostGISサーバーに突っ込む。
ogr2ogr \
-overwrite \
-f "PostgreSQL" PG:"dbname=tileserv user=postgres password=postgres host=localhost port=54321" \
-oo AUTODETECT_TYPE=YES \
-oo GEOM_POSSIBLE_NAMES=geom_wkt \
-oo X_POSSIBLE_NAMES=longitude \
-oo Y_POSSIBLE_NAMES=latitude \
-a_srs EPSG:4326 \
-lco FID=id \
-nln "ucdp_ged" \
--config PG_USE_COPY YES \
--debug ON \
./tmp/
Discussion