qtree文件结构解析(二)

by 蔡建良 2020-9-19

四叉树(QuadTree,q-tree,q-树)-现有瓦片的一组引用

名称:q2-xxx-q.yyy

q2 -服务数据,解密和解压缩后可用
xxx-是瓦片的数字名称
q - q-tree
yyy-qtree版本

示例:q2-020310311303103-q.306

q树为历史模式(新一代树)

名称:qp-xxx-q.yyy

qp-服务数据,解密和解压缩后可用
xxx-是瓦片的数字名称
q - q-tree
yyy-qtree版本

示例:qp-020022323230230-q.37

 有关四叉树数据包的一些说明:

  根四叉树数据包q2-0将包含四个级别:
       “” 10”-“ 3400”-“ 3316000”-“ 33364

  每个其他的四叉树数据包(即q2-0301)将包含五个级别,
  但第一层是这棵本地树的根,
  条目未定义,因为它与先前的四叉树数据包重叠
       “” 1(未定义!)
      “ 0”-“ 3400”-“ 3316000”-“ 333640000”-“ 3333256

  例如,四叉树数据包q2-0301将不提供任何详细信息
  对于blist 301,因为它包含在q2-0中。 但是它将提供
  blist 301030113012,...,3013333的详细信息。

下载影像第0层qtree文件: http://kh.google.com/flatfile?q2-0-q.888

下载完成后是二进制文件,用密钥解密,解密后是zlib格式的压缩数据,解压后才是真实的qtree数据。

Quadtreepacket.cpp文件包含qtree结构。

文件头部32个字节:
buf << magic_id 4字节 值=32301
<< data_type_id 4字节 值=1
<< version 4字节 值=2
<< num_instances 4字节 结点个数
<< data_instance_size 4字节 节点大小=32个字节
<< data_buffer_offset 4字节
<< databuffersize 4字节
<< meta_buffer_size; 4字节

qtree节点部分:每个节点占用32个字节
buf<<children 1字节 位段(bitfield)用于识别节点图像类型
<<kByteFiller 1字节 占位
<<cnode_version 2字节 节点版本
<<image_version 2字节 影像版本
<<terrain_version 2字节 地形版本
<<num_channels 2字节
<<kWordFiller 2字节 占位
<<type_offset 4字节
<<version_offset 4字节
<<image_neighbors 8字节
<<image_data_provider 1字节
<<terrain_data_provider 1字节
<< kWordFiller 2字节

原文地址:https://www.cnblogs.com/janehlp/p/13695688.html