日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务

發布時間:2025/6/15 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇博客中,我們已經在程序中添加了兩個服務,一個是切片地圖服務,另一個是三維場景服務。

這篇博客則會從整體上介紹幾種常用服務的使用方式。

先解釋兩個名詞:服務、圖層

服務:服務器對外提供功能的單元

圖層:應用程序組織要素的單元

服務和圖層,表現在程序中是這樣的:

<esri:ArcGISSceneLayer Name="BuildingsLayer" Source="http://scene.arcgis.com/arcgis/rest/services/Hosted/Buildings_Brest/SceneServer/layers/0"/>

其中http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer是服務,ArcGISTiledLayer是圖層。

動態地圖服務&切片地圖服務

動態地圖服務:用戶瀏覽地圖的時候由Server臨時繪制地圖的一種服務。

切片地圖服務:與動態地圖服務不同,切片是事先繪制好緩存起來的,而動態地圖服務則是在調用時,讀取地圖數據后臨時繪制的。

MapService:在ArcGIS Server的服務中,一個MapService地圖服務可能同時包含上面兩種服務的服務能力(動態地圖服務和切片地圖服務)。通過各種終端發布至ArcGIS Server的MapService,默認會開啟動態地圖服務能力,但是不一定有切片地圖服務能力。作為移動端開發人員,拿到的URL在結構上是看不出是否具有切片地圖服務能力的,只能通過在瀏覽器上輸入URL,在服務詳情中產看。如下圖,有Tile Info的MapService才有切片地圖服務能力。


既然地圖服務的URL一樣,那怎么去區別使用呢?

使用MapService的哪種能力,要通過API去控制,要看程序用什么圖層對象去承接MapService。

如果我用ArcGISMapImageLayer對象去承接,則使用的是動態地圖服務的能力,如果使用的是ArcGISTiledLayer對象去承接,則使用的是切片地圖服務的能力。

下面給出動態地圖服務加載的代碼和切片地圖服務加載的代碼。

<esri:Scene.OperationalLayers><esri:ArcGISMapImageLayer Source="http://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_by_Sex/MapServer"></esri:ArcGISMapImageLayer><esri:ArcGISTiledLayer Source="http://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_by_Sex/MapServer"></esri:ArcGISTiledLayer><esri:ArcGISSceneLayer Name="BuildingsLayer"Source="http://scene.arcgis.com/arcgis/rest/services/Hosted/Buildings_Brest/SceneServer/layers/0"/> </esri:Scene.OperationalLayers>

一個服務同時有動態地圖服務能力和切片服務能力的MapService,使用ArcGISMapImageLayer和使用ArcGISTiledLayer加載的最終效果一樣,但是加載時間長短區別很大。切片地圖服務是提前把每個比例尺下的地圖切割成小塊圖片,保存在服務器上。這樣客戶端在訪問地圖時,直接獲取需要的小塊圖片拼接成整幅地圖,而不是由服務器動態創建出一幅圖片再送到客戶端,極大程度提高了訪問速度。

要素服務

要素服務一般被用作要素在線編輯。服務的URL與MapServer的URL略有不同。示例URL:

http://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/FeatureServer

要素服務的末尾不是MapServer,而是FeatureServer,并且在要素服務使用的過程中,往往是使用FeatureServer的具體圖層。下面的代碼展示了如何在地圖中加載要素服務,至于要素服務怎么編輯,放到后面的內容中去探索。

Uri serviceUri = new Uri( "http://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/FeatureServer/0"); ServiceFeatureTable myFeatureTable =new ServiceFeatureTable(serviceUri); myFeatureTable.FeatureRequestMode= FeatureRequestMode.OnInteractionNoCache; FeatureLayer myFeatureLayer =newFeatureLayer(myFeatureTable); myMap.OperationalLayers.Add(myFeatureLayer);


影像服務

影像服務這里不做過多介紹,這里給出一個影像服務的示例URL,并給出服務加載代碼。

http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer

ImageServiceRaster serviceRaster = new ImageServiceRaster(new Uri("http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer")); serviceRaster.Loaded += (s, e) => {ArcGISImageServiceInfo serviceInfo = serviceRaster.ServiceInfo;IReadOnlyList<RenderingRuleInfo> renderingRuleInfos = serviceInfo.RenderingRuleInfos;RenderingRule renderingRule = new RenderingRule(renderingRuleInfos[3]);serviceRaster.RenderingRule = renderingRule;RasterLayer layer = new RasterLayer(serviceRaster); }; serviceRaster.LoadAsync();

總結

以上是生活随笔為你收集整理的ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。