Land use collocation

[1]:
import pandas as pd

blocks_gdf = pd.read_pickle('./../../data/saint_petersburg/blocks.pickle')
[2]:
from blocksnet.relations import generate_adjacency_graph

adjacency_graph = generate_adjacency_graph(blocks_gdf, 10)
2025-09-19 17:36:33.960 | INFO     | blocksnet.relations.adjacency.core:_generate_adjacency_nodes:9 - Generating nodes
2025-09-19 17:36:33.966 | INFO     | blocksnet.relations.adjacency.core:_generate_adjacency_edges:14 - Generating edges
2025-09-19 17:36:36.986 | SUCCESS  | blocksnet.relations.adjacency.core:generate_adjacency_graph:37 - Adjacency graph successfully generated: 9533 nodes, 30567 edges
[4]:
from blocksnet.analysis.land_use import land_use_collocation

collocation_df = land_use_collocation(adjacency_graph, blocks_gdf)
collocation_df.head()
100%|██████████| 9533/9533 [00:04<00:00, 2025.75it/s]
[4]:
land_use site_area collocation
0 LandUse.TRANSPORT 0.032316 1.000000
1 LandUse.AGRICULTURE 137101.088247 0.512737
2 LandUse.RESIDENTIAL 95239.084434 1.000000
3 LandUse.RESIDENTIAL 125919.330984 1.000000
4 LandUse.RESIDENTIAL 169860.164494 0.485577
[5]:
blocks_gdf[['geometry']].join(collocation_df).plot('collocation', vmin=0, vmax=1, cmap='RdYlGn', legend=True, figsize=(10,8)).set_axis_off()
../../../_images/examples_analysis_land_use_collocation_4_0.png