PostGIS

PostGISモジュールはPostgreSQLバックエンドサーバの拡張です.したがってPostGIS 0.7はコンパイルするためにPostgreSQLのソースツリーの完全なコピーを必要とします.PostgreSQLのソースコードはhttp://www.postgresql.orgで利用できます.

PostGIS 0.7はPostgreSQL 7.1.xまたはPostgreSQL 7.2.xに対して構築するこ とができます.PostgresSQLの以前のバージョンはサポートされません

  1. postgisサーバモジュールをコンパイルする前に,PostgreSQLパッケージをコンパイルし,インストールしなければなりません.

  2. http://postgis.refractions.net/postgis-0.7.3.tar.gzからPostGISのソースアーカイブを取得してください.PostgreSQLのソースツリーのcontribディレクトリでアーカイブを解凍し,Untarしてください.

      # cd [postgresql source tree]/contrib 
      # gzip -d -c	postgis-0.7.tar.gz | tar xvf -
  3. 以前あなたがインストールしたPostgreSQLが最新であれば,"postgis"ディ レクトリに入り,Makefileを編集してください.

    • PostGIS 0.7.2かそれ以前のバージョンをPostgreSQL 7.2.xに対してコン パイルする場合, USE_PG72変数を1にセットする必要があります.新しいバージョンのpostgisではこれは自動的に行われます.

    • 座標の投影法変換をサポートしたい場合,Proj4ライブラリをインストール してUSE_PROJ変数を1にセットする必要があります.

  4. コンパイルとインストールコマンドを実行してください.

      # make 
      # make install

    全てのPostgreSQL関連のファイルがインストールディレクトリ(以下[prefix]と記す)にインストールされます.

    • ライブラリは [prefix]/lib/contrib にインストールされます.

    • postgis.sqlのような重要なサポートファイルは,[prefix]/share/contrib にインストールされます.

    • loaderとdumperのバイナリは [prefix]/bin にインストールされます.

  5. PostGISはPL/pgSQLプロシジャ言語拡張を必要とします.postgis.sqlファイルをロードする前に,まずPL/pgSQLを有効にしなければなりません.createlangコマンドを使ってください.これを何らかの理由で手動で行いたい場合は,PostgreSQL 7.1 programer's guideに詳細がかかれています.

      # createlang plpgsql [yourdatabase]
  6. 今度は,定義ファイルpostgis.sqlをロードして,PostGISオブジェクトと関数の定義をあなたのデータベースにロードします.

      # psql -d [yourdatabase] -f	postgis.sql

    今,PostGISサーバエクステンションはロードされ,利用する準備ができました.

  7. EPSG座標系定義識別子一式のために,定義ファイルspatial_ref_sys.sqlをロードしてSPATIAL_REF_SYSテーブルを住み着かせることもできます.

      # psql -d [yourdatabase] -f	spatial_ref_sys.sql

アップグレード

オブジェクトタイプとジオメトリをサポートする基礎となっているCライブラリがバージョン間で変更されたかもしれないので,PostGISのアップグレードはトリッキーになります.アップグレード時の問題を避けるため,データベースの全てのテーブルをダンプし,データベースを壊し,新しくデータベースを作り,新しいpostgis.sqlファイルを実行して,それからデータベースのダンプをアップロードしなければならないでしょう:

  # pg_dump -t "*" -f dumpfile.sql yourdatabase
  # dropdb yourdatabase
  # createdb yourdatabase
  # createlang plpgsql yourdatabse
  # psql -f postgis.sql -d yourdatabase
  # psql -f dumpfile.sql -d yourdatabase
  # vacuumdb -z yourdatabase

注:バージョン0.5から0.6以上にアップグレードする場合,全てのジオメトリのSRIDは-1で作られるでしょう.有効なOpenGISジオメトリを作るために,SPATIAL_REF_SYSテーブルに有効なSRIDをつくり,それから,以下のSQL(適切に置き換えてください)でSRIDを参照するようにジオメトリを更新しなければならないでしょう:

  UPDATE TABLE <table> SET <geocolumn> = SetSRID(<geocolumn>,<SRID>);

共通の問題

インストールまたはアップグレードが期待通りに行かない場合にチェックすることがいくつかあります.

  1. PostGISのディストリビューションをPostgreSQLのソースツリーのcontribディレ クトリにUntarしたなら,それが最も簡単です.しかしながら,何らかの理 由でこれができない場合,環境変数PGSQL_SRCをPostgreSQLのソースツリーのパスにセットすることができます.これでPostGISのコンパイルはできますが,make installはおそらく働きません.そのためPostGISライブラリと実行ファイルをあなた自身で適切な場所にコピーする用意がいるでしょう.

  2. インストールしたPostgreSQLが7.1かそれ以上であることと,実行中のPostgreSQLと同じバージョンのPostgreSQLのソースに対してコンパイルしていることを確認してください.あなたの(Linux)ディストリビューションでは,すでにPostgreSQLがインストールされていたり,あなたが以前別途 PostgreSQLをインストールしてそれを忘れた場合に,混乱が起こりえます.PostGISはPostgreSQL7.1かそれ以上でのみ動作し,もし古いバージョンを使えば奇妙で予想外のエラーメッセージが出るでしょう.実行中のPostgreSQLのバージョンをチェックするために,psqlを使ってデータベースに接続し,次のクエリを実行してください.

      SELECT version();

必要な変更をMakefilenに行ったかも確認してください.これには以下のことが含まれます:

  1. PostgreSQL 7.2かそれ以上を用いる場合,USE_PG72=0の行をUSE_PG72=1に変更.もし,この行が正しくなければ,コンパイル時かpostgis.sqlファイル内のステートメントを実行したときに,大量のエラーメッセージが生じることになるでしょう.

  2. 同様に,座標の投影法変換(cordinate reprojection)も使えるようにしたいときは,proj.4ライブラリをシステムにインストールし,MakefileのUSE_PROJ変数を1にセットしなければなりません.