ArcEngine开发入门PPT教学课件_第1页
ArcEngine开发入门PPT教学课件_第2页
ArcEngine开发入门PPT教学课件_第3页
ArcEngine开发入门PPT教学课件_第4页
ArcEngine开发入门PPT教学课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、MapControl的图层管理 AddLayer(layer, index) AddLayerFromFile(path, index) AddShapeFile(path, filename) DeleteLayer(index) MoveLayerTo(fromIndex, toIndex) get_Layer(index) LayerCount第1页/共29页添加ShapeFile图层void AddShapeFileToMap(string shapeFolder, string shapeFile) m_mapControl. AddShapeFile(shapeFolder, sh

2、apeFile) ;第2页/共29页void AddShapeFileToMap(string shapeFolder, string shapeFile) IWorkspaceFactory wsf = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace ws = wsf.OpenFromFile(shapeFolder, 0) as IFeatureWorkspace; IFeatureClass fc = ws.OpenFeatureClass(shapeFile); IFeatureLayer layer = new Feat

3、ureLayerClass(); layer.FeatureClass = fc; layer.Name = (fc as IDataset).Name; m_mapControl.AddLayer(layer, 0);第3页/共29页添加栅格图层void AddRasterFileToMap(string rasterFolder, string rasterFile)IRasterLayer layer = new RasterLayerClass(); layer.CreateFromFilePath(rasterFolder + + rasterFile); layer.Name =

4、rasterFile; m_mapControl.AddLayer(layer, 0);第4页/共29页void AddRasterFileToMap (string folderName, string datasetName)IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass(); IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(folderName, 0); IRasterDataset

5、 rasterDataset = rasterWorkspace.OpenRasterDataset(datasetName); IRasterLayer rasterLayer = new RasterLayerClass();rasterLayer.CreateFromDataset(rasterDataset);m_mapControl.AddLayer(layer, 0);第5页/共29页地图缩放的控制 修改m_mapControl.Extent可达到缩放效果。 缩放到任意范围:构建一个Envelope 缩放到图层:ILayer. AreaOfInterest 缩放到某地物:IGeom

6、etry.Envelope 缩放到选择集:合并选择集中所有Geometry的Envelope第6页/共29页图层的Visible控制 ILayer.Visible第7页/共29页几何图形 IGeometry:几何图形 IPoint:点状图形,继承IGeometry IEnvelope:矩形,继承IGeometry IPolygon:多边形,继承IGeometry IPolyline:线,继承IGeometry第8页/共29页符号 ISymbol:符号 IMarkerSymbol:点状符号 ILineSymbol:线状符号(线型) IFillSymbol:填充符号(填充图案)第9页/共29页Si

7、mpleMarkerSymbolISimpleMarkerSymbol CreateSimpleMarkerSymbol(IRgbColor rgbColor, esriSimpleMarkerStyle inputStyle) if(rgbColor = null | inputStyle = null) return null; ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbolClass(); simpleMarkerSymbol.Color = rgbColor; simpleMarkerSymbol.Styl

8、e = inputStyle; return simpleMarkerSymbol; 第10页/共29页SimpleLineSymbolpublic ISimpleLineSymbol CreateSimpleLineSymbol(IRgbColor rgbColor, double inWidth, esriSimpleLineStyle inStyle) if(rgbColor = null) return null; ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Sty

9、le = inStyle; simpleLineSymbol.Color = rgbColor; simpleLineSymbol.Width = inWidth; return simpleLineSymbol;第11页/共29页SimpleFillSymbolpublic ISimpleFillSymbol CreateSimpleFillSymbol(IRgbColor fillColor, esriSimpleFillStyle fillStyle, IRgbColor borderColor, esriSimpleLineStyle borderStyle, double borde

10、rWidth) if(fillColor = null | fillStyle = null | borderColor = null | borderStyle = null) return null; ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Width = borderWidth; simpleLineSymbol.Color = borderColor; simpleLineSymbol.Style = borderStyle; ISimpleFillSymbol

11、 simpleFillSymbol = new SimpleFillSymbolClass(); simpleFillSymbol.Outline = simpleLineSymbol; simpleFillSymbol.Style = fillStyle; simpleFillSymbol.Color = fillColor; return simpleFillSymbol;第12页/共29页矢量图层渲染 矢量图层: IFeatureRenderer IGeoFeatureLayer.Renderer; 设置新的Renderer后刷新 layer.Renderer = renderer; m

12、_mapControl.ActiveView.Refresh(); m_tocControl.Update();第13页/共29页IFeatureRenderer ISimpleRenderer:简单渲染(所有要素采用相同的渲染方式) IUniqueValueRenderer:唯一值分类渲染 IClassBreaksRenderer:连续值分级渲染第14页/共29页SimpleRenderer 所有要素采用相同的渲染方式 根据图层的要素类型创建一个Symbol第15页/共29页void SetFeatureLayerSimpleRenderer(IFeatureLayer layer, ICo

13、lor outlineColor,IColor fillColor) ISimpleRenderer pRender = new SimpleRendererClass(); ISimpleFillSymbol symd = new SimpleFillSymbolClass(); symd.Style = esriSimpleFillStyle.esriSFSSolid; symd.Color = fillColor; pRender.Symbol = symd as ISymbol; (layer as IGeoFeatureLayer).Renderer = pRender as IFe

14、atureRenderer; 第16页/共29页UniqueValueRenderer 字段:至少一个,离散类型,一般式整数或字符串 有限的字段值 每个字段值对应的Symbol 每个字段值对应的Label DefaultSymbol第17页/共29页 private static void SetFeatureLayerUniqueValueRenderer(IFeatureLayer layer, string field, string values, IColor colors) IUniqueValueRenderer pRender = new UniqueValueRenderer

