Traffine I/O

日本語

2023-04-06

PostGISのDockerコンテナを構築する

PostGISのDockerコンテナを構築する

この記事では、PostGISをDockerで方法を紹介します。次の公式イメージを使い、PostGISがインストール済みのPostgreSQLのDockerコンテナを簡単に立ち上げることができます。

https://registry.hub.docker.com/r/postgis/postgis/

次のコマンドでPostGISコンテナを起動します。

$ docker run --name my-postgis -e POSTGRES_PASSWORD=mysecretpassword -d postgis/postgis

次のコマンドでコンテナ内に名入り、PostgreSQLに接続します。

bash
$ docker exec -it my-postgis psql -U postgres

postgres=#

これでPostgreSQLに接続できました。

PostGISの操作

POstGISの簡単な操作を行います。まずはairportsテーブルを作成します。

bash
postgres=# create table airports
            ( id serial primary key,
              name text,
              iata_code text,
              location geography(POINT, 4326)
            );

CREATE TABLE

airportsテーブルにデータを挿入します。

bash
postgres=# insert into airports (name, iata_code, location)
            values ( 'Haneda Airport' , 'HND' , ST_GeogFromText('SRID=4326;POINT(139.7776446 35.5493975)') );

INSERT 0 1

airportsテーブルを確認します。

bash
postgres=# select * from airports;

 id |      name      | iata_code |                      location
----+----------------+-----------+----------------------------------------------------
  1 | Haneda Airport | HND       | 0101000020E6100000279DED76E2786140888043A852C64140
(1 row)

locationカラムをPOINT型に変換してみます。

bash
postgres=# select id, name, iata_code, ST_AsText(location) from airports;

 id |      name      | iata_code |           st_astext
----+----------------+-----------+-------------------------------
  1 | Haneda Airport | HND       | POINT(139.7776446 35.5493975)
(1 row)

(139.00 35.00)地点との距離に計算をしてみます。

bash
postgres=# select ST_Distance(
  location,
  ST_GeogFromText('SRID=4326;POINT(139.00 35.00)')
  ) as distance from airports;

    distance
----------------
 93386.17699288
(1 row)

参考

https://registry.hub.docker.com/r/postgis/postgis/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!