공간정보/한줄 팁(Tip)
한줄 팁 - PostGIS 교차 중복된 면적 구하기
요긴소프트
2022. 2. 16. 12:52
728x90
반응형
PostGIS에 저장된 폴리곤 레이어가 있다고 가정하고, 이 레이어의 feature들 중 내가 설정한 영역과 중복되는 폴리곤들의 면적을 구하는 한줄 쿼리 입니다.
select pnu, ST_Area(
st_intersection(
geom,
st_transform(
st_setsrid(st_geomfromtext('POLYGON ((127.00143 37.49791, 127.00635 37.49791, 127.00635 37.50109, 127.00143 37.50109, 127.00143 37.49791))'), 4326),
3857)))as area
from lp_pa_cbnd
where st_intersects(geom,
st_transform(
st_setsrid(st_geomfromtext('POLYGON ((127.00143 37.49791, 127.00635 37.49791, 127.00635 37.50109, 127.00143 37.50109, 127.00143 37.49791))'), 4326),
3857))
면적을 구하는 함수는 ST_Area이고, st_intersection으로 중복되는 영역의 폴리곤을 구합니다.
사용자가 입력하는 도형은 WKT(Well Known Text) 형태로 입력할 때는 st_geomfromtext 함수를 이용하고, 만약 입력 형태가 GeoJson이라면 st_geomfromtext 대신에 st_geomfromgeojson 함수를 사용하면 됩니다.
st_setsrid와 st_transform을 이용해 레이어에 저장된 geometry의 좌표계와 사용자 입력 좌표계를 동일하게 한 후에 insersection 면적을 구할 수 있습니다.
where 절의 st_intersects는 리턴값이 true 또는 false의 boolean 값으로 교차하는 피처 레코드만 선택하기 위해 사용했습니다.
728x90
반응형