Spaces:
Sleeping
Sleeping
import geopandas as gpd | |
from shapely.geometry import Polygon | |
# Sample DataFrame with geometries (use your own data) | |
data = {'ID': [1, 2, 3], | |
'geometry': [Polygon([(0, 0), (0, 2), (2, 2), (2, 0)]), | |
Polygon([(2, 0), (2, 2), (4, 2), (4, 0)]), | |
Polygon([(4, 0), (4, 2), (6, 2), (6, 0)])]} | |
gdf = gpd.GeoDataFrame(data, crs="EPSG:4326") | |
# Create a new column to store the neighboring IDs | |
gdf['neighbors'] = None | |
# Iterate through the GeoDataFrame to find neighbors | |
for index, row in gdf.iterrows(): | |
neighbors = [] | |
for other_index, other_row in gdf.iterrows(): | |
if index != other_index and row['geometry'].touches(other_row['geometry']): | |
neighbors.append(other_row['ID']) | |
gdf.at[index, 'neighbors'] = neighbors | |
# Display the DataFrame with neighbors | |
print(gdf[['ID', 'neighbors']]) | |
def find_neighbors(geom_df): | |
geom_df['neighbors'] = geom_df.apply(lambda row: find_single_neighbors(row, geom_df), axis=1) | |
return geom_df | |
def find_single_neighbors(row, geom_df): | |
neighbors = [] | |
for other_index, other_row in geom_df.iterrows(): | |
if row.name != other_index and row['geometry'].touches(other_row['geometry']): | |
neighbors.append(other_row['ID']) | |
return neighbors | |
# Example usage: | |
# Replace 'your_data.geojson' with the path to your GeoJSON file or any other supported format | |
# Make sure the GeoDataFrame has a 'geometry' column | |
your_gdf = gpd.read_file('your_data.geojson') | |
# Call the function to find neighbors | |
result_gdf = find_neighbors(your_gdf) | |
# Print the resulting GeoDataFrame | |
print(result_gdf) |