osgGIS工具简介

来源:互联网 发布:在淘宝上怎么买到弓弩 编辑:程序博客网 时间:2024/06/05 10:11
 

介绍:OsgGIS用于从GIS数据源中构建OSG几何体.

OsgGIS能用于:

 1.连接到要素数据源(比如shapefile),并读取几何信息和属性信息;

 2.装配一个自定义的变换过程来将要素转换为OSG的几何体;

 3.构建线形几何体,比如街道和行政界限;

 4.构建线性几何体的拉伸,比如墙体和篱笆;

 5.构建复杂结构体的拉伸,比如建筑物(带有外部装饰和屋顶纹理);

 5.用3D模型来替换点要素;

 6.将要素拼接为地形;

 7.将大数据量的图层按网格组织;同时构建平行的单元格.

 8.嵌入Lua代码以控制数据编译过程(此处的编译大概是指从Feature=>OSG的过程);

 9.构建能够和osgSim::OverlayNode一起使用的遮罩节点;

 10.预编译或者实时编译数据;

 11.运行时查询要素的属性;

 

OsgGIS不能用于:

 1.构建地形皮肤(参考How to prepare data source )

基本工作流:

 在GIS的术语里面,feature是一个拥有矢量的几何特征并带有属性的基本数据单元。OsgGIS将GIS中的feature转化为OSG中的场景图.OsgGIS采用一条装配线来完成这个转化过程,feature从装配线的入口进入转配线,OsgGIS引擎将feature依次传递给离散的各个处理单元,最终输出OSG的场景图.在OsgGIS的术语里面,我们称这个过程为编译.

 具体来说,编译的过程涉及到:

 1.从数据源读取feature;

 2.将feature过滤以于获取所感兴趣的数据;

 3.依次将每一个feature送入到各个离散的处理单元;

 4.处理和组合几何体,得到Drawable对象;

 5.处理和组合Drawable对象,得到OSG结点;

 6.将OSG结点组合为OSG场景,返回给用户使用;

 上面的过程是一个基本的过程。实际上,对处理单元(过滤器)的选择和配置控制着一个feature是如何转化为OSG几何体的.OsgGIS已经提供几种处理单元的实现.实际上,自己写一个处理单元也是很简单的一件事. 

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


原创粉丝点击