private void button1_Click(object sender, EventArgs e) { if (comboBox1.Text != "") { if (textBox1.Text != "") { ESRI.ArcGIS.DataManagementTools.CopyRaster copyRst = new CopyRaster(); copyRst.in_raster = getlayer(comboBox1.Text); copyRst.out_rasterdataset = textBox1.Text.ToString(); Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; IGeoProcessorResult gpresult = gp.Execute(copyRst, null) as IGeoProcessorResult; if (gpresult.Status == esriJobStatus.esriJobSucceeded) { DialogResult dr = MessageBox.Show("格式转化操作成功"); if (dr == DialogResult.OK) { //结果添加到工作空间 if (checkBox1.Checked == true) { string fileFullName = textBox1.Text; if (fileFullName == "") { return; } string filePathName = System.IO.Path.GetDirectoryName(fileFullName); string fileName = System.IO.Path.GetFileName(fileFullName); IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactory(); //创建工作空间工厂 IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(filePathName, 0); //打开工作空间 IRasterWorkspace pRasterWorkspace = pWorkspace as IRasterWorkspace; //创建栅格工作空间 IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(fileName); //创建Dataset //影像金字塔创建与判断 IRasterPyramid2 pRasPymid = pRasterDataset as IRasterPyramid2; if (pRasPymid != null) { if (!(pRasPymid.Present)) { pRasPymid.Create();//创建金字塔 } } IRaster pRaster = pRasterDataset.CreateDefaultRaster(); IRasterLayer pRasterLayer = new RasterLayer(); pRasterLayer.CreateFromRaster(pRaster); ILayer pLayer = pRasterLayer as ILayer; axmapcontrol.AddLayer(pLayer, 0); } } } else { MessageBox.Show("格式转化操作失败"); } } else { MessageBox.Show("保存路径不能为空"); } } else { MessageBox.Show("输入栅格不能为空"); } }
private void copyRaster(Geoprocessor gp, string SavaPath, string sourcePath) { try { ESRI.ArcGIS.DataManagementTools.CopyRaster copyRaster = new CopyRaster(); copyRaster.in_raster = sourcePath; copyRaster.out_rasterdataset = SavaPath;//可以是文件全路径 gp.OverwriteOutput = true; gp.Execute(copyRaster, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//淹没过程导入函数 public void ymgc(string yxtb, string outPath_Final, string outPath_Mid, string ymgc_tifPath) { string fail = "";//记录失败数据。 datetime = DateTime.Now; IRasterLayer rasterLayer = new RasterLayerClass(); ESRI.ArcGIS.DataManagementTools.CopyRaster copyRaster = new CopyRaster();//定义copy工具 int i = 1, j = 0; try { string aimPh = outPath_Final + "\\" + " ymgc"; string resultPath = outPath_Mid + "\\" + " ymgc"; di = new DirectoryInfo(ymgc_tifPath);// List<string> Solution = new List<string>(); Hashtable tb = new Hashtable(); FileInfo[] fileOfTIFF = null; try { string test = tb[yxtb].ToString(); fileOfTIFF = di.GetFiles(test + "*.tif"); } catch { fileOfTIFF = di.GetFiles("*.tif"); } for (int Count = 0; Count < fileOfTIFF.Length; Count++) { int leng_1 = fileOfTIFF[Count].Name.LastIndexOf('_'); string te = fileOfTIFF[Count].Name.Substring(0, leng_1); if (Count + 1 == fileOfTIFF.Length) { Solution.Add(te); break; } int leng_2 = fileOfTIFF[Count].Name.LastIndexOf('_'); string te1 = fileOfTIFF[Count + 1].Name.Substring(0, leng_2); if (te != te1) { Solution.Add(te); } } foreach (string fang in Solution) { int leng1 = fang.LastIndexOf('-'); string fa = fang.Substring(leng1 + 1); //} //for (int fa = 1; fa < Solution.Count; fa++) // { DateTime datetimeBegain = new DateTime(); datetimeBegain = DateTime.Now; //创建一个文件夹 //string FA= string create1 = resultPath + fa; importTool.createFolder(create1); Hashtable table = new Hashtable();//创建一个哈希表 string projecCode = ""; if (tb[yxtb] == null) { projecCode = fang + "*.tif"; } else projecCode = tb[yxtb].ToString() + "-" + fa + "*.tif"; FileInfo[] arrFi = di.GetFiles(projecCode); max = arrFi.Length; for (int s = 0; s < arrFi.Length; s++) { int length = arrFi[s].Name.LastIndexOf('_'); string jq = arrFi[s].Name.Substring(length + 1);//.Replace("_","") string jq2 = jq.Substring(0, jq.Length - 4);//去掉“.tif” double m = double.Parse(jq2); table.Add(m, arrFi[s].Name); j++; } ArrayList akeys = new ArrayList(table.Keys); akeys.Sort();//对哈希表中的关键字排序,排序 //DatasourceConnectionInfo info = creatUDB(outPath_Final, "ymgc" + fa.Substring(1), "aaaazzzz"); //info.Password = "******"; //wks.Datasources.Open(info); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "ymgc" + fa.Substring(1) + ".udb"; foreach (double qq in akeys) { try { rasterLayer.CreateFromFilePath(ymgc_tifPath + "\\" + table[qq].ToString()); } catch { fail += table[qq].ToString() + "\n"; i = i + 1; continue; } copyRaster.in_raster = rasterLayer; copyRaster.out_rasterdataset = create1 + "\\" + "time" + i.ToString() + ".tif"; gp.OverwriteOutput = true; gp.Execute(copyRaster, null); //添加进udb importTool.ImportTIFF(create1 + "\\" + "time" + i.ToString() + ".tif", info); pgrs(i); Msg("方案" + fa + "_time" + i.ToString() + "导入数据源成功"); i++; } Msg("项目编号:" + fang + "\n" + "任务总数:" + arrFi.Length + "条\n" + "此次完成:" + (i - 1).ToString() + "条\n" + "处理失败:" + fail); i = 1; max = 1; //wks.Datasources.CloseAll(); Msg("用时:" + ExecDateDiff(datetimeBegain, DateTime.Now)); } //Msg("项目编号:" + tb[yxtb].ToString() + "\n" + "任务总数:" + j + "条\n" + "此次完成:" + j.ToString() + "条\n" + "处理失败为:" + fail); //Msg("用时:" + ExecDateDiff(datetime, DateTime.Now)); } catch (Exception ex) { Msg(ex.Message); } }
//提取栅格数据 private void ExtractRaster(string LayerName,Geoprocessor gp, string aimPath, string sourcePath) { Msg("开始处理..." + LayerName); string RasterName = sourcePath.Substring(sourcePath.LastIndexOf("\\") + 1); try { if (RasterName.Substring(0,4).Equals("Band")) sourcePath = sourcePath.Substring(0, sourcePath.LastIndexOf("\\"));//陈杜彬 3.8修改 ESRI.ArcGIS.DataManagementTools.CopyRaster copyRaster = new CopyRaster(); copyRaster.in_raster = sourcePath; copyRaster.out_rasterdataset = aimPath + "\\" + LayerName + ".tif"; gp.OverwriteOutput = true; gp.Execute(copyRaster, null); Msg(LayerName + "转换完成!"); ras_count++; } catch (Exception ex) { //MessageBox.Show(ex.Message); } }
/// <summary> /// 栅格数据转换 /// </summary> public void Tiff(string dirName, string saveName) { try { gp.SetEnvironmentValue("workspace", dirName); IGpEnumList RasterClasses = gp.ListRasters("", ""); string rasterClass = RasterClasses.Next(); while (rasterClass != "") { //Msg("开始转换TIFF..." + rasterClass); IRasterLayer rasterLayer = new RasterLayerClass(); rasterLayer.CreateFromFilePath(dirName + "\\" + rasterClass); //rasterLayer.SpatialReference = rasterLayer1.SpatialReference; ESRI.ArcGIS.DataManagementTools.CopyRaster copyRaster = new CopyRaster(); copyRaster.in_raster = rasterLayer; copyRaster.out_rasterdataset = saveName + "\\" + rasterClass + ".tif"; gp.OverwriteOutput = true; gp.Execute(copyRaster, null); Msg(rasterClass + "转换完成!"); ras_count++; rasterClass = RasterClasses.Next(); } } catch (Exception ex) { Msg(ex.Message); } }