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.
orjsonto speed-up JSON operations.
Explicitly sort the time dimension of the
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, called
title_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 Hydrodata 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 Hydrodata dependencies.
servicesmodule is now a separate package called PyGeoOGCC and is set as a requirement for Hydrodata. PyGeoOGC is a leaner package with much less 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.
endarguments into a
datesacross the code base.
Rewrote NLDI function and moved most of its classmethods to Station so now Station class has more cohesion.
Removed exploratory functionality of
ArcGISREST, since it’s more convenient to do so from a browser. Now,
base_urlis a required arguments.
geo_crsfor geometry and
box_crsfor bounding box inputs.
signaturesfunction from scratch using
NamedTupleto improve readability and efficiency. Now, the
dailyargument should be just a
pandas.Seriesand the column names are used for legends.
utils.geom_maskfunction and replaced it with
widthas an input in functions with raster output since
resolutionis almost always the preferred way to request for data. This change made the code more readable.
Renamed two functions:
wms_bybox. These function now return
onlyipv4is now a class method in
plot.signaturesfunction now assumes that the input time series are in mm/day.
Added a flag to
get_streamflowfunction in the
NWISclass to convert from cms to mm/day which is useful for plotting hydrologic signatures using the
Remove soft requirements from the env files.
requestsfunctions into a single class and a separate file.
Made all the classes available directly from
Added CodeFactor to the Github pipeline and addressed the some of issues that CodeFactor found.
Added Bandit to check the code for secutiry issue.
Improved docstrings and documentations.
Added customized exceptions for better exception handling.
pytestfixtures to improve the tests speed.
nwis_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.
Daymetclass to improve readability.
Add Deepsource for further code quality checking.
Automatic handling of large WMS requests (more than 8 million pixel i.e., width x height)
json_togeodffunction now accepts both a single (Geo)JSON or a list of them
add_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 Hydrodata.
Added a URL repository for the supported services called
Added a new function called
wms_toxarrayfor converting WMS request responses to
Re-projection issues for function with input geometry.
Start and end variables not being initialized when coords was used in
Geometry mask for
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 pip from conda
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 pqdm to 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 buy using StreamStats and USGS APIs
Renamed get_lulc function to get_nlcd
Simplified import method
Changed usage from rst format to ipynb
Autoo-formatting with the black python package
Change docstring format based on Sphinx
Fixed pytest warnings and changed its working directory
Added an example notebook with datafiles
Added docstring for all the functions
Added Module section to the documentation
Fixed py7zr issue
Changed 7z extractor from pyunpack to py7zr
Fixed some linting issues.
First release on PyPI.