private void btnClip_Click(object sender, EventArgs e) { string rstNm = cmbInRaster1.Text; string outNm = txtOutName.Text; string newValue = txtValue.Text; if (newValue == "" || newValue == null || rstNm == "" || rstNm == null) { MessageBox.Show("You must have a raster layer selected and a valid value", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (outNm == "" || outNm == null) { MessageBox.Show("You must specify an output raster name", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } this.Visible = false; double vl = System.Convert.ToDouble(newValue); esriUtil.Forms.RunningProcess.frmRunningProcessDialog rp = new RunningProcess.frmRunningProcessDialog(false); DateTime dt = DateTime.Now; rp.addMessage("Making Raster. This may take a while..."); rp.stepPGBar(10); rp.TopMost = true; try { IRaster rst = rstDic[rstNm]; outraster = rsUtil.createRaster(rsUtil.constantRasterFunction(rst, vl)); 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 = outNm; rstLyr.Visible = false; mp.AddLayer(rstLyr); } outrastername = outNm; 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 Making Raster" + t); rp.enableClose(); this.Close(); } }
private void setInRs() { IEnvelope env = new EnvelopeClass(); double mx, my; IRaster2 rs = (IRaster2)rsUtil.createRaster(valueraster); IPnt cellSize = valueraster.RasterInfo.CellSize; rs.PixelToMap((int)topleft.X, (int)topleft.Y, out mx, out my); env.PutCoords(mx, my - (cellSize.Y * vpixelBlock.Height), mx + (cellSize.X * vpixelBlock.Width), my); inrs = rsUtil.constantRasterFunction((IRaster)rs, env, 0, cellSize); }
private void buildPathAllocation() { IDistanceOp2 dOp = new RasterDistanceOpClass(); IRasterAnalysisEnvironment rasterAnalysisEnvironment = (ESRI.ArcGIS.GeoAnalyst.IRasterAnalysisEnvironment)dOp; rasterAnalysisEnvironment.OutSpatialReference = ((IGeoDataset)Dem).SpatialReference; rasterAnalysisEnvironment.OutWorkspace = OutWorkspace; object ext = ((IGeoDataset)RoadFeatureClass).Extent; object snap = ((IGeoDataset)Dem); rasterAnalysisEnvironment.SetCellSize(ESRI.ArcGIS.GeoAnalyst.esriRasterEnvSettingEnum.esriRasterEnvValue, Dem); rasterAnalysisEnvironment.SetExtent(ESRI.ArcGIS.GeoAnalyst.esriRasterEnvSettingEnum.esriRasterEnvValue, ext, Dem); IRasterAnalysisGlobalEnvironment analysisGlobalEnv = (IRasterAnalysisGlobalEnvironment)dOp; analysisGlobalEnv.AvoidDataConversion = true; IRasterOpBase rasOpBase = (IRasterOpBase)dOp; IRasterDatasetName rasDatasetName; rasDatasetName = new RasterDatasetNameClass(); IDatasetName datasetName; datasetName = (IDatasetName)rasDatasetName; datasetName.WorkspaceName = (IWorkspaceName)((IDataset)OutWorkspace).FullName; string onRoadNm = rsUtil.getSafeOutputName(OutWorkspace, "onRoadHr"); datasetName.Name = onRoadNm; rasOpBase.AddOutputDatasetName(0, datasetName); object noVl = Type.Missing; IFunctionRasterDataset cr1 = rsUtil.calcArithmaticFunction(RoadRaster, speedConFactor, esriRasterArithmeticOperation.esriRasterMultiply); IFunctionRasterDataset costRs = rsUtil.calcArithmaticFunction(1, cr1, esriRasterArithmeticOperation.esriRasterDivide); IGeoDataset rpdOut = dOp.PathDistance((IGeoDataset)FacilityFeatureClass, costRs, Dem, noVl, noVl, noVl, noVl, noVl, noVl);//outputs in hours FunctionAccumulatedPathDistance = rsUtil.createIdentityRaster((IRaster)rpdOut); // Use FunctonAccumulated Path Distance (hours) for allocation string frRoadDist = rsUtil.getSafeOutputName(OutWorkspace, "offRoadHr"); datasetName.Name = frRoadDist; string frRoadAllo = rsUtil.getSafeOutputName(OutWorkspace, "onRoadAllo"); IRasterDatasetName rasDatasetName2 = new RasterDatasetNameClass(); IDatasetName datasetName2 = (IDatasetName)rasDatasetName2; datasetName2.WorkspaceName = (IWorkspaceName)((IDataset)OutWorkspace).FullName; datasetName2.Name = frRoadAllo; string frRoadBack = rsUtil.getSafeOutputName(OutWorkspace, "offRoadBack"); IRasterDatasetName rasDatasetName3 = new RasterDatasetNameClass(); IDatasetName datasetName3 = (IDatasetName)rasDatasetName3; datasetName3.WorkspaceName = (IWorkspaceName)((IDataset)OutWorkspace).FullName; datasetName3.Name = frRoadBack; rasOpBase.AddOutputDatasetName(0, datasetName); rasOpBase.AddOutputDatasetName(1, datasetName3); rasOpBase.AddOutputDatasetName(2, datasetName2); IFunctionRasterDataset costRS = null; //add in barriers to costRS if (OffRoadSpeedRaster != null) { IFunctionRasterDataset c1 = rsUtil.calcArithmaticFunction(OffRoadSpeedRaster, speedConFactor, esriRasterArithmeticOperation.esriRasterMultiply); costRS = rsUtil.calcArithmaticFunction(1, c1, esriRasterArithmeticOperation.esriRasterDivide); } else { costRS = rsUtil.constantRasterFunction(FunctionAccumulatedPathDistance, 1 / (OffRoadSpeed * speedConFactor)); } //add in barriers to costRs IFunctionRasterDataset rdCs = null;//rsUtil.calcArithmaticFunction(FunctionAccumulatedPathDistance, 1000, esriRasterArithmeticOperation.esriRasterMultiply, rstPixelType.PT_LONG); if (BarriersFeatureClass != null) { IFunctionRasterDataset[] rslt = addBarrierRasters(costRS, FunctionAccumulatedPathDistance); costRS = rslt[0]; rdCs = rslt[1]; } else { rdCs = rsUtil.calcArithmaticFunction(FunctionAccumulatedPathDistance, 1000, esriRasterArithmeticOperation.esriRasterMultiply, rstPixelType.PT_LONG); } IGeoDataset rpdOut2 = dOp.PathDistanceFull((IGeoDataset)rdCs, true, false, true, costRS, Dem, noVl, noVl, noVl, noVl, noVl, rdCs); IRasterBandCollection rsbc = (IRasterBandCollection)rpdOut; FunctionAccumulatedFromPathDistance = rsUtil.getBand((IRaster)rpdOut2, 0); FunctionAccumulatedPathAllocation = rsUtil.getBand((IRaster)rpdOut2, 1); }