sakitam-fdd / wind-layer

:flags: :rocket: wind-layer | a openlayers && maptalks && amap && bmap && leaflet && mapbox-gl && maplibre-gl extension like windy.com for weather visualization
https://sakitam-fdd.github.io/wind-layer/
Other
542 stars 145 forks source link

色斑图错位 #186

Closed rapinchen closed 6 months ago

rapinchen commented 1 year ago

色斑图跟实际数据位置对不上,色板图相对实际数据偏南了一些,会是什么原因?

rapinchen commented 1 year ago

image 红色是原图,绿色是渲染后的,对不上。原图直接叠加位置对的

sakitam-fdd commented 1 year ago

@rapinchen 方便提供一下数据吗,我来测试下

rapinchen commented 1 year ago

@sakitam-fdd 数据已发邮件

sakitam-fdd commented 1 year ago

@rapinchen 已测试,主要原因是在 wind-layer@2.0 之前的版本,色斑图支持的数据投影是 4326,不支持莫卡托投影的数据,而你提供的数据是使用墨卡托投影的:

// 墨卡托投影方式
const image = new maptalks.ImageLayer('id', [{
    url : './data/tp1.png',
    extent: [109.4, 20, 118, 25.7],
    opacity : 1
  }])

  map.addLayer(image)

所以会出现错位,要解决有两种方式:

  1. 生成数据采用 4326
  2. 临时支持墨卡托数据渲染 image

maptalks-wind.js.zip

rapinchen commented 1 year ago

@sakitam-fdd 妥了,感谢大佬无私奉献,世界因你更美丽

rapinchen commented 1 year ago

@sakitam-fdd 大佬最近提供的maptalks-wind.js.zip, setData更新数据无法重绘, 看了下源码发现在setData方法里,有个 if (this.data && renderer2 && renderer2.scalarFill) { renderer2.scalarFill.setData(this.data, (status) => { ....

renderer2中没有scalarFill,所以一直无法重绘,尝试改成scalarRender,如下: if (this.data && renderer2 && renderer2.scalarRender) { renderer2.scalarRender.setData(this.data, (status) => { ... 解决了,不知道是不是一个BUG,这里反馈下。

sakitam-fdd commented 6 months ago

2.0 版本整体重构,请参照示例 https://github.com/sakitam-fdd/wind-layer/blob/master/examples/maptalks-pattern-layer.html,此 bug 先关闭