2014-02-19 2 views
0

quadtree를 구현하기위한 코딩에 대한 도움을 받고 싶습니다. 나는 형식으로 공간 타일의 위치로 입력 노드가 나는 다음과 같은 구현하는 쿼드 트리를 생성하고 (자바) 노드를 추가 할은 Java에서 quadtree를 구현하는 노드를 추가하는 데 도움이 필요합니다.

<tile zoom level,tile row,tile column> given as 

<12,3943,1813> 

:

입력 레벨 '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

과 함께 가고 싶은 곳 나는 형식 <타일 줌의 공간 위치의 타일 정보를 수준, 타일 행, 타일 열 umn> 먼저 입력을 <12,3943,1813>로 지정했습니다. 이 정보를 사용하여 쿼드 트리를 생성해야합니다. 즉, 확대/축소 레벨 13 및 확대/축소 레벨 14 – user3138452

+0

제공된 답변을 기반으로 원하는 것을 코딩 할 수 있었습니까? 소 우는 소리? –

답변

0

당신은 MSDN에 대한 몇 가지 유용한 정보를 찾을 수 : http://msdn.microsoft.com/en-us/library/bb259689.aspx

내가 여기에 그 작업을 수행하는 자바 코드를 제공 할 수는 없지만이 C#에서 전용 방법이 포트를 쉽게 할 수 있도록 그것은 자바 :

/// <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(); 
} 
관련 문제