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