コード例 #1
0
        public IRaster createModelRaster()
        {
            List <float[]> slopesLst = new List <float[]>();

            foreach (string s in Categories)
            {
                List <float> slp = new List <float>();
                Dictionary <string, float> dic = betasdic[s];
                foreach (KeyValuePair <string, float> d in dic)
                {
                    slp.Add(d.Value);
                }
                slopesLst.Add(slp.ToArray());
            }

            return(rsUtil.calcRegressFunction(InRaster, slopesLst));
        }
コード例 #2
0
        private void btnExecute_Click(object sender, EventArgs e)
        {
            string rstNm     = txtOutNm.Text;
            float  intercept = System.Convert.ToSingle(nudIntercept.Value);

            if (rstNm == null || rstNm == "")
            {
                MessageBox.Show("You must specify a output name", "No Output", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (dgvRasterSlopes.Rows.Count < 1)
            {
                MessageBox.Show("You must select at least one Raster", "No Rasters", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            IRasterBandCollection rsBc   = new RasterClass();
            List <float>          slopes = new List <float>();

            slopes.Add(intercept);
            for (int i = 0; i < dgvRasterSlopes.Rows.Count; i++)
            {
                rsBc.AppendBands((IRasterBandCollection)rstDic[dgvRasterSlopes[0, i].Value.ToString()]);
                object vl = dgvRasterSlopes[1, i].Value;
                if (Convert.IsDBNull(vl))
                {
                    vl = 0;
                }
                slopes.Add(System.Convert.ToSingle(vl));
            }
            IFunctionRasterDataset comp    = rsUtil.compositeBandFunction(rsBc);
            List <float[]>         fslopes = new List <float[]>();

            fslopes.Add(slopes.ToArray());
            this.Visible = false;
            esriUtil.Forms.RunningProcess.frmRunningProcessDialog rp = new RunningProcess.frmRunningProcessDialog(false);
            DateTime dt = DateTime.Now;

            rp.addMessage("Transforming Rasters. This may take a while...");
            rp.stepPGBar(10);
            rp.TopMost = true;
            rp.Show();
            try
            {
                outraster = rsUtil.returnRaster(rsUtil.calcRegressFunction(comp, fslopes));
                if (mp != null && addToMap)
                {
                    rp.addMessage("Calculating Statistics...");
                    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 Transforming Rasters" + t);
                rp.enableClose();
                this.Close();
            }
        }