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')| gdf1 | gdf2 |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
| 1 | NaN |
| 2 | NaN |
| NaN | 1 |
| NaN | 2 |
intersection — 교집합
두 자료 중 겹치는 객체(NaN이 하나도 없는 조합)만 반환한다.
result_intersection = gdf1.overlay(gdf2, how='intersection')| gdf1 | gdf2 |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
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