Ghép nối không gian (Spatial joins)

Trực quan hóa dữ liệu không gian địa lý bằng Python

Mary van Valkenburg

Data Science Program Manager, Nashville Software School

Quận hội đồng và quận học khu

biểu đồ 35 quận hội đồng

biểu đồ 9 quận học khu

Trực quan hóa dữ liệu không gian địa lý bằng Python

Tham số predicate của .sjoin()

import geopandas as gpd

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

predicate có thể là intersects, contains, và within

Trực quan hóa dữ liệu không gian địa lý bằng Python

Dùng .sjoin()

vùng màu xanh với các điểm đen

Trực quan hóa dữ liệu không gian địa lý bằng Python

predicate = 'intersects'

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

đa giác xanh nhạt với các điểm đen

Trực quan hóa dữ liệu không gian địa lý bằng Python

predicate = 'contains'

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

đa giác xanh nhạt với các điểm đen

Trực quan hóa dữ liệu không gian địa lý bằng Python

predicate = 'within'

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

đa giác xanh nhạt với các điểm đen

Trực quan hóa dữ liệu không gian địa lý bằng Python

Tham số predicate của .sjoin() - within

# tìm các quận hội đồng nằm trong các học khu

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
Trực quan hóa dữ liệu không gian địa lý bằng Python

Tham số predicate của .sjoin() - contains

# tìm các học khu chứa các quận hội đồng

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
Trực quan hóa dữ liệu không gian địa lý bằng Python

Tham số predicate của .sjoin() - intersects

# tìm các quận hội đồng giao với các học khu

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
Trực quan hóa dữ liệu không gian địa lý bằng Python

Các cột trong GeoDataFrame sau khi ghép nối không gian

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    
Trực quan hóa dữ liệu không gian địa lý bằng Python
# Tổng hợp quận hội đồng theo học khu - đổi tên district_left và 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
Trực quan hóa dữ liệu không gian địa lý bằng Python

Cùng luyện tập nào!

Trực quan hóa dữ liệu không gian địa lý bằng Python

Preparing Video For Download...