一、线上地图样式

SLD:风格化图层描述器(Styled Layer Descriptor)的简称,是2005年OGC提出的一个标准样式层描述符,这个标准在一定条件下允许WMS服务器对地图可视化的表现形式进行扩展。在没有SLD之前,只能使用一些已经在服务器上规定好的样式来对地图进行可视化。而当使用了实现了SLD标准之后,它允许我们从客户端来对地图进行定义自己的样式,分级显示等操作,极大的扩展了地图可视化的灵活性。SLD用于后端渲染图层给前端返回栅格数据。

Mapbox Style:定义地图视觉外观的文档,要绘制哪些数据、绘制地图的顺序以及绘制数据时如何对数据进行样式。样式文档是具有特定根级和嵌套属性的JSON对象。此规范定义并描述这些属性。Mapbox Style用于前端渲染图层,后端只返回矢量切片数据。

Geoserver图层样式使用的是OGC标准的SLD文件,其对初学者学习成本高,学习难度大,如果有类似Mapbox的mapbox studio、百度地图的个性化地图编辑器、高德地图的自定义地图编辑器将大大提高地图制图效率。相关文章《让maputnik支持geoserver》。

二、SLD样式编辑软件

1.QGIS

一个开源的GIS桌面软件,具有丰富的地图样式编辑,功能强大,能够生成SLD文件。

2.udig

一个基于Java开发的GIS桌面应用程序,其样式编辑功能没有QGIS强,界面操作上比QGIS简单,能够生成SLD文件,但部分样式参数无法编辑需要自行编写SLD,而且加载大数据量的数据软件容易崩溃。

3.SLDEditor

编辑地图样式的 Java 桌面应用程序,允许使用图形用户界面以交互方式创建和编辑OGC 样式层描述符。能生成SLD文件,可以完全控制OGC SLD标准的所有方面;但是无法加载空间数据,对比着调节样式及时查看效果;相比前两个软件,这个更像是一个SLD可视化编辑工具。

三、使用maputnik调节自定义样式

通过网上搜索查看了《让maputnik支持geoserver》这篇博客,发现这就是我想要的工具,一个类似百度、高德地图那样的矢量地图配图工具,比起前面的桌面软件调节样式这个更轻,功能更强大,操作更友好。不过前提条件Geoserver需要安装两个插件:

  • Vector Tiles (支持maobox矢量切片插件)
  • MBStyle Styling(支持Mapbox样式文件插件)

1.插件安装

下载Geoserver对应版本的插件Vector Tiles、MBStyle Styling,将解压安装包中的所有jar包放在.../webapps/geoserver/WEB-INF/lib目录下,重启Geoserver,在编辑图层中Tile Caching标签页看到“application/vnd.mapbox-vector-tile”说明Vector Tiles插件安装成功,新建样式文件Format下拉框看到“MBStyle”说明MBStyle Styling插件安装成功。

2.设置图层开启矢量切片

将OSM地图本地发布(四)-----Geoserver发布自定义地图中的“taiwan”图层组开启矢量切片功能。

查看矢量切片链接,打开Geoserver首页点击TMS:

900913@pbf链接为maputnik要用的链接,因为mapbox style只支持谷歌Web墨卡托投影EPSG:900913

http://localhost:8080/geoserver/gwc/service/tms/1.0.0/taiwan%3Ataiwan@EPSG%3A900913@pbf

3.使用maputnik打开图层

不会使用的先看 《让maputnik支持geoserver》这篇博客、Mapbox Style官方文档,这里提供一个json样式模板,其中tiles中的链接即为前面TMS中看到的链接,source为设置的数据源,source-layer为数据源中各个图层的名字,即taiwan图层组中的各个图层的名字:

