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