Exemplo n.º 1
0
        public IRaster CreateRasterSlope(IRaster raster)
        {
            try
            {
                RasterSurfaceOpClass class2     = new RasterSurfaceOpClass();
                IGeoDataset          geoDataset = raster as IGeoDataset;

                double zFactor = Convert.ToDouble(textBoxX3.Text);
                if (zFactor <= 0)
                {
                    MessageBox.Show("请指定大于0的正数!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(null);
                }

                //float zFactor = 1;
                object o = zFactor;
                esriGeoAnalysisSlopeEnum geoType = esriGeoAnalysisSlopeEnum.esriGeoAnalysisSlopeDegrees;
                IGeoDataset pGeoDataset          = class2.Slope(geoDataset, geoType, ref o);
                IRaster     pRaster  = (IRaster)pGeoDataset;
                ISaveAs2    pSaveAs  = pRaster as ISaveAs2;
                IDataset    pDataset = pSaveAs.SaveAs(m_ResultPath + ".tif", null, "TIFF");
                //System.Runtime.InteropServices.Marshal.ReleaseComObject(pDataset);
                MessageBox.Show("坡度计算完毕!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(pRaster);
            }
            catch (SystemException e)
            {
                MessageBox.Show(e.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 计算DEM坡度
        /// </summary>
        /// <param name="rasterLayer">输入DEM图层</param>
        /// <param name="outputFullPath">输出坡度图路径,类型为IMAGE,文件名为img</param>
        public void CreateRasterSlope(ILayer rasterLayer, string outputFullPath)
        {
            if (File.Exists(outputFullPath))
            {
                MessageBox.Show(outputFullPath + "已经存在,请重命名");
                return;
            }
            IRasterLayer         rasterLyr   = rasterLayer as IRasterLayer;
            IRaster              raster      = rasterLyr.Raster;
            RasterSurfaceOpClass rasterOpCls = new RasterSurfaceOpClass();
            object      o                    = 1;
            IGeoDataset geoDataset           = raster as IGeoDataset;
            esriGeoAnalysisSlopeEnum geoType = esriGeoAnalysisSlopeEnum.esriGeoAnalysisSlopeDegrees;
            IGeoDataset outGeodataset        = rasterOpCls.Slope(geoDataset, geoType, ref o);
            IRaster     pRaster              = outGeodataset as IRaster;

            FileInfo fi      = new FileInfo(outputFullPath);
            string   fileDir = fi.Directory.FullName;
            string   name    = fi.Name;

            if (!Directory.Exists(fileDir))
            {
                Directory.CreateDirectory(fileDir);
            }
            IWorkspaceFactory pWSF    = new RasterWorkspaceFactoryClass();
            IWorkspace        pWS     = pWSF.OpenFromFile(fileDir, 0);
            ISaveAs           pSaveAs = pRaster as ISaveAs;

            pSaveAs.SaveAs(name, pWS, "IMAGINE Image");
            IRasterLayer rasterLyr2 = new RasterLayerClass();

            rasterLyr2.CreateFromRaster(pRaster);
            rasterLyr2.Name = name;
            m_mapControl.Map.AddLayer(rasterLyr2 as ILayer);
        }
Exemplo n.º 3
0
        //设置Slope输出测量单位
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            var index = comboBox2.SelectedIndex;

            switch (index)
            {
            case 0:    //degree(度)
                slopeEnum = esriGeoAnalysisSlopeEnum.esriGeoAnalysisSlopeDegrees;
                break;

            case 1:    //高程增量百分比
                slopeEnum = esriGeoAnalysisSlopeEnum.esriGeoAnalysisSlopePercentrise;
                break;
            }
        }