需要帮助添加节点以在java中实现quadtree

时间:2014-02-19 06:27:22

标签: java bing-maps quadtree

我想在实现四叉树的编码方面获得一些帮助。我有一个输入节点作为格式

的空间图块位置
<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>

1 个答案:

答案 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();
}