Geoserver2.16.2初步使用


進行GIS項目開發中,常使用Geoserver作為開源的地圖服務器,利用 GeoServer 可以方便的發布地圖數據,允許用戶對特征數據進行更新、刪除、插入操作,通過 GeoServer 可以比較容易的在用戶之間迅速共享空間地理信息。

安裝

源碼下載
linux的在這
geoserver用戶指導手冊
安裝使用參考
現在我們使用2.16.2版本
Geoserver是一個JavaEE項目,常通過Tomcat進行部署、啟動

首頁:http://localhost:8080/geoserver/web/
初始用戶名為"admin",密碼為"geoserver"

瀏覽demo地圖:
http://localhost:8080/geoserver/topp/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp%3Atasmania_state_boundaries&bbox=143.83482400000003%2C-43.648056%2C148.47914100000003%2C-39.573891&width=768&height=673&srs=EPSG%3A4326&format=application/openlayers

隨着鼠標的拖動,openlayers插件不斷請求調用地圖服務接口,可以注意到只有BBOX參數在不斷改變:
http://localhost:8080/geoserver/topp/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=topp%3Atasmania_state_boundaries&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&STYLES=&WIDTH=768&HEIGHT=673&BBOX=139.5703125%2C-50.262451171875%2C156.4453125%2C-35.474853515625

http://localhost:8080/geoserver/topp/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=topp%3Atasmania_state_boundaries&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&STYLES=&WIDTH=768&HEIGHT=673&BBOX=139.5703125%2C-50.284423828125%2C156.4453125%2C-35.496826171875

http://localhost:8080/geoserver/topp/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=topp%3Atasmania_state_boundaries&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&STYLES=&WIDTH=768&HEIGHT=673&BBOX=145.5029296875%2C-44.20074462890625%2C149.7216796875%2C-40.50384521484375

http://localhost:8080/geoserver/topp/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=topp%3Atasmania_state_boundaries&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&STYLES=&WIDTH=768&HEIGHT=673&BBOX=147.51033782958984%2C-42.56661415100098%2C147.64217376708984%2C-42.45108604431152

安裝運行可能遇到的問題

出現 org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19的報錯,tomcat版本低的問題,我換apache-tomcat-9.0.34就好了。

發布矢量數據wms(Web地圖服務)

參考1
總結為以下步驟:
1.本地創建數據文件夾D:\Java\apache-tomcat-9.0.0.M10\webapps\geoserver\data\shape1,拷貝矢量數據(.shp、.shx、.dbf、.prj)到文件夾內;
2.頁面上新建工作區,通常,會為每個項目創建一個工作空間。設置name如test1、命名空間如http://localhost/test1, 命名空間URI文件不需要解析為實際有效的網址。
3.添加新的數據存儲,包括選擇數據源、數據源名稱、工作區、文件目錄
4.發布圖層(一個shp文件對應一個Layer)。正式發布前需要編輯發布信息,包括配置發布信息,有些數據是自動填充的,有的可以自動計算(設置不適合會影響可見性):

5.在layer preview中通過地圖客戶端openlayers查看地圖。
6.圖層組相關設置參考(非必需)
邊界設置:

可能遇到的問題

添加圖層時,數據名字如果含中文,顯示出來會被url編碼:

不影響發布,但在發布編輯命名圖層時還是用英文命名:

不然對后面gwc緩存服務有影響,數據訪問也不便。

圖層圖標的含義

http請求參數

http://localhost:8080/geoserver/test1_1/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=test1_1%3A%E6%88%91%E6%98%AF%E6%B0%B4%E7%B3%BB&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&STYLES=&WIDTH=768&HEIGHT=499&BBOX=129.3914794921875%2C42.62214660644531%2C130.4461669921875%2C43.30741882324219

BBOX參數

決定了圖片位置,它由最小x,最小y,最大x,最大y四個參數組成,由逗號隔開,url編碼后顯示為%2c,四個值可以是經緯度值,也可以是投影坐標的邊界(單位是米)。

width=768&height=499

是圖框的寬、高,決定圖幅。

LAYERS參數

即圖層的name,由工作空間名:圖層的命名組成。

通過wms也可獲取要素屬性信息參數

點擊獲取要素屬性信息,返回的是一個html:

http://localhost:8080/geoserver/test1_1/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=test1_1%3Aother_road1&LAYERS=test1_1%3Aother_road1&exceptions=application%2Fvnd.ogc.se_inimage&INFO_FORMAT=text%2Fhtml&FEATURE_COUNT=50&X=50&Y=50&SRS=EPSG%3A4326&STYLES=&WIDTH=101&HEIGHT=101&BBOX=129.75831985473633%2C42.89663314819336%2C129.79299545288086%2C42.93130874633789

發布矢量數據wfs(Web要素服務)

一個圖層的WFS服務查看方法是在Layer Preview頁面,選擇WFS下的GeoJSON(以JSON數據形式展現要素信息,方便解析),查看該圖層的要素信息:

谷歌瀏覽器有不兼容問題,在ie中選擇GeoJSON,即可以json形式返回該圖層所有要素的要素屬性數據。
這里使用了getFeature操作,用來檢索要素信息http://localhost:8080/geoserver/test1_1/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=test1_1%3A%E6%88%91%E6%98%AF%E6%B0%B4%E7%B3%BB&maxFeatures=50&outputFormat=json
除了查詢,wfs支持對地理要素的插入,更新,刪除和發現服務,專注於要素的地理信息,簡化了返回信息。

