原文:http://wush.net/trac/osggis/wiki/ToolkitOverview
基本概念:
Filter &Filter Graph
OsgGIS通过将要素集传递给一个过滤器图来处理要素.过滤器图实际上就是一个过滤器链,每一个过滤器得到数据,做处理,然后将数据输出给下一个过滤器.
过滤器能够输入或输出的数据有三种类型:
Feature:对应于带有属性集的矢量图形集
Fragment:对应于带有属性集的Drawable对象
Attributed Node:对应于带有属性集的osg:Node对象
虽然存在许多的过滤器,但是他们都属于下列四种过滤器类型之一:
Feature Filter:接收要素作为输入,同时输出要素;
Fragment Filter:接收要素或者Fragment作为输入,输出Fragment;
Node Filter:接收要素、Fragment或者Node作为输入,输出Node;
Collection Filter:接收任何类型的对象作为输入,输出相同类型的数据.
只有输入输出数据类型兼容的过滤器才能链接称链.
FeatureStore 和FeatureLayer
要素被组织在一起然后存储在某个容器里面,比如 文件、Web资源或者关系数据库.FeatureStore代表到这种后台存储容器的连接.一个简单的例子就是ESRI的shapefile,FeatureStore就负责从shapefile中读取数据然后返回要素对象.FeatureStore的接口允许:1)通过Id来获取单个的要素;2)遍历所有的要素对象.OsgGIS提供的FeatureStore实现使用OGR来读取那些通用的格式.
FeatureLayer建立在FeatureStore基础之上,同时添加了一个应用层面的特性,例如 空间索引.利用空间索引,可以快速地在你所感兴趣的区域内查询要素.FeatureLayer也有可能添加一个图层级别的属性.在OsgGIS中,通常的场景是用Register创建一个FeatureLayer,然后用图层编译器,从FeatureStore编译出一个图层来。
Layer Compilers & Sessions
图层编译器引导来自一个或者多个图层的要素穿过一个或者多个过滤器图.然后将来自于不同过滤器图的输出组合成为一个OSG场景图.osgGIS有三种内置的图层编译器:
1.简单编译器:将要素编译生成内存中的多LOD的场景图;
2.网格化编译器:将要素分成网格,然后将每个网格分别编译生成分页的多LOD场景图;
3.四叉树编译器:编译生成分页的多LOD场景图,同时每一个LOD是其上级节点的四叉树子节点;
网格化编译器和四叉树编译器可以实现增量编译和局部更新.由于每一个网格都是无关的,所以这些网格可以同时编译.这种机制使得OsgGIS具很强的伸缩性.因为使用这种增量编译和局部更新技术,OsgGIS就可以处理任意规模的数据.
OsgGIS将整个图层分解为许多小块后分别独立编译,同时OsgGIS使用Session将各个编译过程连接在一起.Session用于管理公共的资源(例如:纹理..)和对外部数据模型的引用。Session还记录有整个图层编译过程中产生的统计数据。
Project
在整个概念的顶端是project.project包含有需要被编译的图层集合的所有配置信息.例如:有一组基于同意地形模型的,相关联的道路、房屋和树木需要被编译.那么project就会包含如何编译这些图层的规则。
关于如何使用project,参考 ProjectHowTos
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhuliangxiong/archive/2009/04/21/4096189.aspx