zoukankan      html  css  js  c++  java
  • [原][译][osgearth]关于Features & Symbology (特征与符号)(OE绘制矢量几何与特殊字符)讲解(OE官方文档翻译)

    原文参考:http://docs.osgearth.org/en/latest/user/features.html

    自己翻译的,本人英文水平有限,有问题看原链接,原文

    20170802重置修改部分翻译(本人也在不断学习啦O(∩_∩)O~)

    注:OE就是osgEarth

    了解Features

    Features是矢量的几何图形

    不像(光栅化的)地图与高程数据,他不是离散的像素位图。

    osgEarth可以在任何级别详细的显示Features。

    一个Features由三个部分组成

      1.矢量的几何图形(点,线,面和集合)

      2.属性(名称name对应键值项value的组合)

      3.空间参考(描述几何坐标)

    创建一个Feature图层

    有两种方式:

      1.作为图像层栅格化显示

      2.作为模型层嵌入

    1.栅格化:

      光栅feature是最简单的:

        OE将矢量信息“画”入一张地图瓦片,将这张新的底图瓦片代替原来的地图瓦片(仅图像层)

        OE有一个软渲染驱动:agglite驱动(driver)

      下面是一个显示ESRI Shapefile点阵图片层的例子:

    <image name="my layer" driver="agglite">
        <features name="states" driver="ogr">
            <url>states.shp</url>
        </features>
        <styles>
            <style type="text/css">
                states {
                    stroke:       #ffff00;
                    stroke- 2.0;
                }
            </style>
        </styles>
    </image>

    2.嵌入方式

      将矢量数据经过编译变成支持OSG绘制的几何图形(点,线,三角面,或者替换模型)

      主要的feature嵌入插件是:feature_geom驱动(driver);这驱动在feature的样例演示使用中是非常常见的

      以下一个模型层,它显示一个ESRI Shapefile一系列黄线,用OSG几何线渲染:

    <model name="my layer" driver="feature_geom">
        <features name="states" driver="ogr">
            <url>states.shp</url>
        </features>
        <styles>
            <style type="text/css">
                states {
                    stroke:       #ffff00;
                    stroke- 2.0;
                }
            </style>
        </styles>
    </model>

    feature层的组合

    就像之前看到的一样,这里有几个必要的feature层组件

    “features”块   描述了实际功能源。即,osgEarth在哪找到输入数据。

    “styles”块   描述如何osgEarth渲染feature。即,在场景中出现。我们叫他样式表或者象征,

            样式表的构成可以从根本上改变feature数据的外观。

     这两个元素是必需的

    样式 styling

    在earth文件中,“styles”块如下

    <styles>
        <style type="text/css">
            buildings {
                altitude-clamping: terrain;
                extrusion-height:  15;
                extrusion-flatten: true;
                fill:              #ff7f2f;
            }
        </style>
    </styles>

    这个样式表一般在渲染feature层的“model”块中,和“feature”块配合

    (“feature”块定义真正包含的数据源)

    “style”元素是CSS样式的(不了解的自己去查CSS)

    这个东西告诉几何引擎做这几件事:

      将feature几何图形固定到地形高层数据上

      挤压形状地形高度15米以上;

      平的顶部挤压形状;

      形状颜色橙色。

    osgEarth需要每个输入特性和主题样式的过程。输出将完全依靠在样式表中符号的组合。这包括:(太累了,时间太紧,下面的先机器翻译了)

      填充和中风——无论是画线或多边形的数据
      挤压,挤压二维几何三维形状
      替换,替换(如几何与外部的3 d模型。、树)或图标
      高度——几何与地图的地形相互作用的方式
      文本-控制标签
      呈现——照明应用,混合和深度测试

    样式表

    每个功能层需要一个样式表。样式表作为一个<风格>块出现在地球的文件。这里有一个例子:

    <model name="test" driver="feature_geom">
        <features driver="ogr">
            <geometry>POLYGON( (0 0, 1 0, 1 1, 0 1) )</geometry>
            <profile>global-geodetic</profile>
        </features>
        <styles>
            <style type="text/css">
                default {
                    fill:               #ff7f009f;
                    stroke:             #ffffff;
                    stroke-       2.0;
                    altitude-clamping:  terrain;
                    altitude-technique: drape;
                    render-lighting:    false;
                }
            </style>
        </styles>
    </model>

    样式表包含一个称为默认风格。由于只有一个风格,osgEarth将应用到所有的输入特性。(应用不同的风格不同的特性,使用选择器-下面的更多信息。)
    符号的风格包含一组几何描述osgEarth应该如何呈现什么特点。在这种情况下:

    fill: Draw a filled polygon in the specified HTML-style color (orange in this case).
    stroke: Outline the polygon in white.
    stroke- Draw the outline 2 pixels wide.
    altitude-clamping:
      Clamp the polygon to the terrain.
    altitude-technique:
      Use a “draping” technique to clamp the polygon (projective texturing).
    render-lighting:
      Disable OpenGL lighting on the polygon.

    这只是一个小样本可用的象征。对于一个完整的清单,请参阅:符号学参考。

    地形追踪

    它是相当普遍的特性与地形相互作用。要求包括:
      街道上,遵循地形的轮廓
      树种植在地上
      主题映射,如着色基于人口的一个国家的地区
    osgEarth提供多种地形的方法后,因为没有一个最好的方法是为每个情况。

    Map Clamping地图夹紧(地图褶皱?地图覆盖?地图紧贴?)

    地图夹紧是最简单的方法。当编译特性显示,osgEarth将样本的仰角层地图,发现地形的高度,并将之运用于由此产生的几何特性。它将测试每个点在几何。

    地图夹紧导致高质量渲染;权衡性能:
      它可以减缓抽样中的高程数据地图,根据你选择的分辨率。为大量特性,它可以是cpu密集型和耗时。
      抽样是准确的,和做的每一点的几何学。你可以选择样本的thecentroid每个特性来提高编译速度。
      根据几何分辨率的特性,您可能需要镶嵌细工的数据来实现更好的质量。
      渲染质量好与其他方法相比。
    你可以激活地图夹在你的样式表如下所示:

    altitude-clamping:   terrain;        // terrain-following on
    altitude-technique:  map;            // clamp features to the map data
    altitude-resolution: 0.005;          // [optional] resolution of map data to clamp to

    Draping覆合

     覆盖是覆盖的过程编译几何地形的皮肤,就像“覆盖”一条毯子在一个不均匀的表面。osgEarth这是渲染纹理的特征(RTT)然后投射纹理在地形

     draping都有其优点和缺点:

       draping将符合功能完美的地形;没有担心决议或镶嵌。
      你可能会参差不齐的artificats当呈现直线或多边形边缘。投影纹理大小有限,它必须覆盖面积大,越低分辨率图像的投影。在实践中这意味着披盖多边形比直线更有用。
      意想不到的混合构件可能由于覆盖许多透明的几何图形在彼此。

    GPU Clamping

     GPU夹紧后实现近似地形使用GPU着色器。它使用一个两阶段技术:首先它使用深度域采样夹每个顶点到地形的皮肤在一个顶点着色器;其次它depth-offsetting算法适用于缓解z-fighting片段着色器。

    Rendering Large Datasets呈现大型数据集

    特性数据加载到osgEarth最简单的方法是这样的:

    <model name="shapes">
       <features name="data" driver="ogr">
          <url>data.shp</url>
       </features>
       <styles>
          data {
              fill: #ffff00;
          }
       </styles>
    </model>

    我们只是shapefile加载每个特性和颜色的黄色。
    在某种程度上来说,这就做得够好了,这时候osgEarth(用OSG)成为充斥着太多的几何学。即使osgEarth的几何优化编译器使用一个足够大的数据集可以排气系统资源。
    解决方案是瓷砖和分页功能。这里是如何配置它。

    Feature display layouts功能显示布局

    功能显示布局激活特性数据的分页和瓷砖。让我们修改前面的示例:

    <model name="shapes">
       <features name="data" driver="ogr">
          <url>data.shp</url>
       </features>
    
       <layout>
           <tile_size>250000</tile_size>
           <level name="data" max_range="100000"/>
       </layout>
    
       <styles>
          data {
              fill: #ffff00;
          }
       </styles>
    </model>

    Cropping features裁剪功能

    默认情况下,如果一个功能相交瓷砖,它将包括即使外面扩展区段的瓷砖。这是用于挤压建筑之类的东西,它没有意义去砍他们适合完全的瓷砖,因为你不想看到半页。一般建筑也小,所以外的距离,他们将延长瓷砖相对较小。
    例如道路或国家的边界,是线性特性,它可能更有意义作物完全符合瓷砖。视觉上一行看起来不那麽糟糕如果你看到部分页面。您可以启用功能种植布局的布局将crop_features属性设置为true。

    <model name="roads" driver="feature_geom">
          <features name="roads" driver="ogr" build_spatial_index="true">
                <url>roads.shp</url>
          </features>
    
          <layout crop_features="true" tile_size="1000">
              <level max_range="5000"/>
          </layout>
    
          <styles>
              <style type="text/css">
                  roads {
                      stroke:  #ffff7f7f;
                    }
              </style>
          </styles>
    </model>

    层级Levels

    每一层描述的详细程度。这是一个相机范围(min_range和max_range)之间的瓷砖在这种级别的细节呈现。但每个瓷砖有多大?这是计算基于thetile范围的因素。

  • 相关阅读:
    JAVA中线程池启动定时任务
    JAVA线程池的创建
    JAVA多线程售票问题
    设计模式之一 ---单例模式
    JAVAWeb使用POI做导出Excel
    ThreadLocal实现线程范围内共享
    线程的互斥与同步通信
    Spring-task-timer定时器
    万年历---java版
    linux sed 批量替换字符串
  • 原文地址:https://www.cnblogs.com/lyggqm/p/6367523.html
Copyright © 2011-2022 走看看