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" } } }]
|