Tambahkan fungsi spasial PostGIS ke skema khusus selain "publik" di PostgreSQL

15

Baru-baru ini, saya membuat database PostGIS 2.0.3 pada server database PostgreSQL 9.1 menggunakan pgAdmin. Ekstensi "PostGIS" ditemukan diinstal dalam "Extensions". Fungsi spasial ditambahkan ke skema "publik". Tidak apa-apa.

Sekarang saya ingin menyimpan semua data saya ke dalam skema baru yang disebut "gc". Namun, bagaimana saya bisa membuat semua fungsi spasial terinstal di skema "gc" itu? Tidak ada fungsi tunggal dalam skema. Namun, ketika saya mencoba untuk mengimpor / baru kelas fitur dari ESRI ArcCatalog 10.1 ke skema ini, itu berhasil! Kelas fitur dapat diimpor dan ditampilkan dalam QGIS.

Adakah yang bisa memberi saya tip atau ide tentang hal itu?

Saya baru mengenal PostgreSQL dan PostGIS.

alextc
sumber
Baru diperhatikan: sudah ditangani di gis.stackexchange.com/questions/43187/…
Martin F
@MartinF Ada adalah sebuah (tidak lengkap) Jawaban atas pertanyaan ini pada pertanyaan yang Anda terkait tetapi pertanyaan yang benar-benar meminta sesuatu yang sangat berbeda.
Kenny Evitt
Pertanyaan ini juga bisa berjudul "Menginstal PostGIS ke dalam skema selain publik?".
Kenny Evitt

Jawaban:

3

Berikut adalah contoh perintah untuk menginstal ekstensi PostGIS ke dalam gcskema:

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

Berikut adalah contoh perintah untuk memindahkan PostGIS dan objeknya ke skema baru untuk versi 2.4.4 PostGIS jika Anda sudah menginstalnya:

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";

Ini tidak sepenuhnya diperlukan; hanya membantu:

ALTER DATABASE whatever
SET search_path = public,gc;
Kenny Evitt
sumber
1

Kenny Evitt sudah menjelaskan hal-hal terpenting. Namun demikian, berikut adalah beberapa informasi tambahan:

Postgresql memiliki database, tablespace dan skema, dan tidak mungkin untuk melakukan penggabungan dari satu database ke yang lain, karena mereka dipisahkan secara ketat. Satu database dapat memiliki lebih dari satu skema, dan dimungkinkan untuk menggabungkan sesuatu dari satu skema ke yang lain. Untuk informasi lebih lanjut, lihat dokumen:

Kemungkinan lain untuk memuat PostGIS dalam skema gc Anda adalah sebagai berikut:

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

Saya bukan ahli Katalog Arc atau pgadmin, tapi saya berasumsi salah satu dari tiga kemungkinan berikut terjadi:

  1. Postgresql mendukung tipe data geometrik secara asli . Tetapi Anda tidak boleh mempercayai ini dalam Geo Contexts, karena metadata CRS serta fungsi transformasi tidak diberikan. Anda baru saja beruntung dan tidak ada yang rusak.
  2. Arc Katalog entah bagaimana, setelah tidak menemukan ekstensi PostGIS, membuatnya tanpa memberi tahu Pengguna. Untuk memeriksanya, Anda bisa melihat tabel yang ada sebelum dan sesudah langkah itu.

Di psql, Anda bisa melakukan ini dengan mengetik:

\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

Jika Anda melihat ini, PostGIS telah diinstal sebagai ekstensi. Kemungkinan ketiga adalah bahwa ArcCatalog melakukan sesuatu seperti ini:

set search_path to $all_schemas;
import to gc;

Dalam hal ini, Anda juga beruntung. Tapi mungkin, ArcCatalog melakukan sesuatu yang lebih canggih pada akhirnya ...

yorkie
sumber
0

ini solusinya:

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

Jika Anda sudah menginstal ekstensi postGIS di skema publik Anda dan ingin pindah di gc kemudian tulis kode berikut:

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

ALTER EXTENSION postgis 
  SET SCHEMA gc;
Tekson
sumber