GeoServer中地图可视化提升利器之SLD知识简介

2023-10-12 18:10

本文主要是介绍GeoServer中地图可视化提升利器之SLD知识简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

 一、SLD简介

1、介绍

2、SLD的版本

3、SLD的Schema说明

二、SLD中相关知识解析

1、Scheme简要说明

2、一个SLD实例

总结


前言

        在互联网上有很多精美的地图,在地图从shp或者gdb等矢量文件,经过设计人员的加工,配色,标注,符号化等等修饰加工。原始的点线面数据,在经过数据处理人员的修饰后,就变得丰富多彩,引人入胜。

        在常见的Arcgis或者Qgis等桌面产品中,支持对地图产品的符号化,在符号化同时辅以标注等信息,实现对地图样式的定制。通常,在Arcgis中,使用ArcMap设置好地图后,同时会生成地图的mxd文件。在进行地图服务发布的时候,可以将对应的mxd文件导入到服务中,即可实现样式的发布。那么在免费的商业套件GeoServer中,是怎么进行样式定制的呢?

        本文将简单介绍Geoserver中,地图样式定制功能的相关知识。本文将首先介绍SLD的基础概念,相关约束标准,其次结合一个SLD的实例进行案例讲解,帮助读者对SLD有一个直观的认识。

 一、SLD简介

1、介绍

        地理空间数据(矢量和栅格)没有内在的视觉组件。为了查看数据,必须对其进行样式设置。样式指定用于在地图上渲染数据的颜色、厚度和其他可见属性。WMS为每个数据集提供一组样式选项;但是这些选项是由服务器预先配置的,用户不能创建、检查和修改样式。

        Styled Layer Descriptor(SLD)是一个标准,它使应用程序能够在XML文档中配置如何正确地描述WMS中的层和图例。它使用符号结尾(SE)来指定特性和覆盖范围的样式。WMS的SLD配置文件通过附加操作增强WMS,以支持WFS的功能样式和WCS的覆盖范围。

        SLD对于地图的作用,类似于CSS对于HTML的作用,如果没有Css,Html的世界将是暗淡无光的,没了SLD的地图,也将失去地图独特的美感。SLD是一种描述地图图层样式的标准,一般用于WMS。一个地图不仅包含数据源组成,还需要对数据进行符号化和渲染,SLD就是这个定义地图图层符号化和渲染信息的标准。

2、SLD的版本

        sld发展到现在,已经是1.1的版本,从最开始的1.0发展而来。其实现标准参考如下:

序号SLD标准参考内容
11.0.0OGC Styled Layer Descriptor Implementation Specification, Version 1.0.0
21.1.0

OGC Symbology Encoding Implementation Specification, Version 1.1.0

OGC Styled Layer Descriptor profile of the Web Map Service Implementation Specification, Version

        需要注意的是,在GeoServer当中,根据版本的不同,其支持SLD的程度不一样,GeoServer完全执行SLD1.0.0的标准,而对于1.1.0版本来说,只执行了部分标准。一般来说,1.0.0版本已经很好的满足日常生活需要。

3、SLD的Schema说明

        sld作为一种xml形式的图层样式控制文件,采用的基于xml的定义方式,为了满足其特殊的定义需求,对其xml的内容是有严格的Schema验证的。只要是支持标准OGC的服务标准都应该对生成的sld进行数据格式的校验,在生成sld时也必须进行规范格式的创建。

        有兴趣的朋友可以在sld的schema官方定义看到,其Schema的不同历史阶段说明。

