
    B.i                         S r SSKrSSKrSSKJr  SSKrSSKJr  SSKJr  SSK	r
S\4S jr\S:X  aC  \R                  " S	S
9r\R!                  SSS9  \R#                  5       r\" \R&                  5        gg)uK  
Extracts only road features (highways, streets, etc.) from a state's
OpenStreetMap .pbf file downloaded from Geofabrik.

✅ Features:
 - Automatic folder creation per state
 - Download progress bar with integrity checks
 - Safe extraction of road geometries
 - Saves standardized GeoPackage to: OSM_State_Files/{STATE}/data.gpkg
    N)Path)tqdm)OSMstatec           
      	   U R                  5       n [        R                  " 5       nUS-  U -  nUR                  SSS9  X  S3-  nUS-  nSU  S3n UR	                  5       (       Gd  [        SU R                  5        S	35        [        R                  " USS
S9 nUR                  5         [        UR                  R                  SS5      5      nSn[        US5       n	[        USSSU  S3S9 n
UR                  US9 H.  nU	R                  U5        U
R!                  [#        U5      5        M0     S S S 5        S S S 5        S S S 5        UR%                  5       R&                  S:  a  [)        S5      e[        SU 35        O[        SU 35         [        S5         [1        [3        U5      5      nUR5                  SS0SSS/ SQS9nUb  UR6                  (       a  [)        S 5      e[        S![#        U5      S" S#U R                  5        S$35        [        S%[9        UR:                  5       35         WR=                  S'S(9n[        S)5         X  S+3-  nWR?                  US,S-S.9  [        S/U 35        Sn U(       a>  UR	                  5       (       a)  URA                  5         [        S1URB                   35        O[        S2U S335         [        S65        [        S7U 35        [        S8URB                   35        [        S9URB                   35        [        S:[#        W5      S" 35        [        S;5        [        URE                  5       5        g ! , (       d  f       GN'= f! , (       d  f       GN1= f! , (       d  f       GN;= f! [*         a/  n[        SU 35        [,        R.                  " S5         S nAGN+S nAff = f! [*         a/  n[        S&U 35        [,        R.                  " S5         S nAGNS nAff = f! [*         a  n[        S*U 35         S nAGNS nAff = f! [*         a/  n[        S0U 35        [,        R.                  " S5         S nAGNS nAff = f! [*         a  n[        S4U S5U 35         S nAGNS nAff = f)<NOSM_State_FilesT)parentsexist_okz.osm.pbfz	data.gpkgz/https://download.geofabrik.de/north-america/us/z-latest.osm.pbfu    ⬇️ Downloading OSM data for z...
x   )streamtimeoutzcontent-lengthr   i    wbBi   )totalunit
unit_scaleunit_divisordesc)
chunk_sizei  u<   Downloaded file seems too small — possible download error.u   
✅ Download complete: u   ✅ Found existing file: u   ❌ Download failed:    u   
🚧 Extracting roads...highwaykeepF)layerbridgetunnellaneswidthsurfacematerial)custom_filterfilter_type
keep_nodeskeep_relationsextra_attributesuA   No road data extracted — check the .osm.pbf file or state name.u   ✅ Extracted ,z roads from z data.u   📋 Columns available: u   ❌ Road extraction failed: i  )epsgu&   🌐 Reprojected to WGS84 (EPSG:4326).u   ⚠️ Reprojection failed: z_roads.gpkgroadsGPKG)r   driveru   💾 Saved extracted roads to: u   ❌ Saving failed: u!   🧹 Deleted processed PBF file: u+   📦 Kept PBF files (DELETE_DOWNLOADED_PBF=)u   ⚠️ Could not delete z: u   
✅ Process complete!u   📁 Folder: u   📥 Input: u   💾 Output: u   🛣️ Roads extracted: z<------------------------------------------------------------)#lowerr   cwdmkdirexistsprint
capitalizerequestsgetraise_for_statusintheadersopenr   iter_contentwriteupdatelenstatst_size
ValueError	Exceptionsysexitr   strget_data_by_custom_criteriaemptylistcolumnsto_crsto_fileunlinknamehead)r   base_dir	state_dirfilenameoutput_pathurlr
total_size
block_sizefbarchunkeosmr'   DELETE_DOWNLOADED_PBFs                   -/data2/heatmap/scripts/extract_state_roads.pyextract_state_roadsrZ      s!   KKMExxzH,,u4IOOD4O0WH--Hk)K;E7/
RC
  4U5E5E5G4HNOc$<""$ /?!CD
!
(D)Q$#!%!7(+1 !":!F

3u:. "G1) =  }}&&3 !_``-hZ89-hZ89 

&'#h- //$d+  0 
" =EKK`aas5z!nL9I9I9K8LFST(emm)<(=>?2$'67G;"77k@/}=> !: X__%6%6OO5hmm_EF?@U?VVWXY 

#$	M)
%&	L
()	M+**+
,-	%c%j^
45	(O	%**,A1 1)) =<*  %aS)*B  ,QC01  2,QC0112  #A3'(  :(
"QC899:s   A	N AM5M#/AM1M#9M5?N N BO 2O? &P% 6AQ! ;Q! 
M M##
M2	-M55
N?N 
O $N;;O 
O<$O77O<?
P"	PP"%
Q/$QQ!
R+RR__main__z/Download and extract OSM road data for a state.)descriptionzState name (e.g., alabama).)help)__doc__argparser?   pathlibr   r1   r   pyrosmr   	geopandasgpdrA   rZ   __name__ArgumentParserparseradd_argument
parse_argsargsr        rY   <module>rl      s   	  
     
us up z$$EF &CDD

# rk   