Because the problem has been solved, the Code is now organized for everyone. Image Data cropping I am referring to the scrsgjh post (vb code), original post address http://bbs.esrichina-bj.cn/ESRI/viewthread.php? Tid = 4152 & highlight = % B6 % E0 % B1 % DF % D0 % CE % 2 Bscrsgjh // Crop images IGeometry clipGeo = axMapControl1.TrackPolygon ();// ILayer layer = axMapControl1.get _ Layer (I); // The image layer to crop IRasterLayer pRasterLayer = layer as IRasterLayer; IRaster pRaster = pRasterLayer. Raster; IRasterProps pProps = pRaster as IRasterProps; Object cellSizeProvider = pProps. MeanCellSize (). X; IGeoDataset pInputDataset = pRaster as IGeoDataset; IExtractionOp pExtractionOp = new RasterExtractionOpClass (); IRasterAnalysisEnvironment pRasterAnaEnvir = pExtractionOp as IRasterAnalysisEnvironment; PRasterAnaEnvir. SetCellSize (esriRasterEnvSettingEnum. esriRasterEnvValue, ref cellSizeProvider ); Object extentProvider = clipGeo. Envelope; Object snapRasterData = Type. Missing; PRasterAnaEnvir. SetExtent (esriRasterEnvSettingEnum. esriRasterEnvValue, ref extentProvider, ref snapRasterData ); IGeoDataset pOutputDataset = pExtractionOp. Polygon (pInputDataset, clipGeo as ipolympus Gon, true ); IRaster clipRaster; // IRaster obtained after Cropping If (pOutputDataset is IRasterLayer) { IRasterLayer rasterLayer = pOutputDataset as IRasterLayer; ClipRaster = rasterLayer. Raster; } Else if (pOutputDataset is IRasterDataset) { IRasterDataset rasterDataset = pOutputDataset as IRasterDataset; ClipRaster = rasterDataset. CreateDefaultRaster (); } Else if (pOutputDataset is IRaster) { ClipRaster = pOutputDataset as IRaster; } Else { Return; } // Save the clipRaster after cropping. // If the image is saved as an img Image File IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass (); IWorkspace pWorkspace = pWKSF. OpenFromFile (@ "C: \ temp", 0 ); ISaveAs pSaveAs = clipRaster as ISaveAs; PSaveAs. SaveAs ("test. img", pWorkspace, "IMAGINE Image "); // If it is stored in mdb IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass (); PRasterStorageDef. CompressionType = esriRasterCompressionType. esrirastercompression2000; PRasterStorageDef. CompressionQuality = 50; PRasterStorageDef. TileHeight = 128; PRasterStorageDef. TileWidth = 128; IWorkspaceFactory pWKSF = new AccessWorkspaceFactoryClass (); IWorkspace pWorkspace = pWKSF. OpenFromFile (@ "C: \ temp \ test. mdb", 0 ); ISaveAs2 pSaveAs = clipRaster as ISaveAs2; PSaveAs. SaveAsRasterDataset ("test", pWorkspace, "gdb", pRasterStorageDef ); // You can also use the IRasterWorkspaceEx SaveAsRasterDataset method to save the data to mdb. IWorkspaceFactory pWKSF = new AccessWorkspaceFactoryClass (); IWorkspace pWorkspace = pWKSF. OpenFromFile (@ "C: \ temp \ test. mdb", 0 ); IRasterWorkspaceEx pRasterWKS = pWorkspace as IRasterWorkspaceEx; IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass (); PRasterStorageDef. CompressionType = esriRasterCompressionType. esrirastercompression2000; PRasterStorageDef. CompressionQuality = 50; PRasterStorageDef. PyramidLevel = 2; PRasterStorageDef. PyramidResampleType = rstResamplingTypes. RSP_BilinearInterpolation; PRasterStorageDef. TileHeight = 128; PRasterStorageDef. TileWidth = 128; IRasterDef pRasterDef = new RasterDefClass (); PRasterDef. Description = "rasterdataset "; PRasterDef. SpatialReference = axMapControl1.SpatialReference; IGeometryDef pGeoDef = new GeometryDefClass (); IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit; PGeoDefEdit. GeometryType_2 = esriGeometryType. esriGeometryPolygon; PGeoDefEdit. AvgNumPoints_2 = 4; PGeoDefEdit. GridCount_2 = 1; PGeoDefEdit. set_GridSize (0, 1000 ); PGeoDefEdit. SpatialReference_2 = axMapControl1.SpatialReference; IRasterDataset pRasterDataset = pRasterWKS. SaveAsRasterDataset ("test", clipRaster, pRasterStorageDef, "", pRasterDef, PGeoDef ); // You do not need to set the parameters: IRasterDataset pRasterDataset = pRasterWKS. SaveAsRasterDataset ("test", clipRaster, null, "", null, null ); |