zoukankan      html  css  js  c++  java
  • ISurfaceOp 接口生成等高线(二)

    (3)ISurfaceOp.ContourList 根据一系列高程点生成等高线图层:  

           private void button1_Click(object sender, EventArgs e)
            {

                //得到Raster
                ILayer tLayer = this.axMapControl1.get_Layer(0);
                IRasterLayer tRasterLayer = (IRasterLayer)tLayer;
                //定义高程点数组
                double[] tDouble = new double[] { 100, 120, 150, 200 };

                IFeatureClass tFeatureClass = null;
                IGeoDataset tGeodataset = null;
                //使用接口
                ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
                object obj = tDouble;

                tGeodataset = tSurfaceop.ContourList((IGeoDataset)tRasterLayer.Raster, 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();
                    }
                }
            }

    (4)ISurfaceOp.ContoursAsPolylines根据一系列点生成多根等高线

            //定义点坐标集合
            IPointCollection _PointCollect = new MultipointClass();
            private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
            {
                //通过鼠标获取点击的点坐标集合
                IPoint tPoint = new PointClass();
                tPoint.X = e.mapX;
                tPoint.Y = e.mapY;
                object obj = Type.Missing;
                _PointCollect.AddPoint(tPoint, ref obj, ref obj);
            }

            private void button1_Click(object sender, EventArgs e)
            {
                //得到Raster
                ILayer tLayer = this.axMapControl1.get_Layer(0);
                IRasterLayer tRasterLayer = (IRasterLayer)tLayer;
               
                ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
                //定义返回的线集合
                IGeometryCollection tGeometryCollection;
                //定义返回的高程点集合
                IPointCollection tEveColl;
                tSurfaceop.ContoursAsPolylines((IGeoDataset)tRasterLayer.Raster, _PointCollect, out tGeometryCollection, out tEveColl);//tSurfaceop.Contour((IGeoDataset)tRasterLayer.Raster, 10, ref obj);
                if (tGeometryCollection!=null && tGeometryCollection.GeometryCount > 0)
                {
                    //把生成的等高线画到Map上
                    for (int i = 0; i < tGeometryCollection.GeometryCount; i++)
                    {
                        IGeometry tGeometry = tGeometryCollection.get_Geometry(i);
                        ILineElement tLineElement = new LineElementClass();
                        IElement tElement = (IElement)tLineElement;
                        tElement.Geometry = tGeometry;
                        this.axMapControl1.ActiveView.GraphicsContainer.AddElement(tElement, 0);
                    }
                }
                //刷新Map
                this.axMapControl1.Refresh();
            }

  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/cglNet/p/1970100.html
Copyright © 2011-2022 走看看