공간 조인

Python으로 지리공간 데이터 시각화하기

Mary van Valkenburg

Data Science Program Manager, Nashville Software School

시의원 구역과 교육구

시의원 구역 35개 플롯

교육구 9개 플롯

Python으로 지리공간 데이터 시각화하기

.sjoin() predicate 인수

import geopandas as gpd

gpd.sjoin(blue_region_gdf, black_point_gdf, predicate = <how to build>)

predicate에는 intersects, contains, within{{1}}을 사용할 수 있습니다

Python으로 지리공간 데이터 시각화하기

.sjoin() 사용하기

검은 점이 있는 파란색 영역 플롯

Python으로 지리공간 데이터 시각화하기

predicate = 'intersects'

gpd.sjoin(blue_region_gdf, black_point_gdf, predicate = 'intersects')

검은 점이 있는 연파란색 폴리곤

Python으로 지리공간 데이터 시각화하기

predicate = 'contains'

gpd.sjoin(blue_region_gdf, black_point_gdf, predicate = 'contains')

검은 점이 있는 연파란색 폴리곤

Python으로 지리공간 데이터 시각화하기

predicate = 'within'

gpd.sjoin(black_point_gdf, blue_region_gdf, predicate = 'within')

검은 점이 있는 연파란색 폴리곤

Python으로 지리공간 데이터 시각화하기

.sjoin() predicate 인수 - within

# find council districts within school districts

within_gdf = gpd.sjoin(council_districts, school_districts, predicate = 'within')

print('council districts within school districts: ', within_gdf.shape[0])
council districts within school districts:  11
Python으로 지리공간 데이터 시각화하기

.sjoin() predicate 인수 - contains

# find school districts that contain council districts

contains_gdf = pd.sjoin(school_districts, council_districts, predicate = 'contains')

print('school districts contain council districts: ', contains_gdf.shape[0])
school districts contain council districts:  11
Python으로 지리공간 데이터 시각화하기

.sjoin() predicate 인수 - intersects

# find council districts that intersect with school districts

intersect_gdf = gpd.sjoin(council_districts, school_districts, predicate = 'intersects')

print('council districts intersect school districts: ', intersect.shape[0])
council districts intersect school districts:  100
Python으로 지리공간 데이터 시각화하기

공간 조인된 GeoDataFrame의 열

within_gdf = gpd.sjoin(council_districts, school_districts, predicate = 'within')
within_gdf.head()
  first_name_left  last_name_left district_left  index_right    
0 Nick             Leonardo            1              0              
1 DeCosta          Hastings            2              0 
2 Nancy            VanReece            8              1    
3 Bill             Pridemore           9              1    
9 Doug             Pardue             10              1    
Python으로 지리공간 데이터 시각화하기
# Aggregate council districts by school district - rename district_left and district_right
within_gdf.district_left = council_district
within_gdf.district_right = school_district
within_gdf[['council_district', 'school_district']
          ].groupby('school_district'
                   ).agg('count'
                        ).sort_values('council_district', ascending = False)
                   council_district 
school_district    
       3                   3
       1                   2
       9                   2
       2                   1
       5                   1
       6                   1
       8                   1
Python으로 지리공간 데이터 시각화하기

연습해 보겠습니다!

Python으로 지리공간 데이터 시각화하기

Preparing Video For Download...