15、Class(); ISimpleFillSymbol symd = new SimpleFillSymbolClass(); symd.Style = esriSimpleFillStyle.esriSFSSolid; symd.Outline.Width = 0.4;pRender.FieldCount = 1; pRender.set_Field(0, field); pRender.DefaultSymbol = symd as ISymbol; pRender.UseDefaultSymbol = true; for (int i = 0; i values.Length; i+) I

16、SimpleFillSymbol symx = new SimpleFillSymbolClass(); symx.Style = esriSimpleFillStyle.esriSFSSolid; symx.Outline.Width = 0.4; symx.Color = colorsi; pRender.AddValue(valuesi, field, symx as ISymbol); pRender.set_Label(valuesi, valuesi);pRender.ColorScheme = Custom; pRender.set_FieldType(0, true); / 表

17、明字段是否为string类型 (layer as IGeoFeatureLayer).Renderer = pRender as IFeatureRenderer;第18页/共29页ClassBreaksRenderer 字段:必须是数值类型 MinimumBreak:最小分段值 Breaks:分段值(不含MinimumBreak),需要n个 每段对应的Symbol 每段对应的Label 可用AlgorithmicColorRamp来设置渐变颜色第19页/共29页 IClassBreaksRenderer CreateClassBreaksRenderer(string field, doub

18、le breaks, IColor colors) IClassBreaksRenderer pRender = new ClassBreaksRendererClass(); pRender.Field = field; pRender.BreakCount = breaks.Length-1; pRender.MinimumBreak = breaks0; for (int i = 0; i breaks.Length-1; i+) pRender.set_Break(i, breaksi + 1); pRender.set_Label(i, string.Format(0 - 1, br

19、eaksi, breaksi + 1); IFillSymbol pSimpleFillSym = new SimpleFillSymbolClass(); pSimpleFillSym.Color = colorsi; pRender.set_Symbol(i, pSimpleFillSym as ISymbol); return pRender;第20页/共29页用AlgorithmicColorRamp获得渐变颜色 IAlgorithmicColorRamp pColorRamp = new AlgorithmicColorRamp(); pColorRamp.Algorithm = e

20、sriColorRampAlgorithm.esriCIELabAlgorithm; IRgbColor pColor1 = new RgbColorClass() ; IRgbColor pColor2 = new RgbColorClass(); pColor1.Red = 255; pColor1.Green = 210; pColor1.Blue = 210; pColor2.Red = 190; pColor2.Green = 0; pColor2.Blue = 170; pColorRamp.FromColor = pColor1; pColorRamp.ToColor = pCo

21、lor2; pColorRamp.Size = breaks.Length; bool ok; pColorRamp.CreateRamp(out ok); IEnumColors pEnumColors = pColorRamp.Colors; pEnumColors.Reset();。 pSimpleFillSym.Color = pEnumColors.Next();。第21页/共29页栅格图层渲染 栅格图层 IRasterRenderer IRasterLayer.Renderer; 设置新的Renderer后刷新renderer.Update(); layer.Renderer =

22、renderer; m_mapControl.ActiveView.Refresh(); m_tocControl.Update();第22页/共29页IRasterRenderer IRasterUniqueValueRenderer:唯一值分类渲染 IRasterClassifyColorRampRenderer:连续值分级渲染 IRasterRGBRenderer:RGB渲染,指定R、G、B波段第23页/共29页RasterUniqueValueRenderer 一般针对有RasterAttributeTable的栅格 RAT: OID、VALUE、COUNT、用户字段(optional

23、) Raster:IRasterLayer.Raster、IRasterDataset.CreateDefaultRaster() 字段 字段值:从RAT来 每个字段值对应的符号(FillSymbol) 每个字段值对应的Label 可用RandomColorRamp获得随机颜色第24页/共29页 public IRasterRenderer UnqueValueRenderer(IRasterLayer rasterLayer) IRaster2 raster = (IRaster2)rasterLayer.Raster; ITable rasterTable = raster.Attribu

24、teTable; if (rasterTable = null) return null; int tableRows = rasterTable.RowCount(null); IRgbColor colors = new RgbColorClasstableRows; 。 IRasterUniqueValueRenderer uvRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer rasterRenderer = (IRasterRenderer)uvRenderer; rasterRenderer.Raster

25、 = rasterLayer.Raster; rasterRenderer.Update(); uvRenderer.set_ClassCount(0, tableRows); uvRenderer.Field = Value; /Or any other field in the table. IRow row; ISimpleFillSymbol fillSymbol; for (int i = 0; i tableRows; i+) row = rasterTable.GetRow(i); uvRenderer.AddValue(0, i, Convert.ToByte(row.get_

26、Value(1); / Assuming the raster is 8-bit. uvRenderer.set_Label(0, i, Convert.ToString(row.get_Value(1); fillSymbol = new SimpleFillSymbolClass(); fillSymbol.Color = colori; uvRenderer.set_Symbol(0, i, (ISymbol)fillSymbol); return rasterRenderer; 第25页/共29页用RandomColorRamp获得随机颜色 int tableRows = raster

27、Table.RowCount(null); IRandomColorRamp colorRamp = new RandomColorRampClass();colorRamp.Size = tableRows;colorRamp.Seed = 100;bool createColorRamp;colorRamp.CreateRamp(out createColorRamp); fillSymbol.Color = colorRamp.get_Color(i);第26页/共29页RasterClassifyColorRampRenderer 针对连续值的栅格 Raster:IRasterLayer.Raster、IRasterDataset.CreateDefaultRaster() ClassCount,自动按NaturalBreaks方式计算Breaks进行分段,也可设为

温馨提示

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

评论

0/150

提交评论