{"version": 8,"name": "Taiwan Liberty","metadata": {"maputnik:renderer": "mbgljs"},"center": [120.679882, 24.143171],"zoom": 4,"sources": {"taiwan": {"type": "vector","scheme": "tms","tiles": ["http://localhost:8080/geoserver/gwc/service/tms/1.0.0/taiwan%3Ataiwan@EPSG%3A900913@pbf/{z}/{x}/{y}.pbf"],"minZoom": 0,"maxzoom": 24}},"sprite": "https://maputnik.github.io/osm-liberty/sprites/osm-liberty","glyphs": "https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key={key}","layers": [{"id": "background","type": "background","layout": {"visibility": "visible"},"paint": {"background-color": "#F2EFE9"}},{"id": "其他-海洋","type": "fill","source": "taiwan","source-layer": "simplified_water_polygons","layout": {"visibility": "visible"},"paint": {"fill-color": "#AAD3DF"}},{"id": "其他-建筑物","type": "fill","source": "taiwan","source-layer": "building","minzoom": 0,"maxzoom": 24,"paint": {"fill-color": "#DCD9D6","fill-outline-color": {"base": 1,"stops": [[13, "hsla(35, 6%, 79%, 0.32)"], [14, "hsl(35, 6%, 79%)"]]}}},{"id": "水域","type": "fill","source": "taiwan","source-layer": "water","minzoom": 0,"maxzoom": 24,"layout": {"visibility": "visible"},"paint": {"fill-color": "#B2CEFE"}},{"id": "水域-边界","type": "line","source": "taiwan","source-layer": "water_outline","minzoom": 0,"maxzoom": 24,"paint": {"line-color": "#B2CEFE"}},{"id": "水域-河流","type": "line","source": "taiwan","source-layer": "river","minzoom": 0,"maxzoom": 24,"layout": {"visibility": "visible"},"paint": {"line-color": "#B2CEFE", "line-width": 1}},{"id": "公路-line","type": "line","source": "taiwan","source-layer": "route_line","minzoom": 0,"maxzoom": 24,"layout": {"line-join": "round", "line-cap": "round"},"paint": {"line-color": "#4A83BF", "line-opacity": 0.6, "line-width": 0.4}},{"id": "地名-city","type": "symbol","source": "taiwan","source-layer": "placenames_medium","minzoom": 0,"maxzoom": 24,"layout": {"text-field": {"type": "identity", "property": "name"},"text-size": 12,"text-allow-overlap": false,"text-ignore-placement": false,"text-font": ["SimSun Regular"]},"paint": {"text-halo-color": "#FFFFFF","text-opacity": 1,"text-halo-width": 1}}],"id": "taiwan_liberty"
}

4.使用maputnik调节样式

这里提供一个完整的样式文件,链接: https://pan.baidu.com/s/1qbVC5Jbsa42rbP-p_i5XxQ 提取码: w2pf,文件中的taiwan.json为样式文件。

打开maputnik将taiwan.json文件导入,即可进行样式调节。

四、Mapbox样式转为SLD

1.导出maputnik调节好的样式文件

2.分离不同图层样式

maputnik导出的json文件包含了所有的图层样式,将不同图层样式单独分离出来,方便导入Geoserver中,以building图层为例,在layers数组中找到"source-layer": "building"的样式,放入下面模板中:

