- 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.
- 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.
- 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.
- Update all dependencies on HyRiver libraries to the latest versions and modify the code to be compatible with the latest versions of the libraries.
- Bump the minimum version of
aiohttp-client-cache>=0.12.3to fix an issue with the latest version ofaiohttp. (:issue_hydro:`124`)
- 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.
- Drop support for Python 3.8 since its end-of-life date is October 2024.
- 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. (:issue_hydro:`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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- In
nlcd_helperfunction the roughness value for class 82 was set to 0.16 instead of 0.037.
- 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.
- Bump the minimum supported version of
shapelyto 2.
- 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.
- 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. (:pull_hydro:`108`)
- 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.
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. (:pull_hydro:`108`)
- NLCD 2021
- 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.
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.
- 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.
- 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.
- Bump the minimum required version of
shapelyto 2.0, and use its new API.
- 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.
- 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.
- 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.
- 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.
- Refactor the
show_versionsfunction to improve performance and print the output in a nicer table-like format.
- 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.
- 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.
- 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.
- Fix the dam types and purposes mapping dictionaries in
NIDclass.
- 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.
- Remove
proplotas a dependency and usematplotlibinstead.
- Add the missing PyPi classifiers for the supported Python versions.
- 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.
- Bump the minimum versions of
pygeoogcandpygeoutilsto 0.13.5 and that ofasync-retrieverto 0.3.5.
- 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.
- The background value in
cover_statisticsfunction should have been 127 not 0. Also, dropped the background value from the return statistics.
- 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.
- 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 (:issue_hydro:`99`). - Use micromamba for running tests and use nox for linting in CI.
- 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.
- 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.
- 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.
- 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"])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"- Write
nodataattribute usingrioxarrayinnlcd_bygeomsince the clipping operation ofrioxarrayuses this value as the fill value.
- 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.
- Fix an issue in
plot.signatureswhere the newmatplotlibversion requires anumpyarray instead of apandas.DataFrame.
- 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. (:issue_hydro:`85`) - Improve performance of
nlcd_*functions by reducing number of service calls.
- Add type checking with
typeguardand fix type hinting issues raised bytypeguard. - Refactor
show_versionsto ensure getting correct versions of all dependencies.
- The
NWIS.get_infonow returns ageopandas.GeoDataFrameinstead of apandas.DataFrame.
- 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.
- Use the three new
ar.retrieve_*functions instead of the oldar.retrievefunction to improve type hinting and to make the API more consistent.
- 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.
- 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. (:issue_hydro:`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. (:issue_hydro:`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. (:issue_hydro:`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.
- 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.
- 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. (:issue_hydro:`75`) - Add all the missing types so
mypy --strictpasses.
- Add support for the Water Quality Portal Web Services. (:issue_hydro:`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.
- Fix an issue with background percentage calculation in
cover_statistics.
- Add a new map service for National Inventory of Dams (NID).
- Use
importlib-metadatafor getting the version instead ofpkg_resourcesto decrease import time as discussed in this issue.
- 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.
The highlight of this release is adding support for NLCD 2019 and significant improvements in NWIS support.
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.
- Remove
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.
- Migrate to using
AsyncRetrieverfor handling communications with web services.
- 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.
- 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.
- 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.
- Add announcement regarding the new name for the software stack, HyRiver.
- Improve
pipinstallation and release workflow.
- Add
lxmlto deps.
- 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.
- 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.
- Add support for the National Inventory of Dams (NID) via
get_nidfunction.
- Fix an issue with
NWIS.get_infomethod where stations with False values as theirhcdn_2009value were returned asNoneinstead.
- 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.
- 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.
- Replaced
simplejsonwithorjsonto speed-up JSON operations. - Explicitly sort the time dimension of the
ssebopeta_bygeomfunction.
- Fix an issue with the
nlcdfunction where high resolution requests fail.
- 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.
- Fixed an issue with the
nlcdfunction where none layers are not dropped and cause the function to fails.
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.
- 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.
- 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 them - Refactored
plot.signaturesusingadd_gridspecfor a much cleaner code.
- 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
ServiceURL - Added 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.
- 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.DataArray - WMS output re-projections
- Refactor requests session
- Improve overall code quality based on CodeFactor suggestions
- Migrate to Github Actions from TravisCI
- Add to conda-forge
- Remove pqdm and arcgis2geojson dependencies
- 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
- 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 downloads - Interactive map for exploring USGS stations
- Replaced OpenTopography with 3DEP
- Added HCDN database for identifying natural watersheds
- 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-commit - Added a new shiny logo!
- New installation method
- Changed OpenTopography base url to their new server
- Fixed NLCD legend and statistics bug
- 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
- Simplified import method
- Changed usage from
rstformat toipynb - Auto-formatting with the black python package
- Change
docstringformat based on Sphinx - Fixed
pytestwarnings and changed its working directory - Added an example notebook with data files
- Added
docstringfor all the functions - Added Module section to the documentation
- Fixed py7zr issue
- Changed 7z extractor from
pyunpackto py7zr - Fixed some linting issues.
- First release on PyPI.