Summary

  • gpd.overlay(A, B, how=옵션)은 두 공간자료의 위치를 기반으로 새 도형을 생성하며, A의 geometry가 기준이 된다
  • how 옵션으로 합집합·교집합·차집합 등 집합 연산을 선택한다
  • A를 기준으로 B가 담기므로, A 공간 단위로 집계할 수 있다

overlay

gpd.overlay(A, B, how=옵션)은 두 공간자료의 겹침 여부를 고려해 새로운 도형을 만드는 함수다. A의 geometry가 기준이 되며, 두 도형의 속성이 모두 유지된다. 즉 A 안에 B가 담기므로, 집계함수를 쓰면 A 공간 단위로 집계할 수 있다.

아래 예시는 각각 속성 1·2를 담은 두 GeoDataFrame(gdf1, gdf2)을 기준으로 한다.

그림. 겹치는 두 공간자료 gdf1, gdf2

union — 합집합

가능한 모든 조합(겹침·비겹침)을 반환한다. 공집합은 제외한다.

result_union = gdf1.overlay(gdf2, how='union')
gdf1gdf2
11
21
22
1NaN
2NaN
NaN1
NaN2

intersection — 교집합

두 자료 중 겹치는 객체(NaN이 하나도 없는 조합)만 반환한다.

result_intersection = gdf1.overlay(gdf2, how='intersection')
gdf1gdf2
11
21
22

symmetric_difference — 대칭차집합

겹치지 않는 객체만 반환한다(union에서 intersection을 뺀 나머지). difference와 다르다.

result_sym_diff = gdf1.overlay(gdf2, how='symmetric_difference')

difference — 차집합

기준 객체(A)에서 특정 객체(B)를 제외한 나머지를 반환한다. 대칭차집합이 전체에서 교집합을 뺀 것이라면, 차집합은 기준 객체에서 상대 객체를 전부 뺀 것이다.

result_diff = gdf1.overlay(gdf2, how='difference')

identity — 교집합 + 차집합

기준 객체만 반환하되, 겹치는 객체와 그렇지 않은 객체를 구분해 반환한다.

result_identity = gdf1.overlay(gdf2, how='identity')

keep_geom_type 옵션

서로 다른 유형의 지오메트리 보존 여부를 정한다. True면 다른 유형을 제거(경고 발생 가능), False면 모든 지오메트리를 유지한다.

gpd.overlay(A, B, how='intersection', keep_geom_type=False)

Reference