GEOS, GDAL, PostGIS (地理情報システム) 及び関連ソフトウェアのインストール(Ubuntu 上)
謝辞:
この Web ページは、 次の 2つの Web ページの内容をもとに、最新の ubuntu で検証した結果です.先人に感謝.
https://gist.github.com/arthur-e/7d721f34e2536203513d
https://www.dvginteractive.com/setting-up-a-ubuntu-16-04-python-gis-development-environment/
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
C/C++ コンパイラー,make,パッケージツール,その他のインストール
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config sudo apt -y install swig curl
Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)
Python のインストールは行わない(Ubuntu のシステム Python を用いる.)
Python, pip のコマンドでの起動のまとめ.
Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.
- python3 (Ubuntu のシステム Python)
- sudo pip3 (pip 3)
Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明
Python3 開発用ファイル,pip, setuptools, venv のインストール
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential
Ubuntu で GEOS, proj, HDF4, HDF5, GDAL, GDAL-OGR, QGIS, PostgreSQL, PostGIS のインストール
- 端末を開く
- GEOS のインストール
cd /usr/local/ sudo mkdir geos sudo chown $USER geos cd geos curl -O https://download.osgeo.org/geos/geos-3.8.1.tar.bz2 tar -xvjof geos-3.8.1.tar.bz2 cd geos-3.8.1 PYTHON=/usr/bin/python3 ./configure --enable-python make sudo make install
- proj のインストール
cd /usr/local/ sudo mkdir proj sudo chown $USER proj cd proj curl -O https://download.osgeo.org/proj/proj-7.2.0.tar.gz tar -xzvof proj-7.2.0.tar.gz cd proj-7.2.0 ./configure make sudo make install
- HDF4, HDF5 のインストール
sudo apt -y update sudo apt -y install libhdf4-0 libhdf4-dev cd /usr/local/ sudo mkdir hdf5 sudo chown $USER hdf5 cd hdf5 curl -O http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.10.1.tar.gz tar -xzvof hdf5-1.10.1.tar.gz rm hdf5-1.10.1.tar.gz cd hdf5-1.10.1 ./configure --prefix=/usr/local --enable-shared --enable-hl make sudo make install
- GDAL, GDAL-OGR のインストール
sudo apt -y update sudo apt -y install gdal-bin sudo apt -y install libgdal-dev sudo apt -y install libgdal-dev sudo apt -y install python3-gdal sudo apt -y install python3-geopandas
- QGIS のインストール
sudo apt -y update sudo apt -y install qgis sudo apt -y install python3-qgis sudo apt -y install qgis-plugin-grass
- TopoJSON, GeoJSON のインストール
sudo npm install -g topojson sudo npm install -g geojson
- PostgreSQL のインストール
# PostgreSQL sudo apt -y install postgresql-12 sudo apt -y install postgresql-client-12 sudo apt -y install postgresql-client-common postgresql-common sudo apt -y install postgresql-contrib sudo apt -y install pgadmin3 sudo apt -y install postgresql-server-dev-12 # PostgreSQL for Python projects sudo apt -y install python3-psycopg2
- PostgreSQL のバージョン確認
psql --version
- 利用者の作成と、PostgreSQL データベース管理者権限の付与
- 利用者名: dbadmin
- パスワード: 秘密の文字列 (コマンド実行時に設定すること)
sudo su -c "createuser dbadmin --login --inherit --superuser --createdb --createrole --pwprompt" - postgres sudo pg_ctlcluster 12 main status
- 試しに、データベース名 hoge のデータベース作成と確認を行う
エラーメッセージが出なければOK
sudo -u postgres createdb -O dbadmin hoge psql -h localhost -U dbadmin hoge \q
- PostGIS のインストール
sudo apt -y update sudo apt -y install libxml2-dev cd /usr/local/ sudo mkdir postgis sudo chown $USER postgis cd postgis curl -O https://download.osgeo.org/postgis/source/postgis-3.0.4.tar.gz tar -xzvof postgis-3.0.4.tar.gz cd postgis-3.0.4 ./configure --with-projdir=/usr/local/proj/proj-7.2.0 --with-pgconfig=/usr/bin/pg_config --with-xml2config=/usr/bin/xml2-config make sudo make install
- データベース名 hoge のデータベースに PostGIS 拡張を行ってみる
エラーメッセージが出なければOK
psql -h localhost -U dbadmin hoge create extension postgis; create extension postgis_topology; \q
- データベース名 hoge のデータベースで、テーブルを定義し、レコードを挿入してみる
エラーメッセージが出なければOK
psql -h localhost -U dbadmin hoge create table P (id integer, name text, geo geography(Point, 4326)); insert into P values(1, 'hoge park', ST_GeogFromText('SRID=4326;POINT(-50.1 50.2)')); select * from P; \q
- Pythonで、次のプログラムを実行してみる
パスワード(下のプログラムでは「my password」)は、正しいパスワードに置き換えて実行すること
import psycopg2 import geopandas conn = psycopg2.connect(database="hoge", user="dbadmin", password="my password", host="localhost") q = "select * from P;" a = geopandas.GeoDataFrame.from_postgis(q, conn, geom_col='geo') print(a)
- PostGIS のテンプレートデータベースの設定
【関連する外部ページ】 https://gist.github.com/arthur-e/7d721f34e2536203513d
export POSTGIS_TEMPLATE=postgis-3.0.4 export POSTGRESQL_VER=10 sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.4/postgis.sql sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;" sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"
エラーメッセージが出ていないことを確認する