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 のシステム更新を行うときは, 端末で,次のコマンドを実行する.

Ubuntu のインストールは別ページ »で説明

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 は,次のコマンドで起動できる.

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 のインストール

  1. 端末を開く
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. QGIS のインストール
    sudo apt -y update
    sudo apt -y install qgis 
    sudo apt -y install python3-qgis 
    sudo apt -y install qgis-plugin-grass
    
  7. TopoJSON, GeoJSON のインストール
    sudo npm install -g topojson
    sudo npm install -g geojson
    
  8. 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
    
  9. PostgreSQL のバージョン確認
    psql --version
    
  10. 利用者の作成と、PostgreSQL データベース管理者権限の付与
    • 利用者名: dbadmin
    • パスワード: 秘密の文字列 (コマンド実行時に設定すること)
    sudo su -c "createuser dbadmin --login --inherit --superuser --createdb --createrole --pwprompt" - postgres
    sudo pg_ctlcluster 12 main status
    
  11. 試しに、データベース名 hoge のデータベース作成と確認を行う

    エラーメッセージが出なければOK

    sudo -u postgres createdb -O dbadmin hoge
    psql -h localhost -U dbadmin hoge
    \q
    
  12. 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
    
  13. データベース名 hoge のデータベースに PostGIS 拡張を行ってみる

    エラーメッセージが出なければOK

    psql -h localhost -U dbadmin hoge
    create extension postgis;
    create extension postgis_topology;
    \q
    
  14. データベース名 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
    
  15. 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)
    
  16. 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;"
    

    エラーメッセージが出ていないことを確認する