0

Clip a raster data with rectangle using ArcObjects. The rectangle is defined by clicked posision and fixed length and width.

I have written the code so far, but I get an error. Could someone please tell me how to do this?


        protected override void OnMouseDown(MouseEventArgs arg)
        {
            IActiveView pActiveView = (IActiveView)ArcMap.Document.FocusMap;
            //
            IPoint pt = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(arg.X, arg.Y);
            IRasterLayer pRasterLay = (IRasterLayer)ArcMap.Document.FocusMap.get_Layer(0);
            IdentifyPixelValue(pRasterLay.Raster, pt.X, pt.Y);
        }

        public static void IdentifyPixelValue(IRaster raster, double xMap, double yMap)
        {
            IRaster2 raster2 = (IRaster2)raster;
            int col = raster2.ToPixelColumn(xMap);
            int row = raster2.ToPixelRow(yMap);
            //
            object pixelValue = (object)raster2.GetPixelValue(0, col, row);



            if (pixelValue == null)
            {
                //No Data 
                System.Windows.Forms.MessageBox.Show("No Data");
            }
            else
            {
                //
                System.Windows.Forms.MessageBox.Show(pixelValue.ToString());
                System.Windows.Forms.MessageBox.Show(col.ToString() + ", " + row.ToString());
            }

            IEnvelope newExtent = new EnvelopeClass();

            envelope.XMin = xMap - 1024;

            envelope.XMax = xMap + 1024;

            envelope.YMin = yMap - 1024;

            envelope.YMax = yMap + 1024;

            clip = IRasterGeometryProc.Clip(envelope, raster);

        }
momo
  • 1

0 Answers0