元数据¶
SLD中出现的一个在CSS中没有模拟的功能是提供 元数据 用于样式和样式规则。例如,此SLD为其单个规则嵌入一个标题:
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml"
xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
>
<NamedLayer>
<Name>Country Borders</Name>
<UserStyle>
<Name>borders</Name>
<Title>Country Borders</Title>
<Abstract>
Borders of countries, in an appropriately sovereign aesthetic.
</Abstract>
<FeatureTypeStyle>
<Rule>
<Title>Borders</Title>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke-width">0.2</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
像geoserver这样的软件可以使用这个元数据直接从样式自动生成漂亮的图例图像。在CSS中设置映射样式时,您不必放弃这种能力;只需添加注释 之前 你的规则包括以 @title
和 @abstract
.以下是CSS中的类似样式:
/*
* @title This is a point layer.
* @abstract This is an abstract point layer.
*/
* {
mark: mark(circle);
}
规则既可以提供标题,也可以提供摘要,两者都可以,或者两者都不能。规则的SLD名称是根据组合形成规则的CSS规则中的筛选器自动生成的,以帮助排除故障。
组合规则¶
在处理CSS样式时要记住的一点是,多个规则可能适用于同一个地图要素子集,特别是当样式变得更复杂时。元数据继承与CSS属性类似,但元数据字段是 合并 而不是覆盖不太具体的规则。这意味着当你有这样的风格时:
/* @title Borders */
* {
stroke: black;
}
/* @title Parcels */
[category='parcel'] {
fill: blue;
}
包裹的图例条目将具有标题 'Parcels with Borders'
.如果您不喜欢这种行为,那么只提供样式中最具体规则的标题。(或者,在问题报告中提出更好的建议!)不提供标题的规则只是从标题聚合中省略。