728x90
반응형
다음과 같이 X, Y 좌표를 가지는 테이블이 있다고 가정해보자.
어떤 시스템에서 데이터를 가져오는데, 공간정보는 없고, X,Y 좌표만 있다고 하면 우리가 해당 데이터를 가지고
공간정보를 만들어야 한다. 오늘은 그 방법에 대해 정리 해보겠다. 연습은 아래 샘플 테이블로 하도록 하자.
( PostGIS 확장자 설치 되어 있어야함! )
샘플 테이블 생성 및 데이터 적재
-- PostGIS 확장자 설치
CREATE EXTENSION postgis;
-- 샘플테이블 생성
CREATE TABLE PUBLIC.geo_table (
geo_no varchar(14) NOT NULL,
geo_nm varchar(100) NULL,
addr_sido varchar(20) NULL,
addr_gugun varchar(20) NULL,
addr_dong varchar(50) NULL,
xcode varchar(100) NULL,
ycode varchar(100) NULL
);
-- 샘플테이블 데이터 적재
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('15', '대성베르힐리오파크 106', '서울특별시', '구로구', '대성베르힐리오파크', '127.58905125082998', '36.78983346099841');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('16', '드림플러스', '서울특별시', '관악구', '드림플러스', '127.43123654205627', '36.78983346099841
36.62615582197773');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('1', '(주)소노홀텔앤리조트', '서울특별시', '대림', '(주)소노홀텔앤리조트', '128.36234696399788', '36.977866164617126');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('2', '주공4-1아파트', '서울특별시', '관악구', '분평동 주공4차아파트', '127.49420805409716', '36.609898854112615');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('3', '주공4-2아파트', '서울특별시', '관악구', '분평동 주공4차아파트', '127.49420805409716', '36.609898854112615');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('4', '주공4-3아파트', '서울특별시', '봉천동', '1순환로1137번길', '127.49420805409716', '36.609898854112615');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('5', '홈플러스(상)', '서울특별시', '신림동', '홈플러스', '127.87105975040316', '36.965595221481706');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('6', '이마트(하)', '서울특별시', '신림동', '이마트', '127.87105975040316', '36.965595221481706');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('7', '분평주공4-2아파트404동', '서울특별시', '관악구', '분평동 주공4차아파트', '127.49420805409716', '36.609898854112615');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('8', '호수마을아파트102동', '서울특별시', '신림동', '호수마을아파트', '127.92470314637387', '36.967199228568184');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('9', '호수마을아파트103동', '서울특별시', '신림동', '호수마을아파트', '127.92470314637387', '36.967199228568184');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('10', '호수마을아파트101동', '서울특별시', '신림동', '호수마을아파트', '127.92470314637387', '36.967199228568184');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('11', '분평주공4-2아파트402동', '서울특별시', '관악구', '분평동 주공4차아파트', '127.49420805409716', '36.609898854112615');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('12', '대성베르힐리오파크 101', '서울특별시', '구로구', '대성베르힐리오파크', '127.58905125082998', '36.78983346099841');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('13', '대성베르힐리오파크 102', '서울특별시', '구로구', '대성베르힐리오파크', '127.58905125082998', '36.78983346099841');
INSERT INTO public.geo_table
(geo_no, geo_nm, addr_sido, addr_gugun, addr_dong, xcode, ycode)
VALUES('14', '대성베르힐리오파크 105', '서울특별시', '구로구', '대성베르힐리오파크', '127.58676485454409', '36.78971943919862');
어려운 건 없으니 그냥 아래 기본문법 한번 보고 예제를 따라 쳐보도록 하자.
기본문법
-- X좌표, Y좌표만 이용
geometry ST_MakePoint(float x, float y);
-- X좌표, Y좌표, Z좌표만 이용
geometry ST_MakePoint(float x, float y, float z);
-- X좌표, Y좌표, Z좌표, M좌표 이용
geometry ST_MakePoint(float x, float y, float z, float m);
예제
SELECT
ST_MakePoint(xcode::double precision , ycode::double precision) as geom,
xcode,
ycode
FROM PUBLIC.geo_table;
여기서 x좌표인 xcode와 y좌표인 ycode를 실수로 캐스팅 ( ::double precision ) 해주어
ST_MakePoint함수에 담아주었다. 어려울 거 전혀 없다. 그럼 결과는 아래와 같다.
이렇게 x,y 좌표만을 갖고 공간정보( 포인트 )로 만들어주었다. 어려운 건 전혀 없으니 한번씩만 따라해보면
금방 할 수 있을 것이다.
728x90
반응형
'GIS' 카테고리의 다른 글
[GIS] ST_AsGeoJSON함수를 이용하여 공간정보를 JSON타입으로 변환해보자. (0) | 2022.05.21 |
---|---|
[GIS] ST_SetSRID 함수를 활용하여, 공간정보에 SRID(좌표계)를 추가해보자. (0) | 2022.05.21 |
[GIS] GeoTIFF에서 .tif파일과 .tfw파일을 추출해보자. ( .tif파일 및 .tfw 파일 생성 ) (0) | 2022.04.25 |
[GIS] QGIS에서 툴박스가 안보일 때 해결방법 (0) | 2022.04.25 |
[GIS] 정사영상(.tif + .tfw)로 지오서버에 레이어를 발행해보자. (0) | 2022.04.24 |