首页 / 浏览问题 / 三维GIS / 问题详情
SuperMap WebGL 加载风场,西半球的数据不运动
akk
16EXP 2021年09月07日

使用 SuperMap iClient3D for WebGL 开发三维场景需要叠加风场数据,我参考示例中的风场,使用FieldLayer3D来加载风场数据。

数据是通过 gfs 转换过来的,数据区域通过设置 layerBounds 来控制,但由于 gfs 的数据经度范围是 0~359,转换为cesium中经度范围是 0~-1(从0°向东横跨180°再到西经1°),加载后东半球的数据会动,但西半球的数据都不动了。(如下图)

(ps:如果设置范围为-180~179的话那西半球也能动,但那样数据不对。所以我认为 FieldLayer3D 在数据横跨经度180°时是存在bug的)

1个回答

您好,是想要加载全球的风场数据吗?如果是的话就不用设置layerBounds,默认即可
6,087EXP 2021年09月07日
不一定是全球,要求任意经纬范围的,比如从0°-180°-西经90° 这样四分之三个半球。现在问题主要在经度范围横跨180°时,西半球的渲染有问题。

我这边加载四分之三个球的话也是没有问题的呢?

你这样去设置一下 layerBounds :fieldLayer.layerBounds = new Cesium.Rectangle.fromDegrees(-180,-90,90,90)

你这样设置是从-180度开始渲染的,渲染的是西半球+二分之一东半球,从-180开始我也试过是没问题的。但是我想要的是从0开始渲染,渲染东半球+二分之一西半球,这样设置的话西半球的部分就会有问题。
明白了,这个问题已上报缺陷,我们这边会尽快解决,解决之后第一时间联系您这边
好,麻烦了。

GFS也是常用的风场数据,其经度范围是 [0 ,360] ,存在此bug意味着全球GFS数据基本上无法支持,希望能尽快修复。
其实也是可以支持的,像我上面那样去设置 layerBounds 就可以
按照你上面的设置法,覆盖范围是错的,意味着只是可以画出来而已,然后画的结果并不对。
...