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
浏览次数:56051 次