我需要按固定阈值过滤光栅图像。所以我使用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;
}
答案 0 :(得分:0)
(免责声明:我实际上并不是一名C ++程序员,只是试图提供一些指导来让你继续前进,因为似乎没有人有任何答案。)(从评论转换而来)
IScratchWorkspaceFactory
界面听起来会像你想要的那样 - 而不是使用workspace
创建IWorkspaceFactory.OpenFromFile
变量,而是尝试创建一个临时工作空间?根据文档,当您的应用程序退出时,它将自动清理。
请记住为最终输出使用不同的工作区。 :)