History#
0.19.4 (2025-05-23)#
Bug Fixes#
Fix the download URL for
get_camelsfunction according to the changes in the Hydroshare web service.Use the new links for the eHydro web service.
Fix the download issue with the Census data in
get_us_statesfunction.
0.19.3 (2025-03-07)#
New Features#
Add support for POLARIS soil dataset. The new function is called
soil_polaris. The function returns soil properties from the POLARIS dataset for a given location. The dataset includes soil properties such as soil texture, bulk density, organic carbon, pH, and soil moisture. The dataset is available for CONUS at 30m resolution.
Internal Changes#
Make
matplotlibandfoliumoptional dependencies instead of required dependencies. This is to reduce the size of the package and make it more lightweight. They are now required only if theplotmodule is used.Move the plotting functionality of PyGeoHydro for hydrologic signatures to HydroSignatures package. For now, the plot module is exported from HydroSignatures package to maintain backward compatibility.
0.19.0 (2025-01-17)#
Internal Changes#
Update all dependencies on HyRiver libraries to the latest versions and modify the code to be compatible with the latest versions of the libraries.
0.18.0 (2024-10-05)#
Bug Fixes#
Bump the minimum version of
aiohttp-client-cache>=0.12.3to fix an issue with the latest version ofaiohttp. (GH 124)
Breaking Changes#
Drop support for Python 3.8 since its end-of-life date is October 2024.
Remove all exceptions from the main module and raise them from the
exceptionsmodule. This is to declutter the public API and make it easier to maintain.
0.17.1 (2024-09-14)#
Internal Changes#
Drop support for Python 3.8 since its end-of-life date is October 2024.
Bug Fixes#
Update the
nlcdmodule to reflect the changes in the MRLC web service. There have been some breaking changes in the NLCD web service, and the module is updated to reflect these changes. Thus, previous versions of the module will not work with the new NLCD web service. (GH 122)Update the
nidmodule based on the latest changes to the NID web service. The changes include the addition of new fields to the NID dataset and the removal of some fields. The module is updated to reflect these changes.Update the
nfhlmodule to reflect the changes in the NFHL web service. There have been some breaking changes in the NFHL web service, and the module is updated to reflect these changes. Thus, previous versions of the module will not work with the new NFHL web service.
0.17.0 (2024-05-07)#
New Features#
Add support for the National Levee Dataset (NLD) from the USACE. The new class is called
NLDand gives users the ability to subset the NLD dataset by geometry, ID, or SQL queries. The class has three methods:bygeom,byids, andbysql.
Enhancements#
Add a new argument to
EHydrofor passing a directory to store the raw downloaded data. This is useful since most times the raw data is needed for further processing and reuse. So, by storing them in a folder other than its previous default location, i.e.,./cache, users can easily access and manage them.
Internal Changes#
Add the
exceptionsmodule to the high-level API to declutter the main module. In the future, all exceptions will be raised from this module and not from the main module. For now, the exceptions are raised from both modules for backward compatibility.Switch to using the
srclayout instead of theflatlayout for the package structure. This is to make the package more maintainable and to avoid any potential conflicts with other packages.Add artifact attestations to the release workflow.
Move
NIDclass to thenidmodule to make the package more organized and the main module less cluttered.
0.16.5 (2024-05-26)#
New Features#
Add new function called
soil_soilgridsto get soil data from the SoilGrids dataset. The signature of the function is the same as of thesoil_gnatsgofunction, so they can be used interchangeably. For more information on the SoilGrids dataset, visit ISRIC.
0.16.4 (2024-05-20)#
Bug Fixes#
Fix an issue in
NID.stage_nid_inventorywhere the function was failing when the response status code was 206 (partial content). This issue is fixed by checking the response status code and if it’s 206, the function will continue reading the headers and the get the modified date from the response headers. Also, the function incorrectly didn’t check if the local database was up-to-date with the remote database when the processed database already existed. Now, the function will check changes in the remote database and re-download the data even if necessary even if the processed database exists.
0.16.3 (2024-05-16)#
Internal Changes#
More robust handling of failed download links for eHydro data. For example, sometimes, eHydro web service uses placeholder as actual links. There are also cases where links are in the database but they are dead.
Add the
exceptionsmodule to the high-level API to declutter the main module. In the future, all exceptions will be raised from this module and not from the main module. For now, the exceptions are raised from both modules for backward compatibility.
Bug Fixes#
In
EHydroclass, sometimes the requested surveys are not in the same CRS, so they couldn’t be combined into a singleGeoDataFrame. This issue is fixed by reprojecting all the requested surveys to 5070 CRS before combining them.
0.16.1 (2024-04-24)#
Bug Fixes#
In
nlcd_helperfunction the roughness value for class 82 was set to 0.16 instead of 0.037.
New Features#
Converted all methods of
NWISclass toclassmethodso the class can be used without instantiating it. This change makes the class more flexible and easier to use.In
NIDclass, thestage_nid_inventorymethod now checks if the remote NID database has been modified since the last download and only downloads the new data if it has been modified. This change makes the method more efficient and reduces the network traffic while ensuring that the local database is always up-to-date.
0.16.0 (2024-01-03)#
Breaking Changes#
Bump the minimum supported version of
shapelyto 2.
Internal Changes#
Update the link to NWIS error codes tables in the
nwis_errorsfunction.Update
NWISclass based on the latest changes to the NWIS web service.Use the default tiles for the
interactive_mapfunction.
0.15.2 (2023-09-22)#
New Features#
Add a new attribute to
EHydroclass calledsurvey_grid. It’s ageopandas.GeoDataFramethat includes the survey grid of the eHydro dataset which is a 35-km hexagonal grid.Add support for getting point cloud and survey outline data from eHydro. You can set
data_typeinEHydrotobathymetry,points,outlines, orcontoursto get the corresponding data. The default ispointssince this is the recommended data type by USACE.Add
NFHLclass withinnfhlmodule to access FEMA’s National Flood Hazard Layer (NFHL) using six different ArcGISRESTFul services. Contributed by Fernando Aristizabal. (PR 108)
Internal Changes#
Remove dependency on
dask.Move all NLCD related functions to a separate module called
nlcd. This doesn’t affect the API since the functions are still available underpygeohydronamespace.
0.15.1 (2023-08-02)#
This release provides access to three new datasets:
USACE Hydrographic Surveys (eHydro) and
USGS Short-Term Network (STN) Flood Event Data, contributed by Fernando Aristizabal. (PR 108)
NLCD 2021
New Features#
Add support for getting topobathymetry data from USACE Hydrographic Surveys (eHydro). The new class is called
EHydroand gives users the ability to subset the eHydro dataset by geometry, ID, or SQL queries.Add new
stnfloodeventsmodule withSTNFloodEventDataclass for retrieving flood event data from the USGS Short-Term Network (STN) RESTful Service. This Python API abstracts away RESTful principles and produces analysis ready data in geo-referenced GeoDataFrames, DataFrames, lists, or dictionaries as desired. The core class methods available aredata_dictionary,get_all_data, andget_filtered_data. These class methods retrieve the data dictionaries by type, get all the available data by type, and make filtered requests for data by type as well, respectively. The four types of data includeinstruments,peaks,hwms, andsites. Contributed by Fernando Aristizabal.Add a wrapper function for the
STNFloodEventDataclass calledstn_flood_event.Add support for the new NLCD data (2021) for the three supported layers.
0.15.0 (2023-05-07)#
From release 0.15 onward, all minor versions of HyRiver packages
will be pinned. This ensures that previous minor versions of HyRiver
packages cannot be installed with later minor releases. For example,
if you have py3dep==0.14.x installed, you cannot install
pydaymet==0.15.x. This is to ensure that the API is
consistent across all minor versions.
New Features#
Add a new option to
NWIS.get_info, callednhd_info, for retrieving NHDPlus related info on the sites. This will two new service calls that might slow down the function, so it’s disabled by default.Update links in
NIDto the latest CSV and GPKG versions of the NID dataset.Add two new properties to
NIDto access the entire NID dataset. You can useNID.dfto access the CSV version as apandas.DataFrameandNID.gdfto access the GPKG version as ageopandas.GeoDataFrame. Installingpyogriois highly recommended for much faster reading of the GPKG version.Refactor
NID.bygeomto use the newNID.gdfproperty for spatial querying of the dataset. This change should make the query much faster.For now, retain compatibility with
shapely<2while supportingshapley>=2.
0.14.0 (2023-03-05)#
New Features#
Add a new function, called
nlcd_area_percent, for computing the percentages or natural, developed, and impervious areas within geometries of a givenGeoDataFrame. This function uses imperviousness and land use/land cover data from NLCD to compute the area percentages of the natural, developed, and impervious areas. For more information please refer to the function’s documentation.Add a new column to the dataframe returned by
NWIS.get_info, callednhd_comid, and renamedrain_sqkmtonhd_areasqkm. The new drainage area is the best available estimates of stations’ drainage area that have been extracted from the NHDPlus. The newnhd_comidcolumn makes it easier to link stations to NHDPlus.In
get_camels, returnqobswith negatives values set toNaN. Also, Add a new variable calledNewman_2017to both datasets for identifying the 531 stations that were used in Newman et al. (2017).Add a new function, called
streamflow_fillna, for filling missing streamflow values (NAN) with day-of-year average values.
Breaking Changes#
Bump the minimum required version of
shapelyto 2.0, and use its new API.
Internal Changes#
Sync all minor versions of HyRiver packages to 0.14.0.
Improve performance of all NLCD functions by merging two methods of the
NLCDand also reducing the memory footprint of the functions.
0.13.12 (2023-02-10)#
New Features#
Add initial support for SensorThings API Currently, the
SensorThingsclass only supportsThingsendpoint. Users need to provide a valid Odata filter. The class has aodata_helperfunction that can be used to generate and validate Odata filters. Additionally, usingsensor_infoandsensor_propertyfunctions users can request for information about sensors themselves or their properties.
Internal Changes#
Simplify geometry validation by using
pygeoutils.geo2polygonfunction inssebopeta_bygeom.Fully migrate
setup.cfgandsetup.pytopyproject.toml.Convert relative imports to absolute with
absolufy-imports.Sync all patch versions of HyRiver packages to x.x.12.
0.13.10 (2023-01-09)#
Breaking Changes#
The NID service has changed some of its endpoints to use Federal ID instead of Dam ID. This change affects the
NID.inventory_byidfunction. This function now accepts Federal IDs instead of dam IDs.
New Features#
Refactor the
show_versionsfunction to improve performance and print the output in a nicer table-like format.
Internal Changes#
Use the new
pygeoogc.streaming_downloadfunction inhuc_wb_fullto improve performance and reduce code complexity.Skip 0.13.9 version so the minor version of all HyRiver packages become the same.
Modify the codebase based on the latest changes in
geopandasrelated to empty dataframes.Use
pyrightfor static type checking instead ofmypyand address all typing issues that it raised.
0.13.8 (2022-12-09)#
New Features#
Add a function called
huc_wb_fullthat returns the full watershed boundaryGeoDataFrameof a given HUC level. If only a subset of HUCs is needed thepygeohydro.WBDclass should be used. The full dataset is downloaded from the National Maps’ WBD staged products.Add a new function called
irrigation_withdrawalsfor retrieving estimated monthly water use for irrigation by 12-digit hydrologic unit in the CONUS for 2015 from ScienceBase.Add a new property to
NID, calleddata_unitsfor indicating the units of NID dataset variables.The
get_us_statesnow acceptsconusas asubset_keywhich is equivalent tocontiguous.
Internal Changes#
Add
get_us_statesto__init__file, so it can be loaded directly, e.g.,gh.get_us_states("TX").Modify the codebase based on Refurb suggestions.
Significant performance improvements in
NWIS.get_streamflowespecially for large requests by refactoring the timezone handling.
Bug Fixes#
Fix the dam types and purposes mapping dictionaries in
NIDclass.
0.13.7 (2022-11-04)#
New Features#
Add a two new function for retrieving soil properties across the US:
soil_properties: Porosity, available water capacity, and field capacity,soil_gnatsgo: Soil properties from the gNATSGO database.
Add a new help function called
state_lookup_tablefor getting a lookup table of US states and their counties. This can be particularly useful for mapping the digitstate_cdandcounty_cdthat NWIS returns to state names/codes.Add support for getting individual state geometries using
get_us_statesfunction by passing their two letter state code. Also, use TIGER 2022 data for the US states and counties instead of TIGER 2021.
Internal Changes#
Remove
proplotas a dependency and usematplotlibinstead.
0.13.6 (2022-08-30)#
Internal Changes#
Add the missing PyPi classifiers for the supported Python versions.
0.13.5 (2022-08-29)#
Breaking Changes#
Append “Error” to all exception classes for conforming to PEP-8 naming conventions.
Deprecate
ssebopeta_bylocsince it’s been replaced withssebopeta_bycoordssince version 0.13.0.
Internal Changes#
Bump the minimum versions of
pygeoogcandpygeoutilsto 0.13.5 and that ofasync-retrieverto 0.3.5.
0.13.3 (2022-07-31)#
New Features#
Add a new argument to
NID.inventory_byidclass for staging the entire NID dataset prior to inventory queries. There a new public method calledNID.stage_nid_inventorythat can be used to download the entire NID dataset and save it as afeatherfile. This is useful inventory queries with large number of IDs and is much more efficient than querying the NID web service.
Bug Fixes#
The background value in
cover_statisticsfunction should have been 127 not 0. Also, dropped the background value from the return statistics.
0.13.2 (2022-06-14)#
Breaking Changes#
Set the minimum supported version of Python to 3.8 since many of the dependencies such as
xarray,pandas,rioxarrayhave dropped support for Python 3.7.
Internal Changes#
Remove
USGSprefixes from the input station IDs inNWIS.get_streamflowfunction. Also, check if the remaining parts of the IDs are all digits and throw an exception if otherwise. Additionally, make sure that IDs have at least 8 chars by adding leading zeros (GH 99).Use micromamba for running tests and use nox for linting in CI.
0.13.1 (2022-06-11)#
New Features#
Add a new function called
get_us_statesto thehelpersmodule for obtaining a GeoDataFrame of the US states. It has an optional argument for returning thecontiguousstates,continentalstates,commonwealthsstates, or USterritories. The data are retrieved from the Census’ Tiger 2021 database.In the
NIDclass keep thevalid_fieldsproperty as apandas.Seriesinstead of alist, so it can be searched easier via itsstraccessor.
Internal Changes#
Refactor the
plot.signaturesfunction to useproplotinstead ofmatplotlib.Improve performance of
NWIS.get_streamflowby not validating the layer name when instantiating theWaterDataclass. Also, make the function more robust by checking if streamflow data is available for each station and throw a warning if not.
Bug Fixes#
Fix an issue in
NWIS.get_streamflowwhere-9999values were not being filtered out. According to NWIS, these values are reserved for ice-affected data. This fix sets these values tonumpy.nan.
0.13.0 (2022-04-03)#
New Features#
Add a new flag to
nlcd_*functions calledsslfor disabling SSL verification.Add a new function called
get_camelsfor getting the CAMELS dataset. The function returns ageopandas.GeoDataFramethat includes basin-level attributes for all 671 stations in the dataset and axarray.Datasetthat contains streamflow data for all 671 stations and their basin-level attributes.Add a new function named
overland_roughnessfor getting the overland roughness values from land cover data.Add a new class called
WBDfor getting watershed boundary (HUC) data.
from pygeohydro import WBD
wbd = WBD("huc4")
hudson = wbd.byids("huc4", ["0202", "0203"])
Breaking Changes#
Remove caching-related arguments from all functions since now they can be set globally via three environmental variables:
HYRIVER_CACHE_NAME: Path to the caching SQLite database.HYRIVER_CACHE_EXPIRE: Expiration time for cached requests in seconds.HYRIVER_CACHE_DISABLE: Disable reading/writing from/to the cache file.
You can do this like so:
import os
os.environ["HYRIVER_CACHE_NAME"] = "path/to/file.sqlite"
os.environ["HYRIVER_CACHE_EXPIRE"] = "3600"
os.environ["HYRIVER_CACHE_DISABLE"] = "true"
Internal Changes#
Write
nodataattribute usingrioxarrayinnlcd_bygeomsince the clipping operation ofrioxarrayuses this value as the fill value.
0.12.4 (2022-02-04)#
Internal Changes#
Return a named tuple instead of a
dictof percentages in thecover_statisticsfunction. It makes accessing the values easier.Add
pyclnas a newpre-commithooks for removing unused imports.Remove time zone info from the inputs to
plot.signaturesto avoid issues with thematplotlibbackend.
Bug Fixes#
Fix an issue in
plot.signatureswhere the newmatplotlibversion requires anumpyarray instead of apandas.DataFrame.
0.12.3 (2022-01-15)#
Bug Fixes#
Replace no data values of data in
ssebopeta_bygeomwithnp.nanbefore converting it to mm/day.Fix an inconsistency issue with CRS projection when using UTM in
nlcd_*. UseEPSG:3857for all reprojections and get the data from NLCD in the same projection. (GH 85)Improve performance of
nlcd_*functions by reducing number of service calls.
Internal Changes#
Add type checking with
typeguardand fix type hinting issues raised bytypeguard.Refactor
show_versionsto ensure getting correct versions of all dependencies.
0.12.2 (2021-12-31)#
New Features#
The
NWIS.get_infonow returns ageopandas.GeoDataFrameinstead of apandas.DataFrame.
Bug Fixes#
Fix a bug in
NWIS.get_streamflowwhere the drainage area might not be computed correctly if target stations are not located at the outlet of their watersheds.
0.12.1 (2021-12-31)#
Internal Changes#
Use the three new
ar.retrieve_*functions instead of the oldar.retrievefunction to improve type hinting and to make the API more consistent.
Bug Fixes#
Fix an in issue with
NWIS.get_streamflowwhere time zone of the data was not being correctly determined when it was US specific abbreviations such asCST.
0.12.0 (2021-12-27)#
New Features#
Add support for getting instantaneous streamflow from NWIS in addition to the daily streamflow by adding
freqargument toNWIS.get_streamflowthat can be eitherivordv. The default isdvto retain the previous behavior of the function.Convert the time zone of the streamflow data to UTC.
Add attributes of the requested stations as
attrsparameter to the returnedpandas.DataFrame. (GH 75)Add a new flag to
NWIS.get_streamflowfor returning the streamflow asxarray.Dataset. This dataset has two dimensions;timeandstation_id. It has ten variables which includesdischargeand nine other station attributes. (GH 75)Add
drain_sqkmfrom GagesII toNWIS.get_info.Show
drain_sqkmin the interactive map generated byinteractive_map.Add two new functions for getting NLCD data;
nlcd_bygeomandnlcd_bycoords. The newnlcd_bycoordsfunction returns ageopandas.GeoDataFramewith the NLCD layers as columns and input coordinates, which should be a list of(lon, lat)tuples, as thegeometrycolumn. Moreover, The newnlcd_bygeomfunction now accepts ageopandas.GeoDataFrameas the input. In this case, it returns adictwith keys as indices of the inputgeopandas.GeoDataFrame. (GH 80)The previous
nlcdfunction is being deprecated. For now, it callsnlcd_bygeominternally and retains the old behavior. This function will be removed in future versions.
Breaking Changes#
The
ssebop_bylocis being deprecated and replaced byssebop_bycoords. The new function accepts apandas.DataFrameas input that should include three columns:id,x, andy. It returns axarray.Datasetwith two dimensions:timeandlocation_id. Theidcolumns from the input is used as thelocation_iddimension. Thessebop_bylocfunction still retains the old behavior and will be removed in future versions.Set the request caching’s expiration time to never expire. Add two flags to all functions to control the caching:
expire_afteranddisable_caching.Replace
NIDclass with the new RESTful-based web service of National Inventory of Dams. The new NID service is very different from the old one, so this is considered a breaking change.
Internal Changes#
Improve exception handling in
NWIS.get_infowhen NWIS returns an error message rather than 500s web service error.The
NWIS.get_streamflowfunction now checks if the site info dataset contains any duplicates. Therefore, all the remaining station numbers will be unique. This prevents an issue with settingattrswhere duplicate indexes cause an exception when being converted to a dict. (GH 75)Add all the missing types so
mypy --strictpasses.
0.11.4 (2021-11-24)#
New Features#
Add support for the Water Quality Portal Web Services. (GH 72)
Add support for two versions of NID web service. The original NID web service is considered version 2 and the new NID is considered version 3. You can pass the version number to the
NIDlike soNID(2). The default version is 2.
Bug Fixes#
Fix an issue with background percentage calculation in
cover_statistics.
0.11.3 (2021-11-12)#
New Features#
Add a new map service for National Inventory of Dams (NID).
Internal Changes#
Use
importlib-metadatafor getting the version instead ofpkg_resourcesto decrease import time as discussed in this issue.
0.11.2 (2021-07-31)#
Bug Fixes#
Refactor
cover_statisticsto address an issue with wrong category names and also improve performance for large datasets by usingnumpy’s functions.Fix an issue with detecting wrong number of stations in
NWIS.get_streamflow. Also, improve filtering stations that their start/end date don’t match the user requested interval.
0.11.1 (2021-07-31)#
The highlight of this release is adding support for NLCD 2019 and significant improvements in NWIS support.
New Features#
Add support for the recently released version of NLCD (2019), including the impervious descriptor layer. Highlights of the new database are:
NLCD 2019 now offers land cover for years 2001, 2004, 2006, 2008, 2011, 2013, 2016, 2019, and impervious surface and impervious descriptor products now updated to match each date of land cover. These products update all previously released versions of land cover and impervious products for CONUS (NLCD 2001, NLCD 2006, NLCD 2011, NLCD 2016) and are not directly comparable to previous products. NLCD 2019 land cover and impervious surface product versions of previous dates must be downloaded for proper comparison. NLCD 2019 also offers an impervious surface descriptor product that identifies the type of each impervious surface pixel. This product identifies types of roads, wind tower sites, building locations, and energy production sites to allow deeper analysis of developed features.
—MRLC
Add support for all the supported regions of NLCD database (CONUS, AK, HI, and PR).
Add support for passing multiple years to the NLCD function, like so
{"cover": [2016, 2019]}.Add
plot.descriptor_legendsfunction to plot the legend for the impervious descriptor layer.New features in
NWISclass are:Remove
query_*methods since it’s not convenient to pass them directly as a dictionary.Add a new function called
get_parameter_codesto query parameters and get information about them.To decrease complexity of
get_streamflowmethod add a new private function to handle some tasks.For handling more of NWIS’s services make
retrieve_rdbmore general.
Add a new argument called
nwis_kwdstointeractive_mapso any NWIS specific keywords can be passed for filtering stations.Improve exception handling in
get_infomethod and simplify and improve its performance for getting HCDN.
Internal Changes#
Migrate to using
AsyncRetrieverfor handling communications with web services.
0.11.0 (2021-06-19)#
Breaking Changes#
Drop support for Python 3.6 since many of the dependencies such as
xarrayandpandashave done so.Remove
get_nidandget_nid_codesfunctions since NID now has a ArcGISRESTFul service.
New Features#
Add a new class called
NIDfor accessing the recently released National Inventory of Dams web service. This service is based on ArcGIS’s RESTful service. So now the user just need to instantiate the class like soNID()and with three methods ofAGRBaseclass, the user can retrieve the data. These methods are:bygeom,byids, andbysql. Moreover, it has aattrsproperty that includes descriptions of the database fields with their units.Refactor
NWIS.get_infoto be more generic by accepting any valid queries that are documented at USGS Site Web Service.Allow for passing a list of queries to
NWIS.get_infoand useasync_retrieverthat significantly improves the network response time.Add two new flags to
interactive_mapfor limiting the stations to those with daily values (dv=True) and/or instantaneous values (iv=True). This function now includes a link to stations webpage on USGS website.
Internal Changes#
Use persistent caching for all send/receive requests that can significantly improve the network response time.
Explicitly include all the hard dependencies in
setup.cfg.Refactor
interactive_mapandNWIS.get_infoto make them more efficient and reduce their code complexity.
0.10.2 (2021-03-27)#
Internal Changes#
Add announcement regarding the new name for the software stack, HyRiver.
Improve
pipinstallation and release workflow.
0.10.1 (2021-03-06)#
Internal Changes#
Add
lxmlto deps.
0.10.0 (2021-03-06)#
Internal Changes#
The official first release of PyGeoHydro with a new name and logo.
Replace
cElementTreewithElementTreesince it’s been deprecated bydefusedxml.Make
mypychecks more strict and fix all the errors and prevent possible bugs.Speed up CI testing by using
mambaand caching.
0.9.2 (2021-03-02)#
Internal Changes#
Rename
hydrodatapackage toPyGeoHydrofor publication on JOSS.In
NWIS.get_info, drop rows that don’t have mean daily discharge data instead of slicing.Speed up Github Actions by using
mambaand caching.Improve
pipinstallation by addingpyproject.toml.
New Features#
Add support for the National Inventory of Dams (NID) via
get_nidfunction.
0.9.1 (2021-02-22)#
Internal Changes#
Fix an issue with
NWIS.get_infomethod where stations with False values as theirhcdn_2009value were returned asNoneinstead.
0.9.0 (2021-02-14)#
Internal Changes#
Bump versions of packages across the stack to the same version.
Use the new PyNHD function for getting basins,
NLDI.get_basisn.Made
mypychecks more strict and added all the missing type annotations.
0.8.0 (2020-12-06)#
Fixed the issue with WaterData due to the recent changes on the server side.
Updated the examples based on the latest changes across the stack.
Add support for multipolygon.
Remove the
fill_holeargument.Fix a warning in
nlcdregarding performing division onnanvalues.
0.7.2 (2020-8-18)#
Enhancements#
Replaced
simplejsonwithorjsonto speed-up JSON operations.Explicitly sort the time dimension of the
ssebopeta_bygeomfunction.
Bug Fixes#
Fix an issue with the
nlcdfunction where high resolution requests fail.
0.7.1 (2020-8-13)#
New Features#
Added a new argument to
plot.signaturesfor controlling the vertical position of the plot title, calledtitle_ypos. This could be useful for multi-line titles.
Bug Fixes#
Fixed an issue with the
nlcdfunction where none layers are not dropped and cause the function to fails.
0.7.0 (2020-8-12)#
This version divides PyGeoHydro into six standalone Python libraries. So many of the changes listed below belong to the modules and functions that are now a separate package. This decision was made for reducing the complexity of the code base and allow the users to only install the packages that they need without having to install all the PyGeoHydro dependencies.
Breaking changes#
The
servicesmodule is now a separate package called PyGeoOGCC and is set as a requirement for PyGeoHydro. PyGeoOGC is a leaner package with much fewer dependencies and is suitable for people who might only need an interface to web services.Unified function names for getting feature by ID and by box.
Combined
startandendarguments into atupleargument calleddatesacross the code base.Rewrote NLDI function and moved most of its
classmethodstoStationso nowStationclass has more cohesion.Removed exploratory functionality of
ArcGISREST, since it’s more convenient to do so from a browser. Now,base_urlis a required argument.Renamed
in_crsindatasetsandservicesfunctions togeo_crsfor geometry andbox_crsfor bounding box inputs.Re-wrote the
signaturesfunction from scratch usingNamedTupleto improve readability and efficiency. Now, thedailyargument should be just apandas.DataFrameorpandas.Seriesand the column names are used for legends.Removed
utils.geom_maskfunction and replaced it withrasterio.mask.mask.Removed
widthas an input in functions with raster output sinceresolutionis almost always the preferred way to request for data. This change made the code more readable.Renamed two functions:
ArcGISRESTfulandwms_bybox. These function now returnrequests.Responsetype output.onlyipv4is now a class method inRetrySession.The
plot.signaturesfunction now assumes that the input time series are in mm/day.Added a flag to
get_streamflowfunction in theNWISclass to convert from cms to mm/day which is useful for plotting hydrologic signatures using thesignaturesfunctions.
Enhancements#
Remove soft requirements from the env files.
Refactored
requestsfunctions into a single class and a separate file.Made all the classes available directly from
PyGeoHydro.Added CodeFactor to the Github pipeline and addressed some issues that
CodeFactorfound.Added Bandit to check the code for security issue.
Improved docstrings and documentations.
Added customized exceptions for better exception handling.
Added
pytestfixtures to improve the tests speed.Refactored
daymetandnwis_siteinfofunctions to reduce code complexity and improve readability.Major refactoring of the code base while adding type hinting.
The input geometry (or bounding box) can be provided in any projection and the necessary re-projections are done under the hood.
Refactored the method for getting object IDs in
ArcGISRESTclass to improve robustness and efficiency.Refactored
Daymetclass to improve readability.Add Deepsource for further code quality checking.
Automatic handling of large WMS requests (more than 8 million pixels i.e., width x height)
The
json_togeodffunction now accepts both a single (Geo)JSON or a list of themRefactored
plot.signaturesusingadd_gridspecfor a much cleaner code.
New Features#
Added access to WaterData’s GeoServer databases.
Added access to the remaining NLDI database (Water Quality Portal and Water Data Exchange).
Created a Binder for launching a computing environment on the cloud and testing PyGeoHydro.
Added a URL repository for the supported services called
ServiceURLAdded support for FEMA web services for flood maps and FWS for wetlands.
Added a new function called
wms_toxarrayfor converting WMS request responses toxarray.DataArrayorxarray.Dataset.
Bug Fixes#
Re-projection issues for function with input geometry.
Start and end variables not being initialized when coords was used in
Station.Geometry mask for
xarray.DataArrayWMS output re-projections
0.6.0 (2020-06-23)#
Refactor requests session
Improve overall code quality based on CodeFactor suggestions
Migrate to Github Actions from TravisCI
0.5.5 (2020-06-03)#
Add to conda-forge
Remove pqdm and arcgis2geojson dependencies
0.5.3 (2020-06-07)#
Added threading capability to the flow accumulation function
Generalized WFS to include both by bbox and by featureID
Migrate RTD to
pipfromconda.Changed HCDN database source to GagesII database
Increased robustness of functions that need network connections
Made the flow accumulation output a pandas Series for better handling of time series input
Combined DEM, slope, and aspect in a class called NationalMap.
Installation from pip installs all the dependencies
0.5.0 (2020-04-25)#
An almost complete re-writing of the code base and not backward-compatible
New website design
Added vector accumulation
Added base classes and function accessing any ArcGIS REST, WMS, WMS service
Standalone functions for creating datasets from responses and masking the data
Added threading using
pqdmto speed up the downloadsInteractive map for exploring USGS stations
Replaced OpenTopography with 3DEP
Added HCDN database for identifying natural watersheds
0.4.4 (2020-03-12)#
Added new databases: NLDI, NHDPLus V2, OpenTopography, gridded Daymet, and SSEBop
The gridded data are returned as xarray DataArrays
Removed dependency on StreamStats and replaced it by NLDI
Improved overall robustness and efficiency of the code
Not backward comparable
Added code style enforcement with
isort, black, flake8 and pre-commitAdded a new shiny logo!
New installation method
Changed OpenTopography base url to their new server
Fixed NLCD legend and statistics bug
0.3.0 (2020-02-10)#
Clipped the obtained NLCD data using the watershed geometry
Added support for specifying the year for getting NLCD
Removed direct NHDPlus data download dependency by using StreamStats and USGS APIs
Renamed
get_lulcfunction toget_nlcd
0.2.0 (2020-02-09)#
Simplified import method
Changed usage from
rstformat toipynbAuto-formatting with the black python package
Change
docstringformat based on SphinxFixed
pytestwarnings and changed its working directoryAdded an example notebook with data files
Added
docstringfor all the functionsAdded Module section to the documentation
Fixed py7zr issue
Changed 7z extractor from
pyunpackto py7zrFixed some linting issues.
0.1.0 (2020-01-31)#
First release on PyPI.