ArcEngine開發(fā)入門PPT教學課件_第1頁
ArcEngine開發(fā)入門PPT教學課件_第2頁
ArcEngine開發(fā)入門PPT教學課件_第3頁
ArcEngine開發(fā)入門PPT教學課件_第4頁
ArcEngine開發(fā)入門PPT教學課件_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論