⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rastermosaic.java

📁 利用VB、Java、C++实现的AE镶嵌工具。
💻 JAVA
字号:
/*
 Copyright 1995-2004 ESRI

 All rights reserved under the copyright laws of the United States.

 You may freely redistribute and use this sample code, with or without modification.

 Disclaimer: THE SAMPLE CODE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 
 WARRANTIES, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ESRI OR 
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
 OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 INTERRUPTION) SUSTAINED BY YOU OR A THIRD PARTY, HOWEVER CAUSED AND ON ANY 
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ARISING IN ANY 
 WAY OUT OF THE USE OF THIS SAMPLE CODE, EVEN IF ADVISED OF THE POSSIBILITY OF 
 SUCH DAMAGE.

 For additional information contact: Environmental Systems Research Institute, Inc.

 Attn: Contracts Dept.

 380 New York Street

 Redlands, California, U.S.A. 92373 

 Email: contracts@esri.com
*/
/*
 * ArcGIS Engine Developer Sample
 * Application Name: RasterMosaic.java
 */
package com.esri.arcgis.samples.raster.rastertools;

import com.esri.arcgis.datasourcesraster.IRasterBand;
import com.esri.arcgis.datasourcesraster.IRasterBandCollection;
import com.esri.arcgis.datasourcesraster.IRasterBandCollectionProxy;
import com.esri.arcgis.datasourcesraster.IRasterGeometryProc;
import com.esri.arcgis.datasourcesraster.IRasterProps;
import com.esri.arcgis.datasourcesraster.IRasterPropsProxy;
import com.esri.arcgis.datasourcesraster.Raster;
import com.esri.arcgis.datasourcesraster.RasterGeometryProc;
import com.esri.arcgis.datasourcesraster.RasterWorkspace;
import com.esri.arcgis.datasourcesraster.RasterWorkspaceFactory;
import com.esri.arcgis.geodatabase.IRaster;
import com.esri.arcgis.geodatabase.IRasterDataset;
import com.esri.arcgis.geodatabase.IRasterProxy;
import com.esri.arcgis.geodatabase.IWorkspaceFactory;
import com.esri.arcgis.geometry.ISpatialReference;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.esriLicenseProductCode;
import com.esri.arcgis.system.esriLicenseStatus;


/**
 * Description:
 *  This developer sample shows how to mosaic
 *  two single band images.
 * Inputs:
 *  First Raster: ESRI supported raster dataset.
 *  Second Raster: ESRI supported raster dataset.
 *
 * Outputs:
 *  GRID Raster Mosaic: Raster Mosaic from input datasets
 *
 * @param       Input Path - a directory path to the Raster
 * @param       First Input Raster - the name of the Raster file
 * @param       Second Input Raster - a directory path to the Raster
 * @param       Output Path - the name of the Raster file
 * @param       Output Raster - the name of the Raster file
 *
 */
