Итак, мне удалось найти решение самостоятельно:
1.Импортировать библиотеки
import geopandas as gpd
2.Загрузить файл зданий
buildings_polys = gpd.read_file('.../buildings.shp')
3 .Загрузите файл областей
polygons_areas = gpd.read_file('.../areas.shp')
4. Найдите центр тяжести зданий
buildings_points = buildings_polys.copy()
buildings_points['geometry'] = buildings_points['geometry'].centroid
5. Проверьте, в какой области находится здание
i = 0
for area in areas:
i+=1
print('{} of {}'.format(i, len(areas)), area)
buildings_points[area] = np.where(buildings_points['geometry'].within(dictionary[area]), 1, 0)
Это создаст фрейм данных зданий с кучей столбцов (полный список областей), в которых будет либо 1, либо 0 в зависимости от того, находится ли здание в этой области.
Вы также можете сделать что-то вроде (вместо последнего строка на шаге 5:
buildings_points['area_of_building'] = np.where(buildings_points['geometry'].within(dictionary[area]), area, 0)
Чтобы получить единственный столбец, в котором будет указано название области.