SLD休息服务¶
SLD服务是一个geoserver rest服务,可用于在发布的geoserver层上创建SLD样式,并按照用户提供的指令对层数据进行分类。
该服务的目的是允许客户端动态发布数据并在其上创建简单的样式。
所有服务都以公共前缀发布 /rest/sldservice/{{layer}}
在哪里 图层 是要分类/查询的层。
查询向量数据属性¶
/attributes[.<format>]
方法 |
行动 |
状态代码 |
格式 |
默认格式 |
---|---|---|---|---|
GET |
获取给定层(矢量类型)的属性列表 |
200 |
HTML、XML、JSON |
HTML |
该服务可用于获取给定向量层的属性列表。这可以被客户用作 分类 服务,获取所有可用于分类的属性,并让用户选择一个。
实例¶
以XML格式获取状态层的属性
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/attributes.xml
<Attributes layer="states">
<Attribute>
<name>P_FEMALE</name>
<type>Double</type>
</Attribute>
<Attribute>
<name>HOUSHOLD</name>
<type>Double</type>
</Attribute>
<Attribute>
<name>SERVICE</name>
<type>Double</type>
</Attribute>
...
</Attributes>
以JSON格式获取状态层的属性
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/attributes.json
{
"Attributes":{
"@layer":"states",
"Attribute":[
{
"name":"P_FEMALE",
"type":"Double"
},
{
"name":"HOUSHOLD",
"type":"Double"
},
{
"name":"SERVICE",
"type":"Double"
},
...
]
}
}
对栅格和矢量数据进行分类¶
/classify[.<format>]
方法 |
行动 |
状态代码 |
格式 |
默认格式 |
---|---|---|---|---|
GET |
为给定层创建一组SLD规则 |
200 |
HTML、XML、JSON |
HTML |
该服务可用于为给定的向量层创建一组SLD规则,指定 属性 用于分类 分类类型 (equalInterval、uniqueInterval、quantile、jenks、equalArea、standardDeviation)和 预定义颜色范围 (红色、蓝色、灰色、喷射、随机、自定义),以及一些其他可选参数。
同样的方法也可以应用于栅格层,以便对其内容进行分类。默认情况下,使用第一个波段的数据,但可以选择不同的波段。
使用 CUSTOM 必须指定ColorMap、startColor和endColor(以及可选的midColor)。
可用于定制SLD的参数包括:
参数 |
描述 |
价值观 |
默认值 |
---|---|---|---|
间隔 |
SLD的间隔(规则)数 |
整数数值 |
2 |
属性(强制) |
分类属性 |
对于矢量图层,图层属性名称之一,对于栅格图层,带号(从一开始,就像在栅格符号中一样) |
矢量没有默认值,栅格为“1” |
方法 |
分类方法 |
equalInterval,uniqueInterval,分位数,jenks,equalArea,standardDeviation(高于或低于一个标准差平均值的区间,仅适用于向量) |
等间隔 |
打开 |
打开或关闭范围 |
对,错 |
假 |
颠倒 |
正常或反向范围 |
对,错 |
假 |
归一化 |
将(强制转换)属性规范化为double类型(某些存储需要它来正确处理整数类型) |
对,错 |
假 |
斜坡 |
要使用的颜色范围 |
红色、蓝色、灰色、喷气式、随机、自定义 |
红色 |
开始颜色 |
自定义渐变的起始颜色 |
||
结束颜色 |
自定义渐变的结束颜色 |
||
中色 |
自定义渐变的中心颜色 |
||
颜色 |
自定义渐变的逗号分隔颜色列表(使用该列表而不是StartColor、EndColor和MidColor以更详细地指定颜色) |
||
条纹颜色 |
点和多边形的笔划颜色 |
BLACK |
|
冲程重量 |
点和多边形的笔划权重(使用负值不在样式中包含笔划) |
1 |
|
点大小 |
点的大小 |
15 |
|
满负荷 |
创建完整有效的SLD文档,而不是只创建规则片段 |
对还是错 |
假 |
隐藏物 |
将缓存头附加到响应 |
过期时间(秒),使用0禁用缓存 |
600(10分钟) |
视图参数 |
允许使用参数化视图 |
以常规格式查看参数(<key>:<value>;…;<ken>:<valuen>) |
|
自定义类 |
允许指定一组自定义类(客户端驱动样式);不会进行类计算(方法、间隔等被忽略) |
类的格式如下:<min>,<max>,<color>;…;<minn>,<maxn>,<colorn>) |
|
口技 |
允许在特定边界框上运行分类。当整个数据集太大,并且可以对较小的数据集执行分类,或者增强特定数据子集的可视化时,建议使用 |
与WMS/WFS语法相同,除非明确提供空间参考系统,否则预期轴顺序为东/北, |
|
标准偏差 |
将分类器处理的数据限制在平均值周围的“stdevs”标准偏差范围内。 |
正浮点数(例如,“1”、“2.5”、“3”)。 |
|
埃恩 |
底层可能用于选择要分类的特征/栅格的环境变量列表(例如,通过使用 |
名称到值分配的分号分隔列表,例如。 |
|
连续的 |
仅用于栅格图层,如果设置为true,将生成在分类值之间线性插值的栅格调色板 |
真假 |
|
百分比 |
允许获取每个类中值的百分比。对于栅格图层,它们将包含在ColorMapEntry的标签中,而对于矢量图层,它们将被放置在规则标题中;在这两种情况下,它们将被放置在括号之间的文本末尾。 |
真假 |
假 |
百分比比例 |
百分比位数 |
整数数值 |
1 |
间隔为唯一的 |
唯一间隔分类可以生成的最大间隔数(规则或ColorMapEntry)。如果分类生成的类数大于此参数指定的类数,则服务将返回错误消息。 |
整数数值 |
-1 |
有关唯一间隔分类的详细信息¶
这个 intervalsForUnique
参数允许用户控制分类生成的类数,这在处理大型数据集时很重要。在这种情况下,一旦执行了唯一的区间分类,将对类的数量进行检查。此外,还可以定义名为的系统变量 org.geoserver.sldService.maxUniqueRange
定义分类可以收集的最大值数(默认值为 1024
)。在对数据执行唯一间隔分类之前执行该控制。如果发现值的数量大于系统变量的值,则该服务将返回错误消息。
实例¶
状态层Land_km属性上的默认(equalInterval)分类,使用基于红色的颜色范围。
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/classify.xml?attribute=LAND_KM&ramp=red
<Rules>
<Rule>
<Title> > 159.1 AND <= 344189.1</Title>
<Filter>
<And>
<PropertyIsGreaterThanOrEqualTo>
<PropertyName>LAND_KM</PropertyName>
<Literal>159.1</Literal>
</PropertyIsGreaterThanOrEqualTo>
<PropertyIsLessThanOrEqualTo>
<PropertyName>LAND_KM</PropertyName>
<Literal>344189.1</Literal>
</PropertyIsLessThanOrEqualTo>
</And>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#680000</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
<Rule>
<Title> > 344189.1 AND <= 688219.2</Title>
<Filter>
<And>
<PropertyIsGreaterThan>
<PropertyName>LAND_KM</PropertyName>
<Literal>344189.1</Literal>
</PropertyIsGreaterThan>
<PropertyIsLessThanOrEqualTo>
<PropertyName>LAND_KM</PropertyName>
<Literal>688219.2</Literal>
</PropertyIsLessThanOrEqualTo>
</And>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#B20000</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
</Rules>
使用基于红色的颜色范围对状态层子区域属性进行唯一间隔分类。
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/classify.xml?attribute=SUB_REGION&ramp=red&method=uniqueInterval
<Rules>
<Rule>
<Title>E N Cen</Title>
<Filter>
<PropertyIsEqualTo>
<PropertyName>SUB_REGION</PropertyName>
<Literal>E N Cen</Literal>
</PropertyIsEqualTo>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#330000</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
<Rule>
<Title>E S Cen</Title>
<Filter>
<PropertyIsEqualTo>
<PropertyName>SUB_REGION</PropertyName>
<Literal>E S Cen</Literal>
</PropertyIsEqualTo>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#490000</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
...
</Rules>
使用基于红色的颜色范围和3个间隔对状态层子区域属性进行唯一间隔分类。
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/classify.xml?attribute=SUB_REGION&ramp=red&method=uniqueInterval&intervals=3
<string>Intervals: 9</string>
状态层人员属性上的分位数分类,带有自定义颜色渐变和3 关闭 间隔。
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/classify.xml?attribute=PERSONS&ramp=CUSTOM&method=quantile&intervals=3&startColor=0xFF0000&endColor=0x0000FF
<Rules>
<Rule>
<Title> > 453588.0 AND <= 2477574.0</Title>
<Filter>
<And>
<PropertyIsGreaterThanOrEqualTo>
<PropertyName>PERSONS</PropertyName>
<Literal>453588.0</Literal>
</PropertyIsGreaterThanOrEqualTo>
<PropertyIsLessThanOrEqualTo>
<PropertyName>PERSONS</PropertyName>
<Literal>2477574.0</Literal>
</PropertyIsLessThanOrEqualTo>
</And>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#FF0000</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
<Rule>
<Title> > 2477574.0 AND <= 4866692.0</Title>
<Filter>
<And>
<PropertyIsGreaterThan>
<PropertyName>PERSONS</PropertyName>
<Literal>2477574.0</Literal>
</PropertyIsGreaterThan>
<PropertyIsLessThanOrEqualTo>
<PropertyName>PERSONS</PropertyName>
<Literal>4866692.0</Literal>
</PropertyIsLessThanOrEqualTo>
</And>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#AA0055</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
<Rule>
<Title> > 4866692.0 AND <= 2.9760021E7</Title>
<Filter>
<And>
<PropertyIsGreaterThan>
<PropertyName>PERSONS</PropertyName>
<Literal>4866692.0</Literal>
</PropertyIsGreaterThan>
<PropertyIsLessThanOrEqualTo>
<PropertyName>PERSONS</PropertyName>
<Literal>2.9760021E7</Literal>
</PropertyIsLessThanOrEqualTo>
</And>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#5500AA</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
</Rules>
状态层人员属性上的分位数分类,带有自定义颜色渐变和3 open 间隔。
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/states/classify.xml?attribute=PERSONS&ramp=CUSTOM&method=quantile&intervals=3&startColor=0xFF0000&endColor=0x0000FF&open=true
<Rules>
<Rule>
<Title> <= 2477574.0</Title>
<Filter>
<PropertyIsLessThanOrEqualTo>
<PropertyName>PERSONS</PropertyName>
<Literal>2477574.0</Literal>
</PropertyIsLessThanOrEqualTo>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#FF0000</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
<Rule>
<Title> > 2477574.0 AND <= 4866692.0</Title>
<Filter>
<And>
<PropertyIsGreaterThan>
<PropertyName>PERSONS</PropertyName>
<Literal>2477574.0</Literal>
</PropertyIsGreaterThan>
<PropertyIsLessThanOrEqualTo>
<PropertyName>PERSONS</PropertyName>
<Literal>4866692.0</Literal>
</PropertyIsLessThanOrEqualTo>
</And>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#AA0055</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
<Rule>
<Title> > 4866692.0</Title>
<Filter>
<PropertyIsGreaterThan>
<PropertyName>PERSONS</PropertyName>
<Literal>4866692.0</Literal>
</PropertyIsGreaterThan>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#5500AA</CssParameter>
</Fill>
<Stroke/>
</PolygonSymbolizer>
</Rule>
</Rules>
分类栅格数据¶
不推荐使用此资源,因为classify端点现在也可以处理栅格数据
/rasterize[.<format>]
方法 |
行动 |
状态代码 |
格式 |
默认格式 |
---|---|---|---|---|
GET |
为给定层(覆盖类型)创建颜色映射SLD |
200 |
HTML、XML、JSON和SLD |
HTML |
该服务可用于为给定覆盖范围创建ColorMap SLD,指定 颜色图类型 (值、间隔、渐变)和 预定义颜色范围 (红色、蓝色、灰色、喷射、随机、自定义)。
使用 CUSTOM 必须指定ColorMap、startColor和endColor(以及可选的midColor)。
可用于自定义颜色映射的参数有:
参数 |
描述 |
价值观 |
默认值 |
---|---|---|---|
闽 |
分类最小值 |
双数值 |
0.0 |
最大值 |
最大分类值 |
双数值 |
100.0 |
班 |
创建的映射的类数 |
整数数值 |
100 |
数字 |
类别限制的小数位数(标签中) |
整数数值 |
5 |
类型 |
颜色映射类型 |
间隔、值、斜坡 |
RAMP |
斜坡 |
颜色映射颜色范围 |
红色、蓝色、灰色、喷气式、随机、自定义 |
RED |
开始颜色 |
自定义渐变的起始颜色 |
||
结束颜色 |
自定义渐变的结束颜色 |
||
中色 |
自定义渐变的中心颜色 |
||
隐藏物 |
将缓存头附加到响应 |
过期时间(秒),使用0禁用缓存 |
600(10分钟) |
实例¶
5级红色坡道
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/sfdem/rasterize.sld?min=0&max=100&classes=5&type=RAMP&ramp=RED&digits=1
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
<sld:NamedLayer>
<sld:Name>Default Styler</sld:Name>
<sld:UserStyle>
<sld:Name>Default Styler</sld:Name>
<sld:FeatureTypeStyle>
<sld:Name>name</sld:Name>
<sld:FeatureTypeName>gray</sld:FeatureTypeName>
<sld:Rule>
<sld:RasterSymbolizer>
<sld:ColorMap>
<sld:ColorMapEntry color="#000000" opacity="0" quantity="-1.0E-9" label="transparent"/>
<sld:ColorMapEntry color="#420000" opacity="1.0" quantity="0.0" label="0.0"/>
<sld:ColorMapEntry color="#670000" opacity="1.0" quantity="25.0" label="25.0"/>
<sld:ColorMapEntry color="#8B0000" opacity="1.0" quantity="50.0" label="50.0"/>
<sld:ColorMapEntry color="#B00000" opacity="1.0" quantity="75.0" label="75.0"/>
<sld:ColorMapEntry color="#D40000" opacity="1.0" quantity="100.0" label="100.0"/>
</sld:ColorMap>
</sld:RasterSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>
具有5个类别的自定义颜色渐变,颜色范围从红色(0xff0000)到蓝色(0x0000 FF)。
curl -v -u admin:geoserver -XGET
http://localhost:8080/geoserver/rest/sldservice/sfdem/rasterize.sld?min=0&max=100&classes=5&type=RAMP&ramp=CUSTOM&digits=1&startColor=0xFF0000&endColor=0x0000FF
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
<sld:NamedLayer>
<sld:Name>Default Styler</sld:Name>
<sld:UserStyle>
<sld:Name>Default Styler</sld:Name>
<sld:FeatureTypeStyle>
<sld:Name>name</sld:Name>
<sld:FeatureTypeName>gray</sld:FeatureTypeName>
<sld:Rule>
<sld:RasterSymbolizer>
<sld:ColorMap>
<sld:ColorMapEntry color="#000000" opacity="0" quantity="-1.0E-9" label="transparent"/>
<sld:ColorMapEntry color="#FF0000" opacity="1.0" quantity="0.0" label="0.0"/>
<sld:ColorMapEntry color="#CC0033" opacity="1.0" quantity="25.0" label="25.0"/>
<sld:ColorMapEntry color="#990066" opacity="1.0" quantity="50.0" label="50.0"/>
<sld:ColorMapEntry color="#660099" opacity="1.0" quantity="75.0" label="75.0"/>
<sld:ColorMapEntry color="#3300CC" opacity="1.0" quantity="100.0" label="100.0"/>
</sld:ColorMap>
</sld:RasterSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>
能力¶
/capabilities[.<format>]
方法 |
行动 |
状态代码 |
格式 |
默认格式 |
---|---|---|---|---|
GET |
返回支持的栅格和向量分类方法 |
200 |
JSON、XML |
JSON |
该服务可用于检索SldService插件的功能。在编写本文时,端点将只返回栅格和矢量数据的受支持分类方法列表。这可能很有用,例如,对于可能与不同Geoserver版本打交道的客户来说,了解哪些分类方法可供使用是有用的。遵循json和XML格式的服务输出:
{
"capabilities": {
"vector": {
"classifications": [
"quantile",
"jenks",
"equalArea",
"equalInterval",
"uniqueInterval",
"standardDeviation"
]
},
"raster": {
"classifications": [
"quantile",
"jenks",
"equalArea",
"equalInterval",
"uniqueInterval"
]
}
}
}
<capabilities>
<vector>
<classifications>quantile</classifications>
<classifications>jenks</classifications>
<classifications>equalArea</classifications>
<classifications>equalInterval</classifications>
<classifications>uniqueInterval</classifications>
<classifications>standardDeviation</classifications>
</vector>
<raster>
<classifications>quantile</classifications>
<classifications>jenks</classifications>
<classifications>equalArea</classifications>
<classifications>equalInterval</classifications>
<classifications>uniqueInterval</classifications>
</raster>
</capabilities>