美文网首页
2019-10-23

2019-10-23

作者: xbmchina | 来源:发表于2019-10-24 13:49 被阅读0次

https://www.cnblogs.com/gisoracle/p/3888357.html

http://www.doc88.com/p-7075219267886.html

        /// <summary>
        /// 投影转换
        /// </summary>
        /// <param name="strInputFeatureClass"></param>
        /// <param name="strOutputFeatureClass"></param>
        /// <param name="strOutputCoordinateSystem"></param>
        private void TransformProject2(string strInputFeatureClass, string strInputCoordinateSystem, string strOutputFeatureClass, string strOutputCoordinateSystem)
        {
            // Intialize the Geoprocessor
            Geoprocessor geoprocessor = new Geoprocessor();

            // Allow for the overwriting of file geodatabases, if they previously exist.
            geoprocessor.OverwriteOutput = true;
             //Set the workspace to a folder containing personal geodatabases.

            try
            {
                //定义投影
                ESRI.ArcGIS.DataManagementTools.DefineProjection definePrj = new DefineProjection();
                definePrj.in_dataset = strInputFeatureClass;
                definePrj.coor_system = strInputCoordinateSystem;
                geoprocessor.Execute(definePrj, null);
                object btemp = new object();
                string strMessage = geoprocessor.GetMessages(ref btemp);

            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);

            }
            try
            {
                //转换投影
                ESRI.ArcGIS.DataManagementTools.Project projectFeature = new ESRI.ArcGIS.DataManagementTools.Project();
                projectFeature.in_dataset = strInputFeatureClass;
                projectFeature.in_coor_system = strInputCoordinateSystem;
                projectFeature.out_coor_system = strOutputCoordinateSystem;
                projectFeature.out_dataset = strOutputFeatureClass;

                geoprocessor.Execute(projectFeature, null);
                object btemp = new object();
                string strMessage = geoprocessor.GetMessages(ref btemp);

            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);

            }
        }
private void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                CheckError();
                this.checkEdit1.Enabled = false;
                checkEdit1.Checked = false;
                this.Cursor = Cursors.WaitCursor;
 
 
                IGeoProcessorResult result = null;
                ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new Geoprocessor();
                gp.OverwriteOutput = true;
                if (btnEdit1.Text.Contains(".shp"))
                {
                    if (File.Exists(btnEdit3.Text))
                    {
                        if (MessageBox.Show("文件已存在,是否删除", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            IWorkspaceFactory pwsf = new ShapefileWorkspaceFactoryClass();
                            IWorkspace pws = pwsf.OpenFromFile(System.IO.Path.GetDirectoryName(btnEdit3.Text), 0);
                            App_CORE.EngineAPI.WorkspaceFunction.DeleteDataset1(pws, System.IO.Path.GetFileName(btnEdit3.Text), "featureclass");
                        }
                        else
                        {
                            btnEdit3.Text = "";
                            this.Cursor = Cursors.Default;
                            return;
                        }                           
                    }
                    ESRI.ArcGIS.DataManagementTools.Project pPro = new ESRI.ArcGIS.DataManagementTools.Project();                   
                    pPro.in_dataset = btnEdit1.Text;
                    pPro.in_coor_system = this.importSR;
                    pPro.out_dataset = btnEdit3.Text;
                    pPro.out_coor_system = this.exportSR;
                    pPro.transform_method = comboBoxEdit1.Text;
                    result = (IGeoProcessorResult)gp.Execute(pPro, null);
                }
                else
                {
                    if (File.Exists(btnEdit3.Text))
                    {
                        if (XtraMessageBox.Show("文件已存在,是否删除", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            IWorkspaceFactory pwsf = new RasterWorkspaceFactoryClass();
                            IWorkspace pws = pwsf.OpenFromFile(System.IO.Path.GetDirectoryName(btnEdit3.Text), 0);
                            App_CORE.EngineAPI.WorkspaceFunction.DeleteDataset(pws, System.IO.Path.GetFileName(btnEdit3.Text), "RasterDataset");
                        }
                        else
                        {
                            btnEdit3.Text = "";
                            this.Cursor = Cursors.Default;
                            return;
                        }                           
                    }
 
                    ProjectRaster pProject = new ProjectRaster();
                    pProject.in_raster = btnEdit1.Text;
                    pProject.in_coor_system = this.importSR;
                    pProject.out_raster = btnEdit3.Text;
                    pProject.out_coor_system = this.exportSR;                   
                    pProject.geographic_transform = comboBoxEdit1.Text;
                    result = (IGeoProcessorResult)gp.Execute(pProject, null);
                }
 
                this.Cursor = Cursors.Default;
                if (result == null)
                {
                    string xx = "";
                    for (int i = 0; i < gp.MessageCount; i++)
                        xx += gp.GetMessage(i);
                    XtraMessageBox.Show("投影转换失败,原因为:" + xx, "提示");
                    return;
                }
                ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(result);
                ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(result);
                result = null;
                XtraMessageBox.Show("成功", "提示");
                this.checkEdit1.Enabled = true;
                
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                MessageBox.Show(ex.Message, "提示");
            }
        }

相关文章

网友评论

      本文标题:2019-10-23

      本文链接:https://www.haomeiwen.com/subject/ulrlvctx.html