4

I have a feature class in an Oracle 12c geodatabase.

The feature class has a type column. The column has a coded domain.

I would like to limit user's ability to edit the features based on the type of feature. I would ideally do this based on their privilege/role in the database.

Example:

  • Where type = SIDEWALK, only users in the ROLE_EDITOR_GROUP_A can edit
  • Where type = TRAIL, only users in the ROLE_EDITOR_GROUP_B can edit
  • Where type = CYCLING, only users in the ROLE_EDITOR_GROUP_C can edit

How can I achieve this level of control?


Note:

Due to the dependency that other enterprise systems have on the data, it is our preference to not split out the different types of features into separate feature classes. We feel that single feature class would have these benefits:

  • Simpler and more robust than unioning together separate feature classes to get all of the records into a single view
  • Easier to enforce unique IDs
  • Easier for editors to avoid duplicate or overlapping geometry
  • Simpler in general to integrate with other critical enterprise systems
4
  • 3
    The ArcGIS editing model doesn't support this level of granularity. Worse, from your standpoint, the type field doesn't even contain the text on which you want to key. Using a UNION ALL view for display from three feature classes would permit three different editing roles, but wouldn't address all your "Note" items,
    – Vince
    Jun 18, 2019 at 17:53
  • @Vince Thanks. Do you have any idea how this sort of thing is done in other software suites (can be non-GIS)? Is it normally done at the application level or the database level?
    – User1974
    Jun 19, 2019 at 16:29
  • 1
    I don't use other software suites. Each of the projects I supported which ignored my recommendation to model different data in different tables failed at design review or prototype (one spectacularly so), so I never had to make it work in production.
    – Vince
    Jun 19, 2019 at 19:52
  • 1
    While the ESRI GDB model doesn't support this level of granularity you can achieve it through arcgis client customization. Using an editor extension or class extension would allow you to inject code into the ESRI client OnCreate, OnChange and OnDelete edit events. There are trad offs of course but it's an option.
    – Dowlers
    Aug 14, 2019 at 5:13

1 Answer 1

1

For role-specific editing, I'd recommend applying Privileges to the data in an Enterprise geodatabase. The 'insert,' 'delete,' and 'update' privileges would be applied to specific Active Directly (AD) groups created in Windows (https://docs.microsoft.com/en-us/previous-versions/commerce-server/aa545347(v=cs.70)?redirectedfrom=MSDN). For feature-specific editing, there are many data constraint options available that you can implement, but using constraint Attribute Rules would accomplish this, if you came up with an appropriate Arcade script (https://pro.arcgis.com/en/pro-app/help/data/geodatabases/overview/constraint-attribute-rules.htm). If you're not using ArcGIS Pro, I would try implementing Topology to lock in certain features relative to other non-editable layers. In addition, Arcmap has the Workflow Manager extension that can help guide users throuh editing workflows (https://desktop.arcgis.com/en/arcmap/latest/extensions/workflow-manager/configuring-users-and-groups.htm)

Other than that, I think this would be a good scenario to try versioned editing, if you don't mind the maintenance that this would require (https://desktop.arcgis.com/en/arcmap/latest/manage-data/geodatabases/the-version-editing-process.htm)

Your Answer

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

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