Recent Releases of Integrated Valuation of Ecosystem Services and Tradeoffs
Integrated Valuation of Ecosystem Services and Tradeoffs - 3.15.0
3.15.0 (2025-04-03)
Highlights
-
Multiple models now use per-hectare units in their raster outputs. Prior
to this update, these rasters reported per-pixel values. This change
affects the following models:- Carbon
- Crop Production
- Forest Carbon Edge Effect
- NDR
- SDR
-
NDR, SDR, and Seasonal Water Yield now support the D8 routing algorithm
in addition to MFD. -
Visitation: Recreation and Tourism model now includes Twitter data.
-
InVEST model outputs now include metadata. Open the '.yml' files
in a text editor to read and add to the metadata.
General
- Fixed an issue where a user's PROJ_DATA environment variable could
trigger a RuntimeError about a missing proj.db file.
https://github.com/natcap/invest/issues/1742 - Now testing and building against Python 3.13.
No longer testing and building with Python 3.8, which reached EOL.
https://github.com/natcap/invest/issues/1755 - All InVEST model output data now include metadata sidecar files.
These are '.yml' files with the same basename as the dataset they
describe. https://github.com/natcap/invest/issues/1662 - InVEST's Windows binaries are now distributed once again with a valid
signature, signed by Stanford University.
https://github.com/natcap/invest/issues/1580 - InVEST's macOS disk image is now distributed once again with a valid
signature, signed by Stanford University.
https://github.com/natcap/invest/issues/1784 - The natcap.invest python package now officially supports linux.
manylinux wheels will be available on PyPI.
(#1730 <https://github.com/natcap/invest/issues/1730>
_) - Removed the warning about
gdal.UseExceptions()
.
Python API users should still callgdal.UseExceptions()
, but no
longer need to do so before importingnatcap.invest
.
https://github.com/natcap/invest/issues/1702
Workbench
- Auto-scrolling of log output is halted on user-initiated scrolling,
enabling easier inspection of log output while a model is running
(InVEST #1533 <https://github.com/natcap/invest/issues/1533>
_). - Fixed a bug where toggle inputs would fail to respond if multiple tabs
of the same model were open.
https://github.com/natcap/invest/issues/1842
Annual Water Yield
- Fixed an issue where the model would crash if the valuation table was
provided, but the demand table was not. Validation will now warn about
this, and theMODEL_SPEC
has been improved to reflect that this table
is now required when doing valuation.
https://github.com/natcap/invest/issues/1769
Carbon
- Updated styling of the HTML report generated by the carbon model, for
visual consistency with the Workbench (InVEST #1732 <https://github.com/natcap/invest/issues/1732>
_). - Raster outputs that previously contained per-pixel values (e.g., t/pixel)
now contain per-hectare values (e.g., t/ha). (InVEST #1270 <https://github.com/natcap/invest/issues/1270>
_). - Removed the REDD scenario and updated the naming of the Current and
Future scenarios to Baseline and Alternate, respectively, to better
indicate that users are not limited to comparing present and future.
(InVEST #1758 <https://github.com/natcap/invest/issues/1758>
_). - Changed output filename prefixes from
tot_c
toc_storage
and
delta
toc_change
. (InVEST #1825 <https://github.com/natcap/invest/issues/1825>
_). - Fixed bug where discount rate and annual price change were incorrectly
treated as ratios instead of percentages. (InVEST #1827 <https://github.com/natcap/invest/issues/1827>
_).
Coastal Blue Carbon
- The
code
column in the model's biophysical table input, as well as
thecode
column in the preprocessor's LULC lookup table input and
carbon_pool_transient_template
output, have been renamedlucode
,
for consistency with other InVEST models (InVEST #1249 <https://github.com/natcap/invest/issues/1249>
_).
Crop Production
- Raster outputs that previously contained per-pixel values (e.g., t/pixel)
now contain per-hectare values (e.g., t/ha). This change affects both
the Percentile and Regression models (InVEST #1270 <https://github.com/natcap/invest/issues/1270>
_).
Forest Carbon Edge Effect
- Raster outputs that previously contained per-pixel values (e.g., t/pixel)
now contain per-hectare values (e.g., t/ha). (InVEST #1270 <https://github.com/natcap/invest/issues/1270>
_).
Habitat Quality
- The
lulc
column in the sensitivity table input, and thelulc_code
column in the rarity table outputs, have been renamedlucode
, for
consistency with other InVEST models (InVEST #1249 <https://github.com/natcap/invest/issues/1249>
_). - The model now expects the maximum threat distance (
max_dist
in the
threats table) to be specified inm
instead ofkm
(InVEST #1252 <https://github.com/natcap/invest/issues/1252>
_). - Adjusted total habitat degradation calculation to calculate degradation
for each threat and create intermediate degradation rasters. Total
degradation is now calculated using these individual threat degradation
rasters.
https://github.com/natcap/invest/issues/1100
NDR
- Align rasters to the grid of the DEM raster
(#1488 <https://github.com/natcap/invest/issues/1488>
_). - Raster outputs that previously contained per-pixel values (e.g., kg/pixel)
now contain per-hectare values (e.g., kg/ha). (InVEST #1270 <https://github.com/natcap/invest/issues/1270>
_). - Made the runoff proxy index calculation more robust by allowing users to
specify the average runoff proxy, preventing normalization issues across
different climate scenarios and watershed selections.
https://github.com/natcap/invest/issues/1741 - D8 routing is now supported in addition to MFD
(#1440 <https://github.com/natcap/invest/issues/1440>
_).
Scenario Generator
- Updated the output CSV columns: Renamed
lucode
columnoriginal lucode
to clarify that it contains the original, to-be-converted, value(s). Added
replacement lucode
column, containing the LULC code to which habitat was
converted during the model run.
https://github.com/natcap/invest/issues/1295
Scenic Quality
- Fixed a bug where the visibility raster could be incorrectly set to 1
('visible') if the DEM value was within floating point imprecision of the
DEM nodata value (#1859 <https://github.com/natcap/invest/issues/1859>
_).
SDR
- Raster outputs that previously contained per-pixel values (e.g., t/pixel)
now contain per-hectare values (e.g., t/ha). (InVEST #1270 <https://github.com/natcap/invest/issues/1270>
_). - D8 routing is now supported in addition to MFD
(#1440 <https://github.com/natcap/invest/issues/1440>
_).
Seasonal Water Yield
- D8 routing is now supported in addition to MFD
(#1440 <https://github.com/natcap/invest/issues/1440>
_).
Urban Cooling
- Align rasters to the grid of the LULC raster, rather than the ET0 raster
(#1488 <https://github.com/natcap/invest/issues/1488>
_). - Updated the documentation for the
mean_t_air
attribute of the
buildings_with_stats.shp
output to clarify how the value is
calculated. https://github.com/natcap/invest/issues/1746 - Fixed bug in the calculation of Cooling Capacity (CC) provided by parks,
where the CC Index was not being properly incorporated.
https://github.com/natcap/invest/issues/1726
Urban Stormwater Retention
- Fixed a bug causing
inf
values in volume outputs because nodata
values were not being set correctly (InVEST #1850 <https://github.com/natcap/invest/issues/1850>
_).
Visitation: Recreation and Tourism
- Added a database of geotagged tweets to support calculating
twitter-user-days (TUD) as proxy for visitation rates. The model now calculates
photo-user-days (PUD) and TUD and uses their average as the response
variable in the regression model. Please refer to the User's Guide for
more details on the regression model. - Output data were updated to support the new TUD results, and vector outputs
are now in GeoPackage format instead of ESRI Shapefile. - Regression coefficients are still listed in a summary text file, and are now
also included in a tabular output: "regression_coefficients.csv".
Wind Energy
- Fixed a bug that could cause the Workbench to crash when running the Wind
Energy model withTaskgraph
logging set toDEBUG
(InVEST #1497 <https://github.com/natcap/invest/issues/1497>
_).
Sustainable Development - Sustainable Investment
- Python
Published by davemfish 24 days ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.14.3
3.14.3 (2024-12-19)
- General
- InVEST has been updated to build against numpy 2.
https://github.com/natcap/invest/issues/1641 - Updating validation to handle a change in exceptions raised by GDAL in
pygeoprocessing.get_raster_info
and
pygeoprocessing.get_vector_info
.
https://github.com/natcap/invest/issues/1645 - The scripting page of the InVEST API documentation has been updated to
reflect changes in how InVEST is installed on modern systems, and also to
include images of the InVEST workbench instead of just broken links.
https://github.com/natcap/invest/issues/1660 - Updated translations for Spanish and Chinese
- natcap.invest now works with (and requires)
gdal.UseExceptions
. A
FutureWarning
is raised on import if GDAL exceptions are not enabled. - Fixed an issue on Windows where GDAL fails to find its DLLs due to
an interfering GDAL installation on the PATH, such as from anaconda.
https://github.com/natcap/invest/issues/1643 - Improved error handling of NA values in raster reclassification to provide
a more descriptive message.
- InVEST has been updated to build against numpy 2.
- Workbench
- Several small updates to the model input form UI to improve usability
and visual consistency (https://github.com/natcap/invest/issues/912). - Fixed a bug that caused the application to crash when attempting to
open a workspace without a valid logfile
(https://github.com/natcap/invest/issues/1598). - Fixed a bug that was allowing readonly workspace directories on Windows
(https://github.com/natcap/invest/issues/1599). - Fixed a bug that, in certain scenarios, caused a datastack to be saved
with relative paths when the Relative Paths checkbox was left unchecked
(https://github.com/natcap/invest/issues/1609). - Improved error handling when a datastack cannot be saved with relative
paths across drives (https://github.com/natcap/invest/issues/1608). - The InVEST changelog now displays in the Workbench the first time a new
version is launched (https://github.com/natcap/invest/issues/1368).
- Several small updates to the model input form UI to improve usability
- Coastal Vulnerability
- Fixed a regression where an AOI with multiple features could raise a
TypeError after intersecting with the landmass polygon.
https://github.com/natcap/invest/issues/1657
- Fixed a regression where an AOI with multiple features could raise a
- Forest Carbon Edge Effects
- Updating vector reprojection to allow partial reprojection. Related to
https://github.com/natcap/invest/issues/1645
- Updating vector reprojection to allow partial reprojection. Related to
- Habitat Quality
- Access raster is now generated from the reprojected access vector
(https://github.com/natcap/invest/issues/1615). - Rarity values are now output in CSV format (as well as in raster format)
(https://github.com/natcap/invest/issues/721). - Improved error handling when there is a missing LULC value in the
sensitivity table (https://github.com/natcap/invest/issues/1671).
- Access raster is now generated from the reprojected access vector
- Pollination
- Fixed an issue with nodata handling that was causing some outputs to be
filled either with the float32 value for positive infinity, or else with
a value very close to it. https://github.com/natcap/invest/issues/1635 - While working on https://github.com/natcap/invest/issues/1635, we also
updated the stated dtype of most pollination model outputs to be float32
instead of the float64 dtype that was being assumed previously. This
will result in smaller output filesizes with minimal loss of precision.
- Fixed an issue with nodata handling that was causing some outputs to be
- Seasonal Water Yield
- Added support for zero padding in month numbers in ET and precipitation
file names (i.e., users can now name their file Precip_01.tif).
(https://github.com/natcap/invest/issues/1166) - Fixed a bug where
numpy.nan
pixel values would not be correctly
detected as nodata in local recharge and baseflow routing functions.
(https://github.com/natcap/invest/issues/1705)
- Added support for zero padding in month numbers in ET and precipitation
- Urban Flood Risk
- Fields present on the input AOI vector are now retained in the output.
(https://github.com/natcap/invest/issues/1600)
- Fields present on the input AOI vector are now retained in the output.
- Urban Nature Access
- The model now works as expected when the user provides an LULC raster
that does not have a nodata value defined.
https://github.com/natcap/invest/issues/1293
- The model now works as expected when the user provides an LULC raster
Sustainable Development - Sustainable Investment
- Python
Published by phargogh 4 months ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.14.2
This release includes the following fixes and features:
- General
-
Validation now covers file paths contained in CSVs. CSV validation
will fail if the files listed in a CSV fail to validate.
https://github.com/natcap/invest/issues/327 -
We have updated validation in several ways that will improve the
developer experience of working with InVEST models, and we hope will also
improve the user experience:- Symbols in conditional requirement expressions now represent the values
of parameters instead of whether the value of the parameter is
sufficient. If a symbol is not present inargs
as a key, the
symbol will have a value ofFalse
. This allows for value-based
comparisons, which is useful in models that have overlapping modes of
operation. https://github.com/natcap/invest/issues/1509 - Vector fields, CSV rows/columns and the 1st level of directory
contents may now all be conditionally required based on a python
expression. - Under certain circumstances, validation may return more warnings than
before. This specifically applies to model inputs that have conditional
requirement expressions where their expression evaluates toFalse
,
and the user has provided a value for this parameter. Previous
versions of InVEST would skip these parameters' type-specific
validation. Now, these parameters will be validated with their
type-specific validation checks.
- Symbols in conditional requirement expressions now represent the values
-
Add support for latest GDAL versions; remove test-specific constraint on
GDAL versions from invest requirements.
https://github.com/natcap/invest/issues/916 -
Updated to Cython 3 (https://github.com/natcap/invest/issues/556)
-
- Annual Water Yield
- Added the results_suffix to a few intermediate files where it was
missing. https://github.com/natcap/invest/issues/1517
- Added the results_suffix to a few intermediate files where it was
- Coastal Blue Carbon
- Updated model validation to prevent the case where a user provides only
one snapshot year and no analysis year
(#1534 <https://github.com/natcap/invest/issues/1534>
_).
Also enforces that the analysis year, if provided, is greater than the
latest snapshot year. An analysis year equal to the latest snapshot year
is no longer allowed.
- Updated model validation to prevent the case where a user provides only
- Coastal Vulnerability
- Fixed a bug in handling
nan
as the nodata value of the bathymetry
raster.nan
pixels will now be propertly ignored before calculating
mean depths along fetch rays.
https://github.com/natcap/invest/issues/1528
- Fixed a bug in handling
- HRA
- Fixed a bug where habitat and stressor vectors were not being rasterized
with theALL_TOUCHED=TRUE
setting.
- Fixed a bug where habitat and stressor vectors were not being rasterized
- Scenic Quality
- Fixed an issue with viewshed calculations where some slight numerical
error was introduced on M1 Macs, but not on x86-based computers. This
numerical error was leading to slightly different visibility results.
https://github.com/natcap/invest/issues/1562
- Fixed an issue with viewshed calculations where some slight numerical
- SDR
- Fixed an issue encountered in the sediment deposition function where
rasters with more than 2^32 pixels would raise a cryptic error relating
to negative dimensions. https://github.com/natcap/invest/issues/1431 - Optimized the creation of the summary vector by minimizing the number of
times the target vector needs to be rasterized.
- Fixed an issue encountered in the sediment deposition function where
- Seasonal Water Yield
- Fixed an issue with the precip directory units. Units for these input
rasters are now correctly stated as mm/month.
https://github.com/natcap/invest/issues/1571 - Fixed an issue where the monthly quickflow values were being summed over
a block area and not summed pixelwise. This caused the quickflow
outputQF.tif
to have malformed values.
https://github.com/natcap/invest/issues/1541
- Fixed an issue with the precip directory units. Units for these input
- Wind Energy
- Fixed a bug where some number inputs were not being properly cast to
float
orint
types. If the inputs happened to be passed as
astr
this caused unintended side effects such as a concatenation
error. (https://github.com/natcap/invest/issues/1498)
- Fixed a bug where some number inputs were not being properly cast to
- Urban Nature Access
- Fixed a
NameError
that occurred when running the model using
search radii defined per population group with an exponential search
kernel. https://github.com/natcap/invest/issues/1502 - Fixed an issue where Urban Nature Access would crash if an administrative
boundary geometry did not overlap any people in the population raster.
https://github.com/natcap/invest/issues/1503 - Fixed an issue where validation was failing to catch missing values in
the uniform search radius args key when using uniform search radii.
https://github.com/natcap/invest/issues/1509 - Fixed an issue where the output administrative units vector's
Pund_adm
andPovr_adm
fields representing undersupplied and
oversupplied populations, respectively, had values of 0 when running the
model with search radii defined per population group. The output
administrative units vector now has the correct values for these fields,
consistent with the user's guide chapter.
https://github.com/natcap/invest/issues/1512 - Fixed an issue where certain nodata values were not being handled
correctly, leading to pixel values of +/- infinity in the urban nature
balance output raster. https://github.com/natcap/invest/issues/1519 - Fixed an issue where an LULC raster without a nodata value would
always raise in exception during reclassification.
https://github.com/natcap/invest/issues/1539
- Fixed a
Sustainable Development - Sustainable Investment
- Python
Published by natcap-bot 11 months ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.14.1
3.14.1 (2023-12-15)
- General
- In advance of the numpy 2.0 release, function calls to
numpy.product
have been replaced withnumpy.prod
.
https://github.com/natcap/invest/issues/1410 - Add support for python 3.11 https://github.com/natcap/invest/issues/1103
- Adding a docker container that is built on each commit where a change to
model code, requirements, or the docker configuration has been made.
https://github.com/natcap/invest/issues/1115 - Vector geometry types will now be validated for all models
https://github.com/natcap/invest/issues/1374 - Datastack archives will now be correctly extracted
https://github.com/natcap/invest/issues/1308 - Validation of tables has been improved and standardized, which should
result in more readable validation errors.
https://github.com/natcap/invest/issues/1379 - Updated to
pygeoprocessing
2.4.2. This includes an update to
pygeoprocessing.zonal_statistics
, which is now more correct on certain
edge cases. Aggregated model results may change slightly. - Removed the
utils
functionsarray_equals_nodata
,
exponential_decay_kernel_raster
, andgaussian_decay_kernel_raster
,
which were obsoleted by newpygeoprocessing
features. - Version metadata at import time is now fetched with
importlib.metadata
instead ofpkg_resources
.
https://github.com/natcap/invest/issues/1442 - The API docs logo has been updated to use the latest version of the
InVEST logo. https://github.com/natcap/invest/issues/1463
- In advance of the numpy 2.0 release, function calls to
- Workbench
- Fixed a broken "Find my logfiles" button on MacOS.
https://github.com/natcap/invest/issues/1452
- Fixed a broken "Find my logfiles" button on MacOS.
- Coastal Vulnerability
- Fixed a bug where the model would crash when processing a float type
bathymetry raster with no nodata value.
https://github.com/natcap/invest/issues/992
- Fixed a bug where the model would crash when processing a float type
- Habitat Quality
- Updated the threat table column description to clarify that the threat
table columns:cur_path
,fut_path
, andbase_path
are meant
to be file system path strings.
https://github.com/natcap/invest/issues/1455
- Updated the threat table column description to clarify that the threat
- HRA
- Fixed an issue preventing the HRA criteria table from loading when the
table was UTF-8 encoded with a Byte-Order Marker.
https://github.com/natcap/invest/issues/1460 - Fixed an issue with the cross-OS loading of InVEST datastack files.
https://github.com/natcap/invest/issues/1065 - Fixed an issue where habitats and stressors in the criteria table were
not being lowercased causing a comparison issue against values from the
info table that were being lowercased.
https://github.com/natcap/invest/issues/1467
- Fixed an issue preventing the HRA criteria table from loading when the
- NDR
- Fixing an issue where minor geometric issues in the watersheds input
(such as a ring self-intersection) would raise an error in the model.
https://github.com/natcap/invest/issues/1412 - Fixed a task dependency issue where NDR would crash because of a race
condition when run withn_workers > 0
.
https://github.com/natcap/invest/issues/1426 - Fixed an issue in NDR's effective retention where, on rasters with more
than 2^31 pixels, the model would crash with an error relating to a
negative (overflowed) index. https://github.com/natcap/invest/issues/1431
- Fixing an issue where minor geometric issues in the watersheds input
- Pollination
- Fixed a regression where nodata values were not being properly compared.
This was only an issue in some development builds after 3.14.0.
https://github.com/natcap/invest/issues/1458 - Replaced custom kernel implementation with
pygeoprocessing.kernels
.
Convolution results may be slightly different (more accurate).
- Fixed a regression where nodata values were not being properly compared.
- SDR
- Fixed an issue with SDR's sediment deposition where large regions would
become nodata in cases where the DEM has valid data but other inputs
(LULC, erosivity, erodibility) did not have valid pixels. Now, all
raster inputs are mutually masked so that only those pixel stacks
continue through to the model where all pixels in the stack are
non-nodata. https://github.com/natcap/invest/issues/911 - RKLS, USLE, avoided erosion, and avoided export rasters will now have
nodata in streams https://github.com/natcap/invest/issues/1415 - Fixed an issue in SDR's sediment deposition where, on rasters with more
than 2^31 pixels, the model would crash with an error relating to a
negative (overflowed) index. https://github.com/natcap/invest/issues/1431
- Fixed an issue with SDR's sediment deposition where large regions would
- Seasonal Water Yield
- Fixed an issue in Seasonal Water Yield's baseflow routing and local
recharge functions where, on rasters with more than 2^31 pixels, the
model would crash with an error relating to a negative (overflowed)
index. https://github.com/natcap/invest/issues/1431
- Fixed an issue in Seasonal Water Yield's baseflow routing and local
- Urban Cooling
- Fixed a bug where model would error out if any feature in the buildings
vector was missing a geometry; now they will be skipped
https://github.com/natcap/invest/issues/1401
- Fixed a bug where model would error out if any feature in the buildings
- Wind Energy
- Fixed a bug where model would error when the grid points path was empty
https://github.com/natcap/invest/issues/1417
- Fixed a bug where model would error when the grid points path was empty
Sustainable Development - Sustainable Investment
- Python
Published by davemfish over 1 year ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.14.0
This release includes the following fixes and features:
- General
- Fixed a bug in the CLI where
invest getspec --json
failed on
non-json-serializable objects such aspint.Unit
.
https://github.com/natcap/invest/issues/1280 - A new directory at
./doc/decision-records
has been created for
"Architecture/Any Decision Records", which will serve as a record of
nontrivial decisions that were made to InVEST and why. This is
intended for reference by our science and software teams, and also by
the community at large when inquiring about a nontrivial change.
https://github.com/natcap/invest/issues/1079 - Updated the package installation instructions in the API docs for clarity
and also to highlight the ease of installation throughconda-forge
.
https://github.com/natcap/invest/issues/1256 utils.build_lookup_from_csv
has been deprecated and its functionality
has been merged intoutils.read_csv_to_dataframe
(#1319 <https://github.com/natcap/invest/issues/1319>
),
(#1327 <https://github.com/natcap/invest/issues/1327>
)- Standardized on keeping the
execute
andvalidate
functions
orthogonal. Now no models callvalidate
fromexecute
. This
affected AWY, CV, UFRM, Wave Energy, and Wind Energy.
(#1373 <https://github.com/natcap/invest/issues/1373>
_) - Improved the validation message that is returned when not all spatial
inputs overlap (#502 <https://github.com/natcap/invest/issues/502>
_) - Standardized the name and location of the taskgraph cache directory for
all models. It is now calledtaskgraph_cache
and located in the top
level of the workspace directory.
(#1230 <https://github.com/natcap/invest/issues/1230>
_) - InVEST is now distributed under the Apache 2.0 License.
- Fixed a bug in the CLI where
- Workbench
- Fixed a bug where sampledata downloads failed silently (and progress bar
became innacurate) if the Workbench did not have write permission to
the download location. https://github.com/natcap/invest/issues/1070 - The workbench app is now distributed with a valid code signature
(#727 <https://github.com/natcap/invest/issues/727>
_) - Changing the language setting will now cause the app to relaunch
(#1168 <https://github.com/natcap/invest/issues/1168>
_) - Closing the main window will now close any user's guide windows that are
open. Fixed a bug where the app could not be reopened after closing.
(#1258 <https://github.com/natcap/invest/issues/1258>
_) - Fixed a bug where invalid metadata for a recent run would result
in an uncaught exception.
(#1286 <https://github.com/natcap/invest/issues/1286>
_) - Middle clicking an InVEST model tab was opening a blank window. Now
middle clicking will close that tab as expected.
(#1261 <https://github.com/natcap/invest/issues/1261>
_) - Updated InVEST logo to use new version with registered trademark symbol.
(InVEST TM and Logo Use Policy <https://naturalcapitalproject.stanford.edu/invest-trademark-and-logo-use-policy>
_) - InVEST is licensed using a permissive open source license. But we have
decided to add back the license and agreement step to the installer to
be upfront and explicit about how InVEST is licensed.
- Fixed a bug where sampledata downloads failed silently (and progress bar
- Coastal Blue Carbon
- Added validation for the transition table, raising a validation error if
unexpected values are encountered.
(#729 <https://github.com/natcap/invest/issues/729>
_)
- Added validation for the transition table, raising a validation error if
- Forest Carbon
- The biophysical table is now case-insensitive.
- HRA
- Fixed a bug in HRA where the model would error when all exposure and
consequence criteria were skipped for a single habitat. The model now
correctly handles this case. https://github.com/natcap/invest/issues/1250 - Tables in the .xls format are no longer supported. This format was
deprecated bypandas
.
(#1271 <https://github.com/natcap/invest/issues/1271>
_) - Fixed a bug where vector inputs could be rasterized onto a grid that is
not exactly aligned with other raster inputs.
(#1312 <https://github.com/natcap/invest/issues/1312>
_) - Dropped support for Excel (.xlsx) files
(#1391 <https://github.com/natcap/invest/issues/1391>
_)
- Fixed a bug in HRA where the model would error when all exposure and
- NDR
- The contents of the output
cache_dir
have been consolidated into
intermediate_outputs
. - Fixed a bug where results were calculated incorrectly if the runoff proxy
raster (or the DEM or LULC) had no nodata value
(#1005 <https://github.com/natcap/invest/issues/1005>
_)
- The contents of the output
- Pollination
- Several exceptions have been tidied up so that only fieldnames are
printed instead of the python data structures representing the whole
table. https://github.com/natcap/invest/issues/1283
- Several exceptions have been tidied up so that only fieldnames are
- RouteDEM
- RouteDEM now allows the user to calculate Strahler Stream Orders, which
will be written to a new vector in the user's workspace. This stream
order vector is dependent on the user's Threshold Flow Accumulation value
and is only available for the D8 routing model.
https://github.com/natcap/invest/issues/884 - RouteDEM now allows the user to create a vector of subwatersheds, which
are written to a new vector in the user's workspace. This vector is
dependent on the calculation of Strahler Stream Orders and is only
available for the D8 routing model. https://github.com/natcap/invest/issues/349
- RouteDEM now allows the user to calculate Strahler Stream Orders, which
- Scenic Quality
- The Scenic Quality model will now raise an error when it encounters a
geometry that is not a simple Point. This is in line with the user's
guide chapter. https://github.com/natcap/invest/issues/1245 - The Scenic Quality model now supports both uppercase and lowercase
fieldnames. Leading and trailing spaces are now also stripped for the
user's convenience. https://github.com/natcap/invest/issues/1276
- The Scenic Quality model will now raise an error when it encounters a
- SDR
- Fixed an issue with sediment deposition progress logging that was
causing the "percent complete" indicator to not progress linearly.
https://github.com/natcap/invest/issues/1262 - The contents of the output
churn_dir_not_for_humans
have been
consolidated intointermediate_outputs
. - We implemented two major functional changes to the InVEST LS Factor
that significantly affect most outputs of SDR and will bring the LS
factor output more in line with the outputs of SAGA-GIS's LS Factor.
A discussion of differences between these two implementations can be
viewed at https://github.com/natcap/invest/tree/main/doc/decision-records/ADR-0001-Update-SDR-LS-Factor.md.
The two specific changes implemented are:
- Fixed an issue with sediment deposition progress logging that was
Sustainable Development - Sustainable Investment
- Python
Published by emlys over 1 year ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.13.0
3.13.0 (2023-03-17)
- General
- During builds of the InVEST documentation, the packages
sphinx-rtd-theme
andsphinx-reredirects
will be pulled from
conda-forge instead of PyPI. https://github.com/natcap/invest/issues/1151 - The
invest
command-line-interface no longer opens a graphical
interface to InVEST. https://github.com/natcap/invest/issues/755 - The classic InVEST user-interface has been removed in favor of the Workbench.
- Replace the
ARGS_SPEC
withMODEL_SPEC
which describes all model
outputs as well as inputs in a structured format https://github.com/natcap/invest/issues/596
- During builds of the InVEST documentation, the packages
- Workbench
- Added tooltips to the model tabs so that they can be identified even when
several tabs are open https://github.com/natcap/invest/issues/1088 - Options' display names will now be shown in dropdown menus https://github.com/natcap/invest/issues/1217
- Represent boolean inputs with a toggle switch rather than radio buttons.
- Includes local versions of the User Guide in English, Spanish, & Chinese.
https://github.com/natcap/invest/issues/851
- Added tooltips to the model tabs so that they can be identified even when
- DelineateIt
- DelineateIt now uses
pygeoprocessing.routing.extract_streams_d8
for D8
stream thresholding. https://github.com/natcap/invest/issues/1143
- DelineateIt now uses
- Habitat Quality
- The model now uses an euclidean distance implementation for decaying
threat rasters both linearly and exponentially. Since InVEST 3.3.0 a
convolution implementation has been used, which reflected how
the density of a threat or surrounding threat pixels could have an
even greater, cumulative impact and degradation over space. However, this
was never properly documented in the User's Guide and is not the approach
taken in the publication. The convolution implementation also produced
degradation and quality outputs that were difficult to interpret. - There should be a noticeable runtime improvement from calculating
euclidean distances vs convolutions.
- The model now uses an euclidean distance implementation for decaying
- HRA
- Fixed an issue where a cryptic exception was being thrown if the criteria
table's sections were not spelled exactly as expected. There is now a
much more readable error if a section is obviously missing. Leading and
trailing whitespace is also now removed from all string fields in the
criteria table, which should also help reduce the chance of errors.
https://github.com/natcap/invest/issues/1191
- Fixed an issue where a cryptic exception was being thrown if the criteria
- GLOBIO
- Deprecated the GLOBIO model https://github.com/natcap/invest/issues/1131
- RouteDEM
- RouteDEM now uses
pygeoprocessing.routing.extract_streams_d8
for D8
stream thresholding. https://github.com/natcap/invest/issues/1143
- RouteDEM now uses
- Scenic Quality
- Any points over nodata (and therefore excluded from the viewshed
analysis) will now correctly have their FID reported in the logging.
https://github.com/natcap/invest/issues/1188 - Clarifying where the visual quality calculations' disk-based sorting
cache should be located, which addresses an interesting crash experienced
by some users on Windows. https://github.com/natcap/invest/issues/1189
- Any points over nodata (and therefore excluded from the viewshed
- SDR
- The
ws_id
field is no longer a required field in the watershed vector.
https://github.com/natcap/invest/issues/1201
- The
- Seasonal Water Yield
- If a soil group raster contains any pixels that are not in the set of
allowed soil groups (anything other than 1, 2, 3 or 4), a human readable
exception will now be raised. https://github.com/natcap/invest/issues/1193
- If a soil group raster contains any pixels that are not in the set of
- Urban Nature Access
- Added the Urban Nature Access model to InVEST. The model for urban
nature access provides a measure of both the supply of urban nature
and the demand for nature by the urban population, ultimately
calculating the balance between supply and demand. See the corresponding
User's Guide chapter for documentation.
- Added the Urban Nature Access model to InVEST. The model for urban
- Visitation: Recreation and Tourism
- Fixed a
FutureWarning
when reading in CSVs. This fix does not
otherwise affect model behavior. https://github.com/natcap/invest/issues/1202
- Fixed a
Sustainable Development - Sustainable Investment
- Python
Published by phargogh about 2 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.12.1
This bugfix release includes the following fixes and features:
-
General
- Fixed a possible path traversal vulnerability when working with
datastack archives. This patches CVE-2007-4559, reported to us
by Trellix. https://github.com/natcap/invest/issues/1113 - Updating descriptions for LULC about text and biophysical table
for clarity in model specs.
https://github.com/natcap/invest/issues/1077
- Fixed a possible path traversal vulnerability when working with
-
Workbench
- Fixed a bug where the Workbench would become unresponsive during
an InVEST model run if the model emitted a very high volume of
log messages. - Fixed a bug where the Workbench could crash if there was too
much standard error emitted from an invest model. - Added a new "Save as" dialog window to handle different save
options, and allow the option to use relative paths in a JSON
datastack
(#1088) - Fixed a bug where uncaught exceptions in the React tree would
result in a blank browser window.
(#1119)
- Fixed a bug where the Workbench would become unresponsive during
-
Habitat Quality
- All spatial inputs including the access vector and threat
rasters are now reprojected to thelulc_cur_path
raster. This
fixes a bug where rasters with a different SRS would appear to
not intersect thelulc_cur_path
even if they did.
(https://github.com/natcap/invest/issues/1093) - Paths in the threats table may now be either absolute or
relative to the threats table.
- All spatial inputs including the access vector and threat
-
HRA
- Fixed a regression relative to InVEST 3.9.0 outputs where
spatial criteria vectors were being rasterized with the
ALL_TOUCHED=TRUE
flag, leading to a perceived buffering of
spatial criteria in certain cases. In InVEST 3.9.0, these were
rasterized withALL_TOUCHED=FALSE
.
https://github.com/natcap/invest/issues/1120 - Fixed an issue with the results table,
SUMMARY_STATISTICS.csv
where the percentages of high, medium and low risk
classifications were not correctly reported. - Added a column to the
SUMMARY_STATISTICS.csv
output table to
also report the percentage of pixels within each subregion that
have no risk classification (a risk classification of 0).
- Fixed a regression relative to InVEST 3.9.0 outputs where
-
Urban Stormwater Retention
- Added validation to check that the input soil groups raster has
an integer data type
- Added validation to check that the input soil groups raster has
-
Urban Cooling
- Updated the text for the
building_intensity
column in the
biophysical table to clarify that the values of this column
should be normalized relative to one another to be between 0
and 1.
- Updated the text for the
Sustainable Development - Sustainable Investment
- Python
Published by emlys over 2 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.12.0
This minor release includes the following fixes and features:
-
General
- Update python packaging settings to exclude a few config files
and the workbench from source distributions and wheels - Updating SDR test values due to an update in GDAL's mode
resampling algorithm. See
https://github.com/natcap/invest/issues/905 - Updated our
scipy
requirement to fix a bug where invest
crashed if a Windows user had a non-Latin character in their
Windows username.
- Update python packaging settings to exclude a few config files
-
Workbench
- Fixed a bug where some model runs would not generate a new item
in the list of recent runs. - Enhanced model input forms so that text boxes always show the
rightmost end of the filepath when they overflow the box.
- Fixed a bug where some model runs would not generate a new item
-
Coastal Blue Carbon
- Fixed a bug where using unaligned rasters in the preprocessor
would cause an error. The preprocessor will now correctly align
input landcover rasters and determine transitions from the
aligned rasters.
- Fixed a bug where using unaligned rasters in the preprocessor
-
Habitat Quality
- Removed a warning about an undefined nodata value in threat
rasters because it is okay for a threat raster to have an
undefined nodata value.
- Removed a warning about an undefined nodata value in threat
-
HRA
- Fixed an issue with risk calculations where risk values would be
much lower than they should be. Risk values are now correctly
calculated. - Fixed an issue with risk reclassifications where most pixels
would end up classified as medium risk. - Added an input field to the model to indicate the number of
overlapping stressors to use in risk reclassification
calculations. This input affects the numerical boundaries
between high, medium and low risk classifications. - Various improvements to the model have resulted in a modest
(~33%) speedup in runtime.
- Fixed an issue with risk calculations where risk values would be
-
Coastal Vulnerability
- Fixed a bug where redundant vertices in the landmass polygon
could raise an error during shore point creation.
- Fixed a bug where redundant vertices in the landmass polygon
-
NDR
- Added parameters to the sample data to support nitrogen
calculations. - Effective retention calculations have been reworked so that the
source code more closely matches the mathematical definition in
the NDR User's Guide. There should be no difference in outputs.
- Added parameters to the sample data to support nitrogen
-
SDR
- We have made a significant update to the SDR model's outputs
described here:
https://github.com/natcap/peps/blob/main/pep-0010.md. - Specific changes include:
- Legacy outputs
sed_retention_index.tif
andsed_retention.tif
have been removed from the model. - Two new output rasters have been added, specifically
avoided_export.tif
, indicating vegetation's contribution to
reducing erosion on a pixel, as well as trapping of sediment
originating upslope of the pixel, so that neither of these proceed
downslope to enter a stream.avoided_erosion.tif
, vegetation’s contribution to reducing
erosion from a pixel.
- The summary watersheds vector no longer includes the
sed_retent
field and two fields have been added:avoid_exp
representing the sum of avoided export in the watershed.avoid_eros
representing the sum of avoided erosion in the watershed.
- Sediment deposition,
sed_deposition.tif
, has been clarified to
indicate the sediment that erodes from a pixel goes into the next
downstream pixel(s) where it is either trapped or exported. This update
removes a form of double-counting.
- Legacy outputs
- We have made a significant update to the SDR model's outputs
-
Urban Flood Risk
- Validation of the curve number table will now catch missing
CN_*
columns and warn the user about the missing column.
- Validation of the curve number table will now catch missing
Sustainable Development - Sustainable Investment
- Python
Published by phargogh over 2 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.11.0
This minor release includes the following fixes and features:
-
General
- InVEST Workbench released! A new desktop interface for InVEST
models. - Add support for python 3.10, and drop support for python 3.7.
- Fixed a bug where the model window would fail to open when using
thenatcap.invest
package with python 3.9.0 - 3.9.3. spec_utils.ETO
has been renamed tospec_utils.ET0
(with a
zero).- Updating the
pyinstaller
requirement to>=4.10
to support
the newuniversal2
wheel architecture offered by
scipy>=1.8.0
. - Now removing leading / trailing whitespaces from table input
values as well as columns in most InVEST models. - Fixing a small bug where drag-and-drop events in the Qt UI were
not being handled correctly and were being ignored by the UI. - Expose taskgraph logging level for the cli with
--taskgraph-log-level
. - Fixed bug in validation of
results_suffix
so that special
characters like path separators, etc, are not allowed. - Fixed a bug in validation where a warning about non-overlapping
spatial layers was missing info about the offending bounding
boxes.
- InVEST Workbench released! A new desktop interface for InVEST
-
Annual Water Yield
- Fixed a bug where the model would error when the
watersheds/subwatersheds input was in geopackage format.
- Fixed a bug where the model would error when the
-
Crop Production
- Fixed a bug in both crop production models where the model would
error if an observed yield raster had no nodata value.
- Fixed a bug in both crop production models where the model would
-
DelineateIt
- Watersheds delineated with this tool will now always have a
ws_id
column containing integer watershed IDs for easier use
within the routed InVEST models. Existingws_id
field values
in the outlets vector will be overwritten if they are present.
- Watersheds delineated with this tool will now always have a
-
RouteDEM
- Rename the arg
calculate_downstream_distance
to
calculate_downslope_distance
. This is meant to clarify that it
applies to pixels that are not part of a stream.
- Rename the arg
-
SDR
- Fixed an issue with SDR where
f.tif
might not be recalculated
if the file is modified or deleted after execution. - Fixed an issue in
sed_deposition.tif
andf.tif
where pixel
values could have very small, negative values forr_i
and
f_i
. These values are now clamped to 0. - Added basic type-checking for the
lucode
column of the
biophysical table. This avoids cryptic numpy errors later in
runtime.
- Fixed an issue with SDR where
-
Seasonal Water Yield
- Added an output to the model representing total annual
precipitation. - Fixed an issue with the documentation for ET0 and Precip
directories, where a module-specific informational string was
being overridden by a default value.
- Added an output to the model representing total annual
Sustainable Development - Sustainable Investment
- Python
Published by davemfish almost 3 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.10.2
- General
- The minimum
setuptools_scm
version has been increased to 6.4.0 in
order to bypass callingsetup.py
for version information. The
version of this project can now be retrieved by callingpython -m setuptools_scm
from the project root. - Fixed an issue where datastack archives would not include any spatial
datasets that were linked to in CSV files. This now works for all models
except HRA. If an HRA datastack archive is requested,
NotImplementedError
will be raised. A fix for HRA is pending. - Pinned
numpy
versions inpyproject.toml
to the lowest compatible
version for each supported python version. This prevents issues when
natcap.invest
is used in an environment with a lower numpy version
than it was built with (https://github.com/cython/cython/issues/4452).
- The minimum
- DelineateIt
- When snapping points to streams, if a point is equally near to more than
one stream pixel, it will now snap to the stream pixel with a higher
flow accumulation value. Before, it would snap to the stream pixel
encountered first in the raster (though this was not guaranteed).
- When snapping points to streams, if a point is equally near to more than
- HRA
- Fixed a bug with how a pandas dataframe was instantiated. This bug did
not effect outputs though some might notice less trailing zeros in the
SUMMARY_STATISTICS.csv
output.
- Fixed a bug with how a pandas dataframe was instantiated. This bug did
- NDR
- Changed some model inputs and outputs to clarify that subsurface
phosphorus is not modeled.- Removed the inputs
subsurface_critical_length_p
and
subsurface_eff_p
- Removed the output
sub_ndr_p.tif
. The model no longer calculates
subsurface NDR for phosphorus. - Removed the output
sub_load_p.tif
. All pixels in this raster were
always 0, because the model assumed no subsurface phosphorus movement. - Renamed the output
p_export.tif
top_surface_export.tif
to
clarify that it only models the surface export of phosphorus. - Renamed the output
n_export.tif
ton_total_export.tif
to
clarify that it is the total of surface and subsurface nitrogen export. - Added the new outputs
n_surface_export.tif
and
n_subsurface_export.tif
, showing the surface and subsurface
components of the total nitrogen export. - The aggregate vector output
watershed_results_ndr.shp
was changed to
a geopackagewatershed_results_ndr.gpkg
. - The aggregate vector fields were given more descriptive names, and
updated corresponding to the changed raster outputs:surf_p_ld
was renamed top_surface_load
surf_n_ld
was renamed ton_surface_load
p_exp_tot
was renamed top_surface_export
sub_n_ld
was renamed ton_subsurface_load
n_exp_tot
was renamed ton_total_export
- Added a new field
n_surface_export
, representing the sum of
n_surface_export.tif
- Added a new field
n_subsurface_export
, representing the sum
ofn_subsurface_export.tif
- Removed the field
sub_p_ld
, sincesub_load_p.tif
was removed.
- Removed the inputs
- Changed some model inputs and outputs to clarify that subsurface
- Wind Energy
- Fixed a bug where distance was masking by pixel distance instead of
euclidean distance. - Renamed the foundation cost label and help info to reflect it is no
longer measured in Millions of US dollars. - Fixed a bug where running valuation with TaskGraph in asynchronous mode
would cause the model to error.
- Fixed a bug where distance was masking by pixel distance instead of
Sustainable Development - Sustainable Investment
- Python
Published by emlys about 3 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.10.1
This bugfix release includes the following fixes and features:
- Urban Stormwater Retention
- Fixed a bug where this model's sample data was not available via the Windows installer.
Sustainable Development - Sustainable Investment
- Python
Published by davemfish over 3 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.10.0
This minor release includes the following fixes and features:
-
General
- Add a
--language
argument to the command-line interface, which
will translate model names, specs, and validation messages. - Accept a
language
query parameter at the UI server endpoints,
which will translate model names, specs, and validation
messages. - Added
invest serve
entry-point to the CLI. This launches a
Flask app and server on the localhost, to support the workbench. - Major updates to each model's
ARGS_SPEC
(and some related
validation) to facilitate re-use & display in the Workbench and
User's Guide. - Standardized and de-duplicated text in
ARGS_SPEC
about
and
name
strings. - Update to FontAwesome 5 icons in the QT interface.
- In response to the deprecation of
setup.py
-based commands in
Python 3.10, the recommended way to build python distributions
ofnatcap.invest
is now with thebuild
package, and
installation should be done viapip
. TheREADME
has been
updated to reflect this change, and this should only be
noticeable for those installingnatcap.invest
from source. - A bug has been fixed in
make install
so that now the current
version ofnatcap.invest
is built and installed. The former
(buggy) version ofmake install
would install whatever the
latest version was in yourdist
folder. - Updating the
taskgraph
requirement to0.11.0
to resolve an
issue where modifying a file within a roughly 2-second window
would fooltaskgraph
into believing that the file had not been
modified. - Fixed a bug where some input rasters with NaN nodata values
would go undetected as nodata and yield unexpected behavior.
- Add a
-
Annual Water Yield
- Renamed the Windows start menu shortcut from "Water Yield" to
"Annual Water Yield".
- Renamed the Windows start menu shortcut from "Water Yield" to
-
Coastal Vulnerability
- Fixed bug where shore points were created on interior landmass
holes (i.e. lakes). - Added feature to accept raster (in addition to vector) habitat
layers. - Changed one intermediate output (geomorphology) from SHP to
GPKG. - Fixed bug where output vectors had coordinates with an
unnecessary z-dimension. Output vectors now have 2D geometry.
- Fixed bug where shore points were created on interior landmass
-
Crop Pollination
- Renamed the Windows start menu shortcut from "Pollination" to
"Crop Pollination".
- Renamed the Windows start menu shortcut from "Pollination" to
-
Fisheries and Fisheries HST
- The Fisheries models were deprecated due to lack of use, lack of
scientific support staff, and maintenance costs.
- The Fisheries models were deprecated due to lack of use, lack of
-
Finfish
- The Finfish model was deprecated due to lack of use, lack of
scientific support staff, and maintenance costs.
- The Finfish model was deprecated due to lack of use, lack of
-
Habitat Quality
- Changed how Habitat Rarity outputs are calculated to be less
confusing. Values now represent a 0 to 1 index where before
there could be negative values. Now values of 0 indicate
current/future LULC not represented in baseline LULC; values 0
to 0.5 indicate more abundance in current/future LULC and
therefore less rarity; values of 0.5 indicate same abundance
between baseline and current/future LULC; values 0.5 to 1
indicate less abundance in current/future LULC and therefore
higher rarity.
- Changed how Habitat Rarity outputs are calculated to be less
-
NDR
- Added a new raster to the model's workspace,
intermediate_outputs/what_drains_to_stream[suffix].tif
. This
raster has pixel values of 1 where DEM pixels flow to an
identified stream, and 0 where they do not.
- Added a new raster to the model's workspace,
-
Scenario Generator
- Changed an args key from
replacment_lucode
to
replacement_lucode
.
- Changed an args key from
-
Scenic Quality
- Simplify the
valuation_function
arg options. The options are
now:linear
,logarithmic
,exponential
. The names displayed
in the UI dropdown will stay the same as before. Datastacks or
scripts will need to be updated to use the new option values. - Renamed the model title from "Unobstructed Views: Scenic Quality
Provision" to "Scenic Quality".
- Simplify the
-
SDR
- Added a new raster to the model's workspace,
intermediate_outputs/what_drains_to_stream[suffix].tif
. This
raster has pixel values of 1 where DEM pixels flow to an
identified stream, and 0 where they do not.
- Added a new raster to the model's workspace,
-
Urban Flood Risk:
- Fixed broken documentation link in the user interface.
-
Urban Stormwater Retention:
- First release of this model.
-
Visitation: Recreation and Tourism
- Renamed the Windows start menu shortcut from "Recreation" to
"Visitation: Recreation and Tourism".
- Renamed the Windows start menu shortcut from "Recreation" to
-
Wave Energy
- Rename the
analysis_area_path
arg toanalysis_area
, since it
is not a path but an option string. - Simplify the
analysis_area
arg options. The options are now:
westcoast
,eastcoast
,northsea4
,northsea10
,
australia
,global
. The names displayed in the UI dropdown
will stay the same as before. Datastacks and scripts will need
to be updated to use the new option values.
- Rename the
-
Wind Energy
- No model inputs or outputs are measured in "millions of"
currency units any more. Specifically: - The
mw_coef_ac
andmw_coef_dc
values in the Global Wind
Energy Parameters table were in millions of currency units per
MW; now they should be provided in currency units per MW. - The
infield_cable_cost
,cable_coef_ac
, andcable_coef_dc
values in the Global Wind Energy Parameters table were in
millions of currency units per km; now they should be provided
in currency units per km. - The
turbine_cost
value in the Turbine Parameters table was in
millions of currency units; now it should be provided in
currency units. - The
foundation_cost
parameter was in millions of currency
units; now it should be provided in currency units. - The NPV output, formerly
npv_US_millions.tif
, is now
npv.tif
. It is now in currency units, not millions of currency
units.
- No model inputs or outputs are measured in "millions of"
Sustainable Development - Sustainable Investment
- Python
Published by davemfish over 3 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.9.2
3.9.2
This bugfix release includes the following fixes and features:
-
General:
- Improving our binary build by including a data file needed for
thecharset-normalizer
python package. This eliminates a
warning that was printed to stdout on Windows. - The Annual Water Yield model name is now standardized throughout
InVEST. This model has been known in different contexts as
Hydropower, Hydropower Water Yield, or Annual Water Yield. This
name was chosen to emphasize that the model can be used for
purposes other than hydropower (though the valuation component
is hydropower-specific) and to highlight its difference from the
Seasonal Water Yield model. The corresponding python module,
formerlynatcap.invest.hydropower.hydropower_water_yield
, is
nownatcap.invest.annual_water_yield
. - Minor changes to some other models' display names.
- Update and expand on the instructions in the API docs for
installing thenatcap.invest
package. - The InVEST binaries on Windows now no longer inspect the
%PATH%
when looking for GDAL DLLs. This fixes an issue where
InVEST would not launch on computers where the%PATH%
either
contained other environment variables or was malformed. - JSON sample data parameter sets are now included in the complete
sample data archives.
- Improving our binary build by including a data file needed for
-
Seasonal Water Yield
- Fixed a bug in validation where providing the monthly alpha
table would cause a "Spatial file <monthly alpha table>
has no projection" error. The montly alpha table was mistakenly
being validated as a spatial file.
- Fixed a bug in validation where providing the monthly alpha
-
Crop Production Regression
- Corrected a misspelled column name. The fertilization rate table
column must now be namedphosphorus_rate
, not
phosphorous_rate
.
- Corrected a misspelled column name. The fertilization rate table
-
Habitat Quality
- Fixed a bug where optional input Allow Accessibility to Threats
could not be passed as an empty string argument. Now handles
falsey values.
- Fixed a bug where optional input Allow Accessibility to Threats
-
Urban Flood Risk
- Fixed a bug where lucodes present in the LULC raster but missing
from the biophysical table would either raise a cryptic
IndexError or silently apply invalid curve numbers. Now a
helpful ValueError is raised.
- Fixed a bug where lucodes present in the LULC raster but missing
Sustainable Development - Sustainable Investment
- Python
Published by dcdenu4 over 3 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.9.1
This bugfix release includes the following fixes and features:
-
General:
- Added error-handling for when
pandas
fails to decode a
non-utf8 encoded CSV. - Moved the sample data JSON files out of the root sample_data
folder and into their respective model folders. - Updated documentation on installing InVEST from source.
- Restructured API reference docs and removed outdated and
redundant pages. - Include logger name in the logging format. This is helpful for
the cython modules, which can't log module, function, or line
number info. - Fixed a bug in makefile that prevented
make env
from working
properly. - Fixed an issue with the InVEST application launching on Mac OS X
11 "Big Sur". When launching the InVEST.app
bundle, the
environment variableQT_MAC_WANTS_LAYER
is defined. If running
InVEST through python, this environment variable may need to be
defined by hand like so:
QT_MAC_WANTS_LAYER=1 python -m natcap.invest
. A warning will
be raised if this environment variable is not present on mac. - Fixing an issue on Mac OS X where saving the InVEST application
to a filepath containing spaces would prevent the application
from launching. - Fixed an issue on Mac OS when certain models would loop
indefinitely and never complete. This was addressed by bumping
thetaskgraph
requirement version to0.10.3
- Allow Windows users to install for all users or current user.
This allows non-admin users to install InVEST locally. - Fixed a bug where saving a datastack parameter set with relative
paths would not convert Windows separators to linux style. - Provide a better validation error message when an overview
'.ovr' file is input instead of a valid raster. - Removed internal references to
TaskGraph
copy_duplicate_artifact
calls in anticipation from that
feature being removed fromTaskGraph
. User facing changes
include slightly faster initial runtimes for the Coastal
Vulnerability, Coastal Blue Carbon, SDR, DelineateIt, and
Seasonal Water Yield models. These models will no longer attempt
to copy intermediate artifacts that could have been computed by
previous runs. - Validation now returns a more helpful message when a spatial
input has no projection defined. - Updated to pygeoprocessing 2.3.2
- Added support for GDAL 3.3.1 and above
- Added some logging to
natcap.invest.utils._log_gdal_errors
to
aid in debugging some hard-to-reproduce GDAL logging errors that
occasionally cause InVEST models to crash. If GDAL calls
_log_gdal_errors
with an incorrect set of arguments, this is
now logged.
- Added error-handling for when
-
Carbon
- Fixed a bug where, if rate change and discount rate were set to
0, the valuation results were in $/year rather than $, too small
by a factor oflulc_fut_year - lulc_cur_year
. - Improved UI to indicate that Calendar Year inputs are only
required for valuation, not also for sequestration. - Increasing the precision of
numpy.sum
from Float32 to Float64
when aggregating raster values for the HTML report.
- Fixed a bug where, if rate change and discount rate were set to
-
DelineateIt:
- The DelineateIt UI has been updated so that the point-snapping
options will always be interactive. - DelineateIt's point-snapping routine has been updated to snap
MULTIPOINT
geometries with 1 component point as well as
primitivePOINT
geometries. All other geometric types will not
be snapped. When a geometry cannot be snapped, a log message is
now recorded with the feature ID, the geometry type and the
number of component geometries. Features with empty geometries
are now also skipped.
- The DelineateIt UI has been updated so that the point-snapping
-
Fisheries Habitat Scenario Tool
- Fixed divide-by-zero bug that was causing a RuntimeWarning in
the logs. This bug did not affect the output.
- Fixed divide-by-zero bug that was causing a RuntimeWarning in
-
HRA
- Fixed bugs that allowed zeros in DQ & Weight columns of criteria
table to raise DivideByZero errors.
- Fixed bugs that allowed zeros in DQ & Weight columns of criteria
-
NDR
- Fixed a bug that allowed SDR to be calculated in areas that
don't drain to any stream. Now all outputs that depend on
distance to stream (d_dn
,dist_to_channel
,ic
,ndr_n
,
ndr_p
,sub_ndr_n
,sub_ndr_p
,n_export
,p_export
) are
only defined for pixels that drain to a stream. They have nodata
everywhere else.
- Fixed a bug that allowed SDR to be calculated in areas that
-
Pollination
- Updated so that the
total_pollinator_abundance_[season].tif
outputs are always created. Before, they weren't created if a
farm vector was not supplied, even though they are independent.
- Updated so that the
-
Recreation
- Fixed some incorrectly formatted log and error messages
-
Seasonal Water Yield
- Fixed a bug where
qf.tif
outputs weren't properly masking
nodata values and could show negative numbers.
- Fixed a bug where
-
SDR
- Fixed a bug in validation that did not warn against different
coordinate systems (all SDR inputs must share a common
coordinate system). - Fixed a bug that was incorrectly using a factor of 0.0986 rather
than 0.0896. This would have a minor effect on end-user results. - Changed how SDR thresholds its L factor to allow direct
thresholding rather than based off of upstream area. Exposed
this parameter asl_max
in theargs
input and in the user
interface. - Fixed a bug that allowed SDR to be calculated in areas that
don't drain to any stream. Now all outputs that depend on
distance to stream (d_dn
,d_dn_bare
,ic
,ic_bare
,
sdr
,sdr_bare
,e_prime
,sed_retention
,
sed_retention_index
,sed_deposition
,sed_export
) are only
defined for pixels that drain to a stream. They have nodata
everywhere else.
- Fixed a bug in validation that did not warn against different
-
Urban Flood Risk
- Fixed a bug where a String
Type
column in the infrastructure
vector would cause the aggregation step of the model to crash,
even with the correct integer value in the column.
- Fixed a bug where a String
-
Wind Energy
- Raising ValueError when AOI does not intersect Wind Data points.
Sustainable Development - Sustainable Investment
- Python
Published by emlys over 3 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - InVEST 3.9.0
3.9.0
This minor release includes the following fixes and features:
-
General
-
Deprecating GDAL 2 and adding support for GDAL 3.
-
Adding function in utils.py to handle InVEST coordindate
transformations. -
Making InVEST compatible with Pygeoprocessing 2.0 by updating:
convolve_2d()
keywordignore_nodata
to
ignore_nodata_and_edges
.get_raster_info()
/get_vector_info()
keyword
projection
toprojection_wkt
.
-
Improve consistency and context for error messages related to
raster reclassification across models by using
utils.reclassify_raster
. -
Fixed bug that was causing a TypeError when certain input
rasters had an undefined nodata value. Undefined nodata values
should now work everywhere. -
Include logging in python script generated from "Save to python
script..." in the "Development" menu. Now logging messages from
the model execution will show up when you run the script. -
InVEST is now a 64-bit binary built against Python 3.7.
-
Adding Python 3.8 support for InVEST testing.
-
Add warning message to installer for 32-bit computers about
installing 64-bit software. -
Stop running validation extra times when model inputs autofill,
saving a small but noticeable amount of time in launching a
model. -
The number of files included in the python source distribution
has been reduced to just those needed to install the python
package and run tests. -
Code-sign the macOS distribution, and switch to a DMG
distribution format. -
No longer include the HTML docs or HISTORY.rst in the macOS
distribution. -
Bumped the
shapely
requirements to>=1.7.1
to address a
library import issue on Mac OS Big Sur. -
Fixing model local documentation links for Windows and Mac
binaries. -
The InVEST binary builds now launch on Mac OS 11 "Big Sur". This
was addressed by defining theQT_MAC_WANTS_LAYER
environment
variable. -
Fixed the alphabetical ordering of Windows Start Menu shortcuts.
-
-
Annual Water Yield
- Fixing bug that limited
rsupply
result whenwyield_mn
or
consump_mn
was 0.
- Fixing bug that limited
-
Coastal Blue Carbon
- Refactor of Coastal Blue Carbon that implements TaskGraph for
task management across the model and fixes a wide range of
issues with the model that were returning incorrect results in
all cases. - Corrected an issue with the model where available memory would
be exhausted on a large number of timesteps. - In addition to the
execute
entrypoint, another entrypoint,
execute_transition_analysis
has been added that allows access
to the transition analysis timeseries loop at a lower level.
This will enable users comfortable with python to provide
spatially-explicit maps of accumulation rates, half lives and
other parameters that can only be provided via tables to
execute
. - Snapshot years and rasters, including the baseline year/raster,
are now all provided via a table mapping snapshot years to the
path to a raster on disk. The baseline year is the earliest year
of these. - The model's "initial" and "lulc lookup" and "transient" tables
have been combined into a single "biophysical" table, indexed by
LULC code/LULC class name, that includes all of the columns from
all of these former tables. - The "analysis year" is now a required input that must be >=
the final snapshot year in the snapshots CSV. - Litter can now accumulate at an annual rate if desired.
- The model now produces many more files, which allows for greater
flexibility in post-processing of model outputs.
- Refactor of Coastal Blue Carbon that implements TaskGraph for
-
Coastal Vulnerability
- 'shore_points_missing_geomorphology.gpkg' output file name
now includes the suffix if any, and its one layer now is renamed
from 'missing_geomorphology' to be the same as the file name
(including suffix). - Fixed a memory bug that occurred during shore point
interpolation when dealing with very large landmass vectors.
- 'shore_points_missing_geomorphology.gpkg' output file name
-
Delineateit
- The layer in the 'preprocessed_geometries.gpkg' output is
renamed from 'verified_geometries' to be the same as the file
name (including suffix). - The layer in the 'snapped_outlets.gpkg' output is renamed from
'snapped' to be the same as the file name (including suffix). - The layer in the 'watersheds.gpkg' output has been renamed from
'watersheds' to match the name of the vector file (including the
suffix). - Added pour point detection option as an alternative to providing
an outlet features vector.
- The layer in the 'preprocessed_geometries.gpkg' output is
-
Finfish
- Fixed a bug where the suffix input was not being used for output
paths.
- Fixed a bug where the suffix input was not being used for output
-
Forest Carbon Edge Effect
- Fixed a broken link to the local User's Guide
- Fixed bug that was causing overflow errors to appear in the logs
when running with the sample data. - Mask out nodata areas of the carbon map output. Now there should
be no output data outside of the input LULC rasater area.
-
GLOBIO
- Fixing a bug with how the
msa
results were masked and operated
on that could cause bad results in themsa
outputs.
- Fixing a bug with how the
-
Habitat Quality
- Refactor of Habitat Quality that implements TaskGraph
- Threat files are now indicated in the Threat Table csv input
under required columns:BASE_PATH
,CUR_PATH
,FUT_PATH
. - Threat and Sensitivity column names are now case-insensitive.
- Sensitivity threat columns now match threat names from Threat
Table exactly, without the need for "L". "L" prefix is
deprecated. - Threat raster input folder has been removed.
- Validation enhancements that check whether threat raster paths
are valid. - HQ update to User's Guide.
- Changing sample data to reflect Threat Table csv input changes
and bumping revision. - More comprehensive testing for Habitat Quality and validation.
- Checking if Threat raster values are between 0 and 1 range,
raising ValueError if not. No longer snapping values less than 0
to 0 and greater than 1 to 1. - Fixing bug that was setting Threat raster values to 1 even if
they were floats between 0 and 1. - Updating how threats are decayed across distance. Before, nodata
edges were ignored causing values on the edges to maintain a
higher threat value. Now, the decay does not ignore those nodata
edges causing values on the edges to decay more quickly. The
area of study should have adequate boundaries to account for
these edge effects. - Update default half saturation value for sample data to 0.05
from 0.1.
-
Seasonal Water Yield
- Fixed a bug where precip or eto rasters of
GDT_Float64
with
values greater than 32-bit would overflow to-inf
.
- Fixed a bug where precip or eto rasters of
-
SDR
- Fixing an issue where the LS factor should be capped to an
upstream area of 333^2 m^2. In previous versions the LS factor
was erroneously capped to "333" leading to high export spikes in
some pixels. - Fixed an issue where sediment deposition progress logging was
not progressing linearly. - Fixed a task dependency bug that in rare cases could cause
failure.
- Fixing an issue where the LS factor should be capped to an
-
Urban Cooling
- Split energy savings valuation and work productivity valuation
into separate UI options.
- Split energy savings valuation and work productivity valuation
-
Urban Flood Risk
- Changed output field names
aff.bld
andserv.blt
toaff_bld
andserv_blt
respectively to fix an issue where ArcGIS would
not display properly.
- Changed output field names
Sustainable Development - Sustainable Investment
- Python
Published by dcdenu4 over 4 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.9
3.8.9 (2020-09-15)
- Hydropower
- Fixed bug that prevented validation from ever passing for this model.
Validation will allow extra keys in addition to those in the ARGS_SPEC.
- Fixed bug that prevented validation from ever passing for this model.
- Urban Flood Mitigation
- Fixed incorrect calculation of total quickflow volume.
Sustainable Development - Sustainable Investment
- Python
Published by emlys over 4 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.8
3.8.8 (2020-09-04)
- Coastal Vulnerability
- Improved handling of invalid AOI geometries to avoid crashing and instead
fix the geometry when possible and skip it otherwise. - Added validation check that shows a warning if the SLR vector is not
a point or multipoint geometry.
- Improved handling of invalid AOI geometries to avoid crashing and instead
- Urban Cooling
- Energy units are now (correctly) expressed in kWh. They were previously
(incorrectly) expressed in kW. - Energy savings calculations now require that consumption is in units of
kWh/degree C/m^2 for each building class. - Fixing an issue where blank values of the Cooling Coefficient weights
(shade, albedo, ETI) would raise an error. Now, a default value for the
coefficient is assumed if any single value is left blank.
- Energy units are now (correctly) expressed in kWh. They were previously
- HRA
- Raise ValueError if habitat or stressor inputs are not projected.
- Make sample data rating filepaths work on Mac. If not on Windows and a rating
filepath isn't found, try replacing all backslashes with forward slashes.
- Seasonal Water Yield
- Updated output file name from aggregated_results.shp to aggregated_results_swy.shp
for consistency with NDR and SDR
- Updated output file name from aggregated_results.shp to aggregated_results_swy.shp
- Datastack
- Saved datastack archives now use helpful identifying names for spatial input folders
- Validation
- Fixed bug that caused fields activated by a checkbox to make validation fail,
even when the checkbox was unchecked.
- Fixed bug that caused fields activated by a checkbox to make validation fail,
- General
- Input table column headers are now insensitive to leading/trailing whitespace in
most places. - Modified the script that produces a conda environment file from InVEST's python
requirements file so that it includes theconda-forge
channel in the file
itself.
- Input table column headers are now insensitive to leading/trailing whitespace in
- Recreation
- Validate values in the type column of predictor tables early in execution. Raise
a ValueError if a type value isn't valid (leading/trailing whitespace is okay).
- Validate values in the type column of predictor tables early in execution. Raise
- Validation
- Set a 5-second timeout on validation functions that access a file. This will raise
a warning and prevent validation from slowing down the UI too much.
- Set a 5-second timeout on validation functions that access a file. This will raise
Sustainable Development - Sustainable Investment
- Python
Published by emlys over 4 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.7
This bugfix release includes the following fixes and features:
-
General
- Fixed an issue where some users would be unable to launch InVEST
binaries on Windows. This crash was due to a configuration issue
inPySide2==5.15.0
that will be fixed in a future release of
PySide2.
- Fixed an issue where some users would be unable to launch InVEST
-
GLOBIO
- Fix a bug that mishandled combining infrastructure data when
only one infrastructure data was present.
- Fix a bug that mishandled combining infrastructure data when
-
Urban Flood Risk
- The output vector
flood_risk_service.shp
now includes a field,
flood_vol
that is the sum of the modeled flood volume (from
Q_m3.tif
) within the AOI. - Fieldnames in
flood_risk_service.shp
have been updated to more
closely match the variables they match as documented in the
User's Guide chapter. Specifically,serv_bld
is nowserv.blt
andaff_bld
is nowaff.bld
. Q_mm.tif
has been moved from the intermediate directory into
the workspace.- Fixed a bug in the flood volume (
Q_m3.tif
) calculations that
was producing incorrect values in all cases.
- The output vector
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.6
This bugfix release includes the following fixes and features:
- Crop Production
- Fixed critical bug in crop regression that caused incorrect
yields in all cases.
- Fixed critical bug in crop regression that caused incorrect
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.5
This bugfix release includes the following fixes and features:
-
General
- Fix bug in
utils.build_lookup_from_csv
that was allowingkey_field
to be non unique and overwriting values. - Fix bug in
utils.build_lookup_from_csv
where trailing commas caused returned values to be malformed. - Add optional argument
column_list
toutils.build_lookup_from_csv
that takes a list of column names and only returns those in the dictionary. - Remove
warn_if_missing
argument fromutils.build_lookup_from_csv
and warning by default.
- Fix bug in
-
Urban Flood Risk Mitigation
- Fixed an issue where the output vector
flood_risk_service.shp
would only be created when the built infrastructure vector was provided. Now, theflood_risk_service.shp
vector is always created, but the fields created differ depending on whether the built infrastructure input is present during the model run. - Fixed an issue where the model would crash if an infrastructure geometry were invalid or absent. Such features are now skipped.
- Fixed an issue where the output vector
-
Scenic Quality
- Fixing an issue in Scenic Quality where the creation of the weighted sum of visibility rasters could cause "Too Many Open Files" errors and/or
MemoryError
when the model is run with many viewpoints. - Progress logging has been added to several loops that may take a longer time when the model is run with thousands of points at a time.
- A major part of the model's execution was optimized for speed, particularly when the model is run with many, many points.
- Fixing an issue in Scenic Quality where the creation of the weighted sum of visibility rasters could cause "Too Many Open Files" errors and/or
-
SDR:
- Removed the unused parameter
args['target_pixel_size']
from the SDRexecute
docstring.
- Removed the unused parameter
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.4
This bugfix release includes the following fixes and features:
-
General:
- Advanced the
Taskgraph
version requirement to fix a bug where workspace directories created by InVEST versions <=3.8.0 could not be re-used by more recent InVEST versions.
- Advanced the
-
NDR:
- The Start Menu shortcut on Windows and launcher label on Mac now have consistent labels for NDR: "NDR: Nutrient Delivery Ratio".
-
SDR:
- The Start Menu shortcut on Windows and launcher label on Mac now have consistent labels for SDR: "SDR: Sediment Delivery Ratio".
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.3
This bugfix release includes the following fixes and features:
- SDR's compiled core now defines its own SQRT2 instead of relying
on an available standard C library definition. This new definition
helps to avoid some compiler issues on Windows.
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.2
This bugfix release includes the following fixes and features:
- InVEST's CSV encoding requirements are now described in the
validation error message displayed when a CSV cannot be opened.
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago

Integrated Valuation of Ecosystem Services and Tradeoffs - 3.8.1
This bugfix release includes the following fixes and features:
- Fixed a compilation issue on Mac OS X Catalina.
- Fixed an issue with NDR's raster normalization function so that
Float64 nodata values are now correctly cast to Float32. This issue
was affecting the summary vector, where thesurf_n
,sub_n
and
n_export_tot
columns would contain values of-inf
. - Fixed minor bug in Coastal Vulnerability shore point creation. Also
added a check to fail fast when zero shore points are found within
the AOI. - The Finfish Aquaculture model no longer generates histograms for
uncertainty analysis due to issues with matplotlib that make InVEST
unstable. See https://github.com/natcap/invest/issues/87 for more. - Corrected the Urban Cooling Model's help text for the "Cooling
Capacity Calculation Method" in the User Interface. - Fixing an issue with SDR's
LS
calculations. Thex
term is now
the weighted mean of proportional flow from the current pixel into
its neighbors. Note that for ease of debugging, this has been
implemented as a separate raster and is now included inRKLS
calculations instead of in theLS
calculations. - Fixed a bug in validation where checking for spatial overlap would
be skipped entirely in cases where optional model arguments were not
used. - Bumping the
psutil
dependency requirement topsutil>=5.6.6
to
address a double-free vulnerability documented in CVE-2019-18874. - Adding a GitHub Actions workflow for building python wheels for Mac
and Windows as well as a source distribution. - Updating links in
setup.py
,README.rst
andREADME_PYTHON.rst
to refer to the repository's new home on github. - Binary builds for Windows and Mac OS X have been moved to GitHub
Actions from AppVeyor. All AppVeyor-specific configuration has been
removed. - Fixing an issue with the InVEST Makefile where
make deploy
was
attempting to synchronize nonexistent sample data zipfiles with a
storage bucket on GCP. Sample data zipfiles are only built on
Windows, and somake deploy
will only attempt to upload them when
running on Windows. - Fixed a bug in CLI logging where logfiles created by the CLI were
incompatible with thenatcap.invest.datastack
operation that
allows the UI to load model arguments from logfiles. - Added error-handling in Urban Flood Risk Mitigation to tell users to
"Check that the Soil Group raster does not contain values other than
(1, 2, 3, 4)" when aValueError
is raised from_lu_to_cn_op
. - Updated the
Makefile
to use the new git location of the InVEST
User's Guide repository at
https://github.com/natcap/invest.users-guide - Automated tests are now configured to use Github Actions for 32- and
64-bit build targets for Python 3.6 and 3.7 on Windows. We are still
using AppVeyor for our binary builds for the time being. - Makefile has been updated to fetch the version string from
git
rather thanhg
. A mercurial client is still needed in order to
clone the InVEST User's Guide. - Removing Python 2 compatibility code such as
future
,pyqt4
,
basestring
,unicode
,six
, unicode casting, etc... - Update api-docs conf file to mock sdr.sdr_core and to use updated
unittest mock
Sustainable Development - Sustainable Investment
- Python
Published by phargogh almost 5 years ago
