pyupgradepackage to update the type hinting annotations to Python 3.10 style.
Bump the minimum required version of HyRiver dependencies to the latest versions.
Add the missing PyPi classifiers for the supported Python versions.
Append “Error” to all exception classes for conforming to PEP-8 naming conventions.
Increase the pixel limit for 3DEP’s WMS from 8M to 10M to reduce number of service calls and improve performance.
Bump the minimum versions of
pygeoutilsto 0.13.5 and that of
Fix a bug in
check_3dep_availabilitywhere due to changes in
ZeroMatchedexception is raised instead of
TypeErrorand as a result
check_3dep_availabilitywas not working as expected.
Set the minimum supported version of Python to 3.8 since many of the dependencies such as
rioxarrayhave dropped support for Python 3.7.
deg2mpmfunction look for
nodatavalsin the attributes and if not found, fall back to
Ensure that the
daskif the input is
elevation_profilefunction use a bounding box to get DEM and a linear interpolation to get the elevation along the profile.
Add a new function called
query_3dep_sourcesfor querying bounds of 3DEP’s data sources within a bounding box. It returns a geo-dataframe that contains the bounding box of each data source and a column
dem_residentifying the resolution of the raw topographic data within each geometry.
Add a new function called
elevation_profilefor getting elevation profile along a line at a given spacing. This function converts the line to a B-spline and then calculates the elevation along the spline at a given uniform spacing.
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"
Add a new DEM source to
elevation_bycoordsto get elevation from the National Map’s 3DEP WMS service. This can replace the
tnmis not stable.
Add a new function called
check_3dep_availabilityto check the availability of 3DEP’s native resolutions within an area of interest. It returns a
dictwith keys corresponding to the available resolutions and its values are boolean values indicating whether the resolution is available or not.
Replace no data values of
np.nan, so they do not get converted to another value. The output of this function has
__post_init__for validating the input parameters rather than
get_mapto get DEM and
Add type checking with
typeguardand fixed typing issues raised by
show_versionsto ensure getting correct versions of all dependencies.
Use the three new
ar.retrieve_*functions instead of the old
ar.retrievefunction to improve type hinting and to make the API more consistent.
Set the request caching’s expiration time to never expire. Add two flags to all functions to control the caching:
Add all the missing types so
Improve performance of
elevation_bygridby ignoring unnecessary validation.
Rewrite the command-line interface using
click.groupto improve UX. The command is now
py3dep [command] [args] [options]. The two supported commands are
coordsfor getting elevations of a dataframe of coordinates in
geometryfor getting the elevation of a geo-dataframe of geometries. Each sub-command now has a separate help message. The format of the input file for the
coordscommand is now
csvand for the
.gpkgand must have a
crsattribute. Also, the
geometrycommand now accepts multiple layers via the
-l) option. More information and examples can be in the
get_mapfunction now checks for validation of the input
layersargument before sending the actual request with a more helpful message.
reproject_gtifffunctions to a new file called
fill_depressionsfunctions are still accessible from
Increase the test coverage.
Use one of the
click’s internal functions,
click..testing.CliRunner, to run the CLI tests.
Fix a bug related to
elevation_bycoordswhere CRS validation fails if its type is
pyrpoj.CRSby converting inputs with CRS types to string.
Fix a couple of typing issues and update the
get_transformAPI based on the recent changes in
The first highlight of this release is a major refactor of
adding support for the Bulk Point Query Service and improving the overall performance
of the function. Another highlight is support for performing depression filling
elevation_bygrid before sampling the underlying DEM.
elevation_bycoordsfunction to add support for getting elevations of a list of coordinates via The National Map’s Point Query Service. This service is more accurate than Airmap, but it’s limited to the US only. You can select the source via a new argument called
source. You can set it to
source=tnmto use the TNM service. The default is
elevation_bygridfunction to add a new capability via
fill_depressionsargument for filling depressions in the obtained DEM before extracting elevation data for the input grid points. This is achieved via RichDEM that needs to be installed if this functionality is desired. You can install it via
Migrate to using
AsyncRetrieverfor handling communications with web services.
Handle the interpolation step in
elevation_bygridfunction more efficiently using
Added command-line interface (GH10).
All feature query functions use persistent caching that can significantly improve the performance.
Drop support for Python 3.6 since many of the dependencies such as
pandashave done so.
xarrayobjects are in parallel mode, i.e., in some cases
computemethod should be used to get the results.
Save the output as a
rastersince conversion from
tiffcan be easily done with
Add announcement regarding the new name for the software stack, HyRiver.
pipinstallation and release workflow.
The first release after renaming hydrodata to PyGeoHydro.
mypychecks more strict and fix all the errors and prevent possible bugs.
Speed up CI testing by using
Bump version to the same version as PyGeoHydro.
Add support for saving maps as
Elevation Point Query Serviceservice with
AirMapfor getting elevations for a list of coordinates in bulk since
AirMapis much faster. The resolution of
AirMapis 30 m.
cytoolzfor some operations for improving performance.
Add support for multipolygon.
Add a new function to get elevations for a list of coordinates called
elevation_bygridfunction for increasing readability and performance.
Added a rename operation to
get_mapto automatically rename the variables to a more sensible one.
orjsonto speed-up JSON operations.
Add a new function,
show_versions, for getting versions of the installed dependencies which is useful for debugging and reporting.
Fix typos in the docs and improved the README.
Improve testing and coverage.
Fixed the geometry CRS issue
Improved the documentation
Change the versioning method to
Polish README and add installation from
First release on PyPI.