码迷,mamicode.com
首页 > 其他好文 > 详细

ISurfaceOp 接口生成等高线

时间:2014-09-19 00:58:04      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:blog   os   使用   ar   div   sp   cti   log   on   

(1)ISurfaceOp.Contour 根据DEM生成等高线图层:

       private void button1_Click(object sender, EventArgs e)
        {
            //得到Raster
            ILayer tLayer=this.axMapControl1.get_Layer(0);
            IRasterLayer tRasterLayer=(IRasterLayer)tLayer;

            IFeatureClass tFeatureClass=null;
            IGeoDataset tGeodataset=null;
            //使用接口 参数(Raster,等高线间距,基值)
            ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
            object obj = 0;
            tGeodataset=tSurfaceop.Contour((IGeoDataset)tRasterLayer.Raster, 10, ref obj);
            //判断是否生成等高线层,如果生成,加载到Map中
            if (tGeodataset != null)
            {
                tFeatureClass = (IFeatureClass)tGeodataset;
                if (tFeatureClass != null)
                {
                    IFeatureLayer tFeatureLayer = new FeatureLayerClass();
                    tFeatureLayer.FeatureClass = tFeatureClass;
                    this.axMapControl1.AddLayer((ILayer)tFeatureLayer);
                    this.axMapControl1.Refresh();
                }
            }
        }

(2) ISurfaceOp.ContourAsPolyline 根据已知点,返回穿过改点的等高线和改点的高程

       private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
        {
            //通过鼠标获取点击的点坐标
            IPoint tPoint = new PointClass();
            tPoint.X = e.mapX;
            tPoint.Y = e.mapY;
            //得到Raster
            ILayer tLayer = this.axMapControl1.get_Layer(0);
            IRasterLayer tRasterLayer = (IRasterLayer)tLayer;
            

            ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();

            //定义返回的线
            IPolyline tPolygline = new PolylineClass();
            //定义返回的高程点
            double tEve = 0;
            tSurfaceop.ContourAsPolyline((IGeoDataset)tRasterLayer.Raster, tPoint, out tPolygline, out tEve);//tSurfaceop.Contour((IGeoDataset)tRasterLayer.Raster, 10, ref obj);

            //把生成的等高线画到Map上
            ILineElement tLineElement = new LineElementClass();
            IElement tElement = (IElement)tLineElement;
            tElement.Geometry = tPolygline;
            this.axMapControl1.ActiveView.GraphicsContainer.AddElement(tElement, 0);
            //刷新Map
            this.axMapControl1.Refresh();
        }

ISurfaceOp 接口生成等高线

标签:blog   os   使用   ar   div   sp   cti   log   on   

原文地址:http://www.cnblogs.com/yuxuetaoxp/p/3980436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!