public class RasterMosaic {
    /**
     * @param inPath - directory where input dataset resides
     * @param inDataset1 - name of the first dataset
     * @param inDataset2 - name of the second dataset
     * @param outPath - directory for output dataset
     * @param outDataset - name of output dataset
     */
    private static void mosaicTwoImages(String inPath, String inDataset1, String inDataset2, String outPath, String outDataset) {
        try{
            // create input and output workspace
            IWorkspaceFactory rasWkspFactory = new RasterWorkspaceFactory();
            RasterWorkspace inRasWksp = new RasterWorkspace(rasWkspFactory.openFromFile(inPath, 0));
            RasterWorkspace outRasWksp = new RasterWorkspace(rasWkspFactory.openFromFile(outPath, 0));

            if(!inRasWksp.isWorkspace(inPath) && !outRasWksp.isWorkspace(outPath)){
                System.out.println("Program Exit: Did not supply a valid Raster Workspace");
                System.exit(0);
            }
            // open raster dataset
            IRasterDataset inRDS1 = inRasWksp.openRasterDataset(inDataset1);
            IRasterDataset inRDS2 = inRasWksp.openRasterDataset(inDataset2);
            // get first input rasters property
            IRaster raster = inRDS1.createDefaultRaster();
            IRasterProps rasterprops = new IRasterPropsProxy(raster);
            double cellSize = (rasterprops.meanCellSize().getX() + rasterprops.meanCellSize().getY()) / 2;
            ISpatialReference spatialRef = rasterprops.getSpatialReference();
            // create new raster
            IRasterBandCollection inRaster = new Raster();
            // add first dataset into raster
            IRasterBandCollection rBandCollection = new IRasterBandCollectionProxy(inRDS1);
            IRasterBand rasterBand = rBandCollection.item(0);
            System.out.println(" Add first dataset to raster.");
            inRaster.appendBand(rasterBand);
            // add second datasaet into raster
            rBandCollection = new IRasterBandCollectionProxy(inRDS2);
            rasterBand = rBandCollection.item(0);
            System.out.println(" Add second dataset to raster.");
            inRaster.appendBand(rasterBand);
            // mosaic
            IRaster iraster = new IRasterProxy(inRaster);
            IRasterGeometryProc rasGeoProc = new RasterGeometryProc();
            // Supported Raster Types: 'IMAGINE Image', 'TIFF', 'GRID'
            System.out.println(" Mosaic the input rasters into a single dataset.");
            raster = rasGeoProc.mosaic(outDataset, outRasWksp, "TIFF", cellSize, spatialRef, iraster);
            System.out.println(" Mosiac complete: " + outDataset);

        }catch(Exception e){
            System.out.println("Exception caught in mosaicTwoImages: " + e);
//          e.printStackTrace();
        }
    }

    /**
     * Description:
     *  Intialize ArcObjects for all Product Levels
     */
    private static void initializeArcObjects(){
        try {
            AoInitialize ao = new AoInitialize();
            if( ao.isProductCodeAvailable( esriLicenseProductCode.esriLicenseProductCodeEngine ) == esriLicenseStatus.esriLicenseAvailable ){
                ao.initialize( esriLicenseProductCode.esriLicenseProductCodeEngine );
            }else if( ao.isProductCodeAvailable( esriLicenseProductCode.esriLicenseProductCodeArcInfo ) == esriLicenseStatus.esriLicenseAvailable ){
                ao.initialize( esriLicenseProductCode.esriLicenseProductCodeArcInfo );
            }else if( ao.isProductCodeAvailable( esriLicenseProductCode.esriLicenseProductCodeArcEditor ) == esriLicenseStatus.esriLicenseAvailable ){
                ao.initialize( esriLicenseProductCode.esriLicenseProductCodeArcEditor );
            }else if( ao.isProductCodeAvailable( esriLicenseProductCode.esriLicenseProductCodeArcView ) == esriLicenseStatus.esriLicenseAvailable ){
                ao.initialize( esriLicenseProductCode.esriLicenseProductCodeArcView );
            }else{
                System.out.println( "Program Exit: Unable to initialize ArcObjects");
                System.exit( 0 );
            }
        } catch ( Exception e ) {
            System.out.println(" Program Exit: Unable to initialize ArcObjects ");
            System.exit(0);
        } // end try - catch
    } // end initializeArcObjects

    /**
     * Description:
     *  Main Method - Application Entry Point
     */
    public static void main(String[] args) {
        if(args.length != 5){
            System.out.println("RasterMosaic: ArcGIS Engine Developer Sample");
            System.out.println("Usage: RenameRaster [Input Path] [First Input Raster] [Second Input Raster] [Output Path] [Output Raster]");
            System.exit(0);
        }else{
            System.out.println("RasterMosaic: ArcGIS Engine Developer Sample");
            System.out.println("++++++++++++++++++++++++++++++++++");
            String inPath = args[0];
            String inDataset1 = args[1];
            String inDataset2 = args[2];
            String outPath = args[3];
            String outDataset = args[4];

            EngineInitializer.initializeEngine();
            initializeArcObjects();
            mosaicTwoImages(inPath, inDataset1, inDataset2, outPath, outDataset);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -