arcgis根据7参转坐标_ArcgisEngine如何进行七参数坐标系转换

在ArcGIS Engine中,可以使用自定义地理变换和IGeometry.ProjectEx方法来实现WGS1984到Xian80的坐标转换。通过创建地理变换对象并设置7个参数,可以在不同坐标系间进行投影转换。代码示例展示了如何创建转换并应用到几何对象上。
摘要由CSDN通过智能技术生成

转载来自:http://zhihu.esrichina.com.cn/?/question/6858

arcgis知乎是一个arcgis方面知识的专业问答平台。

解决办法】:

首先创建自定义geotransformation,然后用IGeometry.ProjectEx进行投影转换。参考代码(以wgs1984转到Xian80为例):

private void func1ToolStripMenuItem_Click(object sender, EventArgs e)

{

Type t = Type.GetTypeFromProgID(esriGeometry.SpatialReferenceEnvironment);

System.Object obj = Activator.CreateInstance(t);

ISpatialReferenceFactory srFact = obj as ISpatialReferenceFactory;

IGeographicCoordinateSystem wgs84GCS = srFact.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

IProjectedCoordinateSystem xian80PCS = srFact.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_CM_102E);

IGeoTransformation geoTrans = CreateGeoTransformation((ISpatialReference)wgs84GCS, (ISpatialReference)xian80PCS);

IWorkspaceFactory wksfac = new FileGDBWorkspaceFactoryClass();

IFeatureWorkspace feawks = wksfac.OpenFromFile(@E:TEST.gdb,0) as IFeatureWorkspace;

IFeatureClass fc = feawks.OpenFeatureClass(POINT);

IFeature fea = fc.Search(null, false).NextFeature();

IGeometry5 geometry;

IPoint point = fea.ShapeCopy as IPoint;

geometry = point as IGeometry5;

geometry.SpatialReference = wgs84GCS;

geometry.ProjectEx(xian80PCS, esriTransformDirection.esriTransformForward, geoTrans, false, 0.0, 0.0);

point = geometry as IPoint;

MessageBox.Show(point.X.ToString(),point.Y.ToString());

}

private IGeoTransformation CreateGeoTransformation(ISpatialReference pInputSR, ISpatialReference pOutputSR)

{

IGeoTransformation pGeoTrans;

pGeoTrans = new CoordinateFrameTransformationClass();

((ICoordinateFrameTransformation)pGeoTrans).PutSpatialReferences(pInputSR, pOutputSR);

((ICoordinateFrameTransformation)pGeoTrans).PutParameters(p1, p2, p3, p4, p5, p6, p7);

return pGeoTrans;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值