MobileMap: Data Model / Data Modeling Process
- 1 Data Modeling Overview
- 2 Documenting Data Models
- 3 General Data Model Requirements
- 3.1 Feature Types
- 3.2 Conventions
- 3.2.1 General Naming Conventions
- 3.2.2 Standard Field Names
- 3.3 Esri Reserved Field Names
- 3.4 Editor Tracking
- 4 Cruise Data Model Requirements
- 4.1 Layers
- 5 Business Logic Data Model Requirements
- 5.1 Layers
- 6 Generic Data Model Requirements
- 6.1 Layers
- 7 Relationships
- 8 Templates
- 9 Generating Data Models from TCruise Templates
- 10 Build the Data Model
- 11 Data Model Validation
- 12 Related Articles:
- 13 ArcGIS Reserved Words List
Data Modeling Overview
MobileMap requires ArcGIS Feature Services to define the data model for data access, data collection and editing. The first step in using MobileMap, therefore is to design and publish a data model. To do this, the general process is: Document > Build > Symbolize > Publish > Test.
Documenting Data Models
The WSG approach to documenting requirements is to use a spreadsheet format in which the layers, fields and allowed values are captured in two tabs of an Excel spreadsheet - data model and domains. The requirements gathering process starts typically starts with one or more templates that WSG can provide based on data models used for previous implementations, as well field protocols (cruise specs) and any existing field forms or data collection software user interface examples.
Data Model CSV format:
Layer | LayerType | FieldName | Alias | DataType | MaxLength | Precision | AllowNullValues | DefaultValue | DomainName |
Stands | Polygon | Stand_ID | Stand ID | LONG |
|
| No |
|
|
Stands | Polygon | State | State | TEXT | 50 |
| Yes |
| States |
Stands | Polygon | Region | Region | TEXT | 50 |
| Yes |
| Regions |
… | … | … | … | … | … | … | … | … | … |
Notes:
Layer
Layer name, no spaces
Recommended syntax
Use of plural nouns (e.g. Stands, Streams, Roads)
Where multiple words needed, use title case with underscores (e.g., Treatment_Areas)
For cruise use Stands, Plots, Trees, Logs
Layer Type
Polygon, Line, Point, Table
FieldName
Where multiple words needed, use title case with underscores (e.g., Plot_Type)
Keep it human readable by avoiding abbreviations, acroymns, slang (e.g. use Cruise_Type instead of CRZTYP)
DataType
TEXT, LONG, SINGLE, DOUBLE
MaxLength
Only for TEXT fields
Maximum number of characters that can be entered
Precision
Only for SINGLE and DOUBLE fields
AllowNullValues
Yes = field is not required, No = field is required
Default Value
Enter the default value to be stored for the field when a new feature is created. If the field uses a Coded Value Domain, enter the code (not the description) here.
Domain Name
Must match the domain name in the domains CSV file
Domains CSV format:
DomainName | FieldType | DomainType | Code | Description | Min | Max |
DBH | Short | Range |
|
| 0 | 100 |
Regions | Text |
| NW | Northwest |
|
|
Regions | Text |
| NC | North central |
|
|
Regions | Text |
| NE | Northeast |
|
|
… | … | … | … | … | … | … |
General Data Model Requirements
Feature Types
MobileMap supports the following ArcGIS Feature Classes:
Points
Lines
Polygons (simple and multipart polygons)
It also supports Feature Tables. It does not support Annotations, Dimensions, Multipoints or Multipatches
Conventions
General Naming Conventions
While MobileMap is highly configurable and can accommodate custom field names, it is strongly encouraged to adopt the MobileMap conventions for table names, field names, alias names and data types. The general naming conventions are as follows:
Table Names:
plural title case with underscores
Examples: Plots, Stands, Sale_Units, Access_Roads
Field Names
Singular title case with underscores
Examples: Region, Count, Road_Length, Bark_Thickness
Exceptions: use Esri defaults as-is (e.g., editor tracking fields like ‘last_edited_date’, ‘created_date’)
Aliases
Singular title case without underscores
Examples (match field names above): Region, Count, Road Length, Bark Thickness
Exceptions: retain underscores in aliases for ID fields that will typically not be entered by users (e.g., Plot_ID, Unique_ID)
Standard Field Names
The table below lists recommended field names with their data types and intended uses. While these fields are not all required and some may be substituted with custom or alternative names, these standards should be used unless there is a compelling reason to use an alternative name, and the alternative may need configuration and testing.
Field Name | Table | Data Type | Description |
---|---|---|---|
Plot_Size | Stands and/or Plots | Text (10 characters) | Stores the plot size (BAF or fixed area plot size) for use in limiting distance calculation and downstream use by compilers and 3rd party systems (TCruise, FVS, etc.). Requires domain that stores values using MobileMap-specific codes (e.g., BAF20 for BAF of 20, FIX10 for fixed area 1/10th acre plot). May have more than 1 field (e.g., Plot_Size AND Nested_Plot_Size). Alternative names: BAF, Nested_Plot_Size, Saw_Plot_Size, Pulp_Plot_Size, etc.. |
Status | Any spatial layer but especially for Stands and Plots | Text (10 characters) | Stores measurement status. Typically used to determine symbology. Often used for other logic like map filters, hosted feature layer views definition queries, export filters, compilation rules, etc. Common status values: Planned, Active, Cruised, Checked, Archived. |
Latitude | All point layers | Double | Stores Y coordinate of point |
Longitude | All point layers | Double | Stores X coordinate of point |
Elevation | All point layers | Double | Stores elevation in preferred units |
GPS_Point_Count | Point layers where collection may occur via averaged GPS | Integer (short) | Stores the number of individual GPS locations that were averaged to get the final coordinates |
Photos | Any table where photos will be captured | Text, large number of characters (e.g., 1000 to support capture of multiple photos) | Stores the filenames of all photos captured via MobileMap for that feature. |
Created | Any table | Date | MobileMap can store the date that a feature was created (this may be different than the created_date which is created when the feature is created in the service) This field name should be included in MobileMap Settings > Data Model > Custom Created Date Fields |
Edited | Any table | Date | MobileMap can store the date that a feature was last edited (this may be different than the last_edited_date which is updated when the feature is updated in the service) This field name should be included in MobileMap Settings > Data Model > Custom Edited Date Fields or Custom Edited Date (No Overwrite) Fields. Using the field name Cruise_Date and storing MobileMap Settings > Data Model > Custom Edited Date Fields or Custom Edited Date (No Overwrite) Fields |
Created_Source | Any table | Text (50 characters) | MobileMap and InventoryManager can store the application and version in this field for tracking the tool that was used to last edit a given feature |
Edited_Source | Any table | Text (50 characters) | MobileMap and InventoryManager can store the application and version in this field for tracking the tool that was used to last edit a given feature |
Unique_ID | Stand, Plot, Tree and Log tables when used for timber inventory (cruising) | Text (38 characters) | Stores text representation of a GUID |
Parent_ID | Plot, Tree and Log tables when used for timber inventory (cruising) | Text (38 characters) | Stores text representation of a GUID |
Archived | Any table | Text (3 characters) | Stores ‘Yes’ or ‘No’ based on whether the feature should be treated as an archived record (may be ignored, e.g., hidden) in some applications. |
Plot_X | Plots | Double | When desired this can be used to store the Longitude value from the GPS at the time that the plot is saved. This can help with data QA. This can be set as a hidden field in MobileMap settings so that cruisers do not see this. |
Plot_Y | Plots | Double | When desired this can be used to store the Latitude value from the GPS at the time that the plot is saved. This can help with data QA. This can be set as a hidden field in MobileMap settings so that cruisers do not see this. |
Distance_To_Plot | Plots | Integer (long) | When this field is included in the Plots data model, MobileMap will calculate the distance between the Plot point coordinates and the Plot_X/Plot_Y coordinates (see two fields above) in feet. Can be used to assess if plot data was entered when the user was farther than expected from the true location of the plot. This can be set as a hidden field in MobileMap settings so that cruisers do not see this. |
Time_On_Plot | Plots | Integer (long) | When this field is included in the Plots data model, MobileMap will calculate a running tally of accumulated seconds that the tree list has been open in MobileMap and store it (in total seconds) in this field. Can be used to determine average time per plot and assess outliers (especially plots measured faster than expected). This can be set as a hidden field in MobileMap settings so that cruisers do not see this. |
Notes | Any | Text (500+ characters) | (Optional) Also called ‘Comments’, ‘Note’. |
Notes_Check | Stands/Plots | Text (500+ characters) | (Optional) Similar to Notes but can be included in list of check cruise fields to hide when not in check cruise mode. Allows separate notes to be recorded by cruiser and check cruiser on the same plot. Not needed on Trees/Logs as these will include a new record for each check Tree/Log; standard Notes field can be used, if relevant, when collecting check cruise data on Trees/Logs. |
Check_Score | Plots | Short Integer | (Optional) receives calculated numeric check cruise score for checked plots when check cruise scoring is enabled within InventoryManager and check cruise rules have been defined. Note that standard calculation is: 100 minus plot-level deductions minus the sum of all tree-level deductions within that plot, where tree level deductions are typically assigned integer values. If tree-level deductions are assigned floating point values (e.g., 1.5), use a floating point data type for Check_Score too. |
Check_Details | Plots | Text (1000 characters) | (Optional) receives text description of errors that lead to the calculated numeric check cruise score (above) |
Check_Score_Date | Plots | Date | (Optional) receives the date at which the check score was LAST calculated/updated. |
Sample_Type | Stands | Text (4 characters) | (Optional) Used for double sampling. This field should use a Coded Value Domain that lists all double sampling methods that are supported, and an option for 'None'. The list of accepted values are:
|
Sample_Type | Plots | Text (4 characters) | (Optional) Used for double sampling. Same as above except that if Point Count or Measure approach is used, the Plots version of this field should use a Coded Value Domain that lists the following options:
|
Big_BAF | Stands, Plots | Text (10 characters) | (Optional) Used for double sampling. If the Big BAF method is supported, this field should use a Coded Value Domain that lists all of the BAF values that are appropriate for Big BAF. Allowed values should follow the same convention as the Plot_Size field |
PCM_Ratio | Stands, Plots | Text (10 characters) | (Optional) Used for double sampling. If Point Count Measure method is supported, this field should use a Coded Value Domain that lists all of the allowed ratios in the format of '1:2', '1:3', '1:4', etc. |
Sample_Tree_Ratios | Stands, Plots | Text (200+ characters) | (Optional) Used for double sampling. If Sample Tree Ratios are supported, this field will store a comma separated list of ratios (e.g., 'DF:S:5,DF:P:10,GF:XX:2,XX:XX:3'). Both MobileMap and InventoryManager contain tools for authoring sample tree ratios by selecting the species, product and ratio for each sample group. |
Tally_Measure | Trees | Text (1 character) | (Optional) Used for double sampling. This field should use a Coded Value Domain with the valu |