コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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));
        }