版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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:連續(xù)值分級渲染第14頁/共29頁SimpleRenderer 所有要素采用相同的渲染方式 根據(jù)圖層的要素類型創(chuàng)建一個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 字段:至少一個,離散類型,一般式整數(shù)或字符串 有限的字段值 每個字段值對應的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 字段:必須是數(shù)值類型 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:連續(xù)值分級渲染 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 針對連續(xù)值的柵格 Raster:IRasterLayer.Raster、IRasterDataset.CreateDefaultRaster() ClassCount,自動按NaturalBreaks方式計算Breaks進行分段,也可設為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成長作文之成長的故事作文指導
- 2024年汽車輪胎壓力監(jiān)測系統(tǒng)項目建議書
- 2024年高密度聚乙烯土工膜合作協(xié)議書
- 2013年青海省西寧市中考英語【原卷版】
- 2024年轉向齒條項目合作計劃書
- 2013年湖南省益陽市中考化學試卷(含解析版)
- 2024年賽力皮革染料項目合作計劃書
- 靜脈留置針并發(fā)癥的預防與處理課件
- 承臺、筏板基礎施工方案
- 攝影器材快遞配送服務
- 餐飲招商加盟代理合同范本
- 廣州公車路線圖
- 青少年網絡安全教育課件PPT
- 《燕歌行(并序)》課件
- 國家開放大學-《中國古代教育哲學》形成性考核作業(yè)作業(yè)冊解答
- 數(shù)學組備課組期末成績分析
- 最新焊接與熱切割作業(yè)安全技能課件
- 辦公室衛(wèi)生值日制度5篇
- 諸子百家-優(yōu)質課件
- 蘇教版小學科學三年級上冊全冊完整課件
- 工具:幼兒發(fā)展評價內容縱橫解讀與觀察點指引
評論
0/150
提交評論