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, "提示");
}
}
网友评论