GIS二次开发经典代码.doc_第1页
GIS二次开发经典代码.doc_第2页
GIS二次开发经典代码.doc_第3页
GIS二次开发经典代码.doc_第4页
GIS二次开发经典代码.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、保存栅格数据(注意:保存的时候不要忘记要将栅格数据保存到栅格数据集工作空间中,同时还有栅格的扩展名一定要加上。) 内容来自GIS公园 Public Sub SaveRaster() Dim pMxDoc As IMxDocument Dim pMap As IMap Set pMxDoc = Application.Document Set pMap = pMxDoc.FocusMap pMap.DeleteLayer pMap.Layer(0) Dim pRasterDataset As IRasterDataset Dim pWks As IRasterWorkspace Dim pWksFact As IWorkspaceFactory Set pWksFact = New RasterWorkspaceFactory Set pWks = pWksFact.OpenFromFile(D:ProjectsZLStemp, 0) Dim pRBC As IRasterBandCollection Set pRasterDataset = pWks.OpenRasterDataset(test) Dim pRBC As IRasterBandCollection Dim pRLayer As IRasterLayer Set pRLayer = New RasterLayer pRLayer.CreateFromDataset pRasterDataset Dim pRaster As IRaster Set pRaster = pRLayer.Raster Set pRBC = pRaster Dim pDs As IDataset Set pDs = pRBC.SaveAs(test, pWks, TIFF) copyright pMap.AddLayer pRLayerEnd Sub2、根据已有数据字段,创建shape文件,并将数据插入到shape文件中(delphi代码) GIS公园 function CreateNewShape(pCursor: IFeatureCursor; pFCls: IFeatureClass; pPath: WideString; pNewFClsName:WideString): IFeatureClass;var pShapeFieldName, 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;begin ConfigKeyword := ; /Determine the appropriate geometry type corresponding the the feature type if pCLSID = nil then begin pFCls.Get_CLSID(pCLSID); 本文来GIS公园 pFCls.Get_ShapeType(pGeoType); end; /create fields collection if pFields = nil then begin pFCls.Get_Fields(pFields); end; /get geometry field name pFCls.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 folder if not bl then begin pFWks.CreateFeatureClass(pNewFClsName, pFields, pCLSID, pEXTCLSID, pGeoType, pShapeFieldName,ConfigKeyword, pNewFCls); end else begin pFWks.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 ShapeFile pWorkspaceEdit := 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) do begin for i := 0 to pFieldCount - 1 do begin pFeature.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); 内容来自GIS公园 /Get Resault CreateNewShape := pNewFCls;end; 内容来自GIS公园 3、渲染栅格图层Public Sub SetRasterRenderer() Dim NumOfClass As Integer NumOfClass = 5 Get Map Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap Get raster input from layer Dim pRLayer As IRasterLayer Set pRLayer = pMap.Layer(0) Dim pRaster As IRaster Set pRaster = pRLayer.Raster Create classfy renderer and QI RasterRenderer interface Dim pClassRen As IRasterClassifyColorRampRenderer Set pClassRen = New RasterClassifyColorRampRenderer Dim pRasRen As IRasterRenderer Set pRasRen = pClassRen copyright Set raster for the render and update Set pRasRen.Raster = pRaster pClassRen.ClassCount = NumOfClass pRasRen.Update Create a color ramp to use Dim pRamp As IAlgorithmicColorRamp Set pRamp = New AlgorithmicColorRamp pRamp.Size = NumOfClass Dim pFColor As IColor Dim pTColor As IColor Set pFColor = New RgbColor Set pTColor = New RgbColor pFColor.RGB = RGB(10, 100, 10) pTColor.RGB = RGB(60, 0, 60) pRamp.FromColor = pFColor pRamp.ToColor = pTColor pRamp.CreateRamp True Create symbol for the classes Dim pFSymbol As IFillSymbol Set pFSymbol = New SimpleFillSymbol loop through the classes and apply the color and label Dim i As Integer For i = 0 To pClassRen.ClassCount - 1 pFSymbol.Color = pRamp.Color(i) pClassRen.Symbol(i) = pFSymbol pClassRen.Label(i) = Class & CStr(i) Next i Update the renderer and plug into layer pRasRen.Update Set pRLayer.Renderer = pClassRen pMxDoc.ActiveView.Refresh pMxD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论