阅读:1850回复:1
[转帖]用Shapefile文件挖GRID文件>> AO/MO开发 用Shapefile文件挖GRID文件 作者: wendy Sub CutRasByShp(sworkPath As String, pRasLyr As IRasterLayer, sShapeFileName As String, sGridFileName As String, pOutRas1 As IGeoDataset) sworkPath:打开的GRID文件路径 pRasLyr:要运算的GRID文件IrasterLayer格式数据层 sShapeFileName:用于切GRID文件的Shape文件名 sGridFileName:切后的GRID文件名 pOutRas1:切后的GRID文件的IGeoDataset格式数据层 '用SHP文件挖GRID文件 Sub CutRasByShp(sworkPath As String, pRasLyr As IRasterLayer, sShapeFileName As String, sGridFileName As String, pOutRas1 As IGeoDataset) Dim pWorkspaceFactory As IWorkspaceFactory Dim pFeatureWorkspace As IFeatureWorkspace Dim pFeaLyr As IFeatureLayer Dim pEnv As IRasterAnalysisEnvironment Dim pWks As IRasterWorkspace Dim pWksF As IWorkspaceFactory 'Create a new ShapefileWorkspaceFactory object and open a shapefile folder Set pWorkspaceFactory = New ShapefileWorkspaceFactory Set pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(sworkPath, 0) 'Create a new FeatureLayer and assign a shapefile to it Set pFeaLyr = New FeatureLayer Set pFeaLyr.FeatureClass = pFeatureWorkspace.OpenFeatureClass(sShapeFileName) pFeaLyr.Name = pFeaLyr.FeatureClass.AliasName Dim pTempDS As IGeoDataset Set pTempDS = pFeaLyr.FeatureClass ' Convert to raster Dim pConOp As IConversionOp Set pConOp = New RasterConversionOp Set pEnv = pConOp Dim pProp As IRasterProps Set pProp = pRasLyr.Raster pEnv.SetCellSize esriRasterEnvValue, pProp.MeanCellSize.X Dim sPath As String sPath = sworkPath ' delete the existing file Dim fs Set fs = CreateObject("Scripting.FileSystemObject") If fs.FileExists(sPath + "\" + "TempCov.img") Then fs.Deletefile (sPath + "\" + "TempCov.img") End If Dim pWs As IWorkspace Set pWksF = New RasterWorkspaceFactory Set pWs = pWksF.OpenFromFile(sworkPath, 0) ' Perform conversion Set pGeoDs = pConOp.ToRasterDataset(pTempDS, "IMAGINE Image", pWs, "TempCov.img") ' perform extraction Dim pOutRaster As IRaster Dim pRasBandC As IRasterBandCollection Dim pExtrOp As IExtractionOp ' Dim pOutRas1 As IGeoDataset Set pExtrOp = New RasterExtractionOp Set pOutRaster = pExtrOp.Raster(pRasLyr.Raster, pGeoDs) Set pRasBandC = pOutRaster Set pOutRas1 = pRasBandC.SaveAs(sGridFileName, pWs, "GRID") Set pWs = Nothing Set pTempDS = Nothing Set pConOp = Nothing Set pWorkspaceFactory = Nothing Set pFeatureWorkspace = Nothing Set pFeaLyr = Nothing Set pEnv = Nothing Set pWks = Nothing Set pWksF = Nothing End Sub |
|
2楼#
发布于:2004-04-10 15:28
好东东
|
|
|