ArcGlobe三維制作_第1頁
ArcGlobe三維制作_第2頁
ArcGlobe三維制作_第3頁
ArcGlobe三維制作_第4頁
ArcGlobe三維制作_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

評論

0/150

提交評論