将图块的 xyz 坐标转换为经度/纬度

Posted

技术标签:

【中文标题】将图块的 xyz 坐标转换为经度/纬度【英文标题】:Convert xyz coordinate of a tile to longitude/latitude 【发布时间】:2015-08-17 09:11:31 【问题描述】:

我想使用 openlayers 制作地图,但以一种独特的方式居中。例如,我的 z/x/y 坐标为 12/2045/-1362,如何将其转换为经度/纬度?与此截然相反:How to get X Y Z coordinates of tile by click on Leaflet map

我很难理解上述链接的逻辑并将其反转。我希望这里有人对此有经验或现成的公式。谢谢

稍后我会这样渲染我的地图中心:

var z = 12;
var x = 2045;
var y = -1362;

function convertXYZtoCoor(z, x, y) 
    // code here
    return [lng, lat];


var coor = convertXYZtoCoor(z, x, y);
var view = new ol.View(
                    center: ol.proj.transform(
                        [coor[0], coor[1]], 'EPSG:4326', 'EPSG:3857'),
                    zoom: z
            );

var map = new ol.Map(
                layers: [
                    new ol.layer.Tile(
                        source: new ol.source.OSM()
                    )
                ],
                target: 'map',
                view: view
          );

希望我的问题能得到更多理解,谢谢。

编辑:添加代码

【问题讨论】:

对我来说,不清楚,你在找permalink吗? 抱歉,我阅读了链接。不,您从我创建的链接中获取现有代码,然后通过将其转换为 lat/lng 来根据平铺值 12/2045/-1362 更改中心值。这可能吗? 我不这么认为。让我们看看其他人怎么说,同时我的猜测是你重新考虑你的用例。 你从哪里/如何得到这个12/2045/-1362 openlayers.org/en/v3.5.0/examples/canvas-tiles.html?q=tiles 检查这个,默认情况下这里的缩放级别是 10,我只是进一步放大到 12。只是进一步编辑了我的问题.. 我的客户想要发生的是给定一个特定的xyz 瓦片坐标,我会使用 openlayers 显示它,该坐标应该是 ol.view 的值,因此瓦片是视图的中心。 【参考方案1】:
var tileExtent = function(tileCoord)
    var z = tileCoord[0];
    var x = tileCoord[1];
    var y = tileCoord[2];
    var tileGridOrigin = tileGrid.getOrigin(z);
    var tileSizeAtResolution = tileGrid.getTileSize(z) * tileGrid.getResolution(z);
    return [
        tileGridOrigin[0] + tileSizeAtResolution * x,
        tileGridOrigin[1] + tileSizeAtResolution * y,
        tileGridOrigin[0] + tileSizeAtResolution * (x + 1),
        tileGridOrigin[1] + tileSizeAtResolution * (y + 1)
    ];

您可以在http://jsfiddle.net/eurx57s7/进行测试/验证

注意(从 ol3 示例中窃取,但适用于此处): 瓦片坐标是ol3归一化瓦片坐标(原点左下角),而不是OSM瓦片坐标(原点左上角)

【讨论】:

@AlvinLindstam 你能帮我解决这个问题吗:gis.stackexchange.com/questions/173646/… 谢谢! @Alvin Lindstam...不是在点击时获得结果,是否可以注册生成的图块并将所有结果保存在某种文本文件中,最好是 geojson: "type": "特征”、“属性”:“瓦片”:“10、510、-341”、“几何”:“类型”:“点”、“坐标”:[-58703.63772301562、6711782.579664757] @阿尔文Lindstam或CSV:10510,-341,-78271.51696402207,6692214.700423751,-39135.75848200917,6731350.458905762,58703.63772301562,6711782.579664757(Z,X,Y,左下区块的一角,右以上瓦片的角, x_center,y_center) @newbie_girl:当然,但这是这个问题的主题。如果您无法找到解决方案,请发布新问题。 @AlvinLindstam 感谢您的快速回复...请看一下这个问题:***.com/questions/40344476/…

以上是关于将图块的 xyz 坐标转换为经度/纬度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cartopy 将显示坐标转换为地理坐标(纬度、经度)?

如何将 EPSG:6249 坐标转换为“标准”纬度/经度坐标?

将 GPS 坐标转换为纬度经度?

将平铺坐标转换为像素到地理坐标

ActionScript 3 将纬度/经度转换为2d坐标

将纬度和经度转换为图像上的坐标