Jin's Dev Story

[PostgreSQL] 공간데이터 IMPORT 본문

Database/PostgreSQL

[PostgreSQL] 공간데이터 IMPORT

woojin._. 2024. 6. 10. 09:52

1. 공공데이터포털에서 point, polygon, line 형태의 공간 데이터 다운로드

2. DBeaver에 테이블 생성

3. SQL Shell 로그인 후

// 기본
// WITH (FORMAT CSV, NULL '', HEADER) : HEADER 제외한다는 것
// \copy 테이블명 FROM '데이터경로.csv' WITH (FORMAT CSV, NULL '', HEADER); 

\copy scco_bus FROM 'D:\\data\\서울시버스정류소위치정보(20240305).csv' WITH (FORMAT CSV, NULL '', HEADER);

4. DBeaver에서 geometry 컬럼 추가

ST_SetSRID : Geometry 객체의 좌표계 ID를 설정

ST_GeomFromText : 텍스트 형식으로 표현된 Geometry를 생성

ST_GeomFromGeoJSON : GeoJSON 형식의 데이터를 Geometry 객체로 변환하는 데 사용

 

  • point
ALTER TABLE scco_bus 
ADD COLUMN geom geometry(Point, 4326); 

UPDATE scco_bus 
SET geom = ST_SetSRID(ST_MakePoint(xcode, ycode), 4326);
  • line
    • || 사이에 컬럼을 넣는 이유
      • ||는 문자열을 연결하는 연산자
      • line은 GeoJSON 형식의 문자열로 저장된 데이터LINESTRING : 점과 점 연결
      • ⇒ 문자열로 변환하여 LINESTRING의 형식으로 만들어 주기 위해 사용
    ALTER TABLE scco_line
    ADD COLUMN geom geometry(LineString, 4326);
    
    UPDATE scco_line
    SET geom = ST_SetSRID(ST_GeomFromText('LINESTRING(' || line || ')'), 4326);
  • polygon
ALTER TABLE scco_polygon 
ADD COLUMN geom geometry(Polygon, 4326);

UPDATE scco_polygon 
ET geom = ST_SetSRID(ST_GeomFromGeoJSON(multi_region_info), 4326);