Releases: natcap/pygeoprocessing
Releases · natcap/pygeoprocessing
2.4.10
2.4.9
- Watershed delineation will now always create a layer of type MultiPolygon.
All features contained in this layer will subsequently be MultiPolygons.
#435 raster_calculatorcalc_raster_stats=Truewill count the number
of non-nodata pixels in the target raster and write
'STATISTICS_VALID_PERCENT' metadata along with other stats.
#431
2.4.8
zonal_statisticsraises an error if the vector is not a Polygon
or MultiPolygon geometry.
#322- Handling a case in
raster_mapwhere an exception would be raised when a
float32 array was passed along with a float64 nodata value.
#358 reproject_vectorwill skip copying field values from the base layer
to the target if doing so would raise a RuntimeError,
such as when a string value cannot be represented by UTF-8.
#418raster_band_percentilecan now optionally log a warning if the raster
has a geographic CRS.
#299
2.4.7
- Dropped support for Python 3.8. Added support for Python 3.13 and GDAL 3.9.
#415 - Added validation to
reclassify_rasterto raise aTypeErrorwith a
descriptive message ifvalue_mapcontains non-numeric keys. - In
warp_raster, if eitherbase_raster_pathortarget_raster_path
are not strings, aValueErroris now raised with a more helpful error
message. #421
2.4.6
2.4.5
2.4.4
- Our github actions for building python distributions now use
actions/setup-python@v5, which uses node 20.
#384 warp_rasterandbuild_overviewsno longer raise aValueErrorif
called with an invalid resampling algorithm. We now fall back to the
underlying GDAL functions' error messages.
#387- Updated to Cython 3.
- Dropped support for Python 3.7.
2.4.3
2.4.3 (2024-03-06)
- Wheels for python 3.12 are now built during our github actions runs. #381
get_gis_typecan accept a path to a remote file, allowing the GDAL driver
to open it if the driver supports the protocol. #375- If running on a SLURM system (identified by the presence of
SLURM*
environment variables), the GDAL cache max is checked against the amount of
memory available on the compute node. If GDAL may exceed the available slurm
memory, a warning is issued or logged. #361 - Fixed an issue in
extract_strahler_streams_d8where a nodata pixel
could be mistakenly treated as a stream seed point, ultimately creating
a stream feature with no geometry. #361 - Improved
align_and_resize_raster_stackso that rasterization of a vector
mask only happens once, regardless of the number of rasters in the stack.
In addition, the created mask raster's path may be defined by the caller so
that it persists across calls toalign_and_resize_raster_stack. #366 - Improved
warp_rasterto allow for a pre-defined mask raster to be
provided instead of a vector. If both are provided, the mask raster alone is
used. The new mask raster must have the same dimensions and geotransform as
the output warped raster. #366 - Pygeoprocessing is now tested against python 3.12. #355
2.4.2
- Fixed an issue where MFD flow direction was producing many nodata holes given
a large-enough DEM. These nodata holes would then propagate to flow
accumulation and stream extraction, producing very disjointed stream
networks. #350 - Improved progress logging in MFD flow direction, MFD flow accumulation, MFD
stream extraction to prevent integer overflows in percentages and improve
the readability of log messages. #246 - Fixed an issue introduced in 2.4.1 where
zonal_statisticsresults could
vary depending on the bounding boxes of the disjoint polygon sets calculated
from the input vector. - Added a new function,
pygeoprocessing.align_bbox, which pads a bounding
box to align with the grid of a given geotransform. - Added support for int64 and uint64 (GDAL 3.5+)
#352 - Added support for signed bytes (GDAL 3.7+)
#329 - Fixed a bug where
calculate_slopedid not work as expected when the DEM
raster's nodata value is NaN (#352)
2.4.1
- The
pygeoprocessingpackage metadata has been updated to use
importlib.metadata(python >= 3.8) orimportlib_metadata
(python < 3.8) for retrieving the package version, in keeping with
recommendations fromsetuptools_scm. The dependency
importlib_metadatais now required for installs on python < 3.8. - Fixed another memory leak in
pygeoprocessing.raster_calculator, where
shared memory objects under certain circumstances were not being unlinked at
the end of the function, resulting in excess memory usage and a warning
during the shutdown of the python process.
#247 - Added a new function,
pygeoprocessing.array_equals_nodata, which returns
a boolean array indicating which elements have nodata. It handles integer,
float, andnancomparison, and the case where the nodata value isNone. - Standardized the approach used in
warp_rasterand
create_raster_from_bounding_boxfor determining the dimensions of the
target raster given a target bounding box and pixel sizes.
#321 pygeoprocessing.routing.delineate_watersheds_d8now handles the case
where the input flow direction raster does not have a defined spatial
reference. #254- Updating internal documentation describing TauDEM flow directions, and adding
for how to convert from a flow direction raster from what TauDEM expects to
what pygeoprocessing expects.
#255 - Users may now specify the overview level to use when calling
warp_raster.
By default,pygeoprocessingwill use the base layer.
#326 - Fixed a bug across
pygeoprocessingwhere some valid resampling methods
would throw an exception because they were not recognized. This was only
happening whenpygeoprocessingwas installed alongside GDAL < 3.4. - Fixing an issue with
pygeoprocessing.multiprocessing.raster_calculator
where the function would raise an Exception when the target raster path was
provided as a filename only, not within a directory, even though the parent
directory could be inferred. #313 - Fixing a bug where the statistics worker in
pygeoprocessing.raster_calculatormay return a complex value. This is
only an issue when pygeoprocessing is compiled against Cython 3.0.0 and
later. #342