private void Progarm() { IWorkspace workspace = ArcClass.GetmdbWorkspace(mdbFilePath); if (workspace == null) { return; } IFeatureDataset featureDataset = ArcClass.GetFeatureDataset(workspace, "WJL"); ISchemaLock schemalock = featureDataset as ISchemaLock; try { schemalock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock); ITopologyContainer topologyContainer = featureDataset as ITopologyContainer; ITopology topology = topologyContainer.CreateTopology("ttt", topologyContainer.DefaultClusterTolerance, -1, ""); IFeatureClass featureClass = ArcClass.GetFeatureClass(workspace, "PARK"); AddRuleToTopology(topology, esriTopologyRuleType.esriTRTAreaNoOverlap, "NO Block OverLap", featureClass); IGeoDataset geoDataset = topology as IGeoDataset; IEnvelope envelop = geoDataset.Extent; ValidateTopology(topology, envelop); }catch (COMException) { } }
public void Beat() { IWorkspace workspace = ArcClass.GetmdbWorkspace(mdbFilePath); IFeatureDataset featureDataset = ArcClass.GetFeatureDataset(workspace, "WJL"); if (featureDataset != null) { ITopologyContainer topologyContainer = featureDataset as ITopologyContainer; ITopology topology = topologyContainer.CreateTopology("result", topologyContainer.DefaultClusterTolerance, -1, ""); IFeatureClassContainer featureClassContainer = featureDataset as IFeatureClassContainer; IFeatureClass featureClass = featureClassContainer.get_ClassByName("Roads"); topology.AddClass(featureClass, 5, 1, 1, false); ITopologyRuleContainer topologyRuleContainer = topology as ITopologyRuleContainer; ITopologyRule topologyRule = new TopologyRuleClass(); topologyRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoOverlap; topologyRule.OriginClassID = featureClass.ObjectClassID; topologyRule.Name = "Roads No Overlap"; if (topologyRuleContainer.get_CanAddRule(topologyRule)) { topologyRuleContainer.AddRule(topologyRule); } topologyRule = new TopologyRuleClass(); topologyRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoDangles; topologyRule.OriginClassID = featureClass.ObjectClassID; topologyRule.AllOriginSubtypes = true; topologyRule.Name = "Roads No Dangles"; // Add the rule to the Topology if (topologyRuleContainer.get_CanAddRule(topologyRule)) { topologyRuleContainer.AddRule(topologyRule); } } }