用shapefile切割rasterdataset

Sub ExtractionOfRaster()

Dim app As IApplication
Set app = Application

Dim pMxDocument As IMxDocument
Set pMxDocument = Application.Document

Dim pMap As IMap
Set pMap = pMxDocument.FocusMap

Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMap.Layer(0)

Dim pRasterLayer As IRasterLayer
Set pRasterLayer = pMap.Layer(1)

Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureLayer.FeatureClass

Dim pPolygon As IPolygon
Set pPolygon = pFeatureClass.GetFeature(0).Shape

Dim pExtractionOp As IExtractionOp
Set pExtractionOp = New RasterExtractionOp

Dim pInputDataset As IGeoDataset
Set pInputDataset = pRasterLayer.Raster


Dim pOutputDataset As IGeoDataset
Set pOutputDataset = pExtractionOp.Polygon(pInputDataset, pPolygon, False) 'false表示保留shapefile以外的部分,ture表示保留shapefile以内的部分

 Dim pWS As IWorkspace
 Dim pWSF As IWorkspaceFactory
 Set pWSF = New RasterWorkspaceFactory
 Set pWS = pWSF.OpenFromFile("c:\temp", 0) '结果数据的输出目录
 Dim pRWS As IRasterWorkspace2 ' 用来create rasterdataset
 Set pRWS = pWS
 

Dim pSaveAs As ISaveAs
Set pSaveAs = pOutputDataset

Dim outdataset As IDataset
Set outdataset = pSaveAs.SaveAs("new2.tif", pRWS, "TIFF")

MsgBox "GOOD!"
End Sub

原文地址:https://www.cnblogs.com/zhangjun1130/p/1746372.html