고등어통조림
748
2019-09-09 15:44:04
0
47

postgreSQL에서 shp 파일을 로딩하여 만든 테이블을 읽어올때 질문


/*
asos_pt_jb.shp 파일 DB import -> asos_pt_jb 테이블 생성됨
*/
CREATE TABLE tmp_asos_pt_jb
    AS
    SELECT * FROM asos_pt_jb
    WHERE "종료일" is null;

/*
aws_pt_jb.shp 파일 DB import -> aws_pt_jb 테이블 생성됨
*/
CREATE TABLE tmp_aws_pt_jb
    AS
    SELECT * FROM aws_pt_jb
    WHERE "종료일" is null 
;

### 기상관측소 통합 데이터 생성
CREATE TABLE wth_stat_pt
(
    gid integer,
    pt_no numeric(10,0),
    pt_name character varying(10),
    inst_date character varying(10),
    mn_station character varying(6),
    geom geometry(point, 5179)
);

INSERT INTO wth_stat_pt(gid, pt_no, pt_name, inst_date, mn_station, geom)
SELECT gid, "지점", "지점명", "시작일", '종관기상관측', geom
FROM tmp_asos_pt_jb ;

INSERT INTO wth_stat_pt(gid, pt_no, pt_name, inst_date, mn_station, geom)
SELECT gid, "지점", "지점명", "시작일", '방재기상관측', geom
FROM tmp_aws_pt_jb ;

INSERT INTO wth_stat_pt(gid, pt_no, pt_name, inst_date, mn_station, geom)
SELECT gid, "표준지점번", "지점명", "장비설치일", '산악기상관측', geom
FROM ffr_pt_jb ;

----------------------------------------------------------------------------------------------

현재 insert 에서 오류가 납니다.

오류 내용은 아래와 같습니다.

ERROR: 오류: Geometry SRID (0) does not match column SRID (5179)

SQL state: 22023

 

wth_stat_pt 테이블에 shp 파일을 디비에 import 해서 만들어진 tmp_asos_pt_jb 테이블을 읽은 값을 넣으려는 것 같은데

좌표계? 가 맞지 않는것 같습니다.

테이블의 지리정보? 를 확인해 보니 아래와 같습니다.

일단 제 판단이 맞는진 모르겠지만

읽는 값인 tmp_asos_pt_jb 테이블엔 srid 값이 설정이 안 되어 있습니다.

그런데 넣으려고 하는 테이블인 wth_stat_pt 은 5179로 설정이 되어 있어서 둘이 맞지 않기 때문에 오류가 나는것 같습니다.

오류가 발생하여 기존 쿼리를

INSERT INTO wth_stat_pt(gid, pt_no, pt_name, inst_date, mn_station, geom)

SELECT gid, "지점", "지점명", "시작일", '종관기상관측', ST_SetSRID(geom,5179) 

FROM tmp_asos_pt_jb; 

 

이렇게 변경하여 실행하니 오류는 안 나고 insert 를 하긴 하는데요..

이 개념이 맞나요?



그리고
### 격자에 기상정보 데이터 업로드
CREATE TABLE ana_grid 
AS
SELECT t2.*
FROM (
SELECT t1.*, rank() OVER(PARTITION BY __gid ORDER BY dist) AS rnk
FROM (
SELECT a.*, b.pt_no, b.pt_name, b.inst_date, b.mn_station, ST_Distance(a."geom", b."geom") AS dist
FROM grid_pp_1km a, wth_stat_pt b
) t1 
) t2
WHERE t2.rnk = 1; 
이 쿼리를 실행할때 오류가 나는데
마찬가지로 shp 파일을 로딩하고 나서 만들어지는 테이블과 
wth_stat_pt 테이블의 SRID 값이 달라서 그러는것 같습니다.
확인을 하면 wth_stat_pt 의 SRID 값은 5179 이고
grid_pp_1km 은 세팅이 안 된건지 조회하면 '0' 이고 타입은 MULTIPOLYGON 입니다.
SRID 값을 5179 로 업데이트하여 맞춰주려고
alter table grid_pp_1km
alter column geom type geometry(MULTIPOLYGON, 0)
using ST_Transform(geom, 5179);
이렇게 쿼리를 날렸더니 '0'이 뭔지 모르겠다는 오류 메세지가 뜹니다.
이 경우 어떻게 바꿔줘야 하나요?

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.