这里写目录标题
- 1 发布shp矢量数据
- 1.1 添加shp作为数据源
- 1.2 发布shp图层
- 1.3 预览服务
- 1.4 配置样式
- 2 发布Postgres数据库
- 2.2 发布数据
- 3 发布 tif 栅格数据
- 3.1 添加 tif 数据源
- 3.2 发布tif数据
- 3.3 预览服务
- 3.4 配置地图样式
- 关于中文标注乱码的问题
1 发布shp矢量数据
发布shp分为两种方式:
- 单独发布指定的shp文件;(适合临时发布一个数据,测试用)
- 将一个文件夹内的shp数据统一发布。(适合同时发布多个数据,且在同一个文件夹下)
1.1 添加shp作为数据源
添加存储仓库:
根据需要选择你的数据源类型,本教程选择第一个Directory of spatial files (shapefiles)
将预先存放shp的文件夹,发布为数据源:
1.2 发布shp图层
点击发布,然后设置一些服务选项即可:
数据
Tile Caching
点击保存,即完成发布。
1.3 预览服务
在左侧的图层预览
中,找到你刚刚发布的图层名字,以openlayers
方式预览:
1.4 配置样式
参考官方给的 样式示例,根据需要选择一个适合的sld文件进行下载:
此处选择一个带有标签的sld文件
在Geoserver
中新建样式,并上传刚刚下载的sld 样式文件
,点击保存完成样式创建:
算了,你也可以直接copy下面的xml到内容框里(建议):
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:se="http://www.opengis.net/se" version="1.1.0" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:xlink="http://www.w3.org/1999/xlink">
<NamedLayer>
<se:Name>Province_Henan</se:Name>
<UserStyle>
<se:Name>Province_Henan</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Single symbol</se:Name>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#85b66f</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>
<ogc:PropertyName>name</ogc:PropertyName>
</se:Label>
<se:Font>
<se:SvgParameter name="font-family">微软雅黑</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:Halo>
<se:Radius>2</se:Radius>
<se:Fill>
<se:SvgParameter name="fill">#ffffff</se:SvgParameter>
</se:Fill>
</se:Halo>
<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>
在图层中,找到刚刚发布的图层:
选择刚刚创建的样式名称,点保存:
保存之后,继续预览该图层,发现已经有样式和标注了:
2 发布Postgres数据库
为了教程,新建了一个面图层,作为测试:
2.1 添加数据库作为数据源
通过IP 端口,用户名+密码,连接指定数据库test_gis
:
如果你的输入都正确的话,保存
之后,会自动跳转到:
2.2 发布数据
后面的发布过程与shp一样了。请参考前面的步骤。。。
3 发布 tif 栅格数据
3.1 添加 tif 数据源
添加存储仓库:
新建数据源:
选中tif文件
3.2 发布tif数据
默认选项可以不用更改,直接点保存,即完成发布。
3.3 预览服务
OK!
3.4 配置地图样式
默认的样式只有灰度,如果想让它展示五彩斑斓,参考官方样式说明 Geoserver SLD样式规范,流程如下:
根据需要下载一个sld
文件:
在Geoserver
中新建样式,并上传刚刚下载的sld 样式文件
:
新建样式完成后,回到图层
中,找到刚刚发布tif图层,给它选择样式。
选中刚刚新建的样式名字:
重新预览地图,发现已经变了颜色:
关于中文标注乱码的问题
在Linux系统上,排除编码问题后,依旧显示方框,此时查看geoserver中支持的字体,并没有中文。
因此,需要给所在的Linux系统,增加中文字体。
从当前所使用Windows系统中,copy出一些中文字体,如:
然后,将其上传至Linux服务器,可以存放到/usr/share/fonts/font_zh
,并安装字体:
# 进入你存字体的目录
cd /usr/share/fonts/font_zh
# 安装
sudo apt -y install xfonts-utils fontconfig
# xfonts-utils 生产字体索引
sudo mkfontscale
sudo mkfontdir
# fontconfig 更新字体缓存
sudo fc-cache
安装好字体之后,重启一下系统,再次进入Geoserver
检查,发现已经有了中文字体。
此时,图层的中文标注也可以正常显示!