private void defineSpatialReference(IDataset dataset,ISpatialReference spatialReference)
{
IGeoDatasetSchemaEdit geoSchemaEdit = dataset as IGeoDatasetSchemaEdit;
if (geoSchemaEdit.CanAlterSpatialReference)
{
geoSchemaEdit.AlterSpatialReference(spatialReference);
}
}
private IProjectedCoordinateSystem createProjectedCoordinateSystem(int WKID)
{
Type factoryType = Type.GetTypeFromProgID(esriGeometry.SpatialReferenceEnvironment);
System.Object obj = Activator.CreateInstance(factoryType);
ISpatialReferenceFactory2 pSRF = obj as ISpatialReferenceFactory2;
// Initialize and create the input and output coordinate systems.
IProjectedCoordinateSystem pPCS = new ProjectedCoordinateSystemClass();
pPCS = pSRF.CreateProjectedCoordinateSystem(WKID);
return pPCS;
}
private IGeographicCoordinateSystem createGeographicCoordinateSystem(int WKID)
{
Type factoryType = Type.GetTypeFromProgID(esriGeometry.SpatialReferenceEnvironment);
System.Object obj = Activator.CreateInstance(factoryType);
ISpatialReferenceFactory2 pSRF = obj as ISpatialReferenceFactory2;
IGeographicCoordinateSystem pGCS = new GeographicCoordinateSystemClass();
// Initialize and create the input and output coordinate systems.
pGCS = pSRF.CreateGeographicCoordinateSystem(WKID);
return pGCS;
}
private IGeoTransformation createCustomGeoTrans(ISpatialReference pInputSR, ISpatialReference pOutputSR)
{
IGeographicCoordinateSystem pGCSfrom = null;
IGeographicCoordinateSystem pGCSto = null;
if (pInputSR is IGeographicCoordinateSystem)
pGCSfrom = pInputSR as IGeographicCoordinateSystem;
else if (pInputSR is IProjectedCoordinateSystem)
pGCSfrom = (pInputSR as IProjectedCoordinateSystem).GeographicCoordinateSystem;
if (pOutputSR is IGeographicCoordinateSystem)
pGCSto = pOutputSR as IGeographicCoordinateSystem;
else if (pOutputSR is IProjectedCoordinateSystem)
pGCSto = (pOutputSR as IProjectedCoordinateSystem).GeographicCoordinateSystem;
2 个回复
朱新颖
赞同来自:
主要分三步:
1,由于WGS84地理坐标系和西安80投影坐标系的椭球体不同,需要先定义一个地理变换,参考AO帮助链接:
http://resources.arcgis.com/en ... 0.htm
2,获取要素类,遍历每个要素,获取IGeometry,使用IGeometry5.ProjectEx()方法进行投影,将投影后的Geometry重新赋值给Feature,并且报存。
http://resources.arcgis.com/en ... 00000
3,将处理过的要素类的空间参考改为新的空间参考,使用IGeoDatasetSchemaEdit.AlterSpatialReference方法。
http://resources.arcgis.com/en ... 00000
注:如果两个坐标系的椭球体相同的话,直接使用IGeometry5.Project()进行投影即可,也不需要定义地理变换
参考代码(以WGS84到西安80为例):
四百多
赞同来自:
要回复问题请先登录或注册
发起人
相关问题
问题状态