PostgreSQLの「パブリック」以外のカスタムスキーマにPostGIS空間関数を追加します


15

最近、pgAdminを使用してPostgreSQL 9.1データベースサーバー上にPostGIS 2.0.3データベースを作成しました。「PostGIS」拡張機能が「Extensions」にインストールされているのが見つかりました。すべての空間関数が「パブリック」スキーマに追加されました。それはいいです。

次に、すべてのデータを「gc」という新しいスキームに保存します。ただし、その「gc」スキーマにすべての空間機能をインストールするにはどうすればよいですか?スキーマには単一の関数はありません。ただし、ESRI ArcCatalog 10.1からこのスキーマにフィーチャクラスをインポート/新規にしようとすると、うまくいきました!フィーチャクラスをインポートしてQGISに表示できます。

誰もそれについてのヒントやアイデアを教えてもらえますか?

PostgreSQLとPostGISは初めてです。


ちょうど気づいた:すでにgis.stackexchange.com/questions/43187/
マーティンF

@MartinFそこリンクされた先の質問でこの質問への(不完全)答えはなく、その質問には、実際には非常に異なる何かを求めています。
ケニーエビット

この質問は、「PostGISをパブリック以外のスキーマにインストールしますか?」というタイトルにすることもできます。
ケニーエビット

回答:


3

以下に、PostGIS拡張機能をgcスキーマにインストールするためのコマンドの例を示します。

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

PostGISとそのオブジェクトを、すでにインストールしている場合にバージョン2.4.4のPostGISの新しいスキーマに移動するコマンドの例を次に示します。

CREATE SCHEMA gc;

UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';

ALTER EXTENSION postgis
SET SCHEMA gc;

ALTER EXTENSION postgis
UPDATE TO "2.4.4next";

ALTER EXTENSION postgis
UPDATE TO "2.4.4";

これは必ずしも必要ではありません。ただ役立つ:

ALTER DATABASE whatever
SET search_path = public,gc;

1

ケニー・エビットはすでに最も重要なことを説明しました。それにもかかわらず、ここにいくつかの追加情報があります:

Postgresqlにはデータベース、テーブルスペース、スキーマがあり、厳密に分離されているため、あるデータベースから別のデータベースへの結合を実行することはできません。1つのデータベースに複数のスキーマを含めることができ、あるスキーマから別のスキーマに何かを結合することができます。詳細については、ドキュメントをご覧ください。

gcスキーマにPostGISをロードする別の可能性は次のとおりです。

t=# create schema gc;
CREATE SCHEMA
t=# set search_path to gc;
SET
t=# create extension postgis;
CREATE EXTENSION

私はArcカタログやpgadminの専門家ではありませんが、次の3つの可能性のいずれかが発生したと思います。

  1. Postgresqlは幾何データ型をネイティブにサポートしています。ただし、CRSメタデータおよび変換機能が提供されていないため、ジオコンテキストではこれを信頼しないでください。あなたは幸運になっただけで、何も破れませんでした。
  2. Arc Catalogは、何らかの方法で、PostGIS拡張機能を見つけられなかった後、ユーザーに通知せずに作成しました。それを確認するには、そのステップの前後に既存のテーブルを見ることができます。

psqlでは、次のように入力してこれを行うことができます。

\d
           List of Relations
 Schema |       Name        |   Type  | Owner 
--------+-------------------+---------+----------
 gc     | geography_columns | View    | postgres
 gc     | geometry_columns  | View    | postgres
 gc     | raster_columns    | View    | postgres
 gc     | raster_overviews  | View    | postgres
 gc     | spatial_ref_sys   | Table   | postgres

これが表示される場合、PostGISは拡張機能としてインストールされています。3番目の可能性は、ArcCatalogが次のようなことを行うことです。

set search_path to $all_schemas;
import to gc;

この場合、あなたも幸運に恵まれました。しかし、ArcCatalogは最終的にはより洗練された何かをするかもしれません...


0

ここにあなたの解決策があります:

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

パブリックスキーマにpostGIS拡張機能を既にインストールしており、gcで移動する場合は、次のコードを記述します。

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA gc;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.