InventoryManager: Data Creation Outside of MobileMap and InventoryManager

Data Creation Outside of MobileMap and InventoryManager

When creating features in MobileMap (or InventoryManager) the software will populate the Unique_ID and Parent_ID fields as appropriate to ensure data integrity and the relationship between a Stand, Plots, Trees and Logs. For example, if a user heads-up digitizes a new stand in MobileMap or in InventoryManager, it will be assigned a Unique_ID value. Likewise, if the Copy tool is used to copy a stand from another layer (e.g., from a Shapefile in MobileMap or a source stands layer in InventoryManager), that incoming stand will be assigned a Unique_ID value. The same is true for Plot Layout tool in MobileMap and InventoryManager - each plot will be assigned the same Parent_ID (will match the Unique_ID of the parent stand) and a Unique_ID (unique to each plot).

If data are created outside of MobileMap and InventoryManager (e.g., in ArcMap, ArcGIS Pro, ArcGIS Online Map Viewer, etc.) the user will need to manually populate these unique ID fields. There are several ways to do this, and the best approach will depend on the application that is used. Below are some examples of suitable approaches by environment. Please note that these workflows are NOT recommended for everyday use by foresters. They should typically be used only by GIS professionals that are comfortable with GIS data management and data tasks in desktop environments.

The list of workflows for creating Stands and Plots below are ordered by their ease-of-use:

  1. Create all Stands and Plots in MobileMap/InventoryManager (preferred approach)

    1. This includes the incorporation of a Source Stands layer that may be coming from a separate Feature Service (e.g., Trimble Forestry LRM read-only stands layer as InventoryManager ‘Source Stands’ layer). In this scenario the workflow starts with copy of the stand geometry and relevant attributes from Source Stands to Stands which will include creation of the required Unique_ID values.

    2. This also includes scenarios where no Source Stands layer is present, and Stands are heads-up digitized in InventoryManager

    3. It even includes the scenario where Plots are created outside of MobileMap/InventoryManager and copied/loaded to the Plots feature layer and then the Plot Validation tool is used in InventoryManager to validate the Plots. The validation process will create the Unique_ID values on the Plots, assign the appropriate Parent_ID and Stand_ID values (from their containing Stand)

  2. Create Stands outside of MobileMap and/or InventoryManager then copy/load stands directly into the the Stands layer (rather than using the InventoryManager Copy tool)

    1. User must ensure that data are in Web Mercator or that the copy/load method handles on-the-fly reprojection to Web Mercator.

    2. User must calculate Unique_ID value for each stand

    3. In this approach, once the Stands are loaded, user proceeds with Plot creation in MobileMap/InventoryManager

  3. Create Stands and Plots outside of MobileMap/InventoryManager

    1. This approach is the most complex because it requires users to create Unique_ID values for each Stand and Plot, then copy the Stand Unique_ID value to each child plot as the Parent_ID value. If other fields are expected at the plot level (e.g., Stand_ID, region, owner, etc) they will also need to be populated on the plot.

    2. As with option 2 above, the user must project their data to Web Mercator or use a copy/load tool that performs on-the-fly projection to Web Mercator.

1. Create all Stand and Plot data in MobileMap/InventoryManager (preferred approach)

  • Heads-up digitizing of Stands is described here

  • Plot creation in InventoryManager is described here

  • Plot creation in MobileMap is described here

  • The most common scenario is to utilize a Source Stands layer to populate stand geometry and key attributes (e.g., Stand_ID) then utilize the InventoryManager Copy tool create inventory stands that meet the data requirements of MobileMap/InventoryManager (e.g., required fields like Unique_ID, Stand_ID, etc.).

    • An existing or new layer is created as a read-only polygon layer in Web Mercator projection which has the Stand geometry and key attributes (e.g., Stand_ID) and added to InventoryManager as the Source Stands layer. Sometimes this layer is populated by an existing in-house or 3rd party application or GIS Layer. An example might be a read-only polygon feature layer that exposes a subset of stands stored in Trimble Forestry LRM that can be used to create new inventory stands in InventoryManager

    • If not populated from automated process like Trimble LRM, the source stands layer can be used simply as workflow step to get stands from other data sources loaded into the Stands layer used by MobileMap/InventoryManager. In this scenario, new stands are typically copied into the Source Stands layer using one of 2 approaches: Import from Shapefile using the Import SHP tool in InventoryManager, or copy via desktop GIS (ArcMap or ArcGIS Pro).

      • Import source stand data from Shapefile using the InventoryManager ‘Import SHP’ tool. This tool (available starting 12/2/21 but not enabled on all sites) allows a user to import a Zipped Shapefile and copies the stand geometries and attributes into the Source_Stands layer. Note that attribute fields must have the exact same name and data type to successfully import.

      • Copy stand data FGDB or Shapefile is using ArcGIS Pro. To copy stands in the source stands layer

        • Open a new ArcGIS Pro project

        • Add your source stands feature service to the project

        • Add your stands source data (e.g., Shapefile, FGDB, etc.) to the map

        • Modify the source dataset to include any fields that are required in your source stands layer (likely will match the fields that are required in your inventory stands layer as well).

          • This may include adding fields, performing field calculations, etc.

        • Use standard ArcGIS Pro tools and workflow to select the desired stands from your source stands layer

        • Use the Copy tool on the Edit > Clipboard menu in ArcGIS Pro to copy the stands to the clipboard (step 1 in image below)

        • Use the Paste Special tool on the Edit > Clipboard menu in ArcGIS Pro and select your source stands layer in your destination feature service, using the default action to copy the source attributes (steps 2 and 3 in image below)

        • Verify that the source stands received the copied features by refreshing the map in InventoryManager and if needed using the Search or Zoom tool to find the new data

    • If existing Plots must be imported, the best way to do this is to follow these steps:

      • Project the Plots to Web Mercator and create and calculate required fields (e.g., Plot_ID). It is not necessary to calculate Unique_ID or Parent_ID if using the Validate Tool described in the steps below

      • Use the Copy then Paste Special workflow described above for Stands

      • Open InventoryManager and navigate to the Stands that contain the plots that were just loaded

      • Select all Stands with newly created Plots

      • Run the Validate Tool which will:

        • Create a Unique_ID value for each plot

        • Assign the correct Parent_ID and Stand_ID for each plot

