ArcGIS的動態空間,可承載Table,Shp,Raster等數據。
我們的需求是,每天客戶有新的衛星數據,但是不同類型,有多波段Landsat衛星數據,有Modis數據等。不定期更新到共享文件夾,BS程序要能讀取並顯示。
首先想到的MapService的動態圖層空間功能。但遇到的問題是,動態空間的柵格數據無法正確的設置拉伸參數。https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-Sublayer.html#DynamicDataLayer
官方文檔描述的Renderer只針對,Shp,Table數據,對Raster的渲染無法進行,當然ImageService服務是可以的。但那個不符合我們需求。
最佳實踐
經過多輪測試,發現動態空間文件夾的柵格數據,ArcGISServer僅僅做最基礎的顯示:對多波段數據,不拉伸,且只認為是RGB波段,相當於Stretch為None,如下圖;另外,ArcGISServer對索引顏色的TIF可正確識別,比如南北極海冰數據。
這樣,就要求我們把各種多波段,各種數據處理好(拉伸好)再轉為RGB波段的TIF,放入動態圖層的共享空間。
勾選Use Renderer和Force RGB,會使轉出的TIF為RGB。
Compression Type,可選,無所謂。
然后,再對導出的圖做下金字塔。 這樣,放置在動態圖層文件夾的數據,前端就能正確顯示了。
注意,制作完金字塔后,會有ovr和aux.xml,2個文件。其中ovr為金字塔本身。aux.xml要注意,僅僅1K大小才正確。
因為若點擊了Calculate Statistics統計數據功能,則aux.xml文件就會變大,因為此功能會寫入一些數據在aux文件。
變大后的aux.xml文件,會影響ArcGISServer讀取動態突出文件夾TIF時的行為,導致BS端顯示出一些拉伸特性。
現在可以驗證結果了:
在Export頁面,Dynamic Layers:輸入如下內容,即可看到動態圖層空間的顯示。注意Bonding Box。
[{
"id": 501,
"source":
{
"type": "dataLayer",
"dataSource": {
"dataSourceName": "m1.tif",
"workspaceId": "WS1",
"type": "raster"
}
} }]