How to automatically merge polygons sharing a common boundary, keeping all attributes from class "A" features?
Interactively I would do this in an edit session by:
- selecting all objects of Name "One",
- Editor toolbar >> Merge,
- choose Class "A" to be the parent/master feature.
Repeat for features of Name "Two", "Three", …
Dissolve solution from How to combine adjacent polygons sharing similar trait into single polygon? doesn't work because we need to keep other attributes which differ. In other words:
- Dissolve/merge touching polygons where geometry [Name] is identical
- Keep attributes from polygon with [Class] A (if multiple Class A's, ok to just keep first one)
- Discard attributes from other features
Best Answer
I would create two copies of the layer for this feature class. In one layer I would select everything. In the other layer I would select just the polygons with a Class of "A". I would use Spatial Join using the layer with all features selected as the target and the layer with just Class A features as the Join layer. I would use the keep all target features option and the One to One option.
The output will have duplicate fields, Select all records where the Name and Name_1 fields contain the same values. This will be the set of all the features that touched a Class A feature and had a matching Name value. Calculate the Class field of the Target to be "A". Calculate over the Code_1 and waterDefinition_1 fields into the Code and waterDefinition fields to set these values to match the value of the touching Class A feature.
Now you can Dissolve all of the features and use all of the target fields as Dissolve fields (Not the fields ending in _1) to preserve the unique attribute cases. Uncheck the Create Multi-part feature option. If a feature was not touched by a Class A feature it will have its original attributes. Merge of these features would only occur if they were touching features that had the same attribute values that are not Class A attributes. However, all features that touched a Class A feature will now be merged together and have the Class A attributes.