Code for running a tool, model, or script from within an Arc AddIn
Details
This code runs a tool from an Arc addIn. It assumes the Tool is in a Toolbox loaded into ArcToolbox. The example given takes in four parameters (a layer, a feature dataset, a distance, and an output layer). In the absence of the latter, models generally output to the default geodatabase in "My Documents/ArcGIS/AddIns/" (provided you have permission -- otherwise they'll just fail). If the output directory is where your map data is, the final layer will generally load as a layer as well as being produced.
This code differs from the original code in running inside Arc. You do not need to generate wrappers using the Eclipse ArcGIS Menu -> GeoProcessing Tool Code Generator, for tools loaded into Arc.
Original author/s: ESRI
Original location/s: How to consume custom geoprocessing tools in Java applications
Adapted by: Andy Evans
License: unknown
Imports and instance variables
import com.esri.arcgis.geoprocessing.GeoProcessor; import com.esri.arcgis.system.VarArray; private GeoProcessor geoprocessor = null;
Code
try{ // GeoProcessors run tools built into Arc by being available in toolboxes. this.geoprocessor = new GeoProcessor(); // Set up parameters VarArray parameters = new VarArray(); // NOTE - CHECK AGAINST MODEL RUN MANUALLY FOR NAMES AND PATHS NEEDED String inputFeatures = "bomb points"; String distance = "100"; String featureClass = "build polygon"; String outputFeatures1 = "m:\\GEOG5790M\\practical1\\buff"; String outputFeatures2 = "m:\\GEOG5790M\\practical1\\intersect"; // NOTE - CHECK AGAINST MODEL RUN MANUALLY FOR ORDER parameters.add(inputFeatures); parameters.add(distance); parameters.add(featureClass); parameters.add(outputFeatures1); parameters.add(outputFeatures2); // Run the tool. NOTE - CHECK MODEL NAME geoprocessor.setOverwriteOutput(true); geoprocessor.execute("Explosion", parameters, null); //Print messages, if any, from the tool. for (int i = 0; i < geoprocessor.getMessageCount(); i++) JOptionPane.showMessageDialog(null, geoprocessor.getMessage(i)); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getStackTrace()); for (int i = 0; i < geoprocessor.getMessageCount(); i++) JOptionPane.showMessageDialog(null, geoprocessor.getMessage(i)); }