Skip to content

sqldf function calls in datSumTree.R #26

@radt0005

Description

@radt0005

This should be reproducible but I'm not sure it qualifies as a bug. It seems like an unanticipated interaction between FIESTA and the RpostgreSQL package. Here are some details:

In a fresh R session run the first modGBpop example from the FIESTA - Green-book Estimators vignette
POP1: FIADB POPULATION - Get population data for area and tree estimates for Wyoming, using post-stratification

library(FIESTA)
  GBpopdat <- modGBpop(
  popTabs = list(cond = FIESTA::WYcond,          # FIA plot/condition data
                 tree = FIESTA::WYtree,          # FIA tree data
                 seed = FIESTA::WYseed),         # FIA seedling data
  popTabIDs = list(cond = "PLT_CN"),             # unique ID of plot in cond
  pltassgn = FIESTA::WYpltassgn,  # plot assignments
  pltassgnid = "CN",              # unique ID of plot in pltassgn
  pjoinid = "PLT_CN",             # plot id to join to pltassgn
  unitarea = WYunitarea,          # area by estimation units
  unitvar = "ESTN_UNIT",          # name of estimation unit
  strata = TRUE,                  # if using post-stratification
  stratalut = WYstratalut,        # strata classes and pixels counts
  strata_opts = strata_options(getwt = TRUE)              # strata options
)

next run the first modGBtree example from the same vignette
POP1: 1.1 Net cubic-foot volume of live trees, Wyoming, 2011-2013

## Return raw data and titles
## Total net cubic-foot volume of live trees (at least 5 inches diameter), Wyoming, 2011-2013 
tree1.1 <- modGBtree(
    GBpopdat = GBpopdat,         # pop - population calculations
    landarea = "FOREST",         # est - forest land filter
    sumunits = TRUE,             # est - sum estimation units to population
    estvar = "VOLCFNET",               # est - net cubic-foot volume
    estvar.filter = "STATUSCD == 1",   # est - live trees only
    returntitle = TRUE           # out - return title information
    )

Everything works fine to here. But if you load the RpostgreSQL package and run the modGBtree example again it causes an error
library(RPostgreSQL)

## Return raw data and titles
## Total net cubic-foot volume of live trees (at least 5 inches diameter), Wyoming, 2011-2013 
tree1.1 <- modGBtree(
    GBpopdat = GBpopdat,         # pop - population calculations
    landarea = "FOREST",         # est - forest land filter
    sumunits = TRUE,             # est - sum estimation units to population
    estvar = "VOLCFNET",               # est - net cubic-foot volume
    estvar.filter = "STATUSCD == 1",   # est - live trees only
    returntitle = TRUE           # out - return title information
    )
> Error in if (nrow(treex) == 0) { : argument is of length zero

Checking for and detaching the RPostgreSQL package before running the modGBtree code will solve the problem. A possible modification to the FIESTA code in datSumTree.R to specify SQLite driver the drv="RSQLite" at line 688 (and possibly line 708) seems to prevent the error in this example:
sqldf::sqldf(tree.qry, dbname=dbname, drv="RSQLite")
I'm not sure if this would cause other problems, but I wanted to pass it along in case it helps anyone who might have RPostgreSQL loaded in their environment while calling FIESTA functions. Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions