Mapbox GL JS:大图像覆盖问题

时间:2018-08-19 11:31:57

标签: javascript mapbox geospatial mapbox-gl-js

我正在使用Mapbox GL JS在德克萨斯州上覆盖卫星数据的图像。该图像足够大,可以覆盖德克萨斯州,但是即使使用100%正确的地理坐标,该图像也不在正确的位置。我必须将图像分成6张这样的长图像(东西向),然后将它们垂直堆叠在单独的图像叠加层中:

enter image description here

这将产生所需的结果:

enter image description here

当使用6个堆叠的图像叠加层(顺便说一句,每个高度2度,非常宽以覆盖状态的宽度)时,云的放置完全是完美的,没有零个问题。这是完美的,除了必须制作6个图像叠加层完全不理想,而且会增加处理限制。

如果我将所有图像合并为一张大图片,并使用 same 坐标将其覆盖-效果是错误的。即使图像完全相同。我已突出显示了海岸线,因此您可以看到,在整个州使用一个大图像叠加层时,它会变得不准确。对于追逐风暴的人(我的目标受众)来说,这将是不可接受的。我曾尝试过手动调整图像,但是这样做并不好,而且我浪费了几天的生命来追踪这个问题,绝对是Mapbox。我已经排除了其他可能性,例如我用来获取数据的软件中的错误。

这里是一个覆盖层不好的结果,而不是垂直分割:

enter image description here

对于造成这种情况的原因是否有任何想法以及解决方案?我完全迷路了。

1 个答案:

答案 0 :(得分:0)

我很早以前就解决了这个问题,但是由于其他人也遇到了同样的问题,因此这里应该给出答案。问题与投影有关。可以通过坐标精确地对图像进行切片和切块,但是它们必须与要叠加的地图的投影相匹配。对于Mapbox,它使用Web墨卡托,并且必须将图像重新投影到EPSG:3857。

将图像(例如geoTIF)转换为该投影的实用程序是GDAL(https://gdal.org/)。使用GDAL工具转换图像的命令将类似于:

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

希望这可以清除一切。这些问题是GIS社区的基础知识。如果您想使用这样的数据,我可以说我建议您做我想做的事情:学习基本的GIS工具及其工作方式。它将拯救您。