geoserver的探索

weixin_33918357發表於2018-04-27

原始碼解讀:

1.通過wicket的id去更改節點對應的值

4964779-b73cff509774c7f2.png
image.png

/gs-web-core/src/main/java/org/geoserver/web/GeoServerBasePage.html


4964779-f31debe1ef6c7b3a.png
image.png

/gs-web-core/src/main/java/org/geoserver/web/GeoServerBasePage.java

4964779-39e4a07d5297f080.png
image.png

2.點選頁面上的 服務-WCS

請求的是org.geoserver.wcs.web.WCSAdminPage,也就是spring的配置檔案裡面的屬性值

4964779-4e66f160f007da05.png
image.png
4964779-222250cf2ba44d04.png
image.png

同樣是使用了wicket的方式去充填檢視


4964779-ef356c1648bedb2e.png
image.png

這裡的很關鍵
4964779-71ff41c56da753e2.png
image.png

componentClass是對應的org.geoserver.wcs.web.WCSAdminPage類的物件

在很多的檔案中,這個類都有作為物件去建立,然後通過wicket的listview的物件去載入。這個和目前安卓裡面的滑動檢視Listview和adapter有些異曲同工之處。


4964779-05e0b9ee8fd7d106.png
image.png

3.http get的請求

WMS的請求一般使用HTTP Get的形式直接從位址列輸入或者通過JS程式碼傳送到伺服器端。請求的格式如下所示:

http://localhost:8080/geoserver /wms?bbox=-74.01199448397661,40.70732689845813,-74.00841053684495,40.71216558957052&styles=&Format=application/openlayers&request=GetMap&version=1.1.1&layers=tiger:poi&width=457&height=550&srs=EPSG:4326,該請求中wms是要請求的服務,version=1.1.1是請求的wms版本,GetMap是請求的服務方法,tiger:poi是要訪問的地理資料。

4.結構

“platform”,“main”,“ows”,“wfs”,“wcs”,“wms” 個包是主要的包。它們的關係如下圖


4964779-3e5299efa2aecc45.png
image.png

展現了包之間的依賴關係,下面的包依賴上面的包,最頂端是“platform”。

“platform”,“ows”和“main”包含了GeoServer最基礎最核心的類和介面,下面介紹一些重要的類和介面,“wfs”,“wcs”,“wms”將利用這些類來完成具體的功能:

1)platform包的org.geoserver.platform.Service類代表一個具體的服務,例如WMS,它用ID和VERSION來唯一標定,每一個服務都會提供若干操作(Operation);

2)platform包的org.geoserver.platform.Operation類代表某個服務下可以被請求的操作,例如GetCapabilities,這個類利用Java的反射機制;

3)ows包的org.geoserver.ows.Dispatcher類處理所有OWS的請求,是需要關注的重點;

4)main包的org.geoserver.catalog.Catalog介面包含資源訪問的方法,這些資源有“Layer”,“Layer Group”,“Map”,“Namesapce”,“Resource”,“Store”,“Style”和“Workspace”,它們是組織和使用資料的關鍵;

5)main包的org.geoserver.config.GeoServer介面包含訪問伺服器公共配置資訊的方法,我們將會在很多場合看到它;

6)main包裡面還有一些描述資源的介面,例如org.geoserver.catalog.LayerInfo代表“Layer”資源。

相關文章