Example #1
0
 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);
            }
        }