




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ArcGlobe控件中通過類型來添加圖層 GIS.GlobeCore.IGlobe globe,ESRI.ArcGIS.GlobeCore.esriGlobeLayerType globeLayerType, ESRI.ArcGIS.Carto.ILayer layer) if (globe = null) return;
2、; if (globeLayerType =ESRI.ArcGIS.GlobeCore.esriGlobeLayerType.esriGlobeLayerTypeElevation) if (layer is ES
3、RI.ArcGIS.Carto.IRasterLayer | layer is ESRI.ArcGIS.Carto.ITinLayer | la
4、yer is ESRI.ArcGIS.Carto.ITerrainLayer) globe.AddLayerType(layer, globeLayerType, true); &
5、#160; return;
6、60; / else if GlobeLayerType is esriGlobeLayerTypeDraped oresriGlobeLayerTypeFloating globe.AddLayerType(layer, globeLayerType, true); 2.向ArcGlobe中添加Graphi
7、cs LayergraphicsLayerName) / 創建graphics layer 并添加到 ArcGlobe ESRI.ArcGIS.Carto.IGraphicsContainer globeGraphicsLayer = newESRI
8、.ArcGIS.GlobeCore.GlobeGraphicsLayerClass(); ESRI.ArcGIS.Carto.ILayer layer = (ESRI.ArcGIS.Carto.ILayer)globeGraphicsLayer; layer.Name = graphicsLayerName; &
9、#160; ESRI.ArcGIS.Analyst3D.IScene scene = globe as ESRI.ArcGIS.Analyst3D.IScene; s
10、cene.AddLayer(layer, true); / 向graphics layer添加點元素 ESRI.ArcGIS.Carto.IElement markerElement = newESRI.ArcGIS.Carto.MarkerElementClass();
11、160; ESRI.ArcGIS.Analyst3D.ISimpleMarker3DSymbol simpleMarker3DSymbol = newESRI.ArcGIS.Analyst3D.SimpleMarker3DSymbolClass(); simpleMarker3DSymbol.Style =ESRI.ArcGIS.Analyst3D.esriSimple3DMarkerStyle.esri
12、S3DMSCone; / 設置相關屬性 simpleMarker3DSymbol.ResolutionQuality = 1; ESRI.ArcGIS.Display.IColor rgbColor =
13、new ESRI.ArcGIS.Display.RgbColorClass(); rgbColor.RGB = 255;rcGIS.Display.IMarkerSymbol markerSymbol =(ESRI.ArcGIS.Display.IMarkerSymbol)simpleMarker3DSymbol; mar
14、kerSymbol.Color =rgbColor; markerSymbol.Size = 100000; ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.
15、Geometry.PointClass(); point.PutCoords(-47, 44); markerElement.Geometry = point; / 添加到 graphics layer&
16、#160; ESRI.ArcGIS.Carto.IMarkerElement markerElement_2 =(ESRI.ArcGIS.Carto.IMarkerElement)markerElement; markerElement_2.Symbol = markerSymbol; &
17、#160; globeGraphicsLayer.AddElement(markerElement, 1); / 向graphics layer添加線元素 ESRI.ArcGIS.Carto.IElement lineElement = newESRI.ArcGIS.Cart
18、o.LineElementClass(); ESRI.ArcGIS.Analyst3D.ISimpleLine3DSymbol simpleLineSymbol3D = newESRI.ArcGIS.Analyst3D.SimpleLine3DSymbolClass(); simpleLineSymbol3D.Style =ESRI.
19、ArcGIS.Analyst3D.esriSimple3DLineStyle.esriS3DLSStrip; /設置顏色和大小 simpleLineSymbol3D.ResolutionQuality = 1;
20、60; rgbColor.RGB = 255000; ESRI.ArcGIS.Display.ILineSymbol lineSymbol = (ESRI.ArcGIS.Display.ILineSymbol)simpleLineSymbol3D; lineSymbol.Color = rgbColor;
21、60; lineSymbol.Width = 2; / 設置geometry ESRI.ArcGIS.Geometry.IPolyline polyline = newESRI.ArcGIS.Geometry.PolylineClass()
22、; ESRI.ArcGIS.Geometry.IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass(); fromPoint.PutCoords(-30, 44);
23、0; polyline.FromPoint = fromPoint; ESRI.ArcGIS.Geometry.IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass(); toPoint.PutCoords(-60, 44);
24、; polyline.ToPoint = toPoint; lineElement.Geometry = polyline; / 添加到 graphics layer &
25、#160; ESRI.ArcGIS.Carto.ILineElement lineElement_2 =(ESRI.ArcGIS.Carto.ILineElement)lineElement; lineElement_2.Symbol = lineSymbol; globeGraphicsLayer
26、.AddElement(lineElement, 1); 3.向ArcGlobe添加 KML 數據public void AddKMLData(System.String theKmlFile, ESRI.ArcGIS.GlobeCore.IGlobe globe,System.String kmlLayerName)
27、 Type kmlType = Type.GetTypeFromProgID("esriGlobeCore.KmlLayer"); ESRI.ArcGIS.GlobeCore.IKmlLayer kmlLayer = (ESRI.ArcGIS.GlobeCore.IKmlLayer)System.Activator.CreateInstance(kmlType);
28、; kmlLayer.DataPath = theKmlFile; kmlLayer.Name = kmlLayerName; ESRI.ArcGIS.Analyst3D.IScene scene = globe a
29、s ESRI.ArcGIS.Analyst3D.IScene; scene.AddLayer(kmlLayer as ESRI.ArcGIS.Carto.ILayer, true); public void AddVectorData(ESRI.ArcGIS.GlobeCore.IGl
30、obe globe,ESRI.ArcGIS.GlobeCore.esriGlobeLayerType globeLayerType, ESRI.ArcGIS.Carto.ILayer layer) if (globe = null | layer = null |
31、; globeLayerType =ESRI.ArcGIS.GlobeCore.esriGlobeLayerType.esriGlobeLayerTypeElevation | globeLayerType =ESRI.ArcGIS.GlobeCore.esriGlobeLayerType.esriGlobeLayerTypeUnknown)
32、160; return; ESRI.ArcG
33、IS.GlobeCore.IGlobeDisplay globeDisplay = globe.GlobeDisplay; ESRI.ArcGIS.GlobeCore.IGlobeDisplay2 globeDisplay2 = globeDisplay asESRI.ArcGIS.GlobeCore.IGlobeDisplay2;
34、globeDisplay2.PauseCaching = true; globe.AddLayerType(layer, globeLayerType, true); ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers globeDisplayLayers = globeDisplay asESRI.A
35、rcGIS.GlobeCore.IGlobeDisplayLayers; ESRI.ArcGIS.GlobeCore.IGlobeLayerProperties globeLayerProperties =globeDisplayLayers.FindGlobeProperties(layer); globeLayerProperti
36、es.IsDynamicallyRasterized = false; globeDisplay2.PauseCaching = false; 經過幾天的忙碌,又除去了網站程序中的一些Bug ,現在總結出ArcEngine三維開發控件ArcGlobe的一些常用代碼,張貼出來以饗大家,其中疏漏之處,懇請指正!1.按照適當的順序繪制ArcGlobe圖層public void GetSe
37、tGlobeDrawingOrder(ESRI.ArcGIS.GlobeCore.IGlobe globe) ESRI.ArcGIS.GlobeCore.IGlobeDisplay globeDisplay = globe.GlobeDisplay;
38、 ESRI.ArcGIS.GlobeCore.IGlobeDrawingOrder globeDrawingOrder = (ESRI.ArcGIS.GlobeCore.IGlobeDrawingOrder)globe;ESRI.ArcGIS.Carto.IEnumLayer enumLayer = globeDrawingOrder.OrderedLayers;ESRI.ArcGIS.Carto.IEnumLayer baseLayers = globe.get_GlobeLayers(null, true, true, true);ESRI.ArcGIS.Carto.IEnumLayer
39、floatingLayers = globe.get_GlobeLayers(null, false, false, true);ESRI.ArcGIS.GlobeCore.IGlobeLayerProperties globeLayerProperties;ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers globeDisplayLayers = (ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers)globeDisplay;System.Collections.ArrayList DrapedLayers = new Sys
40、tem.Collections.ArrayList();System.Collections.ArrayList ElevationLayers = new System.Collections.ArrayList();ESRI.ArcGIS.Carto.ILayer layer = baseLayers.Next(); while (layer != null)
41、60; globeLayerProperties = globeDisplayLayers.FindGlobeProperties(layer); if (globeLayerProperties.Type !=
42、ESRI.ArcGIS.GlobeCore.esriGlobeDataType.esriGlobeDataElevation) DrapedLayers.Add(layer); &
43、#160; else if (globeLayerProperties.Type = ESRI.ArcGIS.GlobeCore.esriGlobeDataType.esriGlobeDataElevation) &
44、#160; ElevationLayers.Add(layer); &
45、#160; /獲得下一層 layer = baseLayers.Next();
46、160; ESRI.ArcGIS.Carto.ILayer theDrapedLayer = (ESRI.ArcGIS.Carto.ILayer)DrapedLayers0; globeDrawingOrder.MoveBackward(theDrapedLayer);
47、60; globeDisplay.RefreshViewers(); /獲得浮動圖層 ESRI.ArcGIS.Carto.ILayer theFloatingLayer = floatingLayers.Next();
48、; while (theFloatingLayer != null) theFloatingLayer = floatingLayers.Next(); &
49、#160; 2.獲得BasicMappublic ESRI.ArcGIS.Carto.IBasicMap GetBasicMapFromGlobe(ESRI.ArcGIS.GlobeCore.IGlobe globe) ESRI.ArcGIS.Carto.IBasicMap basicMap = globe as ESRI.ArcGIS.Carto.IBasicMap; &
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇興化市招聘教師67人筆試備考題庫有答案詳解
- 2024-2025學年北京市中考英語模擬預測卷(含解析)
- 江蘇省揚州市高郵市2024-2025學年高三下學期第一次聯考物理試卷(解析版)
- 在淡藍色的世界里迎接元旦
- 護理中的醫患關系維護
- 房地產建設中的安全管理
- 項目生命周期中的房地產管理
- 德克士的品牌調性打造
- 數學 2024-2025學年人教版七年級數學下冊選擇題專練
- 環境經濟項目合同履行低碳經濟重點基礎知識點歸納
- 《社會保障概論》期末考試復習題庫(含答案)
- 人工智能與產業鏈供應鏈安全
- 飛行簽派員定期復訓:簽派資源管理
- 安徽工程大學畢業生就業協議書
- 2025版國家開放大學法學本科《知識產權法》期末紙質考試第三大題名詞解釋題庫
- 新能源汽車充電樁項目可行性研究報告模板及范文
- 電力市場概論張利課后參考答案
- 2024年【初中歷史】中考歷史試題(附答案)電子版可打印
- 工程設計重點難點分析及應對措施
- 防水材料質量檢測與控制考核試卷
- 高考物理一輪復習考點精講精練第34講 光電效應 波粒二象性(解析版)
評論
0/150
提交評論