Exemplo n.º 1
0
        private void createPeriodRasters(int iterationNumber)
        {
            string rpFile = resultsDir + "\\Out_Int_RP_" + iterationNumber.ToString() + ".txt";
            List <HashSet <int> > pLst         = new List <HashSet <int> >();
            List <IRemapFilter>   remapFiltLst = new List <IRemapFilter>();

            for (int i = 1; i <= numPer; i++)
            {
                pLst.Add(new HashSet <int>());
                IRemapFilter flt = new RemapFilterClass();
                remapFiltLst.Add(flt);
            }
            using (System.IO.StreamReader sr = new System.IO.StreamReader(rpFile))
            {
                string ln = sr.ReadLine();
                while ((ln = sr.ReadLine()) != null)
                {
                    string[] lnArr = ln.Split(new char[] { '\t' });
                    if ((lnArr.Length) < 6)
                    {
                        break;
                    }
                    int period = System.Convert.ToInt32(lnArr[3]);
                    int id     = System.Convert.ToInt32(lnArr[0]);
                    if (period > 0)
                    {
                        HashSet <int> oLst = pLst[period - 1];
                        oLst.Add(id);
                        pLst[period - 1] = oLst;
                    }
                }
                sr.Close();
            }
            Dictionary <int, int> vlDic = rsUtil.buildVat(treatGrid);

            //IRasterInfo2 rsInfo2 = (IRasterInfo2)treatGrid.RasterInfo;
            //ITable rsVat = rsInfo2.AttributeTable;
            //if (rsVat == null)
            //{

            //}
            //ICursor cur = null;
            //cur = rsVat.Search(null, false);
            //int valueIndex = cur.FindField("Value");
            //IRow rw = cur.NextRow();
            //while (rw != null)
            foreach (int vl in vlDic.Keys)
            {
                for (int i = 1; i <= numPer; i++)
                {
                    IRemapFilter  fl  = remapFiltLst[i - 1];
                    HashSet <int> lst = pLst[i - 1];
                    int           nVl = 0;
                    if (lst.Contains(vl))
                    {
                        nVl = 1;
                        //Console.WriteLine("Add Value Remap Class = " + vl.ToString() + " to " + nVl.ToString());
                    }

                    fl.AddClass(vl, vl + 0.000001, nVl);
                }
            }
            periodRasterLst.Clear();
            for (int i = 1; i <= numPer; i++)
            {
                IRemapFilter flt = remapFiltLst[i - 1];

                IFunctionRasterDataset oRs = rsUtil.calcRemapFunction(treatGrid, flt);// reSampleRasterGrid(rsUtil.calcRemapFunction(treatGrid, flt));
                if (createinter)
                {
                    rsUtil.saveRasterToDataset(rsUtil.createRaster(oRs), "Treat_" + iterationNumber.ToString() + i.ToString(), wks, rasterUtil.rasterType.IMAGINE);
                }
                periodRasterLst.Add(oRs);
            }
        }