
    ,6i                        S r SSKrSSK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!S jrS r\S	:X  Ga[  \" 5       r\R$                  R'                  5       r \" \R(                  5      r\" S5      S-  \-  r\\ S3-  R5                  5       (       a  \rO\" S5      \-  r\\ S3-  r\\ S\S-   S3-  r\R5                  5       (       d  \" S\ 35        \R0                  " S5        \" S\ 35        \R<                  " \SS9r\R@                  (       a  \" S\ 35        \R0                  " S5        \" S\RB                   35        \" S\S-  S S35        \" \\S9r"\"RG                  \S\S-   S3SS9  \" S \RI                  5        35        gg! \ a(  r\" S
\ 35        \R0                  " S5         SrCGNQSrCff = f)"u   
Creates a regular grid (square tiles) covering a state's projected road data.

✅ Features:
 - Reads each state's {state}_roads_projected.gpkg
 - Generates grid tiles (default 2 km)
 - Saves as {state}_grid_2km.gpkg
 - Logs extent and CRS info
    N)Path)boxGRID_CELL_SIZE_METERSc                     U =(       d    [         R                  " [        5      nUc  [        S[         S35      e [	        U5      $ ! [         a  n[        SU S[         S35      UeSnAff = f)z8Resolve cell size from CLI args or environment variable.Nz8Cell size must be passed as an argument or provided via .zInvalid cell size 'z'. Provide an integer or set )osgetenvCELL_SIZE_ENV_VAR
ValueErrorint)explicit_value	raw_valueexcs      %/data2/heatmap/scripts/create_grid.pyresolve_cell_sizer      s}    >")),=">IFGXFYYZ[
 	
9~ !),IJ[I\\]^
	s   
A 
A,A''A,c                 p   U R                   u  p#pE[        R                  " X$U-   U5      n[        R                  " X5U-   U5      nUSS  VV	s/ s H   oSS   H  n	[        XX-   X-   5      PM     M"     n
nn	[        R
                  " SU
0U R                  S9n[        S[        U5      S S35        U$ s  sn	nf )zQGenerate a regular grid (square tiles) over the extent of the input GeoDataFrame.Ngeometry)crsu   ✅ Created ,z grid cells.)	total_boundsnparanger   gpdGeoDataFramer   printlen)gdf	cell_sizexminyminxmaxymaxcolsrowsxypolygonsgrids               r   	make_gridr*   &   s     --D99T)+Y7D99T)+Y7D cr7"A"Iq A!-7,5 8"  7 Z2@D	LT1\
23K7s   'B2c                      [         R                  " SS9n U R                  SSS9  U R                  SSS[         S	3S
9  U R	                  5       $ )Nz>Create regular grid tiles for a given state's projected roads.)descriptionstatezState name (e.g., alabama).)helpr   ?z.Grid cell size in meters. Defaults to env var z
 if unset.)nargsr.   )argparseArgumentParseradd_argumentr
   
parse_args)parsers    r   r4   r4   4   sh    $$TF &CD
%%6$7zC       __main__u   ❌    outputgermanyz_roads_projected.gpkg_grid_i  zkm.gpkgu$   ❌ Projected roads file not found: u   📦 Loading roads from roads_projected)layeru   ⚠️ No features found in u   🗺️ CRS: u   📏 Generating grid with z.1fz km cells...)r   grid_kmGPKG)r=   driveru   💾 Saved grid to: )i  )%__doc__r1   r   syspathlibr   	geopandasr   numpyr   shapely.geometryr   r
   r   r*   r4   __name__argsr-   lowerr   r   errr   exitgermany_direxistsbase_dir
input_pathoutput_path	read_filer   emptyr   r)   to_fileresolve r6   r   <module>rW      s    	 
     +  z<DJJE%dnn5	 x.9,u4K455==??>E)ug%:;;JwfY_,=WEEK 4ZLAB	$ZL
12
--
*;
<C
yy,ZL9:	M#''
#$	&y~c&:,
GHSI.DLLeItO+<B$?LO	 !4!4!6 7
89K 
  SEls   F GF<<G