2. Create Stands outside of MobileMap and/or InventoryManager then copy/load stands directly into the the Stands layer (rather than using the InventoryManager Copy tool)

When creating stands (not source stands) outside of MobileMap/InventoryManager (and thus not using the InventoryManager Copy tool to copy from another layer) users must manually create the required fields, including the Unique_ID field which is used to ensure proper data integrity within the MobileMap/InventoryManager system.

The Unique_ID (and Parent_ID) field in MobileMap/InventoryManager store a text representation of the ISO Universally Unique ID (UUID) which is a random 36-38 character hexidecimal (0-9, A-F) value. This random value is sufficiently complex that it can be guaranteed to be unique within a dataset. MobileMap/InventoryManager followed the Esri standard of including a leading and trailing curly bracket or brace { }, but uses a standard Text field, rather than the Esri GUID data type. To generate valid GUIDs, an online tool like https://www.guidgenerator.com/ (using the 'Hyphens' and ‘Braces’ options) can be used.

 

 

 

The process for populating Unique_ID is different based on the application that is used. The sections below describe processes that can be used for three common environmments - ArcGIS Online/Portal, ArcGIS Pro and ArcMap.

ArcGIS Online / Portal

If heads-up digitizing a new stand in the ArcGIS Online Map Viewer (or the default Map viewer provided with ArcGIS Enterprise - AKA Portal), a popup for entering attributes will display when the stand polygon geometry is completed. In this popup, enter a valid GUID value (including curly brackets) into the Unique_ID field (see tool decribed above for easy way to create GUID values).

ArcGIS Pro

ArcMap

A more typical scenario is importing stand and plot data from an existing GIS layer. This may be legacy data coming in from a Shapefile, a File Geodatabase, or something that is being created with a plot allocation tool like EZ Plot (https://landmarkspatialsolutions.com/lmss-ez-plot/).

The process for data creation using ArcMap and ArcGIS Pro can be broken into 2 steps: Data Creation and Data Upload

Data Creation

In this scenario, the GIS user will need to project the geometries into Web Mercator (Auxiliary Sphere) to be compatible with the Feature Service projection, use the field calculator tool to calculate any required fields with the appropriate target field names and data types (e.g., Stand_ID, Plot_ID), then create the unique IDs.

3. Create Stands and Plots outside of MobileMap/InventoryManager

A typical scenario is to use a Python script to create the Unique_ID values for the stands and plots, then use the ArcGIS ‘Identity’ tool to copy the stand Unique_ID values into the Parent_ID field of their respective plots. The Identity tool is well documented in Esri documentation (ArcMap: https://desktop.arcgis.com/en/arcmap/10.7/tools/analysis-toolbox/identity.htm, ArcGIS Pro: https://pro.arcgis.com/en/pro-app/tool-reference/analysis/identity.htm). An example Python script and field calculation process for creating Unique_ID values is described in the section below.

Note that calculating Parent_IDs for legacy tree and log data requires additional steps, since the Identity tool cannot be used on these tabular-only records (Identity only works on spatial data). In this case, the records will need to joined in ArcGIS based on attributes like Stand_ID and Plot_ID, then the Field Calculator can be used to copy the plot Unique_ID values to the trees Parent_ID fields.

Using Python to calculate GUIDs for Unique_ID field in ArcMap

  • In the attribute table, select the Unique_ID field then right click and select Field Calculator

  • Select the Python option, and check the ‘Show Codeblock’ checkbox

  • In the ‘Pre-Logic Script Code’ text area, paste in the following code:

def CalcGUID(): import uuid return '{' + str(uuid.uuid4()).upper() + '}'
  • In the ‘UNIQUE_ID =’ , paste in the following code:

CalcGUID()
  • Click OK to run the field calculation for all currently selected rows

  • Repeat process for all layers (stands, plots, trees, logs)

    • Interface in ArcMap

    • Interface in ArcGIS Pro

 

Similarly, if heads-up digitizing a new plot in the ArcGIS Online Map Viewer, enter the stand’s Unique_ID as the plot’s Parent_ID, and enter a new GUID in the plot’s Unique_ID field. Because of the manual nature of this process, this would be very inefficient if many stands and plots must be manually created. It also would not take advantage of the plot layout tools in MobileMap and InventoryManager.

Data Upload / Sync

After data have been created in ArcGIS Desktop, they must be uploaded to the Feature Service. ArcMap and ArcGIS Pro use different approaches for this process:

ArcMap

ArcGIS Pro

Related Articles

https://woodlandsg.atlassian.net/wiki/spaces/MD/pages/323125284

https://woodlandsg.atlassian.net/wiki/spaces/MD/pages/33180