Python 如何将地图平铺的x、y和缩放坐标转换为四叉树地图系统中的相应坐标?
我正在尝试从web服务访问地图分幅 这些瓷砖是按一种顺序排列的。例如,在文件系统中,它们被组织为Python 如何将地图平铺的x、y和缩放坐标转换为四叉树地图系统中的相应坐标?,python,google-maps,map,pseudocode,quadtree,Python,Google Maps,Map,Pseudocode,Quadtree,我正在尝试从web服务访问地图分幅 这些瓷砖是按一种顺序排列的。例如,在文件系统中,它们被组织为3/0/0/1/1/2.png,指的是从底部开始的分幅,在第三象限下,然后是第0象限,然后是第0象限,最后是第四象限 在我的应用程序中,要求我提供地图分幅的x、y和缩放值,我必须返回URL。如何将这些值转换为上述文件路径格式 我使用了这个python脚本,它声称可以将x、y和zoom值转换为google maps磁贴标识符,以某种方式可以使用该标识符访问给定的磁贴,但我不知道如何修改它以我想要的格式输
3/0/0/1/1/2.png
,指的是从底部开始的分幅,在第三象限下,然后是第0象限,然后是第0象限,最后是第四象限
在我的应用程序中,要求我提供地图分幅的x、y和缩放值,我必须返回URL。如何将这些值转换为上述文件路径格式
我使用了这个python脚本,它声称可以将x、y和zoom值转换为google maps磁贴标识符,以某种方式可以使用该标识符访问给定的磁贴,但我不知道如何修改它以我想要的格式输出:
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、2和3替换“q”、“t”、“r”和“s”。有一个小的PyPi软件包可以帮助转换。 它来自Github上的pyGeoTile存储库。 下面是一个用法示例:
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)
这有帮助吗?@JohnBarça看起来不像是四叉树排列。XYZ to quadtree带有所有地方必应的C#代码:你试过用0123替换QTR吗?你能给出输入和输出的示例吗?