将图像平铺到XYZ图块中

时间:2014-06-11 14:38:20

标签: openlayers

我无法找到OpenLayers使用的XYZ磁贴源的任何规范

我有一些图像,每个人都知道墨卡托投影中的4个角(EPSG:3857)

我想将这些图像平铺到XYZ目录中,但不确定如何在每个缩放lvl找到每个xyz图块的角。如果我可以在EPSG:3857坐标中计算所有xyz瓷砖角,我只需要切出与图像的4个角相交的部分。

1 个答案:

答案 0 :(得分:1)

一般的想法是假定地球为球形,赤道周长为40,075 km。然后在北/南和东/西方向上分成两半,转换成米,这给出了左上角的起点(-20037508.34,200377508.34)。因此,要找到任何瓷砖,您只需将左上角和当前点之间的差值用球形墨卡托(EPSG:3857)的米表示,然后除以分辨率乘以瓷砖尺寸,即覆盖的米数。任何缩放级别的图块。

x = Math.round((bounds.left - maxExtent.left) / (resolution * tileSize.w));
y = Math.round((maxExtent.top - bounds.top) /  (resolution * tileSize.h));

这些计算可以在getXYZ函数中看到:OpenLayers.Layer.XYZ.js.为了保持清洁,您可能不希望偏离标准EPSG:3857分辨率,这些分辨率在initMercatorProjection函数中定义OpenLayers/Layer/SphericalMercator.js.

这里有一个有趣的页面,它直观地显示了各种图块方案计算:http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/