单波段栅格数据发布为影像服务后通过js api读取到的像素值全都是0-255之间,如何才能获取到正确的值呢?希望各位老师能解答下

我的栅格图像的像素深度都是64位或者32位的,但是在api中通过pixelFilter下的pixelData获取到的pixelType全是U8,官网中的例子中获取到的pixelTpye是F32。 官网中的就正确获取到了..不知道是不是和这有关系?如果有的话那么发布影像服务的时候需要注意什么才能确保正确?
 
已邀请:

wrr

赞同来自:

我图层的pixelType是F32,为什么获取的像素的就变为了U8? 里面每个像素值也变为了0-255之间了
        /*设置栅格函数为没有*/
var rasterFun = new RasterFunction();
rasterFun.functionName = "None";

var params = new ImageServiceParameters();
params.renderingRule = rasterFun;


/*用来渲染的栅格图层*/
layer = new RasterLayer(url4, {
/*不透明度*/
opacity:0.5,
/*Function(pixelData) pixelData是栅格的数据,可以通过它访问设置栅格各个像素*/
pixelFilter: maskPixels,
/*参数对象*/
imageServiceParameters: params,

});

function maskPixels(pixelData) {
/*PixelBlock用于保存像素。它存储和解码从图像服务获取的源数据。*/
var pixelBlock = pixelData.pixelBlock;
/*表示来自客户端上显示的图像服务的像素的二维数组*/
var pixels = pixelBlock.pixels;//图层的pixelType是F32,为什么到这里就变为了U8?
/*无数据的掩模数组*/
var mask = pixelBlock.mask;
/*像素数量*/
var numPixels = pixelBlock.width * pixelBlock.height;
/*一个包含了当前范围内栅格各种属性的数组(如最大值,最小值)*/
var statistics = pixelBlock.statistics;

//这里的最大值最小值一直都是0-255
var maxVal = statistics[0].maxValue;
var minVal = statistics[0].minValue;

}


 

一点事都氵

赞同来自:

官网例子   我使用官网例子中的影像服务可以正常获取像素的值,但是我自己发布的,即便是下载它的数据重新发布的都无法在maskPixels(pixelData)方法中正常获取值Q_Q

发现年华

赞同来自:

假装回复一下

mc_441

赞同来自:

貌似是跟Server的版本有问题,我用10.1也是,但是10.6就不会。加载的像素原始像素值变成了对应的黑白色拉伸rgb值。

要回复问题请先登录注册