☮️

pg_tileservで、UCDP GED(ウプサラ紛争データプログラム 地理参照事件データセット)をベクトルタイルとして配信する

2024/05/12に公開

タイトルの通り。

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/

結果
Image from Gyazo

Discussion