Geoserver Sld 无法正常工作
Posted
技术标签:
【中文标题】Geoserver Sld 无法正常工作【英文标题】:Geoserver Sld Not Working Correctly 【发布时间】:2014-05-21 12:54:43 【问题描述】:我使用 Geoserver,并为我的图层使用 SLD
我的 sld 文件是
<?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:Rule>
<sld:Name>Without Label</sld:Name>
<sld:MinScaleDenominator>10000.0</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>70000.0</sld:MaxScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:Mark>
<sld:WellKnownName>circle</sld:WellKnownName>
<sld:Fill>
<sld:CssParameter name="fill">#CC3300</sld:CssParameter>
</sld:Fill>
</sld:Mark>
<sld:Size>8</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Name>With Label</sld:Name>
<sld:MaxScaleDenominator>10000.0</sld:MaxScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:Mark>
<sld:WellKnownName>circle</sld:WellKnownName>
<sld:Fill>
<sld:CssParameter name="fill">#CC3300</sld:CssParameter>
</sld:Fill>
</sld:Mark>
<sld:Size>12</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
<sld:TextSymbolizer>
<sld:Label>
<ogc:PropertyName>str_name</ogc:PropertyName>
</sld:Label>
<sld:Font>
<sld:CssParameter name="font-family">Times</sld:CssParameter>
<sld:CssParameter name="font-size">14</sld:CssParameter>
<sld:CssParameter name="font-style">normal</sld:CssParameter>
<sld:CssParameter name="font-weight">bold</sld:CssParameter>
</sld:Font>
<sld:LabelPlacement>
<sld:PointPlacement>
<sld:AnchorPoint>
<sld:AnchorPointX>0.5</sld:AnchorPointX>
<sld:AnchorPointY>0.0</sld:AnchorPointY>
</sld:AnchorPoint>
<sld:Displacement>
<sld:DisplacementX>0</sld:DisplacementX>
<sld:DisplacementY>5</sld:DisplacementY>
</sld:Displacement>
</sld:PointPlacement>
</sld:LabelPlacement>
<sld:Fill>
<sld:CssParameter name="fill">#CC0000</sld:CssParameter>
</sld:Fill>
</sld:TextSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>
但有时点的标签会交替显示/隐藏。例如
放大 16
放大 17
18 倍放大
这个场景和我的 SLD 不一样。有人可以帮帮我吗?
【问题讨论】:
【参考方案1】:你的地图是平铺的吗?如果是这样,标签可能会因为它们跨越图块边界而消失(因为代码无法可靠地预测标签的其他部分是否会出现在附近的图块中)。
【讨论】:
感谢您的回复,是的,地图平铺了,我正在根据您的建议进行测试以上是关于Geoserver Sld 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件