1、保存栅格数据(注意:保存的时候不要忘记要将栅格数据保存到栅格数据集工作空间中,同时还有栅格的扩展名一定要加上。
)Public Sub SaveRaster()Dim pMxDoc As IMxDocumentDim pMap As IMapSet pMxDoc = Application.DocumentSet pMap = pMxDoc.FocusMappMap.DeleteLayer yer(0)Dim pRasterDataset As IRasterDatasetDim pWks As IRasterWorkspaceDim pWksFact As IWorkspaceFactorySet pWksFact = New RasterWorkspaceFactorySet pWks = pWksFact.OpenFromFile("D:\Projects\ZLS\temp", 0)Dim pRBC As IRasterBandCollectionSet pRasterDataset = pWks.OpenRasterDataset("test")'Dim pRBC As IRasterBandCollectionDim pRLayer As IRasterLayerSet pRLayer = New RasterLayerpRLayer.CreateFromDataset pRasterDatasetDim pRaster As IRasterSet pRaster = pRLayer.RasterSet pRBC = pRasterDim pDs As IDatasetSet pDs = pRBC.SaveAs("test", pWks, "TIFF") copyright pMap.AddLayer pRLayerEnd Sub2、根据已有数据字段,创建shape文件,并将数据插入到shape文件中(delphi代码)function CreateNewShape(pCursor: IFeatureCursor; pFCls: IFeatureClass; pPath: WideString; pNewFClsName:WideString): IFeatureClass;varpShapeFieldName, ConfigKeyword: WideString;pNewFCls: IFeatureClass;pFeature: IFeature;pNewFCursor: IFeatureCursor;pFeatureBuffer: IFeatureBuffer;pFields: IFields;pShape: IGeometry;pGeoType: esriGeometryType;pWFact: IWorkspaceFactory;pWorkspace: IWorkspace;pWorkspaceEdit: IWorkspaceEdit;pFWks: IFeatureWorkspace;pDataset: IDataset;pCLSID: IUID;pEXTCLSID: IUID;pNewID: OleVariant;bl: wordbool;i, pFieldCount: integer;pValue: OleVariant;beginConfigKeyword := '';//Determine the appropriate geometry type corresponding the the feature typeif pCLSID = nil thenbeginpFCls.Get_CLSID(pCLSID);pFCls.Get_ShapeType(pGeoType);end;//create fields collectionif pFields = nil thenbeginpFCls.Get_Fields(pFields);end;//get geometry field namepFCls.Get_ShapeFieldName(pShapeFieldName);pEXTCLSID := nil;pWFact:=CoshapefileWorkspaceFactory.create as IWorkspaceFactory;pWFact.OpenFromFile(pPath, 0, pWorkspace);pFWks := pWorkspace as IFeatureWorkspace;bl := NameExits(pWorkspace, pNewFClsName);//create shapefile in the temp folderif not bl thenbeginpFWks.CreateFeatureClass(pNewFClsName, pFields, pCLSID, pEXTCLSID, pGeoType, pShapeFieldName,ConfigKeyword, pNewFCls);endelsebeginpFWks.OpenFeatureClass(pNewFClsName, pNewFCls);pDataset := pNewFCls as IDataset;pDataset.Delete; copyright pFWks.CreateFeatureClass(pNewFClsName, pFields, pCLSID, pEXTCLSID, pGeoType, pShapeFieldName,ConfigKeyword, pNewFCls);end;//Add the features to this ShapeFilepWorkspaceEdit := pWorkspace as IWorkspaceEdit;pWorkspaceEdit.StartEditing(true);pWorkspaceEdit.StartEditOperation;pNewFCls.CreateFeatureBuffer(pFeatureBuffer);pNewFCls.Insert(true, pNewFCursor);pCursor.NextFeature(pFeature);pFeature.Get_Fields(pFields);pFields.Get_FieldCount(pFieldCount);while not (pFeature = nil) dobeginfor i := 0 to pFieldCount - 1 dobeginpFeature.Get_Value(i, pValue);pFeatureBuffer.Set_Value(i, pValue);end;内容来自GIS公园pFeature.Get_Shape(pShape);pFeatureBuffer.Set_Shape(pShape);pNewFCursor.InsertFeature(pFeatureBuffer, pNewID);pCursor.NextFeature(pFeature);end;pNewFCursor.Flush;pWorkspaceEdit.StopEditOperation;pWorkspaceEdit.StopEditing(true);//Get ResaultCreateNewShape := pNewFCls;end;3、渲染栅格图层Public Sub SetRasterRenderer()Dim NumOfClass As IntegerNumOfClass = 5' Get MapDim pMxDoc As IMxDocumentSet pMxDoc = ThisDocumentDim pMap As IMapSet pMap = pMxDoc.FocusMap' Get raster input from layerDim pRLayer As IRasterLayerSet pRLayer = yer(0)Dim pRaster As IRasterSet pRaster = pRLayer.Raster' Create classfy renderer and QI RasterRenderer interface Dim pClassRen As IRasterClassifyColorRampRenderer Set pClassRen = New RasterClassifyColorRampRenderer Dim pRasRen As IRasterRendererSet pRasRen = pClassRencopyright ' Set raster for the render and updateSet pRasRen.Raster = pRasterpClassRen.ClassCount = NumOfClasspRasRen.Update' Create a color ramp to useDim pRamp As IAlgorithmicColorRampSet pRamp = New AlgorithmicColorRamppRamp.Size = NumOfClassDim pFColor As IColorDim pTColor As IColorSet pFColor = New RgbColorSet pTColor = New RgbColorpFColor.RGB = RGB(10, 100, 10)pTColor.RGB = RGB(60, 0, 60)pRamp.FromColor = pFColorpRamp.ToColor = pTColorpRamp.CreateRamp True' Create symbol for the classesDim pFSymbol As IFillSymbolSet pFSymbol = New SimpleFillSymbol' loop through the classes and apply the color and label Dim i As IntegerFor i = 0 To pClassRen.ClassCount - 1pFSymbol.Color = pRamp.Color(i)pClassRen.Symbol(i) = pFSymbolbel(i) = "Class" & CStr(i)Next i' Update the renderer and plug into layerpRasRen.UpdateSet pRLayer.Renderer = pClassRenpMxDoc.ActiveView.RefreshpMxDoc.UpdateContents' Release memeorySet pMxDoc = Nothing本文来GIS公园Set pMap = NothingSet pRLayer = NothingSet pRaster = NothingSet pRasRen = NothingSet pClassRen = NothingSet pRamp = NothingSet pFSymbol = Nothing End Sub内容来自GIS公园。