@@ -1093,40 +1093,48 @@ def read_raster(file_name, band=None, src_crs=None, window=None, geometry=None,
10931093
10941094 with rasterio .Env ():
10951095 with rasterio .open (file_name , 'r' ) as src :
1096- src_crs = src .crs if src_crs is None else src_crs
1097- if not src_crs :
1098- src_crs = rasterio .crs .CRS .from_dict (DEF_CRS )
10991096 dst_meta = src .meta .copy ()
11001097
11011098 if dst_crs or transform :
11021099 LOGGER .debug ('Reprojecting ...' )
1100+
1101+ src_crs = src .crs if src_crs is None else src_crs
1102+ if not src_crs :
1103+ src_crs = rasterio .crs .CRS .from_dict (DEF_CRS )
11031104 transform = (transform , width , height ) if transform else None
11041105 inten = _read_raster_reproject (src , src_crs , dst_meta , band = band ,
11051106 geometry = geometry , dst_crs = dst_crs ,
11061107 transform = transform , resampling = resampling )
11071108 else :
1108- trans = dst_meta ['transform' ]
11091109 if geometry :
11101110 inten , trans = rasterio .mask .mask (src , geometry , crop = True , indexes = band )
11111111 if dst_meta ['nodata' ] and np .isnan (dst_meta ['nodata' ]):
11121112 inten [np .isnan (inten )] = 0
11131113 else :
11141114 inten [inten == dst_meta ['nodata' ]] = 0
1115+
11151116 else :
11161117 masked_array = src .read (band , window = window , masked = True )
11171118 inten = masked_array .data
11181119 inten [masked_array .mask ] = 0
1120+
11191121 if window :
11201122 trans = rasterio .windows .transform (window , src .transform )
1123+ else :
1124+ trans = dst_meta ['transform' ]
1125+
11211126 dst_meta .update ({
11221127 "height" : inten .shape [1 ],
11231128 "width" : inten .shape [2 ],
11241129 "transform" : trans ,
11251130 })
1131+
11261132 if not dst_meta ['crs' ]:
11271133 dst_meta ['crs' ] = rasterio .crs .CRS .from_dict (DEF_CRS )
1134+
11281135 intensity = inten [range (len (band )), :]
11291136 dst_shape = (len (band ), dst_meta ['height' ] * dst_meta ['width' ])
1137+
11301138 return dst_meta , intensity .reshape (dst_shape )
11311139
11321140def read_raster_bounds (path , bounds , res = None , bands = None ):
@@ -1285,7 +1293,7 @@ def interp_raster_data(data, interp_y, interp_x, transform, method='linear', fil
12851293 y_dim = ymin - yres / 2 + yres * np .arange (data .shape [0 ])
12861294 x_dim = xmin - xres / 2 + xres * np .arange (data .shape [1 ])
12871295
1288- data = np .float64 (data )
1296+ data = np .array (data , dtype = np . float64 )
12891297 data [np .isnan (data )] = fill_value
12901298 return scipy .interpolate .interpn ((y_dim , x_dim ), data , np .vstack ([interp_y , interp_x ]).T ,
12911299 method = method , bounds_error = False , fill_value = fill_value )
0 commit comments