我想在实现四叉树的编码方面获得一些帮助。我有一个输入节点作为格式
的空间图块位置<tile zoom level,tile row,tile column> given as
<12,3943,1813>
我想创建一个四叉树并添加节点(在java中)以实现以下内容:
输入等级'12'分为
<13,7886,3626> <13,7887,3626> <13,7886,3627> <13,7887,3627> .
每个'13'级别分为'14'级。
<13,7886,3626> is split as
<14,15772,7252> <14,15773,7252> <14,15772,7253> <14,15773,7253>
<13,7887,3626> is split as
<14,15774,7252> <14,15775,7252> <14,15774,7253> <14,15775,7253>
<13,7886,3627> is split as
<14,15772,7254> <14,15773,7254> <14,15772,7255> <14,15773,7255>
<13,7887,3627> is split as
<14,15774,7254> <14,15775,7254> <14,15774,7255> <14,15775,7255>
答案 0 :(得分:0)
您可以在MSDN上找到一些有用的信息: http://msdn.microsoft.com/en-us/library/bb259689.aspx
我无法为您提供Java代码,但这里是C#中的专用方法,因此您可以轻松地将其移植到Java中:
/// <summary>
/// Converts tile XY coordinates into a QuadKey at a specified level of detail.
/// </summary>
/// <param name="tileX">Tile X coordinate.</param>
/// <param name="tileY">Tile Y coordinate.</param>
/// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)
/// to 23 (highest detail).</param>
/// <returns>A string containing the QuadKey.</returns>
public static string TileXYToQuadKey(int tileX, int tileY, int levelOfDetail)
{
StringBuilder quadKey = new StringBuilder();
for (int i = levelOfDetail; i > 0; i--)
{
char digit = '0';
int mask = 1 << (i - 1);
if ((tileX & mask) != 0)
{
digit++;
}
if ((tileY & mask) != 0)
{
digit++;
digit++;
}
quadKey.Append(digit);
}
return quadKey.ToString();
}