Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }