요약
gpd.overlay(A, B, how = '옵션'): 공간자료들의 위치를 기반으로 새로운 도형을 생성- A의 geometry가 기준
union: 합집합intersection: 교집합symmetric_difference: 대칭차집합 (교집합과 반대)difference: 차집합 A(기준) - Bidentity: 교집합(intersection) + 차집합(difference)
1. overlay
목적
geopandas.GeoDataFrame.overlay():GeoDataFrame객체에 대한 메소드- 공간자료들의 위치 정보들을 고려하여 겹치거나 겹치지 않는 위치를 기반으로 새로운 도형을 만들 때 사용한다.
- 단,
gpd.overlay(A, B)두 도형의 속성이 모두 유지된다. 즉 공간 결합시 좌측 공간데이터를 기준 공간 정보에 우측 공간데이터의 속성들이 결합됨 - 즉,A안에B가 담기며, 이를 통해 집계함수 사용시A공간 단위로 집계 가능how옵션을 통해 다양한 공간 결합 활용- output:
GeoDataFrame
아래와 같이 GeoDataFrame 형태인 gdf1, gdf2 2개의 공간 자료가 있으며, 각각 1과 2의 속성 정보를 담고 있다.

1.1 union
( 합집합) 가능한 모든 기하학 정보를 반환
- 각 공간자료별 겹치는지 겹치지 않는 지에 대한 모든 정보를 반환
- 위 예시자료를 기준으로 4개의 공간객체가 있으니, 4 x 2 - 1= 7 개의 속성 정보를 반환한다.
- 공집합 제외
result_union = gdf1.overlay(gdf2, how = 'union')
print(result_union)| gdf1 | gdf2 |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
| 1 | NaN |
| 2 | NaN |
| NaN | 1 |
| NaN | 2 |

1.2 intersection
( 교집합) 공간 자료 중 겹치는 객체만 반환
- NaN이 하나라도 아닌 조합을 반환
result_intersection = gdf1.overlay(gdf2, how = 'intersection')
print(resut_intersection)| gdf1 | gdf2 |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |

1.3 symmertric_difference
( 대칭차집합) 겹치지 않는 객체만 반환(
intersection의 반대)
- 즉,
Union한 결과에서interssection를 뺀 나머지 - 주의!
difference와 다름
result_sym_diff = gdf1.overlay(gdf2, how = 'symmetric_difference')
print(result_sym_diff)| gdf1 | gdf2 |
|---|---|
| 1 | NaN |
| 2 | NaN |
| NaN | 1 |
| NaN | 2 |

1.4 difference
( 차집합) 기준이 되는 객체에서 특정 객체를 제외한 나머지
- 대칭차집합(
symmetric_difference) 와의 차이점- 대칭차집합은 전체에서 교집합을 제외한 나머지
- 차집합은 기준 객체에서 특정 객체를 전부 제외한 나머지
result_diff = gdf1.overlay(gdf2, how = 'difference')
print(result_diff)| gdf1 | gdf2 |
|---|---|
| 1 | NaN |
| 2 | NaN |
| ![[geopandas overlay-difference.png | 500x500]] |
1.5 identity
기준이 되는 객체만 반환하지만 겹치는 객체와 그렇지 않은 객체를 구분해서 반환
- 즉,
identity는 교집합(intersection)과 차집합(difference)의 합이다.
result_identity = gdf1.overlay(gdf2, how = 'identity')
print(result_identity)| gdf1 | gdf2 |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
| 1 | NaN |
| 2 | NaN |
| ![[geopandas overlay-identity.png | 500x500]] |
2. overlaps
3. sjoin
참고사이트
from shapely.geometry import MultiPolygon공간결합
intersection(교차)
개념
- 두 GeoDataFrame의 지오메트리를 겹치는 부분 조합
gpd.overlay(A, B):Ageomerty 별로 속한B의 geometry들이 들어감
- 즉,
A안에B가 담김- 이를 통해 집계함수 사용시,
A공간 단위로 집계 가능
keep_geom_type: 서로 다른 지오메트리 유형을 가진 객체 보존여부True: 서로 다른 유형 지오메트리 제거 > 경고메시지 발생 가능False: 모든 지오메트리 유지
gpd.overlay(A, B, how='intersection', keep_geom_type = False)