Javascript Mapbox GL JS:大型图像覆盖问题

Javascript Mapbox GL JS:大型图像覆盖问题,javascript,mapbox,geospatial,mapbox-gl-js,Javascript,Mapbox,Geospatial,Mapbox Gl Js,我正在使用Mapbox GL JS覆盖德克萨斯州上空的卫星数据图像。图像大到足以覆盖德克萨斯州,但即使使用100%正确的地理坐标,图像也不在正确的位置。我必须将图像分割为6个长(西-东)图像,像这样,并将它们垂直堆叠在单独的图像覆盖层中: 这将产生所需的结果: 当使用6个堆叠的图像覆盖(每个2度高,非常宽,以覆盖州的宽度,顺便说一下),云的放置完全完美,没有问题。它是完美的,除了必须制作6个图像叠加来构建这一点都不理想,而且它增加了处理限制 如果我把所有的图片合并成一张大图片,然后用相同的坐

我正在使用Mapbox GL JS覆盖德克萨斯州上空的卫星数据图像。图像大到足以覆盖德克萨斯州,但即使使用100%正确的地理坐标,图像也不在正确的位置。我必须将图像分割为6个长(西-东)图像,像这样,并将它们垂直堆叠在单独的图像覆盖层中:

这将产生所需的结果:

当使用6个堆叠的图像覆盖(每个2度高,非常宽,以覆盖州的宽度,顺便说一下),云的放置完全完美,没有问题。它是完美的,除了必须制作6个图像叠加来构建这一点都不理想,而且它增加了处理限制

如果我把所有的图片合并成一张大图片,然后用相同的坐标叠加,效果是错误的。即使图像完全相同。我高亮显示了海岸线,所以你可以看到,当对整个州使用一个大型图像覆盖时,它会变得不准确。对于风暴追逐者(我的目标受众)来说,这是不可接受的。我尝试过手动调整图像,但效果不好,我已经浪费了好几天的时间来跟踪这个问题,它绝对是Mapbox。我已经排除了其他可能性,比如我用来获取数据的软件中的bug

下面是一个覆盖的坏结果,而不是垂直拆分:


有什么想法可以解释是什么原因造成的,以及解决方案吗?我完全迷路了

我很久以前就解决了这个问题,但由于其他人也有同样的问题,所以这里应该有一个答案。这个问题与投影有关。图像可以精确地按坐标进行切片和切分,但它们必须与所覆盖地图的投影相匹配。对于Mapbox,它使用web mercator,图像必须重新投影到EPSG:3857

将图像(如geoTIF)转换为此投影的实用程序是GDAL()。使用GDAL工具转换图像的命令类似于:

gdalwarp -t_srs EPSG:3857 input.tif input-projected.tif

希望这能把事情弄清楚。这些问题是GIS社区的基本知识。如果你想处理这样的数据,我可以说我建议你做我做过的事情:学习基本的GIS工具以及它们是如何工作的。它将拯救你。

至于是什么导致了这一点:也许图像不是环绕地球,而是投射在一个平面上?拥有6张较小的图像也会有这个问题,但失真要小得多,因为当放大到足够大时,地球仪近似于一个平面。嗯,我可以拥有非常长的图像(-110和-90,但只有2度高),而且效果很好。这是我发布的第一张图像。但我尝试了同样的测试,从北到南(25到37,从西到东只有2度),问题出现了。很奇怪,这和你的问题是一样的吗?我们可以关闭其中一个吗?您可以关闭另一个(如果可以),因为这是一个一般性问题-与Mapbox无关。这个问题在当时还不清楚(但现在只缩小了范围)。这个问题似乎是与Mapbox特别相关的覆盖。如果有人在没有看到这个问题的情况下遇到另一个人,这可能是没有帮助的。这个问题应该留下来,另一个问题应该结束。