使用GeoServer发布WMS服务

目录

一、使用默认样式发布一个图层

    1.准备数据

    2.启动GeoServer

    3.进入服务器管理页面。

    4.创建工作区。

    5.在工作区中加入新的数据存储

    6.发布图层

    7.预览图层

二、使用样式化图层描述符

    1.下载一个带注记的多边形样式化图层描述符

扫描二维码关注公众号,回复: 2333953 查看本文章

    2.修改.sld文件

    3.将.sld文件加入到服务器中

    4.应用样式化图层描述符

   三、在QGIS中访问WMS

    1.新建WMS连接

    2.在地图中加入WMS图层

   3.在地图中叠加OpenStreetMap底图


一、使用默认样式发布一个图层

    1.准备数据

    实验数据:https://pan.baidu.com/s/1WX3uzeIoYY0i7lsE6F6FyA

    从下载文件的"Data\Neighborhoods“文件夹中,将Neighborhoods数据复制到费城数据文件夹中(E:\Data\Philadephia)。该数据已经经过投影变换,投影为EPSG:3857

    2.启动GeoServer

    选择”开始>所有程序>GeoServer2.13.0>Start GeoServer“,启动GeoServer。

    3.进入服务器管理页面。

    通过选择”开始>所有程序>GeoServer2.13.0>GeoServer Web Admin Page“,或者直接再浏览器中输入"http://localhost:8080/geoserver/web/"地址,进入Geoserver的Web管理页面。在Geoserver的Web管理页面中输入用户名与密码进行登录。如果是默认安装,那么用户名为"admin",密码为"geoserver"。

    4.创建工作区。

    在GeoServer中发布和部署地图数据涉及到的几个重要概念——工作区(WorkSpace)数据存储(Store)图层组等。

    工作区(有时又称为命名空间)是一个用于组织类似图层数据(数据集)的容器。常常会把某个项目或工程的相关图层数据存放到一个工作区里。通过工作区的使用,可以避免相同图层名的冲突。例如,在名为beijing工作区中的streets图层,引用时使用的是"beijing:streets",这就可以与在另一个工作区中同样名为streets图层(dc:streets)避免冲突。

    数据存储是一实际的文件夹或数据集。在一个工作区中可以包含几个数据存储,因此在引用数据存储时必须在数据存储前加上工作区的名称。

    在GeoServer的Web管理页面窗口的左边单击”数据“中的”工作区“,在右边窗口列出了7个示例工作区与管理工作区的两个链接,分别是添加与删除工作区

    单击”添加新的工作区“,进入新建工作区的界面,在这里需要输入工作区的名字和命名空间URI。

    在Name文本框中输入"webgis",在命名空间URI文本框中输入"http://localhost:8080/geoserver/webgis",然后单击”提交“按钮。

    注意:工作区名称是描述项目的标识符,它不能超过十个字符或包含空格。命名空间URI(统一资源标识符)通常可以是与你的项目关联且添加了一个用于指示工作区的尾随标识符的URL,命名空间URI不需要解析为实际有效的Web地址。

    5.在工作区中加入新的数据存储

    数据存储维护着地图数据和文件系统中的文件夹的映射关系

    在GeoServer的Web管理页面窗口的左边单击”数据“中的”数据存储“,在右边窗口列出了9个示例数据存储与管理数据存储的两个链接,分别是添加与删除数据存储

    点击”添加新的数据存储“,进入新建数据源页面。在该窗口中需要确定数据源的类型。在GeoServer中,如果同时有栅格与矢量数据的话,则需要分别建立数据存储。在本实践中,我们使用的是矢量文件数据,因此选择"Directory of spatial files(shapefiles)",进入新建矢量数据源窗口。

    按照下图所示设置各参数,将工作区设置为"webgis",将数据源名称设置为"Philadelphia",然后设置数据对应的文件夹。最后单击“保存”按钮。

    要注意的是,即使在文件夹中同时还包含栅格数据,也不影响创建矢量数据源的数据存储。只是如果想使用栅格数据,那么则需要另外新建数据存储。

    通过上面的设置之后,便可以指定需要发布为服务的矢量图层。

    6.发布图层

    在新建矢量数据源页面中单击“保存”按钮后,自动切换到新建图层页面。该页面列出了Philadelphia文件夹中所有的矢量文件。

    或者,在GeoServer的Web管理页面窗口的左边单击“数据”中的“图层”,在右边窗口列出了19个示例图层与管理图层的两个链接,分别是添加与删除资源。选择“添加新的资源”也同样进入新建图层页面。从下拉列表框中选择webgis:philadelphia,表示从该数据存储中选择图层。

    找到Neighborhoods图层,然后选择“发布”链接,进入编辑图层页面。

    在该页面中包含了许多发布图层的选项。在数据选项卡中定位到“坐标参照系统”部分,首先在“定义SRS”文本框中输入“EPSG:3857”,并将“SRS处理”设置为“强制声明”。然后通过单击“从数据中计算”与“Compute from native bounds"计算并自动填充边框坐标,如下图所示:

    最后在页面底部选择”保存“,进入到图层列表页面。

    注意在该步骤中,如果选择了"Compute from native bounds"之后并没有计算出经纬度表示的边框,那么可能是GeoServer没能正确解析”定义SRS“文本框中输入的坐标参照系统。这时需要单击”查找“按钮,然后选择EPSG:3857.最后再重新选择计算。

    7.预览图层

    在GeoServer的Web管理页面窗口的左边单击”数据“中的"Layer Preview",在右边窗口列出了发布为服务的图层与图层组。定位到webgis:Neighborhoods图层,然后选择OpenLayers,将会弹出一个新的窗口,在该窗口中使用OpenLayers访问该图层的WMS服务。

