meface/docs/article/gis/geoserver/layersgroup.md

186 lines
11 KiB
Markdown
Raw Normal View History

2023-11-17 10:54:23 +08:00
---
title: 图层与图层组
date: 2020-03-10
author: ac
tags:
- GeoServer
categories:
- GIS
---
> 在`GeoServer`中,图层是指表示地理要素集合的栅格或矢量数据集。
>
> 图层组则是一个容器,可以按层次结构组织层和其他层组。
## 1 图层
在`GeoServer`中,图层是指表示地理要素集合的栅格或矢量数据集。
### 1.1 Store
所有层都有一个【数据源】称为store 存储连接到包含栅格或矢量数据的数据源。数据源可以是文件或文件组,数据库中的表,单个栅格文件或目录(例如,矢量产品格式库)。
![](./images/data_stores_chooser.png)
在添加Store中可以查看到 `GeoServer`中支持的数据源类型,另外也可以通过`Extensions`中下载数据源的扩展(Vector Formats&Coverage Formats)
![1615189054978](./images/1615189054978.png)
### 1.2 图层配置
在有了数据源之后,就可以在"Layers"页面添加、编辑、查看图层Layer
![](./images/data_layers.png)
图层与其定义的store的工作区相关联名称name为工作区:图层名。
**图层类型**
图层可分为两种类型的数据:栅格和矢量(点、线、面)。
这两种格式在存储空间信息的方式上有所不同。
在界面上`GeoServer`用图标来标识图层类型及图层包含的类型:
| 图标 | 类型 |
| :----------------------------------------------------------- | :------------- |
| ![../../_images/raster_icon.png](https://docs.geoserver.org/latest/en/user/_images/raster_icon.png) | 栅格 |
| ![../../_images/polygon_icon.png](https://docs.geoserver.org/latest/en/user/_images/polygon_icon.png) | 面 |
| ![../../_images/line_string_icon.png](https://docs.geoserver.org/latest/en/user/_images/line_string_icon.png) | 线 |
| ![../../_images/point_icon.png](https://docs.geoserver.org/latest/en/user/_images/point_icon.png) | 点 |
| ![../../_images/vector.png](https://docs.geoserver.org/latest/en/user/_images/vector.png) | Other Geometry |
| ![../../_images/layers.png](https://docs.geoserver.org/latest/en/user/_images/layers.png) | 图层组 |
| ![../../_images/map.png](https://docs.geoserver.org/latest/en/user/_images/map.png) | Cascading WMS |
| ![../../_images/error.png](https://docs.geoserver.org/latest/en/user/_images/error.png) | Unknown/Other |
**查看和编辑图层**
要查看或编辑图层,请单击图层名称。将显示一个层配置页面。“**数据”**选项卡默认情况下处于激活状态,可让您定义和更改图层的数据参数。
![](./images/data_layers_edit_data.png)
- **name**-用于在WMS请求中引用图层的标识符。请注意对于已发布资源的新层必须更改名称以避免冲突。<font color="red">不要使用中文</font>。)
- **enable**-未启用的层将无法用于任何类型的请求它将仅显示在配置中以及REST配置中
- **Advertised**-默认情况下**播发一个**图层。未播发的图层将在所有数据访问请求例如WMS GetMapWMS GetFeature中可用但不会出现在任何功能文档或图层预览中。
- **Title**-用于向客户端简要标识该层的人类可读描述(必填)
- **Abstract**-详细描述图层
- **Keywords**—与图层相关联的短词汇列表,以帮助目录搜索
- **Metadata Links**允许链接到描述数据层的外部文档。“类型”输入提供了一些示例类型例如FGDC或ISO191152003但允许声明任何其他类型。可选的“关于”条目可用于指向元数据标准的定义或有关此标准的任何其他辅助信息。最后“ URL”指向实际的元数据而“格式”提供其MIME类型。
**坐标参考系统**
![](./images/data_layers_CRS.png)
`GeoServer`需要知道数据的坐标参考系统。此信息用于计算纬度/经度边界框并在WMS和WFS请求期间重新投影数据。
- **Native SRS**:指定存储图层的坐标系。
- **Declared SRS-**指定GeoServer发布给客户端的坐标系
- **SRS handing**:确定当两个**SRS**不同时,`GeoServer`应如何处理投影。可能的值为:
- **Force declared** (默认) 声明的SRS被强加于数据上覆盖本机数据。
- **Reproject from native** 当本机数据集的CRS与任何官方EPSG不匹配时应使用此设置。 根据需要动态进行从本机的重新投影 。
- **Keep native** 保持本机意味着在功能文档中使用声明的那个, 然后在所有其他请求中使用本机CRS除非客户端明确要求否则之间不进行任何重新投影
**边界框**
边界框确定图层中数据的范围 。
- **Native Bounding Box** -本机SRS中指定的数据的边界。这些边界可以通过单击 **`Compute from data`** 按钮来生成,也可以通过单击 **`Compute from SRS bounds`** 定义中生成。所使用的SRS取决于所选的**`SRS Handing`**:选择 *Force declared* 或*Reproject native* 时,使用 *declared SRS* ,否则将使用 *native SRS*。如果SRS没有定义边界则不会生成任何边界。
- **Lat/Lon Bounding Box**-以地理坐标指定的边界。可以通过单击 **Compute from native bounds** 按钮来计算这些边界。
![](./images/data_layers_BB.png)
**要素详情(矢量)**
对于矢量数据图层会有一个要素属性表,要素详情显示该表的模式。其中,包含一个集合字段,默认名称为`the_geom`。如果是`PostGIS`表,且暴露了主键则会有一个`gid`字段。
![](./images/data_layers_feature.png)
**服务端过滤**
应用场景:当要素表中存在一个字段`disable`用来表示要素是否被删除逻辑删除但WMS请求某块区域图像的时候是将该区域的全部要素生成图像返回的。如果需要不显示逻辑删除的要素可以在服务端进行过滤。
![](./images/data_layers_cql.png)
### 1.3 图层发布
在发布tab页中可以配置HTTP和WMS / WFS / WCS设置。
![](./images/data_layers_edit_publish.png)
**HTTP 设置**
适用于客户端请求的HTTP响应的缓存参数 。
- **Response Cache Headers****响应缓存头)** —如果选中GeoServer将不会在**Cache Time中**指定的时间内两次请求相同的切片。一小时以秒为单位以秒为单位3600是“**缓存时间”**的默认值。
**服务设置**
选择服务拥有的服务能力:
![](./images/service_enable_layer.png)
**WMS 设置**
配置WMS服务的参数。
![](./images/wms_settings.png)
- **Queryable** 控制该层是否经由WMS是可查询`GetFeatureInfo`请求。
- **Default style** 当客户端未在GetMap请求中指定命名样式时将使用的样式。
- **Additional styles**:可以与此层关联的**其他样式**。某些客户端和GeoServer图层预览会将这些客户端显示为该图层的样式替代项。
- **Default rendering buffer** -GetMap / GetFeatureInfo请求的默认的`buffer`值。
- **Default WMS path** WMS功能层树中该层的位置。用于构建不透明的图层组。
- **默认插值方法-**允许为此层指定默认重采样(插值)方法。可用的选项是*Nearest neighbor**Bilinear**Bicubic*或*Use service default*这意味着将不会创建特定于图层的配置将使用WMS服务配置页面中选择的默认插值方法有关详细信息请参阅[栅格渲染选项](https://docs.geoserver.org/latest/en/user/services/wms/webadmin.html#services-webadmin-wms-raster-options))。
> 这里比较常用的配置就是Default style因为数据源只有几何要素没有要素的样式需要通过配置[sld](https://docs.geoserver.org/latest/en/user/styling/index.html)样式文件进行渲染。
**WFS配置**
![](./images/wfs_settings.png)
- **Per-Request Feature Limit** : 设置WFS的GetFeature操作应生成的图层的最大功能数量与查询命中的实际数量无关
- **Maximum number of decimals** 设置GML输出中的最大小数位数。
- **Activate complex to simple features conversion** 如果目标输出格式本身不能处理复杂的要素类型如多点、多线、多面等则此选项仅使用SF-0简单属性就可以将复杂特征转换为简单特征。 这意味着嵌套要素和多值属性将从最终结果中省略,而不是在生成输出时引发错误。能够处理复杂功能的输出格式不受影响。
## 2 图层组
> 图层组可以包含具有不同边界和投影的图层。`GeoServer`会自动将所有图层重新投影到图层组的投影。
图层组是一个容器,可以按层次结构组织层和其他层组。
图层组是可以由一个图层名称引用的一组图层。例如如果您在一个“图层组”层下放置三个图层分别称为layer_Alayer_B和layer_C那么当用户向该组名称发出WMS getMap请求时他们将获得这三个图层的地图。
在WMS请求中可以通过单个名称来引用层组。这样可以进行更简单的请求因为可以指定一层而不是多个单独的层。图层组还可以为其包含的图层提供一致的固定顺序并且可以为图层指定替代非默认样式。
`Openlayers`中也有对应的图层组类`'ol/layer/Group'`用于统一管理一组图层的属性(如最大最小缩放大小、显隐性、透明度等)。
**图层组模式**:
1. single图层组作为具有名称的单个图层公开充当图层列表的别名。这些图层仍显示为WMS功能文档中的顶级条目除非由树组明确引用
2. 不透明容器图层组作为具有名称的单个图层公开用作图层列表的别名。但是其中包含的层和子组不会显示在功能文档中除非由树组明确引用并且它们本身在WMS调用和WMS功能文档中将不可用而仅在组的一部分。
3. 命名的树:层组可以用一个名称来引用,但也可以在功能文档中公开其嵌套的层和组。
4. 容器树图层组在功能文档中公开但是没有名称因此无法单独呈现它。在WMS规范中这称为“包含类别”。
5. 地球观测树创建的一种特殊类型的组用于管理WMS地球观测需求。该组不渲染其嵌套的图层和组而仅渲染称为“根图层”的“预览层”。选择此模式后配置UI中将显示一个新字段“ Root Layer”。
**图层组的顺序**
![](./images/data_layergroups_edit_table.png)
上面的列表显示了当前图层组中包含的图层和组,我们将图层和图层组称为**可发布元素**。
处理图层组时,将按提供的顺序渲染图层,因此列表底部的**可发布元素**将最后渲染,并显示在其他**可发布元素**之上。 所以对于点线面要素从上往下的顺序应为,面-线-点。当然栅格数据应在最上方。
## 参考文章
[1] Layer https://docs.geoserver.org/latest/en/user/data/webadmin/layers.html
[2] layergroups https://docs.geoserver.org/latest/en/user/data/webadmin/layergroups.html