PostGIS şablonu nasıl oluşturulur?


19

Ben pgrouting yüklemek için bir öğretici takip ediyorum. Ancak, söylediği zaman rol alamadım

PgAdmin'i başlatın ve PostGIS şablonunuzu temel alan yeni bir veritabanı oluşturun

Bu postgis şablonunu nereden alabilirim? PostGIS'i homebrew kullanarak kurduğumu biliyorum. Ama şablonu bulamadım. Şimdi macos kullanıyorum.


1
Hangi PostGIS sürümünü kullanıyorsunuz?
RK

Yanıtlar:


16

PostgreSQL 9.1 ile Yeni Yöntem

Aşağıdaki RK tavsiyesi sayesinde, bu eğiticiye bir göz attım ve PostgreSQL 9.1 için yapmanız gereken tek şey uzantıları eklemek postgisve postgis_topologypgAdmin bağlam menülerini kullanarak mevcut bir veritabanına eklemek . Bir postgis şablonu oluşturmak için adında yeni bir veritabanı oluşturdum template-postgisve bu uzantıları ekledim. Daha sonra bu şablonu kullanarak diğer veritabanımı oluşturdum. Kullanırken pg_dump, sadece bu satırları içerdiği ve uzatma işlevlerini dökmediği gibi, ihracatın boyutunun çok daha küçük olduğunu gördüm:

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

Eski Yedekli Yöntem:

Burada .sql dosyaları kullanarak sona erdi:

/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

Ayrıca, mevcut bir PostGIS veritabanını bu şablondan yapılmış yeni bir veritabanına içe aktardığımda bu hatayı aldım:

ERROR:  type "spheroid" already exists

Buradaki talimatları izledim ve ON_ERROR_ROLLBACK=on"template_postgis" adlı boş bir veritabanı oluşturduktan sonra şablonu ayarlamak için kullandım :

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

Ve sonra benim yedek db ithal, örneğin:

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

Daha Eski Yöntem:

Bunu ben yaptım:

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.sqlKurulum yolu , kurulumunuza bağlı olarak farklı olacaktır.


Yanıtınızı (Mac bilgisayarımda çalışan) tamamlamak için: Mac'te, Kyngchaos bağlantı noktalarından postgis yüklediyseniz, postgis yükleme dosyası: /usr/local/pgsql/share/extension/postgis--2.0.1.sql
Bruno von Paris

En yeni yöntem için 'SCHEMA' gerekli mi? Bu ne için? (Sizinki bunu şimdiye kadar gördüğüm tek örnek.)
matt wilkie

14

PostgreSQL 9.1+ çalıştırıyorsanız , şablon veritabanıyla uğraşmanıza gerek yoktur . Sadece bir veritabanı oluşturun ve sonra pgAdmin'de SQL görünümünde yazın ve çalıştırın

CREATE EXTENSION postgis;

Bu, veritabanınızı mekansal olarak etkinleştirir.


Şablon yöntemi hala kullanılabilir mi? Veya bu bilgiyi pgAdminIII'deki "yeni veritabanı" iletişim kutusuna eklemenin bir yolu var mı?
keşiş

muhtemelen eklemek istersinizCREATE EXTENSION postgis_topology;
matt wilkie

1
pgAdmin4'te @monkut, bu gezinti ağacındaki 'Uzantılar'a sağ tıklamakla
sağlanabilir

CREATE EXTENSIONsüper kullanıcı ayrıcalıklarına ihtiyaç duyar, bu nedenle bir şablon oluşturmak / kullanmak çok iyi bir fikir olabilir.
Cromax

3

aslında bu postgis kurulumunun temelidir.

postgis şablonunuz varsa, ondan yeni bir veritabanı oluşturabilirsiniz:

 createdb -T postgistemplate -O gis gisdb

Eğer sahip değilseniz, bunu şu şekilde yapabilirsiniz:

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 komut dosyalarını kullanabilirsiniz - create_template_postgis-debian.sh, burada

umarım sana yardımcı olur ...


Muhtemelen kullanıcının postgresbir terminal kullanma izni yoktur, bu durumda sudo su postgreskomut sessizce başarısız olur. Bunu sudo -u postgresaşmak için postgres kullanıcısına geçmeden komutu postgres kullanıcısı olarak çalıştırmak için tüm bu komutlardan önce gelebilirsiniz .
Yüzük


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

Postgis etkin ve stdin verilen ad ile yeni veritabanı oluşturma yürütmek için bu bash komut dosyası kullanın.

Postgres 9.3

PostGIS 2.1.3

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.