OpenGIS(r) SLD schema - ReadMe.txt
==================================OpenGIS Styled Layer Descriptor Profile of the Web Map Service Implementation SpecificationMore information on the OGC SensorML standard may be found athttp://www.opengeospatial.org/standards/sldThe most current schema are available at http://schemas.opengis.net/ .-----------------------------------------------------------------------2012-07-21  Kevin Stegemoller* v1.0 - v1.1: WARNING XLink change is NOT BACKWARD COMPATIBLE.* changed OGC XLink (xlink:simpleLink) to W3C XLink (xlink:simpleAttrs)per an approved TC and PC motion during the Dec. 2011 Brussels meeting.see http://www.opengeospatial.org/blog/1597* implement 11-025: retroactively require/add all leaf documents of anXML namespace shall explicitly <include/> the all-components schema* v1.1.0: added sldAll.xsd as the all-components document (06-135r11 #14)* v1.1.0: updated xsd:schema/@version to 1.1.0.2 (06-135r11 s#13.4)* v1.0.0: updated xsd:schema/@version to 1.0.0.2 (06-135r11 s#13.4)* v1.1: removed 1.1 because it was posted in error. The sld 1.1 URL is rewritten to 1.1.0 to preserve backward compatibility.* v0.7.x: schema were removed and archived* v1.0.20: schema were removed and archived2010-11-17  Simon Cox* v1.1: Changes to 1.1.0 create SLD 1.1.1+ added sldAll.xsd as the all-components document (06-135r9 s#14)+ created sld/1.1 version from SLD 1.1.12010-02-01  Kevin Stegemoller* v1.1.0, v1.0.20, v1.0.0, v0.7.3, v0.7.2, v0.7.1+ updated xsd:schema/@version attribute (06-135r7 s#13.4)+ update relative schema imports to absolute URLs (06-135r7 s#15)+ update/verify copyright (06-135r7 s#3.2)+ add archives (.zip) files of previous versions+ create/update ReadMe.txt (06-135r7 s#17)2007-11-28  Kevin Stegemoller* v1.1.0 Published SLD 1.1.0 schemas from OGC 05-078r4 includingCorrigendum 1 07-123r1 (Corrigendum 1 for 05-078r4)2005-11-22  Arliss Whiteside* SLD versions 0.7.2 through 1.0.20: The sets of XML Schema Documentsfor OpenGIS Styled Layer Descriptor Versions 0.7.2 through 1.0.20have been edited to reflect the corrigenda to all those OGCdocuments that is based on the change requests:OGC 05-068r1 "Store xlinks.xsd file at a fixed location"OGC 05-081r2 "Change to use relative paths"* Note: check each OGC numbered document for detailed changes.-- [ VERSION NOTES ] --------------------------------------------------OGC is incrementally changing how schemas will be hosted. A newrevision of the Specification Best Practice policy document (06-135r11)clarifies this practices.OGC is moving to host the schemas using a 2 digit version number sothat dependent documents (schemas) will not have to change each time aschema is corrected (by a corrigendum). The schemas actual versionnumber will be kept in the version attribute on the schema elementwhich will be used to signify that there has been a change to theschema. Each previous revision will be available online in a ZIParchive.The LATEST version is the M.N directory where * M is the major version* N is the minor versionThe latest bugfix version now is always in the M.N directory and documented in the version attribute on the schema element. The olderversions are now archived in the -M_N_X.zip files.Previously the OGC used M.N.C where* M is the major version* N is the minor version* C is the corrigendum versionThese older M.N.C versions will be updated using M.N.C.X where X may be a bugfix version. These schema will also be .zip archived.-- 2010-01-21  Kevin Stegemoller  updated 2012-07-21-----------------------------------------------------------------------Policies, Procedures, Terms, and Conditions of OGC(r) are availablehttp://www.opengeospatial.org/ogc/legal/ .Copyright (c) 2010 Open Geospatial Consortium.-----------------------------------------------------------------------

        上面也包含了SLD从1.0.0到1.1.0的不用版本的升级概况。

二、SLD中相关知识解析

1、Scheme简要说明

         上图以1.0.0版本的schema说明为例,在schema的要求中定义一些属性和具体的值范围。SLD-规范是采用XML定义地图显示样式,通过自定义SLD来配置地图图层渲染的可视化风格,可以设置过滤器,自定义图例等。rule是SLD最重要的一个元素,因为她允许根据给定的某个参数(使用过滤器)对数据集进行分类,所有的与分类有关的重要参数都必须在rule元素中设置。

        对于使用SLD来进行地图的自定义样式,则必须结合使用SE(Symbology Encoding)这个标准。SE是OGC的另一个标准,这个也是基于XML模式定义的,这个标准允许我们自定义不同的符号样式来表达地图上不同的要素。SLD文件使用这种语言,这样在地图渲染时地图服务可以解释由用户定义的样式。

         以上是对Schema文档的一些解析。涉及的内容比较多,感兴趣的朋友可以在官网上找到官方的定义。

2、一个SLD实例

这里分享一个SLD实例,实现对Point(点要素)的样式控制。

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><!-- a Named Layer is the basic building block of an SLD document --><NamedLayer><Name>default_point</Name><UserStyle><!-- Styles can have names, titles and abstracts --><Title>Red Square Point</Title><Abstract>A sample style that draws a red square point</Abstract><!-- FeatureTypeStyles describe how to render different features --><!-- A FeatureTypeStyle for rendering points --><FeatureTypeStyle><Rule><Name>rule1</Name><Title>Red Square Point</Title><Abstract>A 6 pixel square with a red fill and no stroke</Abstract><PointSymbolizer><Graphic><Mark><WellKnownName>square</WellKnownName><Fill><CssParameter name="fill">#FF0000</CssParameter></Fill></Mark><Size>6</Size></Graphic></PointSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer>
</StyledLayerDescriptor>

         上面SLD文件中,演示了PointSymbolizer的具体使用,对点要素设置了颜色填充样式。在GeoServer中使用以上样式渲染数据效果如下:

总结

        以上就是本文的主要内容,本文将首先介绍SLD的基础概念,相关约束标准,其次结合一个SLD的实例进行案例讲解,帮助读者对SLD有一个直观的了解。关于SLD更多的专业知识,可以在相应的官方文档中查询,行文仓促,如有不当之处,欢迎评论交流,批评指正。

这篇关于GeoServer中地图可视化提升利器之SLD知识简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197562

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用