public IReadOnlyList<TopologyRule> GetRules()
Public Function GetRules() As IReadOnlyList(Of TopologyRule)
Return Value
The TopologyRules defined for this Topology.
public IReadOnlyList<TopologyRule> GetRules()
Public Function GetRules() As IReadOnlyList(Of TopologyRule)
Exception | Description |
---|---|
ArcGIS.Core.Data.Exceptions.GeodatabaseException | A geodatabase-related exception has occurred. |
using (TopologyDefinition topologyDefinition = topology.GetDefinition()) { IReadOnlyList<TopologyRule> rules = topologyDefinition.GetRules(); Console.WriteLine($"There are {rules.Count} topology rules defined for the topology:"); Console.WriteLine("ID \t Origin Class \t Origin Subtype \t Destination Class \t Destination Subtype \t Rule Type"); foreach (TopologyRule rule in rules) { Console.Write($"{rule.ID}"); Console.Write(!String.IsNullOrEmpty(rule.OriginClass) ? $"\t{rule.OriginClass}" : "\t\"\""); Console.Write(rule.OriginSubtype != null ? $"\t{rule.OriginSubtype.GetName()}" : "\t\"\""); Console.Write(!String.IsNullOrEmpty(rule.DestinationClass) ? $"\t{rule.DestinationClass}" : "\t\"\""); Console.Write(rule.DestinationSubtype != null ? $"\t{rule.DestinationSubtype.GetName()}" : "\t\"\""); Console.Write($"\t{rule.RuleType}"); Console.WriteLine(); } }
// Get all the errors due to features violating the "PointProperlyInsideArea" topology rule. using (TopologyDefinition topologyDefinition = topology.GetDefinition()) { TopologyRule pointProperlyInsideAreaRule = topologyDefinition.GetRules().First(rule => rule.RuleType == TopologyRuleType.PointProperlyInsideArea); ErrorDescription errorDescription = new ErrorDescription(topology.GetExtent()) { TopologyRule = pointProperlyInsideAreaRule }; IReadOnlyList<TopologyError> errorsDueToViolatingPointProperlyInsideAreaRule = topology.GetErrors(errorDescription); Console.WriteLine($"There are {errorsDueToViolatingPointProperlyInsideAreaRule.Count} feature violating the 'PointProperlyInsideArea' topology rule."); // Mark all errors from features violating the 'PointProperlyInsideArea' topology rule as exceptions. foreach (TopologyError error in errorsDueToViolatingPointProperlyInsideAreaRule) { topology.MarkAsException(error); } // Now verify all the errors from features violating the 'PointProperlyInsideArea' topology rule have indeed been // marked as exceptions. // // By default, ErrorDescription is initialized to ErrorType.ErrorAndException. Here we want ErrorType.ErrorOnly. errorDescription = new ErrorDescription(topology.GetExtent()) { ErrorType = ErrorType.ErrorOnly, TopologyRule = pointProperlyInsideAreaRule }; IReadOnlyList<TopologyError> errorsAfterMarkedAsExceptions = topology.GetErrors(errorDescription); Console.WriteLine($"There are {errorsAfterMarkedAsExceptions.Count} feature violating the 'PointProperlyInsideArea' topology rule after all the errors have been marked as exceptions."); // Finally, reset all the exceptions as errors by unmarking them as exceptions. foreach (TopologyError error in errorsDueToViolatingPointProperlyInsideAreaRule) { topology.UnmarkAsException(error); } IReadOnlyList<TopologyError> errorsAfterUnmarkedAsExceptions = topology.GetErrors(errorDescription); Console.WriteLine($"There are {errorsAfterUnmarkedAsExceptions.Count} feature violating the 'PointProperlyInsideArea' topology rule after all the exceptions have been reset as errors."); }
Target Platforms: Windows 11, Windows 10