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;
            }
  • 相关阅读:
    使用ObjectAnimator设置动画
    偷懒了一天,去给人装系统去了~ 今天继续更 自己敲代码实现下拉刷新上滑加载更多
    listview的头布局把我的ACTION_DOWN事件给吃了.....
    测量还没有绘制好的布局的高度,手动测量
    Ace 动画应用实例 ------启动欢迎界面
    Android 动画之TranslateAnimation应用详解
    Android 动画之AlphaAnimation应用详解
    Android 动画之ScaleAnimation应用详解
    Android RotateAnimation详解
    Android动画效果translate、scale、alpha、rotate详解
  • 原文地址:https://www.cnblogs.com/imihiroblog/p/2486636.html
Copyright © 2011-2022 走看看