PostGIS에서 여러 테이블을 새 테이블로 병합


13

PostGIS에서 여러 개의 개별 테이블을 새 테이블로 병합하려고합니다. Shapefile 데이터로 작업 할 때 쉬운 작업이지만 PostGIS 에서이 작업을 수행하는 방법을 잘 모르겠습니다. 도움을 주시면 감사하겠습니다. Append를 사용한다고 생각하지만 어디서부터 시작해야할지 확실하지 않습니다.

답변:


17

(비행 전 점검 : 모든 원본 테이블에서 속성이 동일합니까? 모든 테이블에서 형상 유형이 정확히 동일합니까?)

당신은 할 수 있습니다

  1. 먼저 (빈) 테이블을 만든 다음 INSERT INTO ... SELECT ... FROM을 사용하여 각 원래 테이블의 모든 데이터를 병합 된 테이블로 가져옵니다.
  2. 하나의 큰 UNION 문에서 새 테이블을 만듭니다.

1의 경우 :

CREATE TABLE merged (id serial primary key, attrib1 integer, attrib2 varchar(15),....);
SELECT AddGeometryColumn('merged','geom',<SRID>,'<FEATURE_TYPE>,'XY');
INSERT INTO merged (attrib1, attrib2, ...., geom) SELECT attribA, attribB,...,geom FROM table_1;
INSERT INTO merged (attrib1, attrib2, ...., geom) SELECT attribA, attribB,...,geom FROM table_2;

등등...

옵션 2 :

CREATE TABLE merged AS( 
SELECT attribA, attribB,...,geom FROM table_1
UNION 
SELECT attribA, attribB,...,geom FROM table_2
UNION
.... 
);
SELECT Populate_Geometry_Columns('merged'::regclass);

미시간 주 HTH


미카 감사합니다, 나는 이것을 시도 할 것입니다. 예, 모든 테이블은 동일한 속성을 가지며 동일한 지오메트리 유형입니다. 다시 한 번 감사드립니다 ...
라이언 가넷

시도했지만 XY와 관련된 오류가 발생합니다. 나는 내가 무엇을 사용 해야하는지 확실하지 않기 때문에 내가 잘못된 것을 넣는 것을 안다. 여기 내 쿼리와 출력 응답이 있습니다. 어떤 도움이라도 좋을 것입니다.
Ryan Garnett

CREATE TABLE pbear_pp (ID 직렬 기본 키, 엔티티 이름 varchar (40)); SELECT AddGeometryColumn ( 'pbear_pp', 'geom', '-1', 'polygon', 'XY'); pbear_pp (entityname, geom)에 삽입 nts250k.nts250k_043e_poly에서 엔티티 이름, geom을 선택하십시오. pbear_pp (entityname, geom)에 삽입 nts250k.nts250k_043f_poly에서 엔티티 이름, geom을 선택하십시오. ETC ETC ...
Ryan Garnett

주의 사항 : CREATE TABLE은 직렬 열 "pbear_pp.id"에 대해 암시 적 시퀀스 "pbear_pp_id_seq"를 작성합니다.주의 사항 : CREATE TABLE / PRIMARY KEY는 테이블 "pbear_pp"에 대해 암시 적 색인 "pbear_pp_pkey"를 작성합니다. 오류 : 정수에 대한 유효하지 않은 입력 구문 : "XY"
Ryan Garnett

1
인수가 차원을 지정하므로 'XY'대신 2를 사용하십시오.
lynxlynxlynx 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.