posts - 41,  comments - 90,  trackbacks - 0

          給圖層添加高度數(shù)據(jù),需要根據(jù)實(shí)體幾何類型分別處理。對于面,例如行政區(qū)界或建筑物,需要?jiǎng)?chuàng)建一個(gè)高度模板文件。
          對于線(點(diǎn)),例如架空電纜,高程將直接從圖形數(shù)據(jù)中讀取。
          GeoServer 1.7.1及以上版本支持輸出三維面的KML(KMZ),1.7.6及以上版本支持輸出三維線(點(diǎn))的KML(KMZ)。

          發(fā)布三維面圖層:

          用Geoserver發(fā)布三維面的過程非常簡單,測試中我們使用Geoserver自帶的示例圖層topp:states。

          1、用記事本新建一個(gè)文本文件(高度模板文件),命名為height.ftl
          2、在文件中加入一行腳本,格式為${ATTRIBUTE.value},ATTRIBUTE是屬性字段的名稱。
          例如states圖層有屬性字段PERSONS,記錄每個(gè)州的人口,輸入${PERSONS.value?number/100},把高度和人口數(shù)建立關(guān)系。
          3、將height.ftl復(fù)制到Geoserver的/data/featureTypes/states/目錄下
          4、進(jìn)入Geoserver地圖預(yù)覽頁面,找到topp:states,選擇KML,打開Google Earth瀏覽效果。

          效果圖1



          官方原文見:http://geoserver.org/display/GEOSDOC/04-Height+Templates

          作為練習(xí),可以根據(jù)官方文檔
          http://demo.opengeo.org:8080/display/GEOSDOC/05-Super+Overlays+and+Extrudes+with+Building+Data,
          發(fā)布紐約曼哈頓的建筑物,瀏覽三維城市效果。

          效果圖2



          發(fā)布三維線圖層:

          三維線不使用height.ftl文件,因?yàn)橐粭l線有兩個(gè)以上的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)可能有不同的高度值,高程直接存放在圖形數(shù)據(jù)(Geometry)的Z坐標(biāo)中。
          Oracle Spatial、PostgreSQL(PostGIS)等數(shù)據(jù)庫都支持存儲(chǔ)三維坐標(biāo)。

          Geoserver可以直接發(fā)布三維線,測試中使用Oracle Spatial(10g)和PostgreSQL(8.3)作為數(shù)據(jù)源。
          1、在Oracle Spatial(10g)或PostgreSQL(8.3)中存入包含Z坐標(biāo)的三維線數(shù)據(jù),作為測試,可用直接SQL語句插入數(shù)據(jù)。
          2、在Geoserver中發(fā)布該圖層。
          3、進(jìn)入Geoserver地圖預(yù)覽頁面,找到剛才發(fā)布的圖層,選擇KML,打開Google Earth瀏覽效果。

          需要注意的是,默認(rèn)KML(KMZ)在Google Earth中的實(shí)際效果是三維面。
          經(jīng)過查閱KML文檔,要實(shí)現(xiàn)三維線,需要在KML鏈接后加上可選參數(shù)format_options=extrude:0,例如將
          http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL
          改為
          http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL&format_options=extrude:0

          效果圖3


          Google KML Version 2.2已經(jīng)獲得OGC批準(zhǔn),成為國際標(biāo)準(zhǔn)的數(shù)據(jù)存儲(chǔ)格式。ESRI、INTERGRAPH、MAPINFO在其最新版本軟件中提供KML格式輸出支持。
          Google定義的KML不僅可以包含三維高程數(shù)據(jù),還能加入四維時(shí)間數(shù)據(jù)。

          本文只涉及三維數(shù)據(jù)的發(fā)布和展示,相關(guān)技術(shù)文檔請參考Google KML和Geoserver KML頁面。
          Google KML頁面:http://code.google.com/apis/kml/documentation/
          Geoserver KML頁面:http://geoserver.org/display/GEOSDOC/KML+KMZ+Output http://geoserver.org/display/GEOSDOC/Google+Earth+Features
          本文涉及的軟件環(huán)境為:Geoserver 1.7.7、Geoserver 2.0、Google Earth 5.1、Oracle 10.2.0.3、PostgreSQL 8.3.7

          posted on 2009-10-27 10:40 天狼 閱讀(6756) 評(píng)論(2)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阿克陶县| 九龙坡区| 富民县| 怀安县| 武隆县| 攀枝花市| 察隅县| 德庆县| 灵宝市| 健康| 鄂温| 沙坪坝区| 长葛市| 扎鲁特旗| 凤台县| 玛纳斯县| 株洲市| 大田县| 石林| 永新县| 清水县| 监利县| 渭南市| 修武县| 富宁县| 瓦房店市| 岳阳市| 监利县| 株洲市| 赤水市| 林周县| 伊宁县| 平安县| 景谷| 连南| 思茅市| 鹤壁市| 肥西县| 翁牛特旗| 温泉县| 新宁县|