일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 서울
- 네이버
- postgres
- platformurbanism
- 공간분석
- 베이지안
- spacesyntax
- digital geography
- 서울데이터
- 그래프색상
- naver
- multinomiallogitregression
- 그래프이론
- 파이썬
- Python
- 도시설계
- 베이지안뉴럴네트워크
- pandas
- SQL
- connectivity
- 핫플레이스
- 스마트시티
- 도시공간분석
- 웹크롤링
- graphtheory
- digitalgeography
- 공간데이터
- 도시인공지능
- QGIS
- 도시계획
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 서울
- 네이버
- postgres
- platformurbanism
- 공간분석
- 베이지안
- spacesyntax
- digital geography
- 서울데이터
- 그래프색상
- naver
- multinomiallogitregression
- 그래프이론
- 파이썬
- Python
- 도시설계
- 베이지안뉴럴네트워크
- pandas
- SQL
- connectivity
- 핫플레이스
- 스마트시티
- 도시공간분석
- 웹크롤링
- graphtheory
- digitalgeography
- 공간데이터
- 도시인공지능
- QGIS
- 도시계획
Archives
- Today
- Total
이언배 연구노트
[PostGRES] 최단거리 기준으로 공간 변수 붙이기 본문
가장 큰 관건이었던 데이터의 재생성 작업을 마쳤다.
이제 남은 건 분석만 하면 된다.
늘 그렇듯, 요리에 비유하면 재료 준비 과정이 가장 오래 걸린다. 이제 본격적으로 요리를 해볼 차례.
내가 붙여야 할 공간 변수들은
도로 위계, 도로 등급, 도로 너비, 도로까지의 거리 (도로데이터)
아파트까지 거리 (아파트 데이터)
CBD까지의 거리 (CBD)
지하철역까지의 거리 (지하철역)
층수, 지하층수, 총연면적, 건물 용도, 건물 연식 (빌딩데이터를 juso 에다가 nsdi 건물까지)
토지용도 (토지용도 데이터)
등이다.
일단, dtp_data_2024_buld 에 geometry 를 추가해준다.
ALTER TABLE dtp_data_2024_buld ADD COLUMN geom GEOMETRY;
UPDATE dtp_data_2024_buld
SET geom = buld.geom
FROM "JUSO_BULDINFO" buld
WHERE dtp_data_2024_buld.buld_id = buld.bul_man_no||'_'||buld.sig_cd;
아무리 해도 적응되지 않는 것은, 불필요한 테이블과 column이 너무 많아진다는 것.
백엔드 개발자들과 빅데이터 분석가들은 도대체 어떻게 하는 걸까?
도로데이터부터 시작해보자.
---------------------------------도로데이터 접합은 6시간 45분이 걸렸다.
CREATE MATERIALIZED VIEW temp_dtp_addroad AS
(SELECT nearest_ROAD.*
FROM dtp_data_2024_buld dd
LEFT JOIN LATERAL(
SELECT dd.*, ROAD.geom road_geom, ROAD.ROA_CLS_SE, ROAD.RDS_DPN_SE, ROAD.ROAD_BT
FROM "JUSO_ROADINFO" ROAD
ORDER BY dd.geom <-> ROAD.geom --KNN Operator
LIMIT 1
) nearest_ROAD ON True);
--------------------------------아파트 데이터 접합은 3시간 45분이 걸렸다.
CREATE MATERIALIZED VIEW temp_dtp_addapt AS
(SELECT nearest_ROAD.*
FROM (SELECT * FROM temp_dtp_addroad) thirdP_rest
LEFT JOIN LATERAL(
SELECT thirdP_rest.*, apt.geom apt_geom
FROM "JUSO_APTINFO" apt
ORDER BY thirdP_rest.geom <-> apt.geom --KNN Operator
LIMIT 1
) nearest_ROAD ON True);
--------------------------------CBD 데이터 접합은 6초가 걸렸다.
CREATE MATERIALIZED VIEW temp_dtp_addcbd AS
(SELECT nearest_ROAD.*
FROM (SELECT * FROM temp_dtp_addapt) thirdP_rest
LEFT JOIN LATERAL(
SELECT thirdP_rest.*, apt.geom cbd_geom
FROM "CBD_pt" apt
ORDER BY thirdP_rest.geom <-> apt.geom --KNN Operator
LIMIT 1
) nearest_ROAD ON True);
자꾸만 늘어나는 materialized view도 맘에 들지 않지만,
쿼리 시간이 오래 걸리는 공간 분석의 결과물이라면 별 수 없다.
---------------------------dist_to_station 으로 가는 길
UPDATE dtp_data_2024_final
SET dist_tostation = station_geom.dist_tostation
FROM (SELECT dtp_data_2024_final.pmid, ST_Distance(dtp_data_2024_final.geom, temp_dtp_addstation.station_geom) dist_tostation
FROM dtp_data_2024_final LEFT JOIN temp_dtp_addstation
ON temp_dtp_addstation.pmid = dtp_data_2024_final.pmid) station_geom
WHERE station_geom.pmid = dtp_data_2024_final.pmid;
--------------------------land use 로 가는 길
ALTER TABLE dtp_data_2024_final ADD COLUMN mlsfc_cl VARCHAR(10);
UPDATE dtp_data_2024_final
SET mlsfc_cl = add_lu.mlsfc_cl
FROM (SELECT dtp_data_2024_final.pmid, lu.mlsfc_cl
FROM dtp_data_2024_final LEFT JOIN "LANDUSE" lu
ON ST_Within(dtp_data_2024_final.geom, lu.geom)) add_lu
WHERE add_lu.pmid = dtp_data_2024_final.pmid;
UPDATE dtp_data_2024_final
SET mlsfc_cl = add_lu.mlsfc_cl
FROM (SELECT dtp_data_2024_final.pmid, lu.mlsfc_cl
FROM dtp_data_2024_final LEFT JOIN "LANDUSE" lu
ON ST_Intersects(dtp_data_2024_final.geom, lu.geom)) add_lu
WHERE dtp_data_2024_final.mlsfc_cl IS NULL AND add_lu.pmid = dtp_data_2024_final.pmid;
728x90
'PostGRES' 카테고리의 다른 글
[PostGRES] 종로구 신한카드 소비 데이터 쿼리, 그리고 상관관계 분석 (1) | 2025.01.13 |
---|---|
[PostGRES] 서로 다른 소스의 두 건물 데이터, 특히 날짜를 병합 (4) | 2024.12.09 |
[PostGRES] DTP 데이터셋과 빌딩 데이터의 결합 (4) | 2024.12.04 |
[PostGRES] DTP 데이터셋 완성하기 (1) | 2024.11.29 |
ADTP 찾아내기 (1) | 2024.11.29 |