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 |