Thêm các chức năng không gian của PostGIS vào một lược đồ tùy chỉnh, không phải là công khai trên mạng trong PostgreQuery


15

Gần đây, tôi đã tạo cơ sở dữ liệu PostGIS 2.0.3 trên máy chủ cơ sở dữ liệu PostgreSQL 9.1 bằng pgAdmin. Tiện ích mở rộng "PostGIS" đã được tìm thấy được cài đặt trong "Tiện ích mở rộng". Các hàm không gian Al đã được thêm vào lược đồ "công khai". Tốt rồi.

Bây giờ tôi muốn lưu trữ tất cả dữ liệu của mình vào một chương trình mới gọi là "gc". Tuy nhiên, làm cách nào tôi có thể thực hiện tất cả chức năng không gian được cài đặt trong lược đồ "gc" đó? Không có chức năng duy nhất trong lược đồ. Tuy nhiên, khi tôi cố gắng nhập / mới một lớp đối tượng từ ESRI ArcCatalog 10.1 vào lược đồ này, nó đã hoạt động! Lớp tính năng có thể được nhập và hiển thị trong QGIS.

Bất cứ ai có thể cho tôi bất kỳ lời khuyên hoặc ý tưởng về nó?

Tôi chưa quen với PostgreSQL và PostGIS.


Chỉ cần lưu ý: đã xử lý tại gis.stackexchange.com/questions/43187/NH
Martin F

@MartinF Có một (không đầy đủ) câu trả lời cho câu hỏi này tại câu hỏi mà bạn liên kết nhưng câu hỏi đó thực sự là hỏi cái gì đó rất khác nhau.
Kenny Evitt

Câu hỏi này cũng có thể có tiêu đề "Cài đặt PostGIS vào lược đồ khác ngoài công khai?".
Kenny Evitt

Câu trả lời:


3

Dưới đây là các lệnh ví dụ để cài đặt phần mở rộng PostGIS vào một gclược đồ:

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

Dưới đây là các lệnh ví dụ để di chuyển PostGIS và các đối tượng của nó sang một lược đồ mới cho phiên bản 2.4.4 của PostGIS trong trường hợp bạn đã cài đặt nó:

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

Điều này không thực sự cần thiết; chỉ hữu ích:

ALTER DATABASE whatever
SET search_path = public,gc;

1

Kenny Evitt đã giải thích những điều quan trọng nhất. Tuy nhiên, đây là một số thông tin bổ sung:

Postgresql có cơ sở dữ liệu, không gian bảng và lược đồ và không thể thực hiện các phép nối từ cơ sở dữ liệu này sang cơ sở dữ liệu khác, vì chúng được phân tách chặt chẽ. Một cơ sở dữ liệu có thể có nhiều hơn một lược đồ và có thể nối một thứ gì đó từ lược đồ này sang lược đồ khác. Để biết thêm thông tin, hãy xem các tài liệu:

Một khả năng khác để tải PostGIS trong lược đồ gc của bạn sẽ là như sau:

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

Tôi không phải là chuyên gia về Arc Catalog cũng như pgadmin, nhưng tôi cho rằng một trong ba khả năng sau đây đã xảy ra:

  1. Postgresql hỗ trợ kiểu dữ liệu hình học nguyên bản . Nhưng bạn không nên tin vào điều này trong Ngữ cảnh Geo, vì siêu dữ liệu CRS cũng như chức năng chuyển đổi không được cung cấp. Bạn chỉ gặp may mắn và không có gì phá vỡ.
  2. Danh mục Arc bằng cách nào đó, sau khi không tìm thấy tiện ích mở rộng PostGIS, đã tạo ra nó mà không thông báo cho Người dùng. Để kiểm tra điều đó, bạn có thể nhìn vào các bảng hiện có trước và sau bước đó.

Trong psql, bạn có thể làm điều này bằng cách gõ:

\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

Nếu bạn thấy điều này, PostGIS đã được cài đặt dưới dạng tiện ích mở rộng. Khả năng thứ ba là ArcCatalog sẽ làm một cái gì đó như thế này:

set search_path to $all_schemas;
import to gc;

Trong trường hợp này, bạn cũng chỉ gặp may mắn. Nhưng có lẽ, ArcCatalog cuối cùng cũng làm được thứ gì đó tinh vi hơn ...


0

đây là giải pháp của bạn:

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

Nếu bạn đã cài đặt tiện ích mở rộng postGIS trong lược đồ công khai của bạn và muốn di chuyển trong gc thì hãy viết mã sau đây:

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

ALTER EXTENSION postgis 
  SET SCHEMA gc;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.