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
總結
以上是生活随笔為你收集整理的ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起从头学习Flex
- 下一篇: MySql5.7.11 for Wind