[原][譯][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-width: 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-width: 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-width:       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-width: 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范圍的因素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM