/// <summary> /// 将中文拓扑规则翻译为esri拓扑规则 /// </summary> /// <param name="_topoRules">中文拓扑规则描述</param> /// <returns></returns> public static esriTopologyRuleType TransferToESRITopoRule(TopoRules _topoRules) { esriTopologyRuleType pESRITopoType = esriTopologyRuleType.esriTRTAny; switch (_topoRules) { case TopoRules.一个面图层里各要素之间不能有个缝隙: pESRITopoType = esriTopologyRuleType.esriTRTAreaNoGaps; break; case TopoRules.一个面图层里各要素间不能有叠加: pESRITopoType = esriTopologyRuleType.esriTRTAreaNoOverlap; break; case TopoRules.第二个图层面要素必须被第一个图层任一面要素覆盖: pESRITopoType = esriTopologyRuleType.esriTRTAreaCoveredByAreaClass; break; case TopoRules.面要素必须只包含一个点要素: pESRITopoType = esriTopologyRuleType.esriTRTAreaContainOnePoint; break; case TopoRules.两图层面要素必须互相覆盖: pESRITopoType = esriTopologyRuleType.esriTRTAreaAreaCoverEachOther; break; case TopoRules.第一个图层面要素必须被另一个图层任一面要素包含: pESRITopoType = esriTopologyRuleType.esriTRTAreaCoveredByArea; break; case TopoRules.图层间面要素不能相互覆盖: pESRITopoType = esriTopologyRuleType.esriTRTAreaNoOverlapArea; break; case TopoRules.线要素必须跟面图层边界的一部分或全部重叠: pESRITopoType = esriTopologyRuleType.esriTRTLineCoveredByAreaBoundary; break; case TopoRules.点要素必须落在面要素边界上: pESRITopoType = esriTopologyRuleType.esriTRTPointCoveredByAreaBoundary; break; case TopoRules.点要素必须落在面要素内: pESRITopoType = esriTopologyRuleType.esriTRTPointProperlyInsideArea; break; case TopoRules.线要素间不能有相互重叠部分: pESRITopoType = esriTopologyRuleType.esriTRTLineNoOverlap; break; case TopoRules.线要素之间不能相交: pESRITopoType = esriTopologyRuleType.esriTRTLineNoIntersection; break; case TopoRules.线要素不允许有悬挂点: pESRITopoType = esriTopologyRuleType.esriTRTLineNoDangles; break; case TopoRules.线要素不允许有假节点: pESRITopoType = esriTopologyRuleType.esriTRTLineNoPseudos; break; case TopoRules.第一个图层线要素应被第二个线图层线要素覆盖: pESRITopoType = esriTopologyRuleType.esriTRTLineCoveredByLineClass; break; case TopoRules.第一个图层线要素不被第二个线图层线要素覆盖: pESRITopoType = esriTopologyRuleType.esriTRTLineNoOverlapLine; break; case TopoRules.点要素应被线要素覆盖: pESRITopoType = esriTopologyRuleType.esriTRTPointCoveredByLine; break; case TopoRules.点要素应在线要素的端点上: pESRITopoType = esriTopologyRuleType.esriTRTPointCoveredByLineEndpoint; break; case TopoRules.面要素边界必须被线要素覆盖: pESRITopoType = esriTopologyRuleType.esriTRTAreaBoundaryCoveredByLine; break; case TopoRules.面要素的边界必须被另一面要素边界覆盖: pESRITopoType = esriTopologyRuleType.esriTRTAreaBoundaryCoveredByAreaBoundary; break; case TopoRules.线要素不能自重叠: pESRITopoType = esriTopologyRuleType.esriTRTLineNoSelfOverlap; break; case TopoRules.线要素不能自相交: pESRITopoType = esriTopologyRuleType.esriTRTLineNoSelfIntersect; break; case TopoRules.线要素间不能重叠和相交: pESRITopoType = esriTopologyRuleType.esriTRTLineNoIntersectOrInteriorTouch; break; case TopoRules.线要素端点必须被点要素覆盖: pESRITopoType = esriTopologyRuleType.esriTRTLineEndpointCoveredByPoint; break; case TopoRules.面要素内必须包含至少一个点要素: pESRITopoType = esriTopologyRuleType.esriTRTAreaContainPoint; break; case TopoRules.线不能是多段: pESRITopoType = esriTopologyRuleType.esriTRTLineNoMultipart; break; case TopoRules.点要素之间不相交: pESRITopoType = esriTopologyRuleType.esriTRTPointDisjoint; break; case TopoRules.线要素必须不相交: pESRITopoType = esriTopologyRuleType.esriTRTLineNoIntersectLine; break; case TopoRules.线必须不相交或内部接触: pESRITopoType = esriTopologyRuleType.esriTRTLineNoIntersectOrInteriorTouchLine; break; default: break; } return(pESRITopoType); }
/// <summary> /// 将字符串的拓扑规则描述转换成esri拓扑规则 /// </summary> /// <param name="RuleName">拓扑的名字</param> /// <returns>返回esri拓扑规则</returns> private esriTopologyRuleType getTopoRuleByDescription(string RuleName) { TopoRules pTopoRules = (TopoRules)Enum.Parse(typeof(TopoRules), RuleName); return(TransferToESRITopoRule(pTopoRules)); }