我需要通过一个固定的阈值过滤我的栅格图像。所以我使用ILogicalOp函数。每当我使用它们时,都会在工作空间中保存一个输出文件,由于我的数据库很大,这是不需要的。保存恰好发生在rasOut[i] = RMath.LessThan(inputRas[i], cons01)
之后。我该如何预防呢?或者如何得到保存的文件名和删除它?如有任何意见将不胜感激。
private IGeoDataset[] CalcColdThreshold(IGeoDataset[] inputRas)
{
IGeoDataset[] rasOut = new IGeoDataset[inputRas.Length];
IGeoDataset emptyRas=null;
ILogicalOp RMath;
RMath = new RasterMathOpsClass();
IRasterAnalysisEnvironment env;
env = (IRasterAnalysisEnvironment)RMath;
IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass();
IWorkspace workspace = workspaceFactory.OpenFromFile(System.IO.Path.GetFullPath(workSpace_save.Text), 0);
env.OutWorkspace = workspace;
IRasterMakerOp Rmaker = new RasterMakerOpClass();
IGeoDataset cons01;
Threshold_value = 15000;
cons01 = Rmaker.MakeConstant(Threshold_value, false);
for (int i = 0; i < inputRas.Length; i++)
{
rasOut[i] = RMath.LessThan(inputRas[i], cons01);
}
return rasOut;
}
(免责声明:我实际上不是一个c++程序员,只是试图提供一些指针让你继续,因为没有人似乎有任何答案。)(从评论转换)
IScratchWorkspaceFactory
接口听起来像它会做你想要的-而不是使用IWorkspaceFactory.OpenFromFile
创建你的workspace
变量,尝试创建一个划痕工作区代替?根据文档,当应用程序退出时,它将自动清理。
请记住为您的最终输出使用不同的工作空间。:)