[C#]
public void CreateTilesFromRasterDataset(IRasterDataset rasterDataset, IWorkspace
outputWorkspace, int tileWidth, int tileHeight)
{
//Creates a set of raster datasets with specified rows and columns from the source dataset.
//rasterDataset is the source raster dataset.
//outputWorkspace is the output file raster workspace.
//tileWidth is the number of columns of each tile.
//tileHeight is the number of rows of each tile.
//Get source raster properties. Calculate output tile sizes
IRasterProps rasterProps = (IRasterProps)rasterDataset.CreateDefaultRaster();
double xTileSize = rasterProps.MeanCellSize().X * tileWidth;
double yTileSize = rasterProps.MeanCellSize().Y * tileHeight;
//Calculate the number of tiles needed for each direction.
int xTileCount = (int)Math.Ceiling((double)rasterProps.Width / tileWidth);
int yTileCount = (int)Math.Ceiling((double)rasterProps.Height / tileHeight);
IEnvelope dsExtent = rasterProps.Extent;
IEnvelope tileExtent = new EnvelopeClass();
ISaveAs saveAs = null;
//Create tiles with a specified tile size.
for (int i = 0; i < xTileCount; i++)
{
for (int j = 0; j < yTileCount; j++)
{
rasterProps = (IRasterProps)rasterDataset.CreateDefaultRaster();
//Recalculate the new extent.
tileExtent.XMin = dsExtent.XMin + i * xTileSize;
tileExtent.XMax = tileExtent.XMin + xTileSize;
tileExtent.YMin = dsExtent.YMin + j * yTileSize;
tileExtent.YMax = tileExtent.YMin + yTileSize;
// Set origin/extent and size for this tile
rasterProps.Height = tileHeight;
rasterProps.Width = tileWidth;
rasterProps.Extent = tileExtent;
//Save the tile to the output workspace as a TIFF file. Can be other writable
//formats too.
saveAs = (ISaveAs)rasterProps;
saveAs.SaveAs("tile_" + i + "_" + j + ".tif", outputWorkspace, "TIFF");
}
}
}
[VB.NET]
Public Sub CreateTilesFromRasterDataset(ByVal rasterDataset As IRasterDataset, ByVal outputWorkspace As IWorkspace, ByVal tileWidth As Integer, ByVal tileHeight As Integer)
'Creates a set of raster datasets with specified rows and columns from the source dataset.
'rasterDataset is the source raster dataset.
'outputWorkspace is the output file raster workspace.
'tileWidth is the number of columns of each tile.
'tileHeight is the number of rows of each tile.
' Get source raster properties. Calculate output tile sizes
Dim rasterProps As IRasterProps = CType(rasterDataset.CreateDefaultRaster(), IRasterProps)
Dim xTileSize As Double = rasterProps.MeanCellSize().X * tileWidth;
Dim yTileSize As Double = rasterProps.MeanCellSize().Y * tileHeight;
' Calculate the number of tiles needed for each direction.
Dim xTileCount As Integer = (Integer)Math.Ceiling((Double)rasterProps.Width / tileWidth);
Dim yTileCount As Integer = (Integer)Math.Ceiling((Double)rasterProps.Height / tileHeight);
Dim dsExtent As IEnvelope = rasterProps.Extent
Dim tileExtent As IEnvelope = New EnvelopeClass()
Dim saveAs As ISaveAs = Nothing
'Create tiles with specified tile size.
Dim i As Integer
Dim j As Integer
For i = 0 To xTileCount - 1
For j = 0 To yTileCount - 1
rasterProps = CType(rasterDataset.CreateDefaultRaster(), IRasterProps)
'Recalculate the new extent.
tileExtent.XMin = dsExtent.XMin + i * xTileSize
tileExtent.XMax = tileExtent.XMin + xTileSize
tileExtent.YMin = dsExtent.YMin + j * yTileSize
tileExtent.YMax = tileExtent.YMin + yTileSize
' Set size and extent for this tile
rasterProps.Height = tileHeight
rasterProps.Width = tileWidth
rasterProps.Extent = tileExtent
'Save the tile to the output workspace as a TIFF file. Can be other writable
'formats too.
saveAs = CType(rasterProps, ISaveAs)
saveAs.SaveAs("tile_" + CStr(i) + "_" + CStr(j) + ".tif", outputWorkspace, "TIFF")
Next
Next
End Sub
See Also:
How to access a raster datasetTo 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.DataSourcesRaster ESRI.ArcGIS.Geometry ESRI.ArcGIS.Geodatabase
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |
Engine Developer Kit | Engine |