PostgreSQL에서 "public"이외의 사용자 정의 스키마에 PostGIS 공간 함수 추가


15

최근에 pgAdmin을 사용하여 PostgreSQL 9.1 데이터베이스 서버에 PostGIS 2.0.3 데이터베이스를 만들었습니다. "Extensions"에 "PostGIS"확장이 설치되어 있습니다. Al 공간 함수가 "공개"스키마에 추가되었습니다. 괜찮아.

이제 모든 데이터를 "gc"라는 새로운 체계에 저장하려고합니다. 그러나 해당 "gc"스키마에 모든 공간 함수를 설치하려면 어떻게해야합니까? 스키마에는 단일 기능이 없습니다. 그러나 ESRI ArcCatalog 10.1에서이 스키마로 피쳐 클래스를 가져 오거나 새로 만들려고 시도했을 때 작동했습니다! 피쳐 클래스를 가져 와서 QGIS에 표시 할 수 있습니다.

누구든지 그것에 대해 팁이나 아이디어를 줄 수 있습니까?

PostgreSQL과 PostGIS를 처음 사용합니다.



@MartinF이 있다 당신이 연결되는 질문에이 질문에 (불완전) 대답은하지만 그 질문은 정말 다른 무언가를 요구하고있다.
Kenny Evitt

이 질문의 제목은 "Public 이외의 스키마에 PostGIS 설치?"입니다.
Kenny Evitt

답변:


3

다음은 PostGIS 확장을 gc스키마 에 설치하기위한 명령 예입니다 .

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

PostGIS 및 해당 객체를 PostGIS 버전 2.4.4의 새 스키마 로 이동하는 명령의 예는 다음과 같습니다 .

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

꼭 필요한 것은 아닙니다. 그냥 도움이 :

ALTER DATABASE whatever
SET search_path = public,gc;

1

Kenny Evitt는 이미 가장 중요한 것을 설명했습니다. 그럼에도 불구하고 여기에 몇 가지 추가 정보가 있습니다.

PostgreSQL에는 데이터베이스, 테이블 스페이스 및 스키마가 있으며, 데이터베이스가 엄격하게 분리되어 있기 때문에 한 데이터베이스에서 다른 데이터베이스로 조인을 수행 할 수 없습니다. 한 데이터베이스에는 둘 이상의 스키마가있을 수 있으며 한 스키마에서 다른 스키마로 무언가를 결합 할 수 있습니다. 자세한 내용은 다음 문서를 참조하십시오.

gc 스키마에 PostGIS를로드 할 수있는 또 다른 가능성은 다음과 같습니다.

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

저는 Arc Catalog 또는 pgadmin 전문가가 아니지만 다음 세 가지 가능성 중 하나가 발생했다고 가정합니다.

  1. Postgresql은 기하 데이터 유형을 기본적으로 지원합니다 . 그러나 변환 기능뿐만 아니라 CRS 메타 데이터도 제공되지 않으므로 Geo 컨텍스트에서이를 신뢰해서는 안됩니다. 당신은 운이 좋았고 아무것도 파산하지 않았습니다.
  2. 어떻게 든 PostGIS 확장자를 찾지 못하면 Arc Catalog는 사용자에게 알리지 않고 그것을 만들었습니다. 이를 확인하기 위해 해당 단계 전후의 기존 테이블을 볼 수 있습니다.

psql에서는 다음을 입력하여이를 수행 할 수 있습니다.

\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

이 메시지가 표시되면 PostGIS가 확장으로 설치된 것입니다. 세 번째 가능성은 ArcCatalog가 다음과 같은 작업을 수행한다는 것입니다.

set search_path to $all_schemas;
import to gc;

이 경우에도 운이 좋았습니다. 그러나 아마도 ArcCatalog는 결국 더 정교한 것을 수행합니다 ...


0

여기 당신의 해결책이 있습니다 :

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

공개 스키마에 postGIS 확장을 이미 설치했고 gc로 이동하려면 다음 코드를 작성하십시오.

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

ALTER EXTENSION postgis 
  SET SCHEMA gc;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.