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