個人的なまとめ。

何かてきとーに書きます。

PostgreSQLとPostGISを使ってみたときのメモ

経路探索に関する研究をやろうとして調べたことのメモ

内容

PostgreSQLPostGISのインストール

自分の環境に合う方法でインストールしてください.
Archでyayを使っている場合は以下を押下してください.

yay -Syu postgresql postgis

PostgreSQLの初期設定

ターミナルで以下を押下する.

su - postgres
initdb --no-locale --encodig=UTF8

PostgreSQLではデフォルトでpostgresというユーザが作られるっぽい.

いよいよPostgreSQLPostGISを使ってみる

何はともあれデータベース(DB)を作る

ターミナルで以下を押下してください.

createdb mygisdb
作成したDBにログインする

ターミナルで以下を押下するとユーザpostgresでmygisdbに接続した状態になる.

psql -U postgres -d mygisdb
DBでPostGISのエクステンション作成

DBにログインした状態で以下を押下する.

mygisdb=# create extension postgis;

Open Street Map(OSM)からPostGISにインポートする

osm2pgsqlのインストール

自分の環境に合う方法でインストールしてください.
Archでyayを使っている場合は以下を押下してください.

yay -Syu osm2pgsql-git
データのダウンロード

https://learnosm.org/ja/osm-data/getting-data/:OSMデータの取得から参考にOSMからインポートしたいデータをダウンロードする.
九州のデータを例に話を進める.
以下のようにしてデータをダウンロードする.

wget http://download.geofabrik.de/asia/japan/kyushu-latest.osm.pbf
OSMからPostgreSQLのDBに格納する例
osm2pgsql -c -d mygisdb -U postgres --slim -C 4200 --cache-strategy sparse --host localhost kyushu-latest.osm.pbf

それぞれのオプションの意味は以下のコマンドで調べるか,ググりやがってください.

man osm2pgsql

シェープファイル(.shpのファイル)からPostgreSQLのDBに格納する例

shp2pgsqlというツールを使うが,これはpostgisに含まれているので,インストールは終わっているはずです.
インポートするシェープファイルをexample.shpだとして説明します.
shp2pgsqlというツールでは,sql文を列挙してあるコマンドを抽出します.
そして抽出したコマンドが書かれているファイルを使ってDBにぶっこむという流れです.

SQLコマンドの抽出
shp2pgsql -W cp932 -D -I -s 4612 example.shp TABLE_NAME > FOO.sql

cp932の文字コードにしているけど,これどうにかならんのかな...

DBへの格納
psql -U postgres -d mygisdb -f FOO.sql

最後に

使ってみることだけに焦点を当てたので,こんな感じになってしまった.
また別の機会にPostGISのことをより詳しく書くかもしれない.