GIS

QGIS와 PostGIS: 실습용 SQL 쿼리 예제

유병혁 2024. 12. 10. 14:05

속성으로 검색

SELECT * 
FROM sigungu;

SELECT id, name, geom 
FROM sigungu;

SELECT id, name, geom 
FROM sigungu
WHERE name = '마포구';

CREATE OR REPLACE VIEW mapo_sigungu AS
SELECT id, name, geom
FROM sigungu
WHERE name = '마포구';

공간으로 검색

CREATE OR REPLACE VIEW mapo_road_link AS
SELECT rl.*
FROM road_link rl
JOIN mapo_sigungu ms
ON ST_Intersects(rl.geom, ms.geom);

최단 경로 검색

CREATE OR REPLACE VIEW mapo_shortest_path AS
WITH shortest_path AS (
    -- pgr_dijkstra 함수로 최단 경로 계산
    SELECT edge, cost, agg_cost
    FROM pgr_dijkstra(
        'SELECT link_id AS id, 
                up_from_no AS source, 
                up_to_node AS target, 
                length AS cost 
         FROM mapo_road_link',
        223465,           -- 시작 노드 ID
        224380,           -- 끝 노드 ID
        directed := false -- 방향성 없는 그래프
    )
)
-- 최단 경로에 해당하는 링크 정보 추출
SELECT l.*
FROM mapo_road_link l
JOIN shortest_path sp
ON l.link_id = sp.edge;