注意:柵格數據如瓦片,沒有wfs提供。

數據輸出格式

發布arcgis瓦片服務

目前沒有對於ArcGIS切片發布的支持,需要借助GeoWebCache,在geoserver1.7版本之后,geoserver都集成了GeoWebCache這個插件模塊。
與gwc結合使用手冊

拓展配置

獨立版的GeoWebCache除了對WMS服務地圖建立緩存外,還有對於ArcGIS切片發布的支持,但GeoWebCache插件版需要額外拓展配置下
總結為以下幾點:
1、下載獨立版的geowebcache1.16版(與geoserver的gws插件版本一致),將里面的依賴gwc-arcgiscache-1.16.1.jar拷到geoserver的lib中;
2、修改geoserver的lib中的gs-gwc-2.16.2.jar(直接下jar https://mvnrepository.com/artifact/org.geowebcache/gwc-arcgiscache/1.16.2 下不了)。
1)拷貝 geowebcache/WEB-INF/geowebcache-arcgiscache-context.xml到gs-gwc-2.16.2.jar里;
2)修改gs-gwc-2.16.2.jar中的geowebcache-servlet.xml 文件,添加 <import resource="geowebcache-arcgiscache-context.xml"/>
3)修改gs-gwc-2.16.2.jar中的geowebcache-core-context.xml 文件,添加 <bean id="gwcArcGISGridsetConfiguration" class="org.geowebcache.arcgis.layer.ArcGISCacheGridsetConfiguration" />

配置arcgis瓦片數據

點擊caching defaults進入Go to the embedded GeoWebCache home page,可以看到geowebcache.xml文件位置,再進入A list of all the layers and automatic demos,即是gwc的demo主頁。

在geowebcache.xml的layers節點中添加數據位置信息:

<arcgisLayer>
 <name>tmwp_ArcGISServer</name
 <tilingScheme>D:\gisdata\GEOWEBCACHE\tmwp_ArcGISServer\conf.xml</tilingScheme>
<tileCachePath>D:\gisdata\GEOWEBCACHE\tmwp_ArcGISServer\_alllayers</tileCachePath>
    <hexZoom>false</hexZoom>
</arcgisLayer>

在點擊gwc的demo主頁下方Reload TileLayerConfiguration
在demo列表找到tmwp_ArcGISServer,點擊png即可查看瓦片地圖。

http://localhost:8080/geoserver/gwc/service/wmts?layer=tmwp_ArcGISServer&style=&tilematrixset=EPSG%3A3857_tmwp_ArcGISServer&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=EPSG%3A3857_tmwp_ArcGISServer%3A3&TileCol=14108&TileRow=6022

http://localhost:8080/geoserver/gwc/service/wmts?layer=tmwp_ArcGISServer&style=&tilematrixset=EPSG%3A3857_tmwp_ArcGISServer&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=EPSG%3A3857_tmwp_ArcGISServer%3A3&TileCol=14106&TileRow=6020

http://localhost:8080/geoserver/gwc/service/wmts?layer=tmwp_ArcGISServer&style=&tilematrixset=EPSG%3A3857_tmwp_ArcGISServer&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=EPSG%3A3857_tmwp_ArcGISServer%3A3&TileCol=14106&TileRow=6021

要素信息獲取不支持
http://localhost:8080/geoserver/gwc/service/wmts?VERSION=1.0.0&LAYER=tmwp_ArcGISServer&STYLE=&TILEMATRIX=EPSG:3857_tmwp_ArcGISServer:3&TILEMATRIXSET=EPSG:3857_tmwp_ArcGISServer&SERVICE=WMTS&FORMAT=image/png&SERVICE=WMTS&REQUEST=GetFeatureInfo&INFOFORMAT=text/html&TileCol=14107&TileRow=6020&I=202&J=72

使用geowebcache的緩存功能

通過geoserver/gwc/service/wms訪問,會開啟緩存服務,並存儲在配置的$GEOWEBCACHE_CACHE_DIR文件中。在gwc主頁可以找到路徑:

Storage Locations
Config file:	gwc/geowebcache.xml
Local Storage:	C:\Users\ADMINI~1\AppData\Local\Temp\geowebcache

修改$GEOWEBCACHE_CACHE_DIR文件的方法有兩種 :改web.xml 或改geowebcache-core-context.xml。
修改后,重新啟動gs可識別:

目錄中會生成geowebcache.xml配置文件,在該配置文件中配置arcgis瓦圖。

也可以主動去生成切片參考4.4,這里也有linux版的安裝教程,在tile layers中選擇要切的圖層,選擇剪裁策略(EPSG:900913就是(EPSG:3857)) 和格式,點擊seed/truncate進入頁面,提交剪裁任務:

生成的瓦片圖也存放在$GEOWEBCACHE_CACHE_DIR文件中。

可能出現的問題

1、因標識不識別導致運行不起來

應該是xml文件配置的問題。

2、jar包沖突問題
java.lang.NoSuchMethodError
在使用gwc-arcgiscache-1.10.5.jar、gwc-arcgiscache-1.15.2.jar時出現,還是需要16版本。

3.服務成功發布但查看地圖http://localhost:8090/geowebcache/demo/tmwp_ArcGISServer?gridSet=EPSG:3857_tmwp_ArcGISServer&format=image/png 顯示400,日志報錯:

還是瓦圖文件的問題,參考這里,修改瓦圖文件即可。

4.跨域問題解決


免責聲明!

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



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