关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
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"
}
} }]
最新文章
- d3 scale 学习笔记
- PHP用mb_string函数库处理与windows相关中文字符
- 2016HUAS暑假集训题1 H - N皇后问题
- ODOO从哪里开始??OpenERP的第一根线头儿
- android 学习资料
- PHP 查询时区与设置时区
- iOS开发——根据Url 获取图片尺寸
- centos nginx
- 【转】android官方侧滑菜单DrawerLayout详解
- 《JavaScript设计模式与开发实践》读书笔记之单例模式
- 流水线技术原理和Verilog HDL实现(转)
- 为什么说android UI操作不是线程安全的
- mysql 字符集更改与导入数据
- 【Spring源码解读】bean标签中的属性(一)你可能还不够了解的 scope 属性
- [jzoj]5257.小X的佛光
- 谷歌机翻英文字幕输出(Subtitle Edit)
- 最接近的三数之和(java实现)
- python常见错误
- 自定义指令(v-check、v-focus)的方法有哪些?它有哪些钩子函数?还有哪些钩子函数参数?
- hdu 4964 恶心模拟