二、使用样式化图层描述符

    上述的WMS服务确实是包含了美国费城的社区,但是没有注记,而且也没有颜色的区分。以下将介绍如何使用样式化图层描述符,加上注记及无填充蓝色边界线条的多边形符号。这样便可将其作为专题图层叠加在其他基础底图上。

    1.下载一个带注记的多边形样式化图层描述符

    在浏览器地址栏中输入如下地址:

    http://docs.geoserver.org/stable/en/user/styling/sld/cookbook/polygons.html#polygon-with-styled-label

    这是一个带注记的多边形样式化图层描述符,非常接近我们的要求。我们将以此为基础来进行修改。

    在上面的页面中选择”View and download the full "Polygon with styled label" SLD",将打开该.sld文件。

    使用浏览器的另存为功能,将文件保存为polygonwithstyledlabel.sld

    注意:不能在浏览器窗口中复制然后将其粘贴到一个文本文件中,这样做的话GeoServer就会不能正确识别。因为窗口中显示的内容没有包含完整的XML文件头。

    2.修改.sld文件

    使用文本编辑器打开该.sld文件,定位到PolygonSymbolizerTextSymbolizer部分,可见到如下内容:

          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#40FF40</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#FFFFFF</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>        
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>name</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Arial</CssParameter>
              <CssParameter name="font-size">11</CssParameter>
              <CssParameter name="font-style">normal</CssParameter>
              <CssParameter name="font-weight">bold</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
              </PointPlacement>
            </LabelPlacement>
            <Fill>
              <CssParameter name="fill">#000000</CssParameter>
            </Fill>
            <VendorOption name="autoWrap">60</VendorOption>
            <VendorOption name="maxDisplacement">150</VendorOption>
          </TextSymbolizer>

    在PolygonSymbolizer多边形符号)部分注意stroke画笔)与fill填充)是如何设置的,在TextSymbolizer中注意Font字体)与LabelPlacement注记位置)的设置。还需要注意到注记为VendorOption的标签,表示这不是样式化图层描述符规范的内容,但是GeoServer支持。

    下面就需要编辑样式化图层描述符,将其修改为无填充蓝色边界线条的多边形符号,并佩带蓝色注记。之外还要修改的是ogc:PropertyName标签指定的注记字段。本示例中默认是"name",但在neighborhoods矢量数据中,对应的字段名是"NAME",需要区分大小写。

    修改后的对应部分的内容如下:

          <PolygonSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#133E73</CssParameter>
              <CssParameter name="stroke-width">2</CssParameter>
            </Stroke>
          </PolygonSymbolizer>        
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>NAME</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Arial</CssParameter>
              <CssParameter name="font-size">11</CssParameter>
              <CssParameter name="font-style">normal</CssParameter>
              <CssParameter name="font-weight">bold</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
              </PointPlacement>
            </LabelPlacement>
            <Fill>
              <CssParameter name="fill">#133E73</CssParameter>
            </Fill>
            <VendorOption name="autoWrap">60</VendorOption>
            <VendorOption name="maxDisplacement">150</VendorOption>
          </TextSymbolizer>

    3.将.sld文件加入到服务器中

    在GeoServer的Web管理页面窗口的左边单击“数据”中的“Styles”,在右边窗口列出了服务器中已包含的预加载样式,以及管理样式的链接。

    单击"Add a new style"链接,进入New style页面。将新样式的名称设置为"PolygonWithStyledLabel",将工作区设置为"webgis"。然后在页面底部浏览到样式化图层描述符polygonwithstyledlabel.sld文件,选择"upload"并将其上传到GeoServer服务器上。最后单击”提交“按钮完成新建样式。

    在单击”提交“按钮前,还可以单击"Validate"验证是否存在错误。

    4.应用样式化图层描述符

    在GeoServer的Web管理页面窗口的左边单击”数据“中的”图层“,在右边的页面中找到Neighborhoods图层,然后单击,进入编辑图层页面。

    在编辑图层页面中,单击”发布“标签。定位到”WMS Settings“部分,在可获取样式列表框中选择polygonwithstyledlabel,然后选择向右的箭头,将其移动到选择样式中。并将默认样式设置为"polygonwithstyledlabel"。最后单击”保存“按钮。

    从图中可以看出,一个图层可以有多个样式,但是需要选择其中一个作为默认样式。对于本示例,另一样式可以为GeoServer自带的基本灰色多边形样式。

    通过图层预览功能,Neighborgoods图层在OpenLayers查看器中的显示如下所示:

    相对于QGISArcMap等桌面程序来说,GeoServer和WMS中的注记功能使用的规则比较简单。但是注记仍然是网络地图一个非常棘手的问题。注记属于计算密集型,并且依赖于复杂的规则,必定减缓地图绘制速度。由于这些问题,WebGIS中有时使用互动弹出窗口或文本作为替代机制。

   三、在QGIS中访问WMS

    由于WMS是一标准的网络地图服务,因此很多客户端都能显示WMS。在上面中演示了使用OpenLayers来预览WMS图层,下面将介绍如何在QGIS中访问WMS图层。

    1.新建WMS连接

    启动QGIS,在窗口左边的工具条中选择”添加WMS/WMTS图层“按钮,打开”Add Layer(s) from a WM(T)S Server"窗口。

  选择”新建“按钮,打开”创建一个新的WMS连接“窗口。将名称设置为"Philadelphia Layers",URL设置为"http://localhost:8080/geoserver/webgis/wms?"。最后单击“确定”按钮。

    2.在地图中加入WMS图层

    建立连接之后,然后单击“连接“按钮,便会列出连接中包含的图层。

    在图层列表中选择Neighborhoods图层,然后单击”更改“按钮,打开坐标参照系选择器窗口,将坐标参照系设置为EPSG:3857

    最后单击“添加”按钮,在地图中加入Neighborhoods图层。

   3.在地图中叠加OpenStreetMap底图

    在QGIS窗口左边,选择XYZ Tiles,拖动OpenStreetMap到图层框中,将在地图中显示OpenStreetMap地图。

    在图层控制器中,通过拖拉使Neighborhoods图层位于OpenStreetMap地图上部。最后地图显示效果如下:

    通过上面的步骤,我们创建了一个“混搭”地图,该地图引用两个不同服务器的Web服务。

猜你喜欢

转载自blog.csdn.net/qq_35732147/article/details/81127068