コード例 #1
0
        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"]);
        }
コード例 #2
0
        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();
            }
        }