Releases: ncss-tech/soilDB
Releases · ncss-tech/soilDB
soilDB 2.9.1
soilDB 2.9.1 (2026-04-01)
-
ROSETTA()updates thanks to Todd Skaggs (USDA-ARS):- Now using version 2 of the ROSETTA API (https://www.handbook60.org/rosetta)
- New argument
est.typefor selecting ensemble summary method and resulting units of measure -
$Ko$ and$L$ parameters now included in model output
-
fetchGDB()now supports passing path to SSURGO GeoPackage file viadsnargument - Breaking change: sample SoilProfileCollection datasets (
loafercreek,gopheridge,mineralKing) updated to 2.9.xfetchNASIS()schema- Deprecated columns have been removed, following the corresponding changes in 2.9.0
soilDB 2.9.0 (2026-01-22)
Breaking Changes
- Deprecated
stringsAsFactorsargument has been removed from many query functions, useNASISChoiceList()and/orNASISDomainsAsFactor()instead for manual or automatic setting of domain values as factors, respectively - Deprecated NASIS column aliases have been removed, see https://ncss-tech.github.io/AQP/soilDB/bulletins/2025.01-1-soilDB-NASIS-column-aliases.html for details
- R version >= 4.1.0 is now required
Documentation
- New vignette with details on SoilWeb curated data sources, and related functions in soilDB (#435)
- New vignette on Soil Data Access,
SDA_query()and high-level wrapper functions for SDA queries in soilDB
Improvements
fetchOSD(..., extended = TRUE)gains geomorphon proportions via SoilWeb (#435)get_SDA_property(method="weighted average")resolved efficiency issues and streamlined SQL Common Table Expressions for processing very large sets of map unit keys (#432)OSDquery()gainsremarksargument for searching the REMARKS section of OSDs
soilDB 2.8.14 (2025-12-04)
- Added family mineralogy class grids
- Added argument
typefor selecting the type of query; replaces deprecatedformativeElement SDA_query()now includes additional metadata (comment header in SQL) to inform usage metrics of various access points to SDAfetchSDA()and related lower-level child functions now includenasiscoiidandnasischiidfor relating to internal database record IDs
What's Changed
- fix(test): update SDA expectations for FY26 SSURGO by @brownag in #417
- adding family mineralogy class extent grids to taxaExtent() by @dylanbeaudette in #416
- Broken proj by @dylanbeaudette in #418
- fix: handle possible failures in initializing spatial objects with
terra::rast()by @brownag in #419 - ci: test on ubuntu 22.04, oldrel-1 by @brownag in #421
- feat(fetchSDA): add
nasiscoiidandnasischiidby @brownag in #423 - ci: improvements by @brownag in #422
- feat: improve Soil Data Access metrics for soilDB usage by @brownag in #420
- doc: updates by @brownag in #425
- ci: add dependabot.yml by @brownag in #428
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #429
- chore(deps): bump JamesIves/github-pages-deploy-action from 4.4.1 to 4.7.6 by @dependabot[bot] in #430
- add remarks argument to OSDquery by @dylanbeaudette in #434
- refactor: replace httr and xml2 dependencies from SDA_query with base R/curl by @brownag in #433
- chore(deps): bump JamesIves/github-pages-deploy-action from 4.7.6 to 4.8.0 by @dependabot[bot] in #437
- adding geomorphon proportions by soil series to fetchOSD() by @dylanbeaudette in #435
- refactor:
get_SDA_property(method="weighted average")by @brownag in #432 - soilDB 2.9.0 by @brownag in #426
- fixes from STAT1010 by @brownag in #438
- fix(get_site_data_from_NASIS_db): deduplicate results by @brownag in #442
- fix: region for DS HUB AWS S3 bucket by @brownag in #445
- ROSETTA API updates by @dylanbeaudette in #448
- ci(R-CMD-check): remove old README build by @brownag in #449
- Update get_component_from_GDB.R by @smroecker in #451
- feat!: remove deprecated columns from sample SPC datasets by @brownag in #452
- Update utils.R by @smroecker in #453
- docs: NEWS and README by @brownag in #454
- docs: update README.md by @brownag in #455
- SDA / web test cleanup by @brownag in #456
New Contributors
- @dependabot[bot] made their first contribution in #429
Full Changelog: 2.8.13...2.9.1
soilDB 2.8.13
soilDB 2.8.13 (2025-09-26)
- Added
get_SDA_NASIS_key()for obtaining NASIS record IDs for component and component horizon data from Soil Data Access (#409) SDA_spatialQuery()fixed a bug with newaddFieldsargument andgeomIntersection=TRUE(#414)get_OSD()replace old base URL forresult='html'SDA_query()include soilDB package version in User-Agent string- Vignette updates
- Validate
SDA_spatialQuerywhat and as_Spatial inputs (@jslatane #411) get_SDA_property()fixed a bug in SQL dialect syntax with local SQLitedsn
What's Changed
- fix:
get_SDA_property()SQLite dialect by @brownag in #408 - Validate
SDA_spatialQuerywhat and as_Spatial inputs by @jslatane in #411 - fix: get_OSD base url for
result='html'by @brownag in #413 - fix: SDA_spatialQuery: addFields with
geomIntersection=TRUEand feat* tables by @brownag in #414 - Add
get_SDA_NASIS_key()by @brownag in #409
New Contributors
Full Changelog: 2.8.12...2.8.13
soilDB 2.8.12
soilDB 2.8.12 (2025-08-29)
- New Vignettes:
- Added vignette for thematic maps of dominant ecological site using Soil Data Access via
SDA_spatialQuery()andget_SDA_coecoclass() - Added vignette for creating and using local SSURGO databases via
downloadSSURGO()andcreateSSURGO()
- Added vignette for thematic maps of dominant ecological site using Soil Data Access via
SDA_spatialQuery()now supportsaddFieldsargument to add columns to the result from other non-spatial tables.- You can now specify columns from:
"legend","mapunit", and"muaggatt"tables forwhatequal to"mupolygon","mupoint","muline"or"mukey""legend"table forwhatequal to"areasymbol"or"sapolygon""featdesc"forwhatequal to"featpoint"or"featline"
- You can now specify columns from:
createSSURGO():- Added
appendargument to fixoverwritebehavior - Fixed bug in creating non-GeoPackage, non-spatial SQLite output
- Improved handling of empty export files and
overwritelogic for non-file-based RDBMS
- Added
fetchNASIS(): fixed bug whenfill=TRUEand there are no horizons in the source data for any profileget_component_from_SDA()fixed bug in join of"chorizon"and"chfrags"tables, now usesmerge(incomparables=NA)get_vegplot_tree_si_summary_from_NASIS_db()updated for newsiteindexcurvetable in NASIS data model version 7.4.3
What's Changed
createSSURGO()updates by @brownag in #401- SDA_spatialQuery: Add
addFieldsargument by @brownag in #405 - fixes for transition to new soilweb servers by @dylanbeaudette in #407
- Local SSURGO databases vignette by @brownag in #404
- SSURGO Dominant Ecological Site vignette by @brownag in #403
Full Changelog: 2.8.11...2.8.12
soilDB 2.8.11
soilDB 2.8.11 (2025-07-10)
- Update to NASIS metadata for data model version 7.4.3
fetchSDA_spatial()geom.src="mlrapolygon"uses a new URL on the DSHub S3 bucket- Added
"projectsubtype"and"milestonetype"to the"project"set forget_NASIS_table_name_by_purpose() - Initial phase of syntax cleanup affecting many functions
soilDB 2.8.10 (2025-04-28)
fetchVegdata()addnullFragsAreZeroargument (passed toget_site_data_from_NASIS_db())- Added
soilDB_user_dir()for caching local copies of data for use in soilDB functions (#377) - Added
fetchHWSD()andget_HWSD_path()for the FAO Harmonized World Soil Database (#391) - Added
get_phroots_from_NASIS_db()for getting pedon horizon root information from NASIS (#393)
What's Changed
- Add
soilDB_user_dir()by @brownag in #392 fetchHWSD()for FAO Harmonized World Soil Database by @brownag in #391- Add
get_phroots_from_NASIS_db()for querying and formatting data from phroots table by @dylanbeaudette in #393 - Linting 1 by @brownag in #395
- Update NASIS metadata for data model v7.4.3 by @brownag in #396
Full Changelog: 2.8.9...2.8.11
soilDB 2.8.9
soilDB 2.8.9 (2025-04-04)
- soilDB now requires aqp >= 2.1.0
- Added
get_vegplot_groundsurface_from_NASIS_db()thanks to Greg Schmidt (@phytoclast; #373) - Added
"transectgroundsurfcover"table to"vegetation"set forget_NASIS_table_name_by_purpose() - Added missing
fetchNASIS("components")deprecation messages for maat_l, maat_r, maat_h, mast_r, ecosite_id, ecosite_name, othervegid, and othervegclass columns fetchSDA_spatial(geom.src="mlrapolygon"): uses an AWS (S3) source and Seek-optimized ZIP file (thanks to @jneme910)get_SDA_property()(method"weighted average"and"min/max"),get_SDA_hydric(), andget_SDA_interpretation()(method"weighted average") now use Common Table Expressions (CTEs) and therefore are compatible with local (SQLite or other) data sources
What's Changed
- aqp usage cleanup by @brownag in #371
- deprecate
fetchSRI()and related low-level functions by @brownag in #372 - Vegplot Transect: Add support for Transect Ground Surface Cover by @brownag in #373
fetchSDA_spatial(geom.src="mlrapolygon"): use S3 source from @jneme910 by @brownag in #379- get_SDA_property: CTEs for SQLite compatibility and query readability by @brownag in #381
get_SDA_hydric(): use CTEs by @brownag in #382- get_SDA_interpretation:
method="weighted average"use CTEs by @brownag in #383 - fetchSDA_spatial:
geom.src="mlrapolygon"add support for query by other attributes by @brownag in #385 - Add
get_site_association_from_NASIS()by @brownag in #387 - Add
get_projectmilestone_from_NASIS()by @brownag in #390
Full Changelog: 2.8.8...2.8.9
soilDB 2.8.8
soilDB 2.8.8 (2025-02-10)
This is a patch release with several bug fixes.
fetchSCAN(): Bug fix in when sensor column contains allNAROSETTA()now uses HTTPS URLfetchNASIS()bug fix for (now deprecated)pedon_idin horizon slot rather than site- Rebuilt SPC datasets:
loafercreek,gopheridge,mineralKing fetchNASISLabData(): usencsspedonlabdataiidas unique pedon ID
Full Changelog: 2.8.7...2.8.8
soilDB 2.8.7
soilDB 2.8.7 (2025-01-16)
- Several aliases of NASIS physical column names have been deprecated and will be removed in the next minor release (2.9.x). See https://ncss-tech.github.io/AQP/soilDB/bulletins/2025.01-1-soilDB-NASIS-column-aliases.html for details (#369)
fetchVegdata()- Added
"ecostateid","ecostatename","commphaseid","commphasename" to columns fromsiteandsiteobsjoined into"vegplot"result. - Fixed
"site"join used for"vegplot"table result. Now using LEFT join to addsiteecositehistoryinformation - Sites without vegetation plots are now excluded from the result
- Added
get_vegplot_trhi_from_NASIS_db()&get_vegplot_transect_from_NASIS_db()no longer join to thepedontable. Use the"siteobsiid"or vegetation plot"assocuserpedonid"to join to pedon records when necessary.- This change avoids issues with unintended duplication of records e.g. lab pedons that have multiple pedons per site observation. Thanks to Nathan Roe for suggestion.
get_vegplot_*()functions use INNER join tovegtransecttable where applicable, so records are only returned for vegplots with an associated transect. Thanks to Zach Van Abbema for suggestion.createSSURGO(): more informative error message when no export files found for import- Improved soilDBdata data sets used for unit tests of
fetchNASIS()andfetchVegdata()when a local NASIS instance is not available - Updated NASIS SoilProfileCollection data sets (
loafercreek,gopheridge,mineralKing)
soilDB 2.8.6 (2024-12-23)
fetchNASIS()andget_site_data_from_NASIS_db()now return Ecological Site State and Community Phase information (ecostatename, ecostateid, commphasename, commphaseid columns) from Site Observation tablecreateStaticNASIS()bug fixes- Removed workaround for {odbc}/nanoodbc VARCHAR(MAX) columns; now can directly use
DBI::dbReadTable()for all tables via NASIS ODBC connection - Fixed error when
output_path=NULL
- Removed workaround for {odbc}/nanoodbc VARCHAR(MAX) columns; now can directly use
fetchNASIS()changed default behavior tomixColors=FALSEwhich returns dominant condition for each moisture state rather than mixing LAB color coordinatesget_colors_from_NASIS_db()deprecatemixColorsargument, addmethodargument with options "dominant", "mixed", and "none". New aggregation method"none"returns long format representation of color data from phcolor table with no aggregation applied.
createSSURGO()updates:- Added incremental write of tabular data by table and soil survey area, which is much more memory efficient
- Added
maxruledepthargument to allow filtering ofcointerptable, and set default to0.- This reduces number of
cointerprows by about 75% for published SSURGO. Generally, Web Soil Survey exports have maximum rule depth of1, but custom NASIS exports can be "deeper"
- This reduces number of
- Updated behavior of
filenameargument whenconnDBIConnection is specified and improvedoverwritelogic - Added
dissolve_fieldto facilitate creating aggregate geometries by"mukey"or other spatial attribute - Added
include_tabularargument to support omitting tabular data when building a database - Now
include_spatialandinclude_tabularare allowed to be a character vectors of table namesTRUEis all tables,FALSEis no tables. This allows for subsets of the SSURGO data model to be specified with finer user control over database contents.
- Now a composite
"soil_metadata"table is made with"areasymbol"column and one row per soil survey area, rather than one table per soil survey area. This is more compact and scales better to larger databases.
What's Changed
- fetchVegdata: add siteobsiid to vegplot tables; activate vegbasalarea table by @natearoe in #366
- get_NASIS_table_name_by_purpose: Add basal area tables by @natearoe in #367
createSSURGO()updates by @brownag in #370- Deprecate NASIS column name aliases by @brownag in #369
New Contributors
Full Changelog: 2.8.5...2.8.7
soilDB 2.8.5
soilDB 2.8.5 (2024-11-04)
fetchLDM()add support forarea_typeargument with local database connections (dsnargument)fetchSCAN()updates:- Added new help file on NASIS database sources; see
?NASISLocalDatabase(#360) get_SDA_*()function updates related to consistent parameters for miscellaneous areas and minor components (#361)fetchSOLUS(): New function for downloading data from Soil Landscapes of the United States 100-meter (SOLUS100) soil property maps project repository (#362)fetchNASIS()more consistent QC messages and output for multiple site observations and lab samples- Updated SoilProfileCollection data sets (
loafercreek,gopheridge,mineralKing) for aqp 2.1.x object definition and recent changes tofetchNASIS()(#363)
What's Changed
- fetchSCAN: return all above-ground sensors by @brownag in #359
- Scan metadata updates by @dylanbeaudette in #357
- Add helpfile on NASIS Local Database sources by @brownag in #360
get_SDA_*()function updates by @brownag in #361- Update SoilProfileCollection datasets for aqp 2.1.x by @brownag in #363
- Add
fetchSOLUS()by @brownag in #362
Full Changelog: 2.8.4...2.8.5
soilDB 2.8.4
soilDB 2.8.4 (2024-08-19)
createSSURGO()bug fixes following changes in 2.8.3- generating
gpkg_contentsfor GeoPackage files failed to add entries for "features" data_type filenameargument not properly handled in some cases
- generating
SDA_query()handle another possible failure point in error handling codecreateStaticNASIS()useodbc::dbListFields()instead ofodbc::odbcConnectionColumns()- fetchNASIS Vignette
Full Changelog: 2.8.3...2.8.4
soilDB 2.8.3
soilDB 2.8.3 (2024-06-11)
- Updates to SoilWeb web coverage services
- ISSR800 authoritative grid system altered slightly
ISSR800.wcs()andsoilColor.wcs()now set color table internally when possible- updated source data: ISSR800 (FY24) and soil color (FY23)
SDA_query()updates- Better messaging on error
- Handle try-error result more gracefully in high-level functions (#352)
createSSURGO(): added support for creating DuckDB, PostgreSQL, and other DBI-compatible databases (#352) viaconnargumentfetchSDA()andget_chorizon_from_SDA()concatenate multipletexclusing a comma when a texture group contains multiple texture classes (e.g. stratified textures) (fixes #353)fetchNASIS()/.formatLandformString(): appendgeomfmodcolumn to landscape, landform, and microfeature strings where present; thanks to Gabriel Benitez for suggestionfetchNASIS()/get_extended_data_from_NASIS_db(): fix conversion of codes to labels for microrelieffetchSCAN(): fix header format; thanks to @dschlaep for reporting and providing a fix
What's Changed
- SDA_query: handle API failures with more grace by @brownag in #351
- createSSURGO: add support for creating DuckDB and other DBI-compatible databases by @brownag in #352
- get_chorizon_from_SDA: concatenate many:1 texcl, lieutex within RV chtexturegrp by @brownag in #353
Full Changelog: 2.8.2...2.8.3