🏞️ GIS & RS/📍 ArcGIS・QGIS

[QGIS] QGIS에서 대시메트릭 매핑(Dasymetric Mapping) 구현하는 방법

김 홍시 2025. 3. 27.
반응형

 


QGIS에서 대시메트릭 매핑(Dasymetric Mapping) 구현하는 방법 (50m 격자 기반 인구 분포 시각화)

공간 데이터를 활용한 인구 분포 시각화는 도시 계획, 상권 분석, 정책 수립 등 다양한 분야에서 활용됩니다. 특히 **대시메트릭 매핑(Dasymetric Mapping)**은 단순한 행정구역 기반 인구 분포보다 더 정교하고 현실적인 분포 분석이 가능해, GIS 실무에서 자주 활용되는 기법입니다.

이 글에서는 QGIS를 활용하여 50m 격자 단위의 대메트릭 매핑을 구현하는 단계별 방법을 안내드립니다.


🔧 사전 준비

  • QGIS 설치 (최신 버전 추천)
  • 행정동 경계 및 인구 데이터 (예: 주민등록인구)
  • 토지이용도 또는 건물 데이터 (보조 데이터로 활용)
  • 50m × 50m 격자 생성용 도구

1. 50m 격자 생성하기

QGIS의 Create Grid 기능을 활용하여 원하는 분석 범위에 격자를 생성합니다.

📌 방법

  • 메뉴: 벡터 → 도구 → 격자 생성
  • 격자 유형: 직사각형
  • 격자 크기: 가로 50m / 세로 50m
  • 범위: 행정동 경계 레이어 선택
  • 저장: .shp 등 벡터 형식으로 저장

2. 보조 데이터 불러오기

격자에 인구를 합리적으로 분배하기 위해 인구 밀집 가능성이 높은 지역을 식별하는 보조 데이터가 필요합니다.

📌 추천 보조 데이터

  • 토지이용도 (주거/상업/공업/녹지 등 구분 가능)
  • 건물 데이터 (건물 연면적, 용도 포함 시 더욱 정교화 가능)

3. 토지이용 유형별 가중치 부여

각 토지이용 유형에 따라 인구 밀집 가능성(가중치)을 설정합니다.

📌 필드 계산식 예시

CASE
  WHEN "landuse" = '주거지역' THEN 0.7
  WHEN "landuse" = '상업지역' THEN 0.2
  WHEN "landuse" = '공업지역' THEN 0.1
  WHEN "landuse" = '녹지' THEN 0.0
  ELSE 0.05
END
  • 필드 이름: weight
  • 필드 계산기: 레이어 우클릭 → 속성 테이블 열기 → 필드 계산기

4. 공간 교차 분석 (Intersection)

격자와 토지이용 데이터를 교차하여 격자 내 어떤 토지이용이 포함되어 있는지 파악합니다.

📌 교차 도구 사용

  • 메뉴: 벡터 → 지오프로세싱 도구 → 교차
  • 입력: 50m 격자
  • 교차 대상: 토지이용도

5. 인구 데이터 분배 (면적 기반 가중치)

① 면적 비율 계산

  • 필드 계산기에서 $area 함수 사용
  • 격자 내 토지이용 면적 비율 계산

② 인구 분배 계산식

"weight" * "면적비율" * "행정동 총인구"
  • 결과 필드 예시: weighted_pop

③ 격자별 합산

  • 메뉴: 벡터 → 분석 도구 → 통계
  • 또는 Group By 사용하여 격자별 weighted_pop 합산

6. PyQGIS로 자동화 (선택)

복잡한 계산이나 대량 처리 시 PyQGIS 콘솔을 통해 자동화할 수 있습니다.

📌 예시 코드

grid_layer = QgsProject.instance().mapLayersByName('grid')[0]
landuse_layer = QgsProject.instance().mapLayersByName('landuse')[0]

# 메모리 레이어 생성
result_layer = QgsVectorLayer("Polygon?crs=" + grid_layer.crs().authid(), "result", "memory")
provider = result_layer.dataProvider()
provider.addAttributes([QgsField("grid_id", QVariant.Int), QgsField("population", QVariant.Double)])
result_layer.updateFields()

# 계산 반복
for grid_feat in grid_layer.getFeatures():
    grid_geom = grid_feat.geometry()
    grid_id = grid_feat['id']
    # 인구 계산 로직 구현
    # ...
    new_feat = QgsFeature(result_layer.fields())
    new_feat.setGeometry(grid_geom)
    new_feat['grid_id'] = grid_id
    new_feat['population'] = calculated_population
    provider.addFeature(new_feat)

QgsProject.instance().addMapLayer(result_layer)

7. 인구 밀도 시각화

📌 단계

  • 레이어 우클릭 → 속성 → 심볼
  • 분류값으로 인구 필드 선택
  • 색상 그라데이션: 낮은 값은 연하고, 높은 값은 진하게
  • 스타일 저장: 재사용 가능

💡 고급 팁 (선택)

✅ 여러 보조데이터 결합

  • 토지이용도 + 건물 데이터 + 도로망 등
  • 복수 가중치 조합: 예) 건물 밀도 × 토지이용 가중치

✅ 반복 작업 자동화

  • 처리 → 그래픽 모델 생성기에서 모델 생성

✅ 정확도 검증

  • 기존 통계 데이터와 비교
  • 오차 분석하여 가중치 조정 가능

🔚 마무리하며

QGIS를 활용한 대시메트릭 매핑은 단순한 인구 데이터 표현을 넘어, 실제 거주 가능성이 높은 공간에 인구를 재분배하여 더욱 현실적인 시각화를 제공합니다. 상권 분석, 정책 수립, 도시계획 등에 활용하기에 매우 유용한 방법입니다.

 


🔍 추천 검색 키워드

  • QGIS 인구 격자
  • QGIS 토지이용 분석
  • 인구 공간 분석 방법
  • GIS 기반 인구 시각화

 

반응형

댓글