
    Ch              	          S r SSKrSSKJr  SSKrSSKrSSKJ	r
  S rS r\S:X  Ga  \" \R                  5      S:  a  \" S5        \R"                  " S	5        \R                  S	   R%                  5       r\" \R                  5      S:  a  \" \R                  S   5      OS
r\S-   S3r\" S5      \-  r\\ S3-  r\\ S\ S3-  r\R5                  5       (       a  \R5                  5       (       d  \" S5        \R"                  " S	5        \" S\R7                  5        S35        \R8                  " \SS9r\R8                  " \S\ 3S9rS\R>                  ;  a  \" S5        S\S'   \" \\5      r \\ S\ S3-  r!\\ S\ S3-  r"\" \ SS\R7                  5        S\ S3\!S 9  \" \ S!S"\R7                  5        S#\ S3\"S 9  \" S$5        gg)%z
Visualize the spatial density of elevated (layer>0) and underground (layer<0)
road features for a given state using OpenStreetMap layer tags.

Output:
 - Heatmap of bridge/tunnel density per grid cell
 - Saved PNG image in the state's folder
    N)Pathc                    [        S5        [        R                  " XSSS9n[        R                  " US   SS9R                  S5      US'   [        S	5        US   S:  R                  [        5      US
'   US   S:  R                  [        5      US'   UR                  S5      S
S/   R                  5       R                  5       nUR                  R                  UR                  S5      S
   5      R                  S5      US'   UR                  R                  UR                  S5      S   5      R                  S5      US'   [        S5        U$ )z:Compute per-grid counts of elevated and underground roads.u1   📊 Performing spatial join for layer density...inner
intersects)how	predicatelayercoerce)errorsr   uE   🧮 Counting elevated vs. underground road segments per grid cell...is_elevatedis_undergroundindex_rightelevated_countunderground_countu%   ✅ Bridge/tunnel density calculated.)printgpdsjoinpd
to_numericfillnaastypeintgroupbysumreset_indexindexmap	set_index)roadsgridjoinedgroupeds       1/data2/heatmap/scripts/visualize_layer_density.pycalculate_layer_flagsr$      s7   	
=>YYu<HF mmF7OHELLQOF7O	
QR#G_q088=F= &w! 3;;C@F 	}%}6F&GH		  "ZZ^^-(7fQi 		 !%

-()9:!fQi 		 

12K    c                    [         R                  " SS9u  pVU R                  UUUSSUR                  SS5      R	                  5        S3SS	S
.S9  UR                  USSS9  UR                  S5        [         R                  " 5         [         R                  " USSS9  [        SU 35        [         R                  " U5        g)zPlot a single heatmap layer.)      )figsizeTr   _ z per grid cellg333333?g{Gz?)labelshrinkpad)columncmapaxlegend	linewidthlegend_kwds   r'   )fontsizer.   offi,  tight)dpibbox_inchesu   💾 Saved heatmap to: N)pltsubplotsplotreplace
capitalize	set_titleaxistight_layoutsavefigr   close)r    r/   r0   title	save_pathfigr1   s          r#   plot_layer_heatmaprH   /   s    ll7+GCIIsC0;;=>nM
   LLL,GGENKK	s8	#I;
/0IIcNr%   __main__   zPUsage: python -m scripts.visualize_layer_density <STATE_NAME> [CELL_SIZE_METERS]   i  i  kmOSM_State_Filesz_roads_projected.gpkg_grid_z.gpkgu   ❌ Required file not found.u   📦 Loading data for z...roads_projected)r	   grid_r	   u;   ⚠️ No 'layer' column in roads data — adding defaults._elevated_density_z.png_underground_density_r   YlGnBuz Elevated Road Density (z grid))r/   r0   rE   rF   r   PuBuz Underground Road Density (u   🎉 Layer heatmaps complete!)#__doc__syspathlibr   	geopandasr   pandasr   matplotlib.pyplotpyplotr;   r$   rH   __name__lenargvr   exitlowerstater   	cell_size
grid_labelbase_dir
roads_path	grid_pathexistsr?   	read_filer   r    columnsresultelevated_pngunderground_png r%   r#   <module>rn      s       <. z
388}q`aHHQKE$'MA$5CHHQK 4ItO$B'J%&.Hug%:;;JeWF:,e<<Ii&6&6&8&8,-	"5#3#3#5"6c
:;MM*,=>E==E**>?Demm#KLg"5$/F '9*TJJLE7*?
|4!PPO!!#$$<ZLO "!!#$$?
|6R! 

)*_ r%   