如何通過geoserver發佈包含多個不同比例尺下顯示圖層的wms服務並通過cesium加載

本文主要記錄通過geoserver發佈包含多個圖層的wms服務-其中每個圖層有其顯示比例尺範圍,且數據源是從postgis數據庫中讀出來,方便動態變化,並且由cesium加載正確顯示的過程,其間涉及多個易入坑,有些操作還需要單獨上網查資料,所以在這裏統一記錄下來,方便日後查閱。

最終達到的效果:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
如上圖所示,其中第二張和第三張圖片顯示兩個圖層,一個圖層顯示紅色十字架樣式的點(第二張),一個圖層顯示藍色方框樣式的點(第三張),每個圖層有他們自己的顯示比例尺範圍,比如第三張圖中圖層顯示比例尺範圍大於第二張圖中的圖層顯示比例尺範圍,只有地球放大到一定級別才顯示第三張,縮小顯示第二張,我們可以在一個wms服務中配置任意多個這樣的圖層。

步驟:新建shp圖層——導入postgis數據庫——編輯樣式——發佈樣式——發佈圖層——發佈圖層組——應用程序加載圖層組

  • 新建圖層
    自己建立shp圖層,創建要素,新建兩個shp點圖層,座標系定義爲WGS84,給它們新建三個屬性:name、desc_、poinum:
    在這裏插入圖片描述
    在arcmap中創建要素,定義屬性,此處樣式不用考慮,不會成爲最終顯示樣式,只要能看清楚即可:
    在這裏插入圖片描述
    屬性定義如下,隨便亂寫:
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 導入postgis數據庫
    安裝pgadmin,然後打開PostGIS Shapefile Import/Export Manager工具:
    在這裏插入圖片描述
    然後連接數據庫,將我們剛纔新建的shp導入進來,注意此處需要設置座標系爲4326。可以參考網絡上的相關資料說明。

  • 編輯樣式
    使用udig工具編輯樣式,沒有udig的先去下載,打開udig,添加postgis中剛導入的兩個圖層,然後設置樣式。右擊圖層,選擇changestyle:
    在這裏插入圖片描述
    然後選擇simplefeature選項卡:
    在這裏插入圖片描述
    其中可以看到minscale和maxscale,但是注意,這裏的值是根據當前座標系下對應比例尺來確定的,所以我們要先選擇當前座標系,設置爲wgs84座標系。
    在這裏插入圖片描述
    在這裏插入圖片描述
    注意,當地圖座標系變成如下圖所示才能去設置minscale和maxscale,此時當前的比例尺值也發生了改變。
    在這裏插入圖片描述
    另外要注意的是,在changestyle中設置的minscale和maxscale其實對應的是最大比例尺和最小比例尺,也就是1/1000000,中的分母最小值和最大值,比如我們要設置一個圖層的顯示比例尺範圍:1:100000-1:1000,那麼我們要設置minscale爲1000,maxscale爲100000。

設置完比例尺顯示樣式後可以設置其他普通的樣式,比如顏色、形狀、圖案等,此處還可以根據屬性來顯示標註,在label選項卡中,大家可以自己探索。

  • 發佈樣式
    在udig中設置完樣式以後,就可以到geoserver中添加style,其中樣式設置則爲udig中xml的內容,只要直接複製過去就行了,注意要是有中文字符就把開頭xml中編碼由UTF-8改成GB2312:
    在這裏插入圖片描述
    在這裏插入圖片描述
    由於兩個圖層有不同樣式,則要新建兩個樣式,待會發布圖層時使用對應樣式。
  • 發佈圖層
    geoserver發佈postgis中兩個導入的圖層,樣式選擇剛纔新建的兩個樣式
  • 發佈圖層組
    在新建圖層組中添加剛纔發佈的兩個圖層,注意圖層組也有bounds範圍,只要點擊“生成邊界”按鈕即可自動生成,也不用我們操心啦:
    在這裏插入圖片描述
  • 應用程序加載圖層組
    cesium使用WebMapServiceImageryProvider類,加載對應圖層組即可,加載完成後,其中圖層會按照我們設定的樣式在指定比例尺下顯示。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章