...
The Inventory Export process typically begins in the Map by searching for and selecting a set of Stands to be exported. Typical scenarios include searching for all stands that have a status of ‘Cruised’ or ‘Checked’, with the possible addition of spatial parameters like a specific property or region. See InventoryManager: Search https://masonbruce.atlassian.net/wiki/spaces/MD/pages/307953750 for more information on searching for Stands to export.
...
To support specific data manipulation tasks during export, InventoryManager Export includes a small number of functions that can be run during the export to transform data into the desired format. The table below lists the available functions. In each case, the function would be entered in the ‘esriName’ column of the export config to indicated that the source is a function rather than simply copying the value from an existing field in the ArcGIS data model.
Function | Description | Example |
---|---|---|
ADD | Adds the values of 2 fields together. If one or both fields are text then fields are concatenated. | ADD(Inventory_Year+Measurement_Frequency) - This example will add the values of Inventory_Year and Measurement_Frequency to calculate the year for the next inventory. |
AUTOINCREMENT | Auto-numbers output rows | AUTOINCREMENT - No parameters or parenthesis needed |
EXCLUDE
Exclude records based on some attribute value. Note, this has only been implemented for Trees so far.
EXCLUDE(Cut_Leave:Cut) - this example will exclude any trees for which the ‘Cut_Leave’ field contains a value of ‘Cut’
FVSGROUPS
Calculate the ‘Groups’ field in the ‘FVS_StandInit' table of the FVS SQLite database export. The groups value will always contain the phrase 'All_Stands’. Adding this function can include additional groups based on hard-coded values or the values of any field(s)
FVSGROUPS(variant=SN;Cover_Type={Cover_Type};) - this example would include the following groups:
All_Stands
variant
Cover_Type
LOOKUP
Lookup values from list - if the export value should come from a list of allowed values, but that list does not match the Coded Value Domain list for that field, a custom lookup table can be provided in the config file.
LOOKUP(Cruise_Type:S=0;C=1) - This example will transform the values of the field ‘Cruise_Type’ in the Trees table (with domain values of S for standard cruise and C for check cruise) needs to match the values needed in the RECTYP field used by TCruise. It will replace all instances of ‘S' with the value 0, and all instances of 'C' with the value 1.
LOOKUP(Length:0.5:8;1:16;1.5:24;) - This example could be used to translate between log lengths recorded in 1/2 logs (e.g., 0.5, 1, 1.5,…) to feet (e.g., 8, 16, 24,…).
BASALAREA | Calculates the Basal Area of a tree (in square feet) using the equation (DBH)^2 * 0.005454154; | BASALAREA(DBH) - could calculate the Basal Area of a tree. Assumes that DBH is in inches and BA is desired in square feet. |
DIVIDE | Divide the value of one field by the value of another field | DIVIDE(Total_Height,DBH) - this example could calculate the height to diameter ratio for each tree to be used to detect outliers. |
EXCLUDE | Exclude records based on some attribute value. Note, this has only been implemented for Trees so far. | EXCLUDE(Cut_Leave:Cut) - this example will exclude any trees for which the ‘Cut_Leave’ field contains a value of ‘Cut’ |
FVSGROUPS | Calculate the ‘Groups’ field in the ‘FVS_StandInit' table of the FVS SQLite database export. The groups value will always contain the phrase 'All_Stands’. Adding this function can include additional groups based on hard-coded values or the values of any field(s) | FVSGROUPS(variant=SN;Cover_Type={Cover_Type};) - this example would include the following groups:
|
LOOKUP | Lookup values from list - if the export value should come from a list of allowed values, but that list does not match the Coded Value Domain list for that field, a custom lookup table can be provided in the config file. | LOOKUP(Cruise_Type:S=0;C=1) - This example will transform the values of the field ‘Cruise_Type’ in the Trees table (with domain values of S for standard cruise and C for check cruise) needs to match the values needed in the RECTYP field used by TCruise. It will replace all instances of ‘S' with the value 0, and all instances of 'C' with the value 1. LOOKUP(Length:0.5=8;1=16;1.5=24;) - This example could be used to translate between log lengths recorded in 1/2 logs (e.g., 0.5, 1, 1.5,…) to feet (e.g., 8, 16, 24,…). |
MAX | Return the maximum value of the selected attribute values | MAX(Defect_1;Defect_2;Defect_3) - this example could calculate the maximum amount of defect when tree defect is recorded per third of each tree. |
MIN | Return the minimum value of the selected attribute values | MIN(Reference_Tree_Distance_1;Reference_Tree_Distance_2) - this example could calculate the distance to the closest reference tree for a plot. |
MULTIPLY | Multiply the values of two fields together | MULTIPLY(Plot_Length,Plot_Width) - this example could calculate the area of a rectangular plot in square feet when the Plot_Length field and the Plot_Width fields are entered by a cruiser in feet. |
PLOTS. | Lookup value from an existing or new field in the Plots layer | PLOT.Plot_Size - this example could populate a Strata field in an output Plots table with the Strata value of that Plot’s parent Stand. |
POWER | Calculate the power (exponent) of an attribute value | POWER(Plot_Width;2) - this example could calculate the area of a square plot when the plot width is stored in an attribute field. Note that this would not convert units, so this would only be appropriate if the width was in Feet and you want the area in Square Feet. |
SQRT | Calculate the square root of of an attribute value | SQRT(Area) - this example could calculate the width of a square plot when the plot area is stored in an attribute field. Note that this would not convert units, so this would only be appropriate if the area was in Square Feet and you want the width in Feet. |
STANDS. | Lookup value from an existing or new field in the |
Stands layer |
STANDS. |
Strata - this example could populate a Strata field in an output Plots table with the Strata value of that Plot’s parent Stand |
. | ||
SUBTRACT | Subtract the values of 1 field from the value of another field. | SUBTRACT(Inventory_Year-Origin_Year) - this example could calculate a stand ‘Age’ field as the origin subtracted from the cruise year. |
TREES. | Lookup value from an existing or new field in the |
Trees layer |
TREES. |
Species- this example could populate a |
Species field in an output |
Trees table with the |
Species value of that |
Log’s parent |
Tree. |
YEAR |
Subtract the values of 1 field from the value of another field.
Return the 4 character year value for a date that is stored using an Esri Date field (unix timestamp) | YEAR(Cruise_Date) - this example would return the inventory year when Cruise_Date field stores an Esri Date value for the date of the cruise (typically at Stand or Plot level) Note this is just the calendar year, not a tree growth year. |
Stands To Export
...
In addition to the original selection of stands described above, the stands to be exported can be further constrained using the Stands to Export setting on the Inventory Export tab.
...
Check cruise score calculation can be performed during the Inventory Export process. Check cruise score calculation requires that a Check_Rules table is present in the data model and is populated with one or more check cruise score rules. These rules define the quality control tests that should be applied and the point deductions that should be calculated. For more information on creating Check Cruise Rules, see InventoryManager: Check Cruise Rules. For an overview
Below are some example check cruise score rules, written in a human readable format:
...
Inventory Export supports export of data for FVS by writing out an FVS compatible SQLite database file. In order for to produce a valid FVS export, however, it is critical to use an export configuration file that maps between the Esri data model fields and the FVS expected fields. Successful creation of an export configuration file for FVS requires knowledge of FVS inputs and your Esri data model. To help support the creation of export configuration files, MB&G can provide example files that have been used by others for FVS data export.
table | index | esriName | exportName | defaultValue |
Stands | 1 | Stand_ID | Stand_ID | 0 |
Stands | 2 | Stand_ID | Stand_CN | 0 |
Stands | 3 | Variant | SN | |
Stands | 4 | Inv_Year | 2019 | |
Stands | 5 | FVSGROUPS(variant=SN;Cover_Type={Cover_Type};) | Groups | |
Stands | 6 | AddFiles | ||
Stands | 7 | FVSKeywords | ||
Stands | 8 | Region | ||
Stands | 9 | Forest | ||
Stands | 10 | District | ||
Stands | 11 | Compartment | ||
Stands | 12 | Location | ||
Stands | 13 | SUBTRACT(Inventory_Year-Origin_Year) | Age | |
Stands | 14 | Aspect | ||
Stands | 15 | Slope | ||
Stands | 16 | ElevFt | ||
Stands | 17 | LOOKUP(Saw_Plot_Size:BAF10=10;BAF20=20) | Basal_Area_Factor | |
Stands | 18 | Inv_Plot_Size | 100 | |
Stands | 19 | Brk_DBH | 5 | |
Stands | 20 | Num_Plots | 0 | |
Stands | 21 | NonStk_Plots | ||
Stands | 22 | Acres | Sam_Wt | |
Stands | 23 | Max_BA | ||
Stands | 24 | Max_SDI | ||
Stands | 25 | Site_Species | ||
Stands | 26 | Site_Index | ||
Stands | 27 | State | 37 | |
Stands | 28 | County | ||
Stands | 29 | Fuel_Model | ||
Stands | 30 | Photo_Ref | ||
Stands | 31 | Photo_code | ||
Plots | 1 | Stand_ID | Stand_ID | 0 |
Plots | 2 | Stand_ID | Stand_CN | 0 |
Plots | 3 | StandPlot_ID | 0 | |
Plots | 4 | StandPlot_CN | 0 | |
Plots | 5 | Plot_ID | Plot_ID | |
Plots | 6 | Variant | SN | |
Plots | 7 | Inv_Year | 2014 | |
Plots | 8 | Groups | All_Stands Variant=SN | |
Plots | 9 | AddFiles | ||
Plots | 10 | FVSKeywords | ||
Plots | 11 | Latitude | Latitude | |
Plots | 12 | Longitude | Longitude | |
Plots | 13 | STANDS.Age | Age | |
Plots | 14 | Aspect | ||
Plots | 15 | Slope | ||
Plots | 16 | Elevation | ElevFt | |
Plots | 17 | LOOKUP(Saw_Plot_Size:BAF10=10;BAF20=20) | Basal_Area_Factor | |
Plots | 18 | Inv_Plot_Size | 100 | |
Plots | 19 | Brk_DBH | 5 | |
Plots | 20 | Num_Plots | ||
Plots | 21 | NonStk_Plots | ||
Plots | 22 | Max_BA | ||
Plots | 23 | Max_SDI | ||
Plots | 24 | Site_Species | ||
Plots | 25 | Site_Index | ||
Plots | 26 | State | 37 | |
Plots | 27 | County | ||
Plots | 28 | Fuel_Model | ||
Plots | 29 | Photo_Ref | ||
Plots | 30 | Photo_code | ||
Trees | 1 | EXCLUDE(Cut_Leave:1) | NA | |
Trees | 2 | Stand_ID | Stand_ID | 0 |
Trees | 3 | Stand_ID | Stand_CN | 0 |
Trees | 4 | StandPlot_ID | 0 | |
Trees | 5 | StandPlot_CN | 0 | |
Trees | 6 | Plot_ID | Plot_ID | 0 |
Trees | 7 | Tree_ID | Tree_ID | 0 |
Trees | 8 | Tally | Tree_Count | |
Trees | 9 | History | ||
Trees | 10 | Species | Species | |
Trees | 11 | DBH | DBH | |
Trees | 12 | DG | ||
Trees | 13 | Total_Height | Ht | |
Trees | 14 | Crown_Ratio | CrRatio | |
Trees | 15 | Damage1 | 25 | |
Trees | 16 | Severity1 | 10 | |
Trees | 17 | Damage2 | ||
Trees | 18 | Severity2 | ||
Trees | 19 | TreeValue | ||
Trees | 20 | Tree_Age | Age | |
Trees | 21 | Slope | ||
Trees | 22 | Aspect |
When exporting data for FVS, use the appropriate export configuration file and check the box labeled Export for FVS (*.db).
This will produce a SQLite database suitable for use in the new version of FVS. The basic workflow for using this file within FVS is outlined below:
Open FVS (web-based version, not Suppose. Application will open in browser using 'loopback' URL 127.0.0.1)
Import Data Tab (upper left)
Browse for file
Install uploaded database
Runs Tab (upper left)
Click ‘New’ button
On ‘Groups’ tab, select ‘All_Stands’ item from list, then click ‘Add stands in selected groups’ button below lists
Time Tab (mid right)
Select start, stop and interval
Select Outputs Tab
Check boxes for ‘Tree Lists’ and ‘Inventory Statistics’ (and others for which you have input data, e.g., carbon, fuels, etc.)
*Run* Tab
Click ‘Save and Run’
Review output chart
Review units & values
Modify data, settings, etc. as needed
...
Example results in FVS for 5 Southern Loblolly Pine stands exported from InventoryManager using the Export for FVS option.
...