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.跨域问题解决

posted @ 2020-05-14 16:03  cashew  阅读(1281)  评论(0编辑  收藏  举报