zoukankan      html  css  js  c++  java
  • AE intersect、clip的实现

            /// <summary>
            /// rectangle/envelop 裁剪线
            /// </summary>
            /// <param name="pPolyLine"></param>
            /// <param name="pEnvelop"></param>
            /// <returns></returns>
            public static IPolyline GetClippedPolyline(IPolyline pPolyLine,IEnvelope pEnvelop)
            {
                ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
                IGeographicCoordinateSystem gcsSys = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCS3Type.esriSRGeoCS_Xian1980);
                pPolyLine.SpatialReference = gcsSys;
                pEnvelop.SpatialReference = gcsSys;
                ITopologicalOperator2 pTopOper = pPolyLine as ITopologicalOperator2;
                IGeometry pGeoafter=new PolylineClass();
                pTopOper.QueryClipped(pEnvelop, pGeoafter);
                return pGeoafter as IPolyline;
            }

     备注:intersect和Clip功能一般使用 ITopologicalOperator实现.

             Clip,Intersect等分析,要求各要素有空间参考SpatialReference,否则会出现System.Runtime.InteropServices.COMException错误

            ITopologicalOperator接口能够直接被Point,Polyline,Polygon等要素实现。但不能被TIN实现。

           即  ITopologicalOperator pTopOper=pTin as ITopologicalOperator 获得的pTopOper是Null

         /// <summary>
            /// 获取多边形和矿层表面的  相交多边形
            /// </summary>
            /// <param name="pPolygon">传入的多边形</param>
            /// <param name="pTinsurface">矿层表面</param>
            /// <returns></returns>
            public static IPolygon GetIntersectedRegion(IPolygon pPolygon,ITinSurface pTinsurface)
            {
                /*进行Clip和Intersect分析之前,featrue必须设置空间参考,否则出现
                 *System.Runtime.InteropServices.COMException
                 */
                ISpatialReferenceFactory pSpaRefFactory = new SpatialReferenceEnvironmentClass();
                IProjectedCoordinateSystem pcsSys = pSpaRefFactory.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_39);
                IPolygon resultPolygon = new PolygonClass();
              
                ITopologicalOperator pTopoOper = pPolygon as ITopologicalOperator;
                IPolygon pTinPolygon = GetProjectedPolygonFromTin(pTinsurface);
                pPolygon.SpatialReference = pcsSys;
                pTinPolygon.SpatialReference = pcsSys;
    
                IGeometry otherGeometry = pTinPolygon as IGeometry;
                resultPolygon =pTopoOper.Intersect(otherGeometry, esriGeometryDimension.esriGeometry1Dimension) as IPolygon;
                return resultPolygon;
            }
  • 相关阅读:
    ionic localstorage
    angular 中文鏈接
    把jqmobi 變成jQuery 的插件 從此使用jQuery
    jqmobi 的一些設置
    ionic ngcordova map 地圖
    ionic pull to refresh 下拉更新頁面
    json 對象的序列化
    鍵盤彈出,頁面佈局被推上去了.....
    Cordova V3.0.0中config.xml配置文件的iOS Configuration
    android ios 只能輸入數字 不能輸入小數點的 函數 cordova
  • 原文地址:https://www.cnblogs.com/imihiroblog/p/2486636.html
Copyright © 2011-2022 走看看