C#调用Arcgis API切割遥感影像数据

来源:互联网 发布:c语言 rand 编辑:程序博客网 时间:2024/04/29 18:45

http://blog.csdn.net/arcgis_all/article/details/8785064

public void CreateTilesFromRasterDataset(IRasterDataset rasterDataset, IWorkspace

    outputWorkspace, int tileWidth, int tileHeight){
 
    IRasterProps rasterProps = (IRasterProps)rasterDataset.CreateDefaultRaster();
    double xTileSize = rasterProps.MeanCellSize().X * tileWidth;
    double yTileSize = rasterProps.MeanCellSize().Y * tileHeight;
    
    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;
 
    for (int i = 0; i < xTileCount; i++)    {
        for (int j = 0; j < yTileCount; j++)        {
            rasterProps = (IRasterProps)rasterDataset.CreateDefaultRaster();
      
            tileExtent.XMin = dsExtent.XMin + i * xTileSize;
            tileExtent.XMax = tileExtent.XMin + xTileSize;
            tileExtent.YMin = dsExtent.YMin + j * yTileSize;
            tileExtent.YMax = tileExtent.YMin + yTileSize;
           
            rasterProps.Height = tileHeight;
            rasterProps.Width = tileWidth;
            rasterProps.Extent = tileExtent;
                    saveAs = (ISaveAs)rasterProps;
            saveAs.SaveAs("tile_" + i + "_" + j + ".tif", outputWorkspace, "TIFF");
        }    }}