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)); }
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(); } }