osg(osg中文社区)-osgEarth-osgViewer-基于OpenGL-开源三维渲染引擎-图形引擎-虚拟仿真工具-osg教程-osg仿真

如何提取已有数据集的部分范围

当前位置:首页 > 学习支持 > 其他帮助 > VPB工具

OSG版本

OSG3.0.1版本才支持在本地缓存OSG模型资源,这个特性是本教程必须的。


慨述

这个思想是使用osgfilecache去缓存本地资源,osgfilecache支持按级别和范围来进行缓存,因此可以达到从现有资源中抽取部分数据的目的。


假定

  • /home/large_database 是生成数据的顶层目录。

  • /home/database_part 我们要抽取的部分数据的目录。

  • 数据集的文件名我们叫 terrain.osgb (/home/large_database/terrain.osgb)

  • 数据集在构建时使用的是geocentric 模式(圆球的形式,非UTM形式).

  • 在Linux上使用bash,在Windows下类推即可。要对NTFS在大数据下的性能有些了解。


流程

注意,在使用osgfilecache命令时,必须要进入到现有数据的根目录,因为子数据是pageLOD数据,其会把旧数据的孩子文件路径修改为新的,如果在其根目录,则使用的是相对路径,如果不在使用的是绝对路径,绝对路径基本上一移动就没法用了。

进入根目录:

cd /home/large_database

命令的结构是 'osgfilecache --file-cache <your destination folder> <options to control the new database extents> <relative path to your source database root file> 使用上面结构,假如我们要取到第三级的话 LOD level 3 ('-l 3'):

osgfilecache --file-cache /home/database_part -l 3 ./terrain.osgb

根据osgfilecache的帮助文件,如下的范围指定方法是科学的:

-e level minX minY maxX maxY                                                  
                   Read down to <level> across the extents minX, minY to maxY,
                   maxY.  Note, for geocentric datase X and Y are longitude and
                   latitude respectively.
 -l level          Read down to level across the whole database.


Example

抽取经度11-15,纬度30-40,级别从0-8的数据。

osgfilecache --file-cache /home/torben/test -e 8 11 30 15 40 ./terrain.osgb


进一步应用

Note: 现在你可以使用这个功能把部分国家的部分地区给提出来了,做成根据重要程度不同分辩率的结果:比如 worldwide<=level 5, europe<=level 8 and germany<=level 25