Projecting a raster with a datum transformation
When projecting raster data, you can specify a transformation if the spatial references of the input and output are based on different datum. See the following code example:
[C#]
public static void ProjectRasterWithDatumTransformation(IRasterDataset2
rasterDataset, ISpatialReference outSR, esriSRGeoTransformation2Type geoTrans)
{
//This example shows how to specify a datum transformation when projecting raster data.
//rasterDataset—Represents input of a raster dataset that has a known spatial reference.
//outSR—Represents the spatial reference of the output raster dataset.
//geoTrans—Represents the geotransformation between the input and output spatial reference.
//Set output spatial reference.
IRaster raster = rasterDataset.CreateFullRaster();
IRasterProps rasterProps = (IRasterProps)raster;
rasterProps.SpatialReference = outSR;
//Specify the geotransformation.
ISpatialReferenceFactory2 srFactory = new SpatialReferenceEnvironmentClass();
IGeoTransformation geoTransformation = (IGeoTransformation)
srFactory.CreateGeoTransformation((int)geoTrans);
//Add to the geotransformation operation set.
IGeoTransformationOperationSet operationSet = new
GeoTransformationOperationSetClass();
operationSet.Set(esriTransformDirection.esriTransformForward, geoTransformation);
operationSet.Set(esriTransformDirection.esriTransformReverse, geoTransformation);
//Set the geotransformation on the raster.
IRaster2 raster2 = (IRaster2)raster;
raster2.GeoTransformations = operationSet;
//Save the result.
ISaveAs saveas = (ISaveAs)raster;
saveas.SaveAs(@"c:\temp\outputRaster.img", null, "IMAGINE Image");
}
[VB.NET]
Public Sub ProjectRasterWithDatumTransformation(ByVal rasterDataset As IRasterDataset2, ByVal outSR As ISpatialReference, ByVal geoTrans As esriSRGeoTransformation2Type)
'This example shows how to specify a datum transformation when projecting raster data.
'rasterDataset—Represents input of a raster dataset that has a known spatial reference.
'outSR—Represents the spatial reference of the output raster dataset.
'geoTrans—Represents the geotransformation between the input and output spatial reference.
'Set output spatial reference.
Dim raster As IRaster = rasterDataset.CreateFullRaster()
Dim rasterProps As IRasterProps = CType(raster, IRasterProps)
rasterProps.SpatialReference = outSR
'Specify the geotransformation.
Dim srFactory As ISpatialReferenceFactory2 = New SpatialReferenceEnvironmentClass()
Dim geoTransformation As IGeoTransformation = CType(srFactory.CreateGeoTransformation(CType(geoTrans, Integer)), IGeoTransformation)
'Add to the geotransformation operation set.
Dim operationSet As IGeoTransformationOperationSet = New GeoTransformationOperationSetClass()
operationSet.Set(esriTransformDirection.esriTransformForward, geoTransformation)
operationSet.Set(esriTransformDirection.esriTransformReverse, geoTransformation)
'Set the geotransformation on the raster.
Dim raster2 As IRaster2 = CType(raster, IRaster2)
raster2.GeoTransformations = operationSet
'Save the result.
Dim saveas As ISaveAs = CType(raster, ISaveAs)
saveas.SaveAs("c:\temp\outputRaster.img", Nothing, "IMAGINE Image")
End Sub
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)ESRI.ArcGIS.Display ESRI.ArcGIS.Geometry ESRI.ArcGIS.Geodatabase ESRI.ArcGIS.DataSourcesRaster
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |
Engine Developer Kit | Engine |