pgroutingをインストールするためのチュートリアルに従っています。しかし、私はそれが言うときに一部を取得しませんでした
pgAdminを起動し、PostGISテンプレートに基づいて新しいデータベースを作成します
このpostgisテンプレートはどこで入手できますか?homebrewを使用してPostGISをインストールしたことは知っています。しかし、テンプレートが見つかりませんでした。現在macosを実行しています。
pgroutingをインストールするためのチュートリアルに従っています。しかし、私はそれが言うときに一部を取得しませんでした
pgAdminを起動し、PostGISテンプレートに基づいて新しいデータベースを作成します
このpostgisテンプレートはどこで入手できますか?homebrewを使用してPostGISをインストールしたことは知っています。しかし、テンプレートが見つかりませんでした。現在macosを実行しています。
回答:
PostgreSQL 9.1の新しいメソッド
以下のRKのアドバイスのおかげで、このチュートリアルを見て、PostgreSQL 9.1の場合、pgAdminコンテキストメニューを使用して拡張機能postgis
とpostgis_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
は、セットアップによって異なります。
PostgreSQL 9.1+を実行している場合、テンプレートデータベースを気にする必要はありません。データベースを作成してから、pgAdminのSQLビューで入力して実行します
CREATE EXTENSION postgis;
これにより、データベースが空間的に有効になります。
CREATE EXTENSION postgis_topology;
CREATE EXTENSION
スーパーユーザー権限が必要なため、実際にテンプレートを作成/使用することをお勧めします。
実際、これは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ユーザーとしてコマンドを実行します。
私が覚えている限り、ワークショップでこれらのテンプレートデータベースを作成するためのスクリプトがいくつかあります。こちらからも入手できます:https : //github.com/pgRouting/pgrouting-contrib/blob/master/scripts/create_templates.sh
Debian / Ubuntuで動作するように書かれているため、最終的にはいくつかの点を変更する必要があります。ただし、必要なものだけを選択できます。
#!/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