目录

前言

一、图层编码导致图层预览无服务的异常问题

1、问题描述

2、问题分析

3、问题解决

二、图层空间参考投影设置的问题

1、问题描述

2、问题分析

3、问题解决

三、Qgis导出的SLD在GeoServer中发布预览报错的问题

1、问题描述

2、问题分析

3、问题解决

四、GeoServer中多字段拼接联合标注问题

1、问题描述

2、问题分析解决

总结


前言

在前面的博客GeoServer中使用Qgis发布的SLD样式进行图层美化中,基本学会了自主发布地图图层数据。也了解了基于地图的基本样式设置。对Webgis制图的基本流程和操作方式有了基本认识。在平时的工作学习过程当中,还会遇到很多的问题。这里简单几种常见的问题,以及针对性的解决方案。

这里的雷点和坑点主要是以下几个方面:

  1. 图层编码导致图层预览无服务的异常问题。
  2. 图层空间参考投影设置的问题。
  3. Qgis导出的SLD在GeoServer中发布预览报错的问题。
  4. GeoServer中多字段拼接联合标注问题。

本文将紧密围绕以上四个问题,通过在GeoServer中以上4个问题的具体描述以及问题的针对性解决方案,让读者在实际操作中遇到以上问题时,知道如何去解决。

一、图层编码导致图层预览无服务的异常问题

1、问题描述

        问题场景:原始shp数据的数据编码是UTF-8格式,GeoServer中数据dbf数据的字符集采用ISO-8859-1。数据发布后,使用预览服务进行数据预览时,出现下载页面,同时在GeoServer控制台中明显看到报错信息。

tomcat的控制台的报错日志如下所示:

2、问题分析

出现以上问题,初步看起来是因为在样式设置的时候,图层样式定义文件中有“省代码”的样式没有找到,找不到的原因是由于字符编码不对应导致的样式无法应用到图层中。知道了出现的原因就可以对症下药,只需要在Geoserver发布图层数据时,将图层数据的字符编码与原始文件保持一致即可。原始文件的编码可以使用Qgis软件进行查看。

3、问题解决

在GeoServer中,将字符集编码设置为GBK,完成后点击保存。

完成后,在图层预览中,点击OpenLayers预览,可以看到图层服务正常,不会再有下载的提示。

二、图层空间参考投影设置的问题

1、问题描述

原始的省份数据采用的Albers等面积投影,在Geoserver中发布不好找,默认的坐标参考系统没有定义,在数据选择页面中默认为Unknown。

其读取的srs信息如下:

PROJCS["µÈÃæ»ýµÄAlbersͶӰ", GEOGCS["GCS_WGS_1984", DATUM["D_WGS_1984", SPHEROID["WGS_1984", 6378137.0, 298.257223563]], PRIMEM["Greenwich", 0.0], UNIT["degree", 0.017453292519943295], AXIS["Longitude", EAST], AXIS["Latitude", NORTH]], PROJECTION["Albers_Conic_Equal_Area"], PARAMETER["central_meridian", 105.0], PARAMETER["latitude_of_origin", 0.0], PARAMETER["standard_parallel_1", 25.0], PARAMETER["false_easting", 0.0], PARAMETER["false_northing", 0.0], PARAMETER["standard_parallel_2", 47.0], UNIT["m", 1.0], AXIS["x", EAST], AXIS["y", NORTH]]

2、问题分析

这里为了统一统一的坐标参考系,默认为4326,所以把省图层的坐标参考信息也同样修改为4326。解决投影的问题有很多的解决方案,arcgis或者qgis都可以直接使用。这里讲解使用Qgis来进行转换。

3、问题解决

在原来的图层数据,使用鼠标右键,点击导出,在导出的数据参数设置中,将坐标参考系修改为4326,(同时可以设置字符编码)。   详细信息如下图所示:

将导出的数据按照步骤一进行数据发布即可解决这个问题。

三、Qgis导出的SLD在GeoServer中发布预览报错的问题

1、问题描述

将Qgis中导出的SLD文件导入到GeoServer中,经过数据验证也没有报错,在选择数据进行预览时出现错误。图层并没有按照设想进行展示。

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:se="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1.0"><NamedLayer><se:Name>2022年全国百强县一般公共预算收入榜</se:Name><UserStyle><se:Name>2022年全国百强县一般公共预算收入榜</se:Name><se:FeatureTypeStyle><se:Rule><se:Name>45 - 100</se:Name><se:Description><se:Title>45 - 100</se:Title></se:Description><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:And><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName> abs("ggys")</ogc:PropertyName><ogc:Literal>44.79999999999999716</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName> abs("ggys")</ogc:PropertyName><ogc:Literal>100</ogc:Literal></ogc:PropertyIsLessThanOrEqualTo></ogc:And></ogc:Filter><se:PolygonSymbolizer><se:Fill><se:SvgParameter name="fill">#f7fcf5</se:SvgParameter></se:Fill><se:Stroke><se:SvgParameter name="stroke">#232323</se:SvgParameter><se:SvgParameter name="stroke-width">1</se:SvgParameter><se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter></se:Stroke></se:PolygonSymbolizer></se:Rule><se:Rule><se:TextSymbolizer><se:Label><!--SE Export for NAME + '\n' + ' 预算收入' + ggys + '(亿元)' not implemented yet-->Placeholder</se:Label><se:Font><se:SvgParameter name="font-family">SimSun</se:SvgParameter><se:SvgParameter name="font-size">13</se:SvgParameter></se:Font><se:LabelPlacement><se:PointPlacement><se:AnchorPoint><se:AnchorPointX>0</se:AnchorPointX><se:AnchorPointY>0.5</se:AnchorPointY></se:AnchorPoint></se:PointPlacement></se:LabelPlacement><se:Fill><se:SvgParameter name="fill">#000000</se:SvgParameter></se:Fill><se:VendorOption name="maxDisplacement">1</se:VendorOption></se:TextSymbolizer></se:Rule></se:FeatureTypeStyle></UserStyle></NamedLayer>
</StyledLayerDescriptor>

在进行图层预览时出现如下提示,abs('ggys')定义找到。

2、问题分析

这份SLD是在Qgis中进行样式设置生成的,使用Qgis中采用abs(‘ggys’),表示的是对公用预算采用绝对值,abs是一个函数名字,对公共预算的绝对值进行区间分类设置。但是这个函数仅在Qgis软件中支持,在GeoServer中没有这个函数。

在Qgis中,要设置区间分类,要求值必须为数值类型,通过绝对值函数进行转换。在Geoserver中可以直接使用。

3、问题解决

明确以上这个问题后,就可以进行针对性的解决。在GeoServer中将abs函数去掉。

<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:And><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName> ggys</ogc:PropertyName><ogc:Literal>44.79999999999999716</ogc:Literal>
</ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName>ggys</ogc:PropertyName><ogc:Literal>50</ogc:Literal></ogc:PropertyIsLessThanOrEqualTo></ogc:And>
</ogc:Filter>

将以上图层保存后,重新预览发现服务正常。

四、GeoServer中多字段拼接联合标注问题

1、问题描述

在Qgis中进行中文标注是,采用联合标注的方式,生成代码如下所示:

<se:Rule><se:TextSymbolizer><se:Label><!--SE Export for NAME + '\n' + ' 预算收入' + ggys + '(亿元)' not implemented yet-->Placeholder</se:Label><se:Font><se:SvgParameter name="font-family">SimSun</se:SvgParameter><se:SvgParameter name="font-size">13</se:SvgParameter></se:Font><se:LabelPlacement><se:PointPlacement><se:AnchorPoint><se:AnchorPointX>0</se:AnchorPointX><se:AnchorPointY>0.5</se:AnchorPointY></se:AnchorPoint></se:PointPlacement></se:LabelPlacement><se:Fill><se:SvgParameter name="fill">#000000</se:SvgParameter></se:Fill><se:VendorOption name="maxDisplacement">1</se:VendorOption></se:TextSymbolizer></se:Rule>

这里对文字标注进行了声明

<se:Label>
<!--SE Export for NAME + '\n' + ' 预算收入' + ggys + '(亿元)' not implemented yet-->Placeholder
</se:Label>

这个标注最终也是无法进行展示。导出图层标注为:Placeholder

2、问题分析解决

要解决这个问题比较简单,直接给出解决方案。采用xml的文字拼接表达式来实现。

<se:Rule><se:TextSymbolizer><se:Label><ogc:PropertyName>NAME</ogc:PropertyName><![CDATA[]]><![CDATA[公共预算收入]]><ogc:PropertyName>ggys</ogc:PropertyName><![CDATA[(亿元)]]></se:Label><se:Font><se:SvgParameter name="font-family">SimSun</se:SvgParameter><se:SvgParameter name="font-size">13</se:SvgParameter></se:Font><se:LabelPlacement><se:PointPlacement><se:AnchorPoint><se:AnchorPointX>0</se:AnchorPointX><se:AnchorPointY>0.5</se:AnchorPointY></se:AnchorPoint></se:PointPlacement></se:LabelPlacement><se:Fill><se:SvgParameter name="fill">#000000</se:SvgParameter></se:Fill><se:VendorOption name="maxDisplacement">1</se:VendorOption></se:TextSymbolizer></se:Rule>

最主要的核心代码如下:

<se:Label><ogc:PropertyName>NAME</ogc:PropertyName><![CDATA[]]><![CDATA[公共预算收入]]><ogc:PropertyName>ggys</ogc:PropertyName><![CDATA[(亿元)]]>
</se:Label>

总结

以上就是本文的主要内容,本文将紧密围绕图层编码导致图层预览无服务的异常问题、图层空间参考投影设置的问题、Qgis导出的SLD在GeoServer中发布预览报错的问题、GeoServer中多字段拼接联合标注问题,通过在GeoServer中以上4个问题的具体描述以及问题的针对性解决方案,让读者在实际操作中遇到以上问题时,知道如何去解决。

GeoServer发布图层遇到的几个雷点及解决方案相关推荐

  1. 使用geoserver发布超大TIF文件过程记录--FWTools工具切片

    使用geoserver发布超大TIF文件过程 尝试直接发布图层 FWTools工具的下载和使用 geoserver扩展ImagePyramid安装 切片后发布 尝试直接发布图层 由于冤种客户给的tif ...

  2. Openlayers使用geoserver发布的图层

    1.软件安装 ArcGIS https://pan.baidu.com/s/19dbuIK_ER8koChCxKzAzIw 提取码 8fx4 解压密码:malagis.com 具体安装流程可以参考这个 ...

  3. geoserver新建数据源和发布图层

    安装完geoserver之后,只要有图形数据就可以开始新建和发布图层了,简单来说,发布图层分为3个步骤:新建工作区.新建数据存储和发布图层.前两步在使用已有工作区或者数据源的时候,可以省略. 1,新建 ...

  4. qgis设置图层样式并使用geoserver发布

    一.qgis设置图层样式 打开qgis导入.shp文件添加到图层 选中图层右键点击属性,点击符号化,这里我选择分类 value可以根据鼠标右击打开属性表查看字段 这里我选择name_zh,然后点击分类 ...

  5. 【记录8】Geoserver发布ArcGIS图层,使用QGIS上传图层样式

    文章目录 前言 一.准备数据 二.使用Geoserver发服务 1.新建工作空间 2.新建存储仓库 3.发布图层 4.图层预览 三.使用ArcGIS和QGIS导出样式文件 1.导出为lyr格式 2.下 ...

  6. cad图展示到geoserver发布cad图的线图层和中文标注图层

    1.cad图准备(.dwg格式的文件) 2.将cad图添加数据至软件面板中,我用的软件是arcMap10.5,直接下破解版即可 3.在左边的图层目录中,找到要导出的PolyLine图层,右击数据,导出 ...

  7. OSM地图本地发布(五)-----Geoserver发布海洋图层

    一.准备工作 1.下载OSM海洋数据,下载地址:Water polygons,OSM地图默认坐标系是EPSG:3857,即为墨卡托投影(Mercator)数据是shp格式,下方有两种海洋数据,Larg ...

  8. ArcGIS JS API加载GeoServer发布的WFS服务

    文章目录 前言 主要代码 总结 参考链接 前言 WFS(Web Feature Service),OGC标准下的要素服务.其支持的主要操作如下: GetCapabilities (discovery ...

  9. Vue+Openlayers加载Geoserver发布的TileWMS后更换shp数据源的流程

    场景 Vue中使用Openlayers加载Geoserver发布的TileWMS: Vue中使用Openlayers加载Geoserver发布的TileWMS_BADAO_LIUMANG_QIZHI的 ...

最新文章

  1. 万万没想到! logger.info() 还能导致线上故障?
  2. 张萍萍 计科高职13-1 201303014010 实践三结对项目
  3. hsf 架构_HSF 服务
  4. CCPC-Wannafly Winter Camp Day8 (Div2, onsite) A 题 Aqours (精巧的树形DP)
  5. 一组超炫酷的动图,感受那让人窒息的数学之美!
  6. 解决:Could not find metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml in loc
  7. Unity 全面理解加载和内存管理
  8. Netty工作笔记0064---WebSocket长连接开发3
  9. mysql实现知识图谱_基于电影知识图谱的智能问答系统学习记录
  10. SQL基础笔试题--(一)
  11. linux umask命令
  12. lnmp团队开发环境docker环境搭建PHP7.2 mac系统为例
  13. PIX防火墙基本特性:失效处理机制和冗余-原理与实验
  14. 20200726每日一句
  15. Ubuntu下ssh安装、配置及使用
  16. 盘点 4 个开源小游戏
  17. etc门架系统服务器是什么,ETC门架是什么东西?ETC龙门架作用
  18. 【游戏设计模式】之四 《游戏编程模式》全书内容提炼总结
  19. php 小写还是大写,php中如何判断字母是大写还是小写
  20. ElasticFusion离线数据集运行结果再现问题总结

热门文章

  1. aws sap认证概述
  2. 操作系统内存知识概括
  3. html设置编码格式
  4. 我的Arch永远在安装(二:桌面环境I3WM的安装)
  5. 电脑为什么会卡、CPU和内存的重要性、选哪个好呢?
  6. Android 阿里云移动推送厂商辅助通道集成详解
  7. 学历不高的程序员还有机会进BAT、网易等大厂吗?
  8. 在真实世界中观察目标治疗策略实施1年对初诊RA患者的影响
  9. Idea 创建控制台程序
  10. 使用pandas GroupBy获取每个组的统计信息(例如计数,均值等)?