「postgis」カテゴリーアーカイブ

CentOS 9にpostgreSQL 14を入れる!postGIS 3.2も入れる!

以前に自分でインストールしたやり方を参考に、インストールを試みようとしてみたのですが、やはり少し変わったパッケージをLinuxへインストールするには何かが引っ掛かります(^^;

ということで、以下の環境にインストールを行っていきます。

OS:Rocky Linux 9
インストール対象:postgreSQL 14 + postGIS 3.2

PostgreSQL インストール

前回学んだ本家サイトからインストール方法を確認します。

https://www.postgresql.org/download/linux/redhat/

こちらのサイトにあるインストール方法を真似するだけです。

以下に提示されたコマンドを記します。

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

順番に説明しておきます。

リポジトリを追加

リポジトリを追加します。

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

既存のPostgreSQLを無効にする。

インストールしていない時には不要の作業となります。
過去にPostgreSQLをインストールしている場合のも必要な作業になります。

ある意味、トランザクション対象のパッケージを維持したまま、本体だけを無効にするという感じなんでしょうかね。
#違うところで参考になりそうです。

dnf -qy module disable postgresql

PostgreSQLをインストール

PostgreSQLをインストールします。

dnf install -y postgresql14-server

インストールはこれで完了です。

起動設定

自動で起動するように設定します。

/usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl enable postgresql-14
systemctl start postgresql-14

インストールとPostgreSQLの起動は完了しました。

PostGIS インストール

ここからが課題のPostGISインストール作業です。

まず、インストールしたPostgreSQLのバージョンに対応するPostGISのバージョンを下記のサイトで確認します。

https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

対応表からインストール対象のPostGISを確認します。
今回は、PostGIS 3.2を選択することにしました。

システムのリポジトリに含まれるPostGISのバージョンを確認します。

dnf list | grep -i postgis
postgis32_13.x86_64                                       3.2.2-1.rhel9                                     pgdg13
postgis32_13-client.x86_64                                3.2.2-1.rhel9                                     pgdg13
postgis32_13-devel.x86_64                                 3.2.2-1.rhel9                                     pgdg13
postgis32_13-docs.x86_64                                  3.2.2-1.rhel9                                     pgdg13
postgis32_13-gui.x86_64                                   3.2.2-1.rhel9                                     pgdg13
postgis32_13-utils.x86_64                                 3.2.2-1.rhel9                                     pgdg13
postgis32_14.x86_64                                       3.2.2-1.rhel9                                     pgdg14
postgis32_14-client.x86_64                                3.2.2-1.rhel9                                     pgdg14
postgis32_14-devel.x86_64                                 3.2.2-1.rhel9                                     pgdg14
postgis32_14-docs.x86_64                                  3.2.2-1.rhel9                                     pgdg14
postgis32_14-gui.x86_64                                   3.2.2-1.rhel9                                     pgdg14
postgis32_14-utils.x86_64                                 3.2.2-1.rhel9                                     pgdg14

今回インストールするバージョンは、postgis32_14であることが確認出来ますので、以下のコマンドでインストールを試みます。

dnf install postgis32_14

トランザクション関連のエラーが大量。。。ということで、問題の解決を行います。

dnf install epel-release
dnf --enablerepo=crb install flexiblas-netlib64
dnf install postgis32_14

これでインストール出来ました!

環境によって若干の違いがあるかと思いますが、参考になるかな?

以下のサイトが役に立ちました。
https://rockylinux.pkgs.org/9/rockylinux-crb-aarch64/flexiblas-netlib64-3.0.4-8.el9.aarch64.rpm.html

深くまで見ないといけないので、面倒ですが。。。

postGISでシェープファイルを登録する。

とうとう手を出してしまった。。。。(TT)

DB大嫌いな私が、とうとうこの世界に手を出してしまった。
まだ入口に足を踏み入れただけだから、初歩的なところから始めます。

今回のお題は、postGISを使ってシェープファイル(SHP)とCSVファイルを空間結合して、新たなシェープファイルを作成するところまでです。

Rを使ってなんとか頑張ってみようと試みたところまでは良かったのですが、以下の課題が発生しました。

  • シェープファイルを読込むのが遅い
  • 空間結合に至っては、遅すぎて戻ってこない。
    もしかするとやり方がまずかったか?
    こちらも初心者なので、まずかったかな?

少なくとも、シェープファイルを読込むのが遅い段階で、使えないなと諦めに入っている状況です。ただし、トータルメリットについては考える余地があるので、別途検討は進めたいと思っています。詳細は、気が向いた時にでも報告します。

さて、postGISを使ってシェープファイルを読込む方法について纏めます。

ステップは2段階です。

1)DBを作る。
#ネットで調べると意外と別々に記載されていて、調べるの面倒なので、ここにまとめてメモしておく。

既にDBを作成されている場合は、新たにDBを作る必要はありません。
この作業をスキップしてください。

createdb -U username -T postgis_21_sample new_dbname

 username : postgreSQLのユーザー名
new_dbname:新規にDB作成する場合のデータベース名
postgis_21_sample:テンプレートになるDB名称です。
postGISをインストールする時にインストールしたものを使うのでしょう。

2)シェープファイル(SHP)を登録する。

shp2pgsql [-d] shape_file.shp table_name | psql -U username dbname

もっともシンプルな書き込みで、DBに対しINSERT命令を繰り返し行います。
-dオプションは、既にデータが存在する場合に、一度削除してから書き込みます。

これを高速に行ってくれるコマンドをもう一つ見つけました。

shp2pgsql -D [-d] shape_file.shp table_name | psql -U username dbname

-Dオプションを使うと、postgresqlのDumpフォーマットを使って書き込みを行うので速くなります。基本的に問題がないならこちらがおすすめです。

今回はここまで。次回はこのデータにCSVを空間結合してシェープファイルを作成するところまで進めたいと思います。
シェープファイルの出力は分けた方が良いかも知れないので、次回考えます。