I am using ArcGIS 10.3 for Desktop to build a large inventory of urban trees to be used for tree risk assessment purposes. This inventory was originally in a relational Microsoft Access database, and I have spent the last few months structuring a new database using ArcGIS. I have created relationship classes between the main Feature Class ("Tree_Info") and other secondary tables, such as the "Inspection" table with risk assessment information.

In the "Inspection" table, there is a field called "Significant" which is a boolean 1-Yes 0-No. Not surprisingly, the "Significant" field represents trees of significant importance.

I have 4 other fields in the "Inspection" table which I ONLY want populated when "Significant" is populated by 1-Yes. These fields include "Rem_Mod" (Can the tree be removed or modified? Yes or No), "Sig_Type" (Signficance Type: historic, cultural, memorial, etc.), "DBH" (Diameter at Breast Height), Crown_Sprd (Crown Spread). If the "Significant" field is populated by 0-No, then these 4 fields can be left null.

I've looked into Subtypes, and I'm not sure this is what it is intended to do.

I'm not a programmer, and I am relying on the native ArcGIS tools, unless someone has a different simple solution. I'm at a loss of what to do. Does anyone have any suggestions on how to make these 4 fields conditional upon the tree's significance?

  • 4
    Are you using ArcGis? If so the YES subtypes is what you want, each subtype can have different domains attached so a field for not-significant has a domain with only one coded value (0) while significant trees have a domain with 0/1. You need to create two coded value domains before creating the subtypes. May 27, 2015 at 21:58
  • 1
    Welcome to GIS SE! As a new user be sure to take the Tour. Would you be able to edit your question to let us know which GIS software and version you are using, please?
    – PolyGeo
    May 27, 2015 at 21:59
  • 2
    What you're describing could be done with subtypes, and to some degree it could also be done with a feature template (where you'd have a template for not significant, but all others would have to be entered manually). The check you're talking about (this field is x, these fields must be y) is typically something that is checked/validated rather than enforced at creation, unless you're designing some type of form in a collection software.
    – Chris W
    May 27, 2015 at 22:17
  • 1
    It may not be worth the effort, if you're going to ignore the values for non-significant trees what does it matter what goes into them. From my ArcPad days I remember creating collection forms where this behavior was written into the form (as @ChrisW said)... how are you going to collect this data? Notebook, Tablet PC (Android/Mac)... and what software? I think Collector for ArcGis (doc.arcgis.com/en/collector) should be able to put the decision logic onto a form removing the need for rigid domains/subtypes but (as yet) I haven't had any exposure to it so can't say for sure. May 27, 2015 at 22:42
  • Thanks for all of your suggestions. I'm not creating/using a collection form, and I am useless at customization. At first, I created a subtype for the "Significant" field. When it was equal to 0-No, I set the defaults for the 4 fields I want left blank/null/no data. But when Significant was equal to 1-Yes, I couldn't figure a way to REQUIRE the 4 fields to be populated. SO, instead, I am moving the "Significant" field to my primary table, "TREE_INFO", and creating a relationship class to a new table called "SIGNIFICANT".
    – GISjaclyn
    May 29, 2015 at 18:22

3 Answers 3


It may be worth your while taking a look at Survey123 for ArcGIS. This is an Esri app that allows you to use conditional logic while collecting data. At the moment it can only be used to collect points (no lines or polygons) so this may rule it out straight away. It is form centric, not map centric and can only be used to collect data - i.e. you cannot edit points as in Collector yet.

There is a Windows app that you could use while collating the data - this wouldn't have to be done on a phone. The data is stored in a feature service so you can download the data in whatever format you want, e.g. geodatabase. Also note that the conditional logic is stored at an app level, not at a database level.


I assume you are dealing with field survey. Unfortunately collector does not support 'high' logic, E-forms do. The simplest solution are 2 identical feature classes, just show/high fields accordingly. Merge them after survey completion.

If you truly realy want single dataset, use related tables, collector supports them. Keep common fields in the table of parent feature class. From remaing fields create 2 tables in the same database - SIGNIFICANT and NOTSO. Create relationship of FC with these tables (one to one will do, unless you want to repeat inspections from time to time). Show/hide fields in related tables. After survey completion merge 2 tables and join result to FC.


ArcGIS doesn't support this as a native operation. There are ways numerous ways to achieve it but each requires customization. We use 3 different ways to accomplish what you're asking. Plus, I have an extra few ideas, too.

1 - We create a custom ArcPad project. Once you create the input form, you have options to handle certain events for your controls, like LostFocus. You would need to pick a proper event, we use LostFocusand also attach a routine to the Save click in order to verify the data in the form is up to our standards. If not, the form will not close. This is done via some VBScript behind the scenes.

2 - Create a custom ArcMap(ish) type of program or ArcMap extension using ArcObjects. You can create a custom input form within ArcMap or a customized program used in place of ArcMap to do collection. Mind you, there needs to be a Desktop or Engine license running on the machine. This is done usually in VB.NET or C# for the back-end. It can be complex if since ArcObjects deals with everything via COM interfaces. I wouldn't say it is entirely for the newest developer to handle.

3 - I built a custom collection program based off of ThinkGeo's WPF .NET tools. I created my own input form and supplied validations similar to what you're using it for. We actually use it for tree inventory and other types of collections (our companies are probably competitors). I have always found with these collections that just making things required is the simplest of validations to be performed. WPF is nice as a basis to build a collection software due to the availability of many different events you can handle and verify the data.

Other Ideas - Depending on how much you trust field collectors to do their jobs right (we don't really at all) you could put together a script that will run and verify their data. It could select and prompt the user with features that don't match your standards. BUT. It would be up to them to run it and up to them to correct their data. This could be done in ArcPy or another language that could check the .DBF behind the scenes. If you're collecting through something like Excel (just populating a table with info as you walk about), there are wizards in there to establish conditions. A quick search on Google should give you a good idea of how to do that.

All of these options depend on the skill level of your development team and the amount of faith you put into your collectors. Beware though, as soon as one project manager hears you can validate one piece of data, their minds will quickly expand to numerous other forms of validations to add. That is how my required validation quickly moved into numerous other forms of data validation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.