using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geoprocessing;
using ESRI.ArcGIS.Display;
//入出力用パラメータ変数設定
string strAnalysis = "Buffer_Analysis"; //Buffer(同とtbxのエイリアス名を"_"で接続して記載)
strAnalysis = "CustomModel"; //モデルビルダを呼び 名前を設定
//カスタムツールボックスを利用する場合
string strToolbox;
strToolbox = @"C:\Documents and Settings\Administrator\Application Data\ESRI\Arcoolboxes\Toolbox.tbx";
strToolbox = @""; //システムツールを使指定
//パラメータ
string[] strParameter = new string[2];
strParameter[0] = @"D:\Workspace\World.gdb\World\Lakes"; //入力フィーチャクラス
strParameter[1] = @"1"; //Merters" '出力フィ strParameter[2] = @"D:\Workspace\World.gdb\World\Buffer"; //バッファの距離
//GeoProcessorの初期化
IGeoProcessor pGeoProcessor = new GeoProcessorClass();
//入出力用パラメータ変数をVarArrayオブジェクトに格納
IVariantArray pVariantArray = new VarArrayClass();
for(int i=0;i < strParameter.Length;++i){
pVariantArray.Add(strParameter[i]);
}
//ジオプロセシング設定
pGeoProcessor.OverwriteOutput = true; //上書き保存許可
pGeoProcessor.AddOutputsToMap = true; //出力フィーチャクラスをレイヤとして追加
if(strToolbox != ""){
pGeoProcessor.AddToolbox(strToolbox);
}
//CancelTrackerの設定
ITrackCancel pTrackCancel = new CancelTrackerClass();
pTrackCancel.CancelOnClick = false;
pTrackCancel.CancelOnKeyPress = false;
//実行処理
IGeoProcessorResult pGeoProcessorResult = null;
try
{
pGeoProcessorResult = pGeoProcessor.Execute(strAnalysis, pVariantArray, pTrackCancel);
Console.WriteLine(pGeoProcessorResult.GetMessages(0));
Console.ReadKey();
}
catch
{
Console.WriteLine(pGeoProcessorResult.GetMessage(2));
Console.ReadKey();
}
Public Sub subGeoprocessing()
'入出力用パラメータ変数設定
Dim strAnalysis As String
strAnalysis = "Buffer_Analysis" 'Buffer(同一処理名の場合はツール名とtbxのエイリアス名を"_"で接続して記載)
strAnalysis = "CustomModel" 'モデルビルダを呼び出す場合はプロパティ > 名前を設定
'カスタムツールボックスを利用する場合
Dim strToolbox As String
strToolbox = "C:\Documents and Settings\Administrator\Application Data\ESRI\ArcToolbox\My Toolboxes\Toolbox.tbx"
strToolbox = "" 'システムツールを使用する場合は空の文字列を指定
'パラメータ
Dim strParameter(2) As String
strParameter(0) = "D:\Workspace\World.gdb\World\Lakes" '入力フィーチャクラス
strParameter(1) = "1" ' Merters" '出力フィーチャクラス
strParameter(2) = "D:\Workspace\World.gdb\World\Buffer" 'バッファの距離
'GeoProcessorの初期化
Dim pGeoProcessor As IGeoProcessor
Set pGeoProcessor = New GeoProcessor
'入出力用パラメータ変数をVarArrayオブジェクトに格納
Dim pVariantArray As IVariantArray
Set pVariantArray = New VarArray
Dim i As Long
For i = 0 To UBound(strParameter) - LBound(strParameter)
pVariantArray.Add strParameter(i)
Next i
'ジオプロセシング設定
pGeoProcessor.OverwriteOutput = True '上書き保存許可
pGeoProcessor.AddOutputsToMap = True '出力フィーチャクラスをレイヤとして追加
If Not strToolbox = "" Then
pGeoProcessor.AddToolbox strToolbox
End If
'CancelTrackerの設定
Dim pTrackCancel As ITrackCancel
Set pTrackCancel = New CancelTracker
pTrackCancel.CancelOnClick = False
pTrackCancel.CancelOnKeyPress = True
On Error GoTo Error:
'処理実行
Dim pGeoProcessorResult As IGeoProcessorResult
Set pGeoProcessorResult = pGeoProcessor.Execute(strAnalysis, pVariantArray, pTrackCancel)
If Not strToolbox = "" Then
pGeoProcessor.RemoveToolbox strToolbox
End If
Debug.Print pGeoProcessorResult.GetMessages(0)
Exit Sub
Error:
'エラー発生時
Debug.Print pGeoProcessor.GetMessages(2)
End Sub