개발/SQL

PostgreSQL 테이블을 GeoJSON으로 조회

Strong_옹이 2021. 5. 18. 17:35
728x90
반응형

PostgreSQL에 등록된 공간 테이블을 GeoJSON으로 조회합니다.

아래 테이블은 이전글 참조

2021.05.18 - [개발/GIS] - QGIS를 사용하여 PostgreSQL(PostGIS) DB 에 shape파일 등록하기

 

QGIS를 사용하여 PostgreSQL(PostGIS) DB 에 shape파일 등록하기

shp2pgsql를 사용하지 않고, QGIS를 사용해서 Shape파일 PostgreSQL DB 등록 1. 사전환경 - 개발서버(Linux CentOS 7)내 PostgreSQL 9.6.18, PostgreSQL 9.6.13 설치 - PC 내 QGIS Desktop 3.16.4 - 등록할 데이터..

lky1.tistory.com

1. 테이블 조회

SELECT * FROM TL_SIDO;

2. 1번에서 조회된 결과를 GeoJSON으로 조회하기 위해 PostgreSQL에서 제공하는 jsonb_build_object와 ST_AsGeoJSON()을 이용하여 Feature로 만들어 줍니다.

SELECT jsonb_build_object(
    'type',       'Feature',
    'sido_name',  name,
    'sido_code',  bjcd,
    'geometry',   ST_AsGeoJSON(geom)::jsonb,
    'properties', to_jsonb(inputs) - 'gid' - 'geom'
  ) AS feature
  FROM (SELECT * FROM tl_sido) inputs

3. jsonb_build_object와 jsonb_agg를 이용하여 Feature정보들을 하나의 FeatureCollection으로 만들어줍니다.

SELECT jsonb_build_object(
    'type',     'FeatureCollection',
    'features', jsonb_agg(features.feature)
)
FROM (
  SELECT jsonb_build_object(
    'type',       'Feature',
    'sido_name',  name,
    'sido_code',  bjcd,
    'geometry',   ST_AsGeoJSON(geom)::jsonb,
    'properties', to_jsonb(inputs) - 'gid' - 'geom'
  ) AS feature
  FROM (SELECT * FROM tl_sido) inputs) features;

  - 공간정보의 버텍스가 많은 경우 많은 시간이 소요 될 수 있습니다.

 

4. GeoJSON파일저장

  - 상단의 파일 > 익스포트에서 조회한 GeoJSON 파일을 저장합니다.

 

5. 저장결과 확인 

저장된 파일을 가지고, QGIS나 OpenLayers를 이용하여 웹에도 표출 가능합니다. 시도경계의 경우 각 시도별 버텍스가 많아 웹 표출시에는 버텍스를 간략화하여 조회하여야 합니다.

 

위와같은 방법으로 GeoJSON 외에도 JSON으로도 조회가 가능합니다.

728x90
반응형