使用qgis生成SLD样式

QGIS包括一个复杂的样式编辑器,具有许多地图渲染的可能性。然后,可以将使用qgis生成的样式(有限制)导出到sld,以便与geoserver一起使用。

随着时间的推移,qgis风格的输出能力不断发展,作为参考:

  • 对于矢量数据,qgis导出可由geoserver读取的SLD 1.1样式。为了获得合适的结果,使用qgis 3.0或更高版本,以及geoserver 2.13.x或更高版本非常重要。

  • 栅格数据样式导出是QGIS 3.4.5中的新增功能(撰写本文时尚未发布)。这个新版本导出带有供应商扩展的SLD 1.0样式,以支持最新的Geoserver版本正确支持的对比度拉伸。对于较旧的QGIS版本,使用SLD4Raster插件可以使用有限的导出功能。

对于出口,建议使用 Save As 样式对话框中提供的功能,如本指南下面所示。还有一些插件可以简化导出过程,但它们可能破坏样式,试图使其适应较旧的地理服务器版本(例如,通过简单的文本处理方法将其转换为SLD 1.0),或者完全重写它。

警告

尽管在过去几年中取得了进展,但我们知道,并非所有的QGIS渲染选项都由SLD和/或GeoServer(例如,shapeBurst符号)支持,并且对导出某些零件的支持只是缺失(例如。SLD支持基于表达式的符号,但QGIS不会导出它)。如果你感兴趣,两个项目都欢迎赞助来改善情况。

导出矢量符号

这是一个循序渐进的指南来设计一个geoserver演示层, sfdem .

  1. 正常开放 QGIS (最低版本3.0)

  2. 载入 states.shp 来自geoserver数据目录的数据集, <GEOSERVER_DATA_DIR>/data/shapefiles/states.shp

  3. 双击层以打开 Properties 对话并切换到 Symbology 页。

  4. 选择一个 Graduated 渲染,在 PERSONS 列,然后单击 Classify 要生成的按钮 1.5 标准偏差,选择 spectral 色阶,切换模式到 Quantile 最后,单击“:guiabel:`classify`按钮生成5类映射,如图所示。

    ../../_images/qgis-vector-style.png

    QGIS矢量造型

  5. 切换到 Labels 页面,选择 Single labels ,用 ``STATE NAME` 属性并选择首选的文本呈现选项,如图所示。

    ../../_images/qgis-label-style.png

    QGIS标签

  6. 层渲染如下:

    ../../_images/qgis-vector-render.png

    QGIS栅格样式

  7. 回到 Properties 对话框,从 Styles 页面,选择 Style ‣ Save Style .

    ../../_images/qgis-vector-saveas.png

    使用另存为导出…

  8. 选择以SLD格式导出,将文件放在所需位置。

    ../../_images/qgis-choose-format.png

    选择导出格式…

  9. 进入geoserver,创建新样式,使用 Upload a new style 对话框选择导出的文件,然后单击 upload 链接。

    ../../_images/gs-vector-upload.png

    正在地理服务器中上载样式…

  10. 单击guiabel:apply

  11. 改为 Layer preview 选项卡,单击 Preview on Layer 链接以选择 topp:states 验证渲染是否正确。

    ../../_images/gs-vector-preview.png

    正在地理服务器中预览样式…

  12. 最终切换到 Publishing 选项卡,搜索 states ,然后选择 DefaultAssociated 复选框发布层以永久使用新样式。

    ../../_images/gs-vector-associate.png

    正在地理服务器中关联样式…

导出栅格符号

以下是关于如何在QGIS中导出栅格图层符号以及如何使用生成的SLD在GeoServer中设置图层样式的几个示例。

警告

如上所述,此功能有一些限制:

  • Hillshading geoserver不完全支持供应商选项,因此无法选择 Band 太阳的位置 (AltitudeAzimuthMultidirectional 也不支持选项

  • geoserver无法解释 Color Rendering 选项还没有

这是一个循序渐进的指南来设计一个geoserver演示层, sfdem .

  1. 打开QGIS(最低版本3.4.5)

  2. 载入 sfdem.tif 地理服务器数据目录中的栅格, <GEOSERVER_DATA_DIR>/data/sf/sfdem.tif

  3. 双击层以打开 Properties 对话并切换到 Symbology 页。

  4. 选择一个 Singleband pseudocolor 渲染,生成 Min / Max Value Settings 使用 Mean +/- standard deviation 使用 1.5 标准偏差。生成5个类 Linear 插值图,如图所示。

    ../../_images/qgis-raster-style.png

    QGIS栅格样式

  5. 层渲染如下:

    ../../_images/qgis-raster-render.png

    QGIS栅格样式

  6. 返回到层的 Properties 对话 Symbology 页面,在页面底部选择 Style ‣ Save Style .

    ../../_images/qgis-raster-saveas.png

    使用另存为导出…

  7. 选择以SLD格式导出,将文件放在所需位置

    ../../_images/qgis-choose-format.png

    选择导出格式…

  8. 进入geoserver,创建新样式,使用 Upload a new style 对话框选择导出的文件,然后单击 upload 链接。

    ../../_images/gs-raster-upload.png

    正在地理服务器中上载样式…

  9. 单击guiabel:apply`然后更改为 :guilabel:`Layer preview 标签。点击 Preview on Layer 链接以选择 sfdem 验证渲染是否正确。

    ../../_images/gs-raster-preview.png

    正在地理服务器中预览样式…

  10. 最后切换到 Publishing 选项卡,搜索 sfdem 图层,然后选择 DefaultAssociated 要发布的复选框 sfdem 以新的风格。

    ../../_images/gs-raster-associate.png

    正在地理服务器中关联样式…

下一个示例演示如何设置航空图像的样式。

  1. 下载航空图像(例如从 USGS Landsat image archives )如果你还没有。给它起个名字 (aerial 在本例中)和 save it as GeoTIFF

    ../../_images/landsat_usgs_sentinel2.png

    aerial.tiff

  2. 开放式地理服务器, create a new Store (见 Add a Storeadd a GeoTIFF Raster Data Source 去商店和 connect 给你的 aerial.tif 文件

  3. 在geoserver中, create a new Layer (见 Add a Layer )选择在上一步中创建的商店

  4. 打开QGIS(最低版本3.4.5)

  5. 载入 aerial.tif 栅格

  6. 双击层以打开 Properties 对话并切换到 Symbology 第页

  7. 选择一个 Multiband color 渲染,设置 bands (红色波段=波段1(红色),绿色波段=波段2(绿色),蓝色波段=波段3(蓝色)),生成 Min / Max Value Settings 使用 5,0 - 95,0 % range 属于 Cumulative count cut 并选择 Stretch to MinMax 作为 Contrast enhancement 选项,如下图所示

    ../../_images/qgis-sentinel2-raster-style.png

    QGIS层属性-符号学

  8. 层渲染如下:

    ../../_images/qgis-sentinel2-raster-rendering.png

    QGIS图层绘制

  9. Save the Style 作为SLD

  10. 进入geoserver,使用生成的sld create a new style ,选择 aerial 穿过 Preview on Layer 链接并验证层是否正确呈现(有关详细信息,请参见上一个示例)

    ../../_images/gs-sentinel2-raster-rendering.png

    地理服务器层渲染

  11. 终于 Publish 这个 aerial 使用上一个示例中描述的新样式的图层。

Previous: SLD中的I18N
Next: CSS样式