{"version": 8,"name": "Taiwan Liberty","metadata": {"maputnik:renderer": "mbgljs"},"center": [120.679882, 24.143171],"zoom": 4,"sources": {"taiwan": {"type": "vector","scheme": "tms","tiles": ["http://localhost:8080/geoserver/gwc/service/tms/1.0.0/taiwan%3Ataiwan@EPSG%3A900913@pbf/{z}/{x}/{y}.pbf"],"minZoom": 0,"maxzoom": 24}},"sprite": "https://maputnik.github.io/osm-liberty/sprites/osm-liberty","glyphs": "https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key={key}","layers": [//分离的图层样式粘贴放在这里!],"id": "taiwan_liberty"
}

最终分离样式文件如下:

{"version": 8,"name": "Taiwan Liberty","metadata": {"maputnik:renderer": "mbgljs"},"center": [120.679882, 24.143171],"zoom": 4,"sources": {"taiwan": {"type": "vector","scheme": "tms","tiles": ["http://localhost:8080/geoserver/gwc/service/tms/1.0.0/taiwan%3Ataiwan@EPSG%3A900913@pbf/{z}/{x}/{y}.pbf"],"minZoom": 0,"maxzoom": 24}},"sprite": "https://maputnik.github.io/osm-liberty/sprites/osm-liberty","glyphs": "https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key={key}","layers": [{"id": "其他-建筑物","type": "fill","source": "taiwan","source-layer": "building","minzoom": 15,"maxzoom": 24,"filter": ["all", ["!=", "building", "ferry"]],"paint": {"fill-color": "#DCD9D6","fill-outline-color": {"base": 1,"stops": [[13, "hsla(35, 6%, 79%, 0.32)"], [14, "hsl(35, 6%, 79%)"]]}}},{"id": "水域-建筑物","type": "fill","source": "taiwan","source-layer": "building","minzoom": 13,"maxzoom": 24,"filter": ["all", ["==", "building", "ferry"]],"paint": {"fill-color": "#DCD9D6","fill-outline-color": {"base": 1,"stops": [[13, "hsla(35, 6%, 79%, 0.32)"], [14, "hsl(35, 6%, 79%)"]]}}}],"id": "taiwan_liberty"
}

3.将Mapbox样式导入Geoserver

新建样式:

选择MBStyle,粘贴上一节分离的building样式文件,Validate检测一下正确性后保存:

4.查看转换后的SLD文件

上一步新建MB_building样式保存完成后,在.../webapps/geoserver/data/workspaces/

taiwan/styles中可以找到SLD文件:

提示:如果没有看到对应的sld文件,可能是新建样式选错了工作空间或使用了默认工作空间,在其他文件夹里找;或者需要打开样式文件预览一下才会生成sld文件。

五、总结

目前来看Mapbox提供的技术是最好用的开源自定义样式编辑解决方案,maputnik是基于Mapbox规范实现的开源的轻量级样式编辑工具,Mapbox官方样式编辑工具是Mapbox Studio。

安装MBStyle Styling插件已经支持了Mapbox样式文件,为什么要多此一举转为SLD文件?从转入过程可以发现Geoserver支持的样式格式只有SLD文件,使用插件也是转为SLD文件在使用,这样转换后可以将SLD文件导出在其他环境中使用,比如生产环境,其他Geoserver服务器中;另一方面我一直在寻找SLD转Mapbox Style工具方便已经存在的SLD样式能供Mapbox使用、Mapbox Style转SLD工具方便已经存在的MB样式供Geoserver使用,这样能更高效使用,如调节一套样式多平台上使用。

Geoserver图层SLD样式编辑问题相关推荐

  1. qgis修改geoserver图层样式

    一.制作样式文件(.sld) 1.qgis找到对应的shp数据并双击打开: 2.右键图层选择属性 3.编辑图斑的内部填充样式 4.编辑图斑的边框样式 5.全部编辑完后点击apply,即可看到自定义的样 ...

  2. QGIS + GEOSERVER 图层符号化(根据表数据自定义图层样式)

    QGIS + GEOSERVER 图层符号化 图层服务自定义符号化,根据数据进行图层样式的编辑. 1.QGIS 加载数据并配置样式 QGIS 添加PostgreSql 的表数据 输入密码 选择要符号化 ...

  3. geoserver地图发布服务教程---4.使用udig获取sld样式

    上一篇也说了,样式主要还是考sld代码来实现的,但是学习代码是需要时间成本滴,那么不想学或者来不及去学习sld语法的同学们,这里就有现成的软件推荐给大家,来实现现成的代码咯.其实qigs和arcgis ...

  4. geoserver图层样式

    Styled Layer Descriptor  标准描述了稳当的结构合使用规则.一个文档包含了符号定义和绘制规则,那么这个文档就叫做Styled Layer Desciptor(SLD)样式,它是一 ...

  5. geoserver利用字符.tff文件制作sld样式

    转载自: https://blog.csdn.net/dcj_gis2006/article/details/11720173 Character Symbol (1) 最终效果: 第一步:制作ttf ...

  6. Geoserver 图层数据服务发布(.shp)

    Geoserver 图层数据服务发布(.shp) Geoserver是一个功能齐全,遵循OGC开放标准的开源WFS-T和WMS服务器.利用Geoserver可以把数据作为maps/images来发布( ...

  7. 利用geotools生成点线面和注记的sld样式(二)

    接上一部分,我们可以用Filter来区分多个Rule,SLD除了可以设置要素厚度和颜色外,还可以用圆形.方形.自定义的图片图形或文字等设置Point,LineString可以渲染成各种线条等,Poly ...

  8. css6图层 解锁,javascript - 如何在Openlayers上更改WMS图层的样式(来自Javascript) - 堆栈内存溢出...

    我有一个geojson文件,我存储在我的GeoServer上. 该文件包含大约150个多边形. 我正在通过WMS服务调用此层,并成功在OpenLayers(v4.6.4)上显示具有默认样式的图层. 现 ...

  9. GeoServer 图层访问控制身份验证

    参考https://chenjiamian.github.io/GeoServer-Beginners-Guide/  第10章 GeoServer 图层访问控制身份验证,一般根据 角色和用户 + 过 ...

  10. Geoserver怎样设置地图不同路线显示不用颜色样式(同一个图层组设置多个图层不同样式)

    场景 Geoserver怎样发布图层组(shapefile文件): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11875391 ...

最新文章

  1. 2022-2028年中国无溶剂聚氨酯复膜胶行业市场调查研究及发展前景规划报告
  2. Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)
  3. jpa-和-mybatis创建的事物管理器名称
  4. ADO.NET提供的Connection类总结
  5. js中比较时间字串大小
  6. php开发电商项目的技术,[项目实战] php电商开发基本功课程 电商后台实战开发视频教程 共6章...
  7. 压缩js和css, IIS开启Etags, IIS开启Gzip
  8. 云端设计平台Coohom在生产环境中使用istio的经验与实践
  9. Kaggle竞赛宝典方案汇总
  10. TensorFlow2.0项目实战:从模型搭建到工业化部署全链路!
  11. 悄悄安装vcredist_x64.exe,不弹出对话框
  12. sop8封装尺寸图_IC封装原理及功能特性汇总
  13. WinRAR压缩软件无广告版
  14. 判断是否安装Alexa工具条
  15. XMLSpy的主要功能介绍
  16. matlab怎么表示二元函数,如何用Matlab画二元函数?
  17. ie地址栏不能识别中文参数(google浏览器是正常的)
  18. SD卡无法识别的问题解决 ”mmc0: error -110 whilst initialising SD card”
  19. Arturia黑五促销,仅剩一天
  20. 安卓bmi项目_bmi计算器

热门文章

  1. python字符串去掉特殊符号_python去特殊字符_python 去字符串中特殊符号 - CSDN
  2. UVALive 4490 Help Bubu
  3. 基于 mini2440 电阻式触摸屏(四):mini2440触摸屏驱动分析
  4. 英语音标、发音技巧、浊化规则
  5. tp框架中构造函数__construct()与初始化函数_initialize()的区别
  6. 家中买的计算机配置,配置,教您买电脑主要看哪些配置
  7. 时间轴+html+源码,HTML5+CSS3+Jquery实现纯手工的垂直时光轴【附源码】
  8. 服务器都是sas硬盘吗,SAS硬盘一般用于服务器
  9. DirectX9 SDK Samples(19) AntiAlias
  10. 期货软件开发-期货软件搭建平台