private void button2_Click(object sender, EventArgs e) { IGeoDataset inGeoDataSet; IGeoDataset outGeoDataSet; ISurfaceOp SurfaceOp = new RasterSurfaceOpClass(); ILayer layer = GetLayerByName(comboBox1.SelectedItem.ToString()); IRasterLayer rasterLayer = layer as IRasterLayer; IRaster raster = rasterLayer.Raster; inGeoDataSet = raster as IGeoDataset; outGeoDataSet = SurfaceOp.Aspect(inGeoDataSet); try { IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass(); IWorkspace pWorkspace = pWKSF.OpenFromFile(System.IO.Path.GetDirectoryName(textBox1.Text), 0); ISaveAs pSaveAs = outGeoDataSet as ISaveAs; pSaveAs.SaveAs(System.IO.Path.GetFileName(textBox1.Text), pWorkspace, "TIFF"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } IRasterLayer pRlayer = new RasterLayer(); pRlayer.CreateFromRaster((IRaster)outGeoDataSet); pRlayer.Name = System.IO.Path.GetFileName(textBox1.Text); mainForm.axMapControl1.AddLayer(pRlayer, 0); }
/// <summary> /// 计算DEM坡向 /// </summary> /// <param name="rasterLayer">输入DEM图层</param> /// <param name="outputFullPath">输出坡度图路径,类型为IMAGE,文件名为img</param> public void CreateRasterAspect(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(); IGeoDataset geoDataset = raster as IGeoDataset; IGeoDataset outGeodataset = rasterOpCls.Aspect(geoDataset); 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); }
/// <summary> /// 计算DEM坡向 /// </summary> /// <param name="rasterLayer">输入DEM图层</param> /// <param name="outputFullPath">输出坡度图路径,类型为IMAGE,文件名为img</param> public void CreateRasterAspect(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(); IGeoDataset geoDataset = raster as IGeoDataset; IGeoDataset outGeodataset = rasterOpCls.Aspect(geoDataset); 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); }
private void btnGO_Click(object sender, EventArgs e) { string strInFileName; string strOutFileName; int startX, endX; string strOutDir; try { if (bDataPath == true) { strInFileName = txtOutPath.Text; strOutDir = strInFileName.Substring(0, strInFileName.LastIndexOf("\\")); startX = strInFileName.LastIndexOf("\\"); endX = strInFileName.Length; strOutFileName = strInFileName.Substring(startX + 1, endX - startX - 1); } else { strOutDir = txtOutPath.Text; strOutFileName = "aspect"; } if (File.Exists(strOutDir + "\\" + strOutFileName + ".aux") == true) { MessageBox.Show("文件" + strOutFileName + "已经存在,请重新命名!"); return; } if (m_pRasterLyr != null) { double dCellSize = Convert.ToDouble(txtCellSize.Text); ISurfaceOp pRasterSurfaceOp = new RasterSurfaceOpClass(); IRaster pInRaster = m_pRasterLyr.Raster; IRaster pOutRaster = null; IRasterLayer pRasterLayer = new RasterLayerClass(); IGeoDataset pGeoDs = pRasterSurfaceOp.Aspect(pInRaster as IGeoDataset); pOutRaster = pGeoDs as IRaster; IRasterLayer pOutRasterLayer = new RasterLayerClass(); pOutRasterLayer.CreateFromRaster(pOutRaster); pOutRasterLayer.Name = strOutFileName; IWorkspaceFactory pWSF = new RasterWorkspaceFactoryClass(); IWorkspace pRWS = pWSF.OpenFromFile(strOutDir, 0); IRasterBandCollection pRasBandCol = (IRasterBandCollection)pGeoDs; pRasBandCol.SaveAs(strOutFileName, pRWS, "GRID");//"IMAGINE Image" pOutRasterLayer = UtilityFunction.SetStretchRenderer(pOutRasterLayer.Raster); pOutRasterLayer.Name = strOutFileName; pMap.AddLayer(pOutRasterLayer); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void btnGO_Click(object sender, EventArgs e) { string strInFileName; string strOutFileName; int startX, endX; string strOutDir; try { if (bDataPath == true) { strInFileName = txtOutPath.Text; strOutDir = strInFileName.Substring(0, strInFileName.LastIndexOf("\\")); startX = strInFileName.LastIndexOf("\\"); endX = strInFileName.Length; strOutFileName = strInFileName.Substring(startX + 1, endX - startX - 1); } else { strOutDir = txtOutPath.Text; strOutFileName = "aspect"; } if (File.Exists(strOutDir + "\\" + strOutFileName + ".aux") == true) { MessageBox.Show("�ļ�" + strOutFileName + "�Ѿ����ڣ�������������"); return; } if (m_pRasterLyr != null) { double dCellSize = Convert.ToDouble(txtCellSize.Text); ISurfaceOp pRasterSurfaceOp = new RasterSurfaceOpClass(); IRaster pInRaster = m_pRasterLyr.Raster; IRaster pOutRaster = null; IRasterLayer pRasterLayer = new RasterLayerClass(); IGeoDataset pGeoDs = pRasterSurfaceOp.Aspect(pInRaster as IGeoDataset); pOutRaster = pGeoDs as IRaster; IRasterLayer pOutRasterLayer = new RasterLayerClass(); pOutRasterLayer.CreateFromRaster(pOutRaster); pOutRasterLayer.Name = strOutFileName; IWorkspaceFactory pWSF = new RasterWorkspaceFactoryClass(); IWorkspace pRWS = pWSF.OpenFromFile(strOutDir, 0); IRasterBandCollection pRasBandCol = (IRasterBandCollection)pGeoDs; pRasBandCol.SaveAs(strOutFileName, pRWS, "GRID");//"IMAGINE Image" pOutRasterLayer = UtilityFunction.SetStretchRenderer(pOutRasterLayer.Raster); pOutRasterLayer.Name = strOutFileName; pMap.AddLayer(pOutRasterLayer); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public IRaster CreateRasterAspect(IRaster raster) { try { RasterSurfaceOpClass class2 = new RasterSurfaceOpClass(); IGeoDataset geoDataset = raster as IGeoDataset; IGeoDataset pGeoDataset = class2.Aspect(geoDataset); 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); } }