GPツールヨーロッパ式距離の小さなBug
1983 ワード
通常、GeoProcessorResultClassを使用してオブジェクトを作成し、GPツールの実行結果を次のように取得します.
result=(IGeoProcessorResult)GP.Execute(reclassify,null)を介して;resultはグリッドデータの実行結果であり、データビットグリッドデータの場合、result.ReturnValueはグリッドデータの保存経路であり、GP.Open(result.ReturnValue)as IrasterData setを通過する.グリッドデータセットを開くことができます.または、グリッドデータパスから直接レイヤーを作成することもできます.
エラー位置
ただし、上記GP.Open(result.ReturnValue)as IrasterDatasetは、ヨーロッパ式距離ツールを呼び出すと、一言がまちがっている resRasterLyr.CreateFromFilePath(path);間違っています.デバッグにより、オーステナイト距離が返される(result.ReturnValue)パスに最後にセミコロンが追加されたことが分かった.
解決策
に合格
以上のエラーを削除できます.
以上のバグが再発しないように,GPツールを実行するたびにこの文を加えることができる.Bugのあるツールでは、このコードは削除できますが、Bugがなければ影響はありません.
原因が現れる
ArcToolBoxの多くのツールには、ヨーロッパ距離出力可能なヨーロッパ距離グリッドや方向グリッドなど、複数の出力ファイルがあります.複数のファイルを出力する場合、result.ReturnValueが返す値は複数のパスの中間用です.分割.
ヨーロッパ式距離では、マルチ出力なので、ファイル出力が1つでも後ろにセミコロンが1つ増えます.
IGeoProcessorResult result = new GeoProcessorResultClass(); //
ESRI.ArcGIS.SpatialAnalystTools.Reclassify reclassify = new ESRI.ArcGIS.SpatialAnalystTools.Reclassify();
reclassify.in_raster = inRaster;
reclassify.reclass_field = field;
reclassify.remap = remap;
reclassify.out_raster = outpath;
object sev = null;
try
{
result = (IGeoProcessorResult)GP.Execute(reclassify, null);
MessageBox.Show(GP.GetMessages(ref sev));
//
IRasterDataset pRasterDataset = GP.Open(result.ReturnValue) as IRasterDataset;
IRasterLayer resRasterLyr = new RasterLayerClass();
resRasterLyr.CreateFromDataset(pRasterDataset);
axMapControl1.AddLayer(resRasterLyr);
axMapControl1.ActiveView.Refresh();
}
catch
{
MessageBox.Show(GP.GetMessages(ref sev));
}
result=(IGeoProcessorResult)GP.Execute(reclassify,null)を介して;resultはグリッドデータの実行結果であり、データビットグリッドデータの場合、result.ReturnValueはグリッドデータの保存経路であり、GP.Open(result.ReturnValue)as IrasterData setを通過する.グリッドデータセットを開くことができます.または、グリッドデータパスから直接レイヤーを作成することもできます.
エラー位置
ただし、上記GP.Open(result.ReturnValue)as IrasterDatasetは、ヨーロッパ式距離ツールを呼び出すと、一言がまちがっている resRasterLyr.CreateFromFilePath(path);間違っています.デバッグにより、オーステナイト距離が返される(result.ReturnValue)パスに最後にセミコロンが追加されたことが分かった.
解決策
に合格
path = path.Split(';')[0];
以上のエラーを削除できます.
以上のバグが再発しないように,GPツールを実行するたびにこの文を加えることができる.Bugのあるツールでは、このコードは削除できますが、Bugがなければ影響はありません.
原因が現れる
ArcToolBoxの多くのツールには、ヨーロッパ距離出力可能なヨーロッパ距離グリッドや方向グリッドなど、複数の出力ファイルがあります.複数のファイルを出力する場合、result.ReturnValueが返す値は複数のパスの中間用です.分割.
ヨーロッパ式距離では、マルチ出力なので、ファイル出力が1つでも後ろにセミコロンが1つ増えます.