private bool Write(string folderPath) { ContinuousWait wait = new ContinuousWait("计算转换率"); Hashtable para = new Hashtable() { { "wait", wait }, { "folderPath", folderPath }, { "ret", false } }; Thread t = new Thread(new ParameterizedThreadStart(Run)); t.Start(para); wait.ShowDialog(); t.Abort(); return((bool)para["ret"]); }
private void Run(object p) { Hashtable para = p as Hashtable; ContinuousWait wait = para["wait"] as ContinuousWait; var folderPath = para["folderPath"].ToString(); try { string preWorkSpace = Path.GetDirectoryName(_preRasterFilePath); string preFileName = Path.GetFileNameWithoutExtension(_preRasterFilePath); string aftWorkSpace = Path.GetDirectoryName(_aftRasterFilePath); string aftFileName = Path.GetFileNameWithoutExtension(_aftRasterFilePath); RasterReader preReader = new RasterReader(preWorkSpace, preFileName + ".tif"); RasterReader aftReader = new RasterReader(aftWorkSpace, aftFileName + ".tif"); RasterOp preOp = new RasterOp(preReader); RasterOp aftOp = new RasterOp(aftReader); RasterOp res = preOp.Clone(); res.Reset(); for (int i = 0; i < preOp.Width; i++) { for (int j = 0; j < preOp.Height; j++) { if (preOp.Read(i, j).HasValue) { float orgin = (float)preOp.Read(i, j); float now = (float)aftOp.Read(i, j); if (Math.Abs(orgin) > 10e-5) { float rate = (now - orgin) / orgin; res.Write(i, j, rate); } } } } RasterWriter writer = new RasterWriter(folderPath, RasterName, preReader.RasterInfo); res.WriteRaster(writer, "TIFF"); para["ret"] = true; } catch (Exception e) { _log.Error(e.GetType() + e.Message + e.StackTrace); para["ret"] = false; } finally { wait.CloseWait(); } }