w4h.mapping module¶
The Mapping module contains the functions used for geospatial analysis throughout the package. This includes some input/output as well as functions to make manipulatin of geospatial data more simple
- w4h.mapping.align_rasters(grids_unaligned=None, model_grid=None, no_data_val_grid=0, verbose=False, log=False)[source]¶
- Reprojects two rasters and aligns their pixels - Parameters:
- grids_unalignedlist or xarray.DataArray
- Contains a list of grids or one unaligned grid 
- model_gridxarray.DataArray
- Contains model grid 
- no_data_val_gridint, default=0
- Sets value of no data pixels 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- alignedGridslist or xarray.DataArray
- Contains aligned grids 
 
 
- w4h.mapping.clip_gdf2study_area(study_area, gdf, log=False, verbose=False)[source]¶
- Clips dataframe to only include things within study area. - Parameters:
- study_areageopandas.GeoDataFrame
- Inputs study area polygon 
- gdfgeopandas.GeoDataFrame
- Inputs point data 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- gdfClipgeopandas.GeoDataFrame
- Contains only points within the study area 
 
 
- w4h.mapping.coords2geometry(df_no_geometry, xcol='LONGITUDE', ycol='LATITUDE', zcol='ELEV_FT', input_coords_crs='EPSG:4269', output_crs='EPSG:5070', use_z=False, wkt_col='WKT', geometry_source='coords', verbose=False, log=False)[source]¶
- Adds geometry to points with xy coordinates in the specified coordinate reference system. - Parameters:
- df_no_geometrypandas.Dataframe
- a Pandas dataframe containing points 
- xcolstr, default=’LONGITUDE’
- Name of column holding x coordinate data in df_no_geometry 
- ycolstr, default=’LATITUDE’
- Name of column holding y coordinate data in df_no_geometry 
- zcolstr, default=’ELEV_FT’
- Name of column holding z coordinate data in df_no_geometry 
- input_coords_crsstr, default=’EPSG:4269’
- Name of crs used for geometry 
- use_zbool, default=False
- Whether to use z column in calculation 
- geometry_sourcestr {‘coords’, ‘wkt’, ‘geometry’}
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- gdfgeopandas.GeoDataFrame
- Geopandas dataframe with points and their geometry values 
 
 
- w4h.mapping.get_drift_thick(surface_elev=None, bedrock_elev=None, layers=9, plot=False, verbose=False, log=False)[source]¶
- Finds the distance from surface_elev to bedrock_elev and then divides by number of layers to get layer thickness. - Parameters:
- surface_elevrioxarray.DataArray
- array holding surface elevation 
- bedrock_elevrioxarray.DataArray
- array holding bedrock elevation 
- layersint, default=9
- number of layers needed to calculate thickness for 
- plotbool, default=False
- tells function to either plot the data or not 
 
- Returns:
- driftThickrioxarray.DataArray
- Contains data array containing depth to bedrock at each point 
- layerThickrioxarray.DataArray
- Contains data array with layer thickness at each point 
 
 
- w4h.mapping.grid2study_area(study_area, grid, output_crs='EPSG:5070', verbose=False, log=False)[source]¶
- Clips grid to study area. - Parameters:
- study_areageopandas.GeoDataFrame
- inputs study area polygon 
- gridxarray.DataArray
- inputs grid array 
- output_crsstr, default=’EPSG:5070’
- inputs the coordinate reference system for the study area 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- gridxarray.DataArray
- returns xarray containing grid clipped only to area within study area 
 
 
- w4h.mapping.read_grid(grid_path=None, grid_type='model', no_data_val_grid=0, use_service=False, study_area=None, grid_crs=None, output_crs='EPSG:5070', verbose=False, log=False, **kwargs)[source]¶
- Reads in grid - Parameters:
- grid_pathstr or pathlib.Path, default=None
- Path to a grid file 
- grid_typestr, default=’model’
- Sets what type of grid to load in 
- no_data_val_gridint, default=0
- Sets the no data value of the grid 
- use_servicestr, default=False
- Sets which service the function uses 
- study_areageopandas.GeoDataFrame, default=None
- Dataframe containing study area polygon 
- grid_crsstr, default=None
- Sets crs to use if clipping to study area 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- gridINxarray.DataArray
- Returns grid 
 
 
- w4h.mapping.read_model_grid(model_grid_path, study_area=None, no_data_val_grid=0, read_grid=True, node_byspace=True, grid_crs=None, output_crs='EPSG:5070', verbose=False, log=False)[source]¶
- Reads in model grid to xarray data array - Parameters:
- grid_pathstr
- Path to model grid file 
- study_areageopandas.GeoDataFrame, default=None
- Dataframe containing study area polygon 
- no_data_val_gridint, default=0
- value assigned to areas with no data 
- readGridbool, default=True
- Whether function to either read grid or create grid 
- node_byspacebool, default=False
- Denotes how to create grid 
- output_crsstr, default=’EPSG:5070’
- Inputs study area crs 
- grid_crsstr, default=None
- Inputs grid crs 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- modelGridxarray.DataArray
- Data array containing model grid 
 
 
- w4h.mapping.read_study_area(study_area=None, study_area_crs=None, output_crs='EPSG:5070', buffer=None, return_original=False, log=False, verbose=False, **read_file_kwargs)[source]¶
- Read study area geospatial file into geopandas - Parameters:
- study_areastr, pathlib.Path, geopandas.GeoDataFrame, or shapely.Geometry
- Filepath to any geospatial file readable by geopandas. Polygon is best, but may work with other types if extent is correct. If shapely.Geometry, the crs should also be specified using a valid input to gpd.GeoDataFrame(crs=<crs>). 
- study_area_crsstr, tuple, dict, optional
- Not needed unless CRS must be read in manually (e.g, with a shapely.Geometry). CRS designation readable by geopandas/pyproj. 
- output_crsstr, tuple, dict, optional
- CRS to transform study_area to before returning. CRS designation should be readable by geopandas/pyproj. By default, ‘EPSG:5070’. 
- bufferNone or numeric, default=None
- If None, no buffer created. If a numeric value is given (float or int, for example), a buffer will be created at that distance in the unit of the study_area_crs. 
- return_originalbool, default=False
- Whether to return the (reprojected) study area as well as the (reprojected) buffered study area. Study area is only used for clipping data, so usually return_original=False is sufficient. 
- logbool, default = False
- Whether to log results to log file, by default False 
- verbosebool, default=False
- Whether to print status and results to terminal 
 
- Returns:
- studyAreaINgeopandas dataframe
- Geopandas dataframe with polygon geometry. 
 
 
- w4h.mapping.read_wcs(study_area, wcs_url='https://data.isgs.illinois.edu/arcgis/services/Elevation/IL_Statewide_Lidar_DEM_WGS/ImageServer/WCSServer?request=GetCapabilities&service=WCS', res_x=30, res_y=30, verbose=False, log=False, **kwargs)[source]¶
- Reads a WebCoverageService from a url and returns a rioxarray dataset containing it. - Parameters:
- study_areageopandas.GeoDataFrame
- Dataframe containing study area polygon 
- wcs_urlstr, default=lidarURL
- Represents the url for the WCS
- res_xint, default=30
- Sets resolution for x axis 
- res_yint, default=30
- Sets resolution for y axis 
- logbool, default = False
- Whether to log results to log file, by default False 
- **kwargs
 
- Returns:
- wcsData_rxrxarray.DataArray
- A xarray dataarray holding the image from the WebCoverageService 
 
 
- w4h.mapping.read_wms(study_area, layer_name='IL_Statewide_Lidar_DEM_WGS:None', wms_url='https://data.isgs.illinois.edu/arcgis/services/Elevation/IL_Statewide_Lidar_DEM_WGS/ImageServer/WCSServer?request=GetCapabilities&service=WCS', srs='EPSG:3857', clip_to_studyarea=True, bbox=[-9889002.6155, 5134541.069716, -9737541.607038, 5239029.6274], res_x=30, res_y=30, size_x=512, size_y=512, format='image/tiff', verbose=False, log=False, **kwargs)[source]¶
- Reads a WebMapService from a url and returns a rioxarray dataset containing it. - Parameters:
- study_areageopandas.GeoDataFrame
- Dataframe containg study area polygon 
- layer_namestr, default=’IL_Statewide_Lidar_DEM_WGS:None’
- Represents the layer name in the WMS 
- wms_urlstr, default=lidarURL
- Represents the url for the WMS 
- srsstr, default=’EPSG:3857’
- Sets the srs 
- clip_to_studyareabool, default=True
- Whether to clip to study area or not 
- res_xint, default=30
- Sets resolution for x axis 
- res_yint, default=512
- Sets resolution for y axis 
- size_xint, default=512
- Sets width of result 
- size_yint, default=512
- Sets height of result 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- wmsData_rxrxarray.DataArray
- Holds the image from the WebMapService 
 
 
- w4h.mapping.sample_raster_points(raster=None, points_df=None, well_id_col='API_NUMBER', xcol='LONGITUDE', ycol='LATITUDE', new_col='SAMPLED', verbose=False, log=False)[source]¶
- Sample raster values to points from geopandas geodataframe. - Parameters:
- rasterrioxarray data array
- Raster containing values to be sampled. 
- points_dfgeopandas.geodataframe
- Geopandas dataframe with geometry column containing point values to sample. 
- well_id_colstr, default=”API_NUMBER”
- Column that uniquely identifies each well so multiple sampling points are not taken per well 
- xcolstr, default=’LONGITUDE’
- Column containing name for x-column, by default ‘LONGITUDE.’ This is used to output (potentially) reprojected point coordinates so as not to overwrite the original. 
- ycolstr, default=’LATITUDE’
- Column containing name for y-column, by default ‘LATITUDE.’ This is used to output (potentially) reprojected point coordinates so as not to overwrite the original. new_col : str, optional 
- new_colstr, default=’SAMPLED’
- Name for name of new column containing points sampled from the raster, by default ‘SAMPLED’. 
- verbosebool, default=True
- Whether to send to print() information about progress of function, by default True. 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- points_dfgeopandas.geodataframe
- Same as points_df, but with sampled values and potentially with reprojected coordinates. 
 
 
- w4h.mapping.xyz_metadata_merge(xyz, metadata, verbose=False, log=False)[source]¶
- Add elevation to header data file. - Parameters:
- xyzpandas.Dataframe
- Contains elevation for the points 
- metadatapandas dataframe
- Header data file 
- logbool, default = False
- Whether to log results to log file, by default False 
 
- Returns:
- headerXYZDatapandas.Dataframe
- Header dataset merged to get elevation values