我正在尝试从网络服务访问地图图块。
图块以quad-tree like this组织。在文件系统中,它们被组织起来,例如,3/0/0/1/1/2.png
指的是从底部开始,在第三象限下,然后是第0个象限,然后是第0个,第四个等等的瓦片。
在我的应用程序中,我被要求提供地图图块的x,y和缩放值,我必须返回一个URL。如何将这些值转换为上述文件路径格式?
我found这个python脚本声称将x,y和缩放值转换为谷歌地图平铺标识符,可以某种方式用于访问给定的平铺,但我无法弄清楚我将如何修改它以我想要的格式输出:
def quadtree(x,y, zoom):
out = []
m = {(0,0):'q', (0,1):'t', (1,0):'r', (1,1):'s'}
for i in range(17-zoom):
x, rx = divmod(x, 2)
y, ry = divmod(y, 2)
out.insert(0, m[(rx,ry)])
return 't' + ''.join(out)
下面是一个示例执行:
>>> quadtree(20,49,10)
'tqtsqrqt'
我想要发生什么:
>>> quadtree(5,3,3)
'2/1/3'
这显然不在我想要的输出附近,但它似乎是一个起点(我猜)。
我将采用任何编码语言(或伪代码)的解决方案或建议。
答案 0 :(得分:1)
您可以分别用0,1,2和3替换'q','t','r'和's'。
答案 1 :(得分:1)
有一个小的PyPi包有助于转换。 https://github.com/geometalab/pyGeoTile
它来自Github上的pyGeoTile存储库。 {{3}}
这是一个用法示例:
from pygeotile.tile import Tile
tms_x, tms_y, zoom = 134494, 329369, 19
tile = Tile.from_tms(tms_x=tms_x, tms_y=tms_y, zoom=19) # Tile Map Service (TMS) X Y and zoom
print('QuadTree: ', tile.quad_tree) # QuadTree: 0302222310303211330
print('Google: ', tile.google) # Google: (134494, 194918)