PostGISテンプレートを作成するには?


19

pgroutingをインストールするためのチュートリアルに従っています。しかし、私はそれが言うときに一部を取得しませんでした

pgAdminを起動し、PostGISテンプレートに基づいて新しいデータベースを作成します

このpostgisテンプレートはどこで入手できますか?homebrewを使用してPostGISをインストールしたことは知っています。しかし、テンプレートが見つかりませんでした。現在macosを実行しています。


1
どのバージョンのPostGISを使用していますか?
RK

回答:


16

PostgreSQL 9.1の新しいメソッド

以下のRKのアドバイスのおかげで、このチュートリアルを見て、PostgreSQL 9.1の場合、pgAdminコンテキストメニューを使用して拡張機能postgispostgis_topology既存のデータベースに追加するだけでよいことがわかりました。postgisテンプレートを作成するために、新しいデータベースを作成し、template-postgisこれらの拡張機能を追加しました。次に、このテンプレートを使用して他のデータベースを作成しました。使用pg_dumpすると、これらの行が含まれているだけで、拡張機能をダンプしていないように見えるため、エクスポートのサイズがはるかに小さいことがわかりました:

CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS postgis_topology WITH SCHEMA topology;

旧冗長方式:

私はここで.sqlファイルを使用することになりました:

/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql

また、このテンプレートから作成された新しいデータベースに既存のPostGISデータベースをインポートすると、このエラーが発生しました。

ERROR:  type "spheroid" already exists

そこで、「template_postgis」と呼ばれる空のデータベースを作成した後、ここの指示に従ってON_ERROR_ROLLBACK=on、テンプレートのセットアップに使用しました。

psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql -v ON_ERROR_ROLLBACK=on

次に、バックアップデータベースをインポートしました。例:

psql -U someuser -d somedb -1 -f somefile.sql -v ON_ERROR_ROLLBACK=on

さらに古い方法:

これは私がしました:

createdb -E UTF8 -T template0 template_postgis
createlang -d template_postgis plpgsql
psql --quiet -d template_postgis -f /Applications/Postgres.app/Contents/MacOS/share/extension/postgis--2.0.1.sql

へのパスpostgis--2.0.1.sqlは、セットアップによって異なります。


回答を完了するために(私のMacで動作します):MacでKyngchaosポートからpostgisをインストールした場合、postgisインストールファイルは次のとおりです。/usr/local/pgsql/share/extension/postgis--2.0.1.sql
ブルーノフォンパリ

最新の方法では、「SCHEMA」が必要ですか?何のために?(あなたが私がこれまでに見た唯一の例です。)
マットウィルキー

14

PostgreSQL 9.1+を実行している場合、テンプレートデータベースを気にする必要はありません。データベースを作成してから、pgAdminのSQLビューで入力して実行します

CREATE EXTENSION postgis;

これにより、データベースが空間的に有効になります。


テンプレートメソッドは引き続き使用できますか?または、この情報をpgAdminIIIの「新規データベース」ダイアログに追加する方法はありますか?
monkut

あなたもおそらく追加したいCREATE EXTENSION postgis_topology;
マットウィルキー

1
pgAdmin4で@monkutこのナビゲーション・ツリーの「Extensionsの上で右クリックを経由して提供されています
マットウィルキー

CREATE EXTENSIONスーパーユーザー権限が必要なため、実際にテンプレートを作成/使用することをお勧めします。
クロマックス

3

実際、これはpostgisインストールの基盤です。

postgisテンプレートがある場合、それから新しいデータベースを作成できます:

 createdb -T postgistemplate -O gis gisdb

持っていない場合は、次の方法でこれを行うことができます。

sudo su postgres
createdb postgistemplate
createlang plpgsql postgistemplate
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/lwpostgis.sql
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/spatial_ref_sys.sql

Debian / Ubuntuのbashスクリプトを使用できます-create_template_postgis-debian.sh、こちら

私はそれがあなたを助けることを願っています...


おそらく、ユーザーpostgresが端末を使用する権限を持っていない場合sudo su postgresです。その場合、コマンドは暗黙的に失敗します。これを乗り越えるには、これらすべてのコマンドの前にsudo -u postgres、postgresユーザーに切り替えずにpostgresユーザーとしてコマンドを実行します。
リング

2

私が覚えている限り、ワークショップでこれらのテンプレートデータベースを作成するためのスクリプトがいくつかあります。こちらからも入手できます:https : //github.com/pgRouting/pgrouting-contrib/blob/master/scripts/create_templates.sh

Debian / Ubuntuで動作するように書かれているため、最終的にはいくつかの点を変更する必要があります。ただし、必要なものだけを選択できます。


2
#!/bin/sh
instance_name=$1
psql << EOF
create database $instance_name;
\connect $instance_name
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
EOF

このbashスクリプトを使用して、postgisを有効にし、stdinで指定した名前で新しいデータベースの作成を実行します。

Postgres 9.3

PostGIS 2.1.3

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