diadia

興味があることをやってみる。自分のメモを残しておきます。

PostGISについて

GISとは

GISは地理情報システム(GIS:Geographic Information System)のことである。
https://www.gsi.go.jp/GIS/whatisgis.html

PostGISインストール方法

参考になるものは以下になる。
https://qiita.com/chanmaru/items/0cb67455c294943ae649
https://lets.postgresql.jp/documents/tutorial/PostGIS/1

インストール方法

windowsではpostgresqlインストーラの実行が完了し、最後に"スタッグビルダを起動しますか?"と聞かれるので、そこでスタッグビルダを使うと追加でいろいろなものをダウンロード、インストールすることができるようだ。postgresqlwindowsに入れる際はデータを格納するdataディレクトリをデフォルトの場所に設置しないようにしたい。そのためにインストーラの実行中に、ディレクトリを任意のところに指定する。なぜならC:\Program Files 配下のファイルは Windowsの保護対象であるため、設定ファイルの編集が面倒になってしまうから。補足するとスタッグビルダは別途起動することもできる。
参考:https://lets.postgresql.jp/documents/tutorial/windows/

PostGISについてはスタッグビルダを起動してインストールする。

CentOS7におけるPostGISのインストールは分かり次第更新したい。

上記はインストーラを使う場合のやり方である。ソースコードからインストールする方法もある。これはconfigure,make,make installのようなものが関係してくる。
https://qiita.com/chihiro/items/f270744d7e09c58a50a5
configureスクリプト:https://en.wikipedia.org/wiki/Configure_script

 

f:id:torajirousan:20190810191535p:plain

windowsにおいてPostGISをインストールする場合

 

 

空間データベースの作成

参考:https://lets.postgresql.jp/documents/tutorial/PostGIS/2
空間データベース=Postgresql+PostGISに必要な関数やデータ型、デーブル

空間データベースとは、PostGIS に必要な関数やデータ型、テーブルなどがあらかじめ備わっているデータベースです。それ以外は特に通常のデータベースとは変わりありません。

作成方法

テンプレートが存在している場合と存在していない場合に分けられる。

テンプレートが存在している場合
$ createdb -T template_postgis (データベース名)
テンプレートが存在していない場合

テンプレートが存在していない場合には、データベースを作成して、PL/pgSQL を入れ、PostGIS 特有の関数、型、テーブル等を手動で作成する必要があります。

createdb (データベース名) -E UTF-8
$ createlang plpgsql (データベース名)
$ psql (データベース名) -f $(postgis_contrib)/postgis.sql
$ psql (データベース名) -f $(postgis_contrib)/spatial_ref_sys.sql

PostGIS データの格納

参考:https://lets.postgresql.jp/documents/tutorial/PostGIS/3

PostGISが受け付けるデータファイルの形式は、シェープファイルという形式らしい。ただしこれは単一のファイルではなく複数のファイルが有機的に一体として機能するもので、ファイルをまとめてシェープファイルと呼ぶようだ。シェープはshapeを指す。
3つのファイルで構成される。拡張子はそれぞれshp,dbf,shxである。
参考:https://www.pasco.co.jp/recommend/word/word028/

コマンドラインshp2pgsqlはシェープファイルからSQLに変換する。