Example #1
0
        private IRaster rescaleCov()
        {
            IRasterBand       rsBand  = ((IRasterBandCollection)covRs).Item(0);
            IRasterStatistics rsStats = rsBand.Statistics;
            double            min     = rsStats.Minimum;
            double            max     = rsStats.Maximum;
            double            range   = (max - min);
            double            step    = range / CoverLevels;
            IRemapFilter      flt     = new RemapFilterClass();
            double            cnt     = 0;
            double            i       = 0;

            for (i = min; i < max; i += step)
            {
                double nMax = i + step;
                if (nMax == max)
                {
                    nMax = max + 1;
                }
                flt.AddClass(i, nMax, cnt);
                cnt++;
            }
            IRaster rs2 = rsUtil.returnRaster(rsUtil.calcRemapFunction(covRs, flt));

            return(rsUtil.returnRaster(rsUtil.calcArithmaticFunction(rs2, 100000, esriRasterArithmeticOperation.esriRasterMultiply)));
        }
Example #2
0
        public void convertFeatureToRaster(IFeatureClass InFeatureClass, string fldName)
        {
            ftrCls   = InFeatureClass;
            ftrField = fldName;
            IDataset dSet    = (IDataset)InFeatureClass;
            string   outRsNm = dSet.BrowseName;

            wks = dSet.Workspace;
            if (vRs != null)
            {
                if (!checkProjectionsFtr())
                {
                    if (rd != null)
                    {
                        rd.addMessage("Re-projecting feature class to match value raster's projection");
                    }
                    InFeatureClass = reprojectInFeatureClass(InFeatureClass, vRs.RasterInfo.SpatialReference);
                }
            }
            IWorkspace             wksTemp = geoUtil.OpenRasterWorkspace(tempWksStr);
            IFunctionRasterDataset rs      = rsUtil.createIdentityRaster(rsUtil.convertFeatureClassToRaster(InFeatureClass, rasterUtil.rasterType.IMAGINE, wksTemp, outRsNm, vRs.RasterInfo.CellSize.X, (IRasterDataset)vRs));

            rs = rsUtil.createIdentityRaster(rs, rstPixelType.PT_FLOAT);
            int fieldIndex = InFeatureClass.FindField(fldName);

            if (fieldIndex == -1)
            {
                fieldIndex = InFeatureClass.FindField(fldName + "_1");
            }
            if (fldName.ToLower() == InFeatureClass.OIDFieldName.ToLower() || fieldIndex == -1)
            {
                zRs = rs;
            }
            else
            {
                IRemapFilter   rFilt  = new RemapFilterClass();
                IFeatureCursor ftrCur = InFeatureClass.Search(null, false);
                IFeature       ftr    = ftrCur.NextFeature();

                while (ftr != null)
                {
                    double id  = ftr.OID;
                    double nVl = System.Convert.ToDouble(ftr.get_Value(fieldIndex));
                    if (Double.IsNaN(nVl) || Double.IsInfinity(nVl))
                    {
                        ftr = ftrCur.NextFeature();
                    }
                    else
                    {
                        //Console.WriteLine("adding oid = " + id.ToString() + " and value = " + nVl.ToString());
                        rFilt.AddClass(id, id + 1, nVl);
                        ftr = ftrCur.NextFeature();
                    }
                }
                zRs = rsUtil.calcRemapFunction(rs, rFilt);
            }
        }
Example #3
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);
            }
        }
Example #4
0
        private void btnExecute_Click(object sender, EventArgs e)
        {
            string rstNm = txtOutNm.Text;
            string rstIn = cmbInRaster1.Text;

            if (rstNm == null || rstNm == "" || rstIn == null || rstIn == "")
            {
                MessageBox.Show("You must specify a output name", "No Output", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (dgvRanges.Rows.Count < 1)
            {
                MessageBox.Show("You must have at least on range of values selected", "No Ranges", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            IRemapFilter rfilt = new RemapFilterClass();

            for (int i = 0; i < dgvRanges.Rows.Count; i++)
            {
                object obj1 = dgvRanges[0, i].Value;
                object obj2 = dgvRanges[1, i].Value;
                object obj3 = dgvRanges[2, i].Value;
                if (Convert.IsDBNull(obj1))
                {
                    obj1 = 0;
                }
                if (Convert.IsDBNull(obj2))
                {
                    obj2 = 0;
                }
                if (Convert.IsDBNull(obj3))
                {
                    obj3 = 0;
                }
                double min = System.Convert.ToDouble(obj1);
                double max = System.Convert.ToDouble(obj2);
                double vl  = System.Convert.ToDouble(obj3);
                rfilt.AddClass(min, max, vl);
            }
            this.Visible = false;
            esriUtil.Forms.RunningProcess.frmRunningProcessDialog rp = new RunningProcess.frmRunningProcessDialog(false);
            DateTime dt = DateTime.Now;

            rp.addMessage("Remapping Rasters. This may take a while...");
            rp.stepPGBar(10);
            rp.TopMost = true;
            try
            {
                outraster = rsUtil.returnRaster(rsUtil.calcRemapFunction(rstDic[rstIn], rfilt));
                if (mp != null && addToMap)
                {
                    rp.addMessage("Calculating Statistics...");
                    rp.Show();
                    rp.Refresh();
                    IRasterLayer rstLyr = new RasterLayerClass();
                    //rsUtil.calcStatsAndHist(((IRaster2)outraster).RasterDataset);
                    rstLyr.CreateFromRaster(outraster);
                    rstLyr.Name    = rstNm;
                    rstLyr.Visible = false;
                    mp.AddLayer(rstLyr);
                }
                outrastername     = rstNm;
                this.DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                rp.addMessage(ex.ToString());
            }
            finally
            {
                DateTime dt2 = DateTime.Now;
                TimeSpan ts  = dt2.Subtract(dt);
                string   t   = " in " + ts.Days.ToString() + " days " + ts.Hours.ToString() + " hours " + ts.Minutes.ToString() + " minutes and " + ts.Seconds.ToString() + " seconds .";
                rp.stepPGBar(100);
                rp.addMessage("Finished Remapping Rasters" + t);
                rp.enableClose();
                this.Close();
            }
        }