1. PostGIS 확장 설치
CREATE EXTENSION postgis;
2. 테이블 생성 및 공간 컬럼 추가
CREATE TABLE locations ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(Point, 4326) -- WGS 84 좌표계 );
3. 데이터 삽입
INSERT INTO locations (name, geom) VALUES ('Location A', ST_GeomFromText('POINT(30 10)', 4326)), ('Location B', ST_GeomFromText('POINT(20 20)', 4326)), ('Location C', ST_GeomFromText('POINT(10 30)', 4326));
4. 데이터 선택
모든 데이터를 선택하고, 각 지점의 좌표를 WKT (Well-Known Text) 형식으로 반환
SELECT id, name, ST_AsText(geom) FROM locations;
5. 특정 거리 내의 점 찾기
지정된 지점으로부터 일정 거리 내에 있는 점 찾기 (여기서 100km 이내)
SELECT id, name, ST_Distance(geom::geography, ST_GeographyFromText('SRID=4326;POINT(25 15)')) AS distance FROM locations WHERE ST_DWithin(geom::geography, ST_GeographyFromText('SRID=4326;POINT(25 15)'), 100000);
6. 두 지점 사이의 거리 계산
SELECT a.name AS name1, b.name AS name2, ST_Distance(a.geom::geography, b.geom::geography) AS distance FROM locations a, locations b WHERE a.id < b.id;
7. 특정 지점 주변의 모든 점 선택
지정된 반경 내의 모든 점 선택 (반경 50km)
SELECT id, name FROM locations WHERE ST_DWithin(geom::geography, ST_GeographyFromText('SRID=4326;POINT(25 15)'), 50000);
8. 지오메트리 변환 및 투영
지오메트리 변환 (WGS 84에서 UTM으로)
SELECT id, name, ST_Transform(geom, 32633) AS geom_utm FROM locations;
9. 지오메트리 영역 계산
각 지점의 버퍼 영역 계산 (반경 10km)
SELECT id, name, ST_Buffer(geom::geography, 10000)::geometry AS geom_buffer FROM locations;
10. 폴리곤 생성 및 포인트 포함 여부 확인
폴리곤 영역 내에 있는 포인트 찾기
WITH polygon AS ( SELECT ST_GeomFromText('POLYGON((30 10, 40 40, 20 40, 10 20, 30 10))', 4326) AS geom ) SELECT l.id, l.name FROM locations l, polygon p WHERE ST_Contains(p.geom, l.geom);
'Devops > CW Project' 카테고리의 다른 글
2. 미국 GDP와 소매 매출액 (1) | 2024.06.29 |
---|---|
1. 미국 고용 통계 데이터 활용하기 (1) | 2024.06.26 |