将图块的 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 将显示坐标转换为地理坐标(纬度、经度)?