0

我是 Geoserver 的新手(Tomcat 9 + Apache 2.14 中的 Geoserver 2.10.0,在 Win 10 Pro x64 上)并且有一段时间试图将道路标签设计为高速公路的盾牌,主要高速公路...

检查了 Geoserver Trainings/sld-references/cookbook 但找不到任何具有完整代码的“现实生活”示例。

使用 QGIS 2.18.1 为线条样式制作和导出 SLD,但由于不支持标签,因此使用 OSGB SLD 作为源代码:

https://github.com/OrdnanceSurvey/Strategi-stylesheets/blob/master/ESRI%20Shapefile%20stylesheets/GeoServer%20stylesheets%20(SLD)/Full%20Colour%20style/motorway.sld#L348

并复制/粘贴 TextSymbolizer... /TextSymbolizer有关标签屏蔽的代码部分到 Geoserver sld 文件中 -

也使用 se:、ogc:、se:SvgParameter 编辑原始代码

  <se:FeatureTypeStyle>
    <se:Rule>
      <se:Name>MARKED_TR labels</se:Name>
      <se:Description>
        <se:Title>MARKED_TR</se:Title>
      </se:Description>
      <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
        <ogc:PropertyIsEqualTo>
          <ogc:PropertyName>GRMN_TYPE</ogc:PropertyName>
          <ogc:Literal>MARKED_TR</ogc:Literal>
        </ogc:PropertyIsEqualTo>
      </ogc:Filter>
      <se:MaxScaleDenominator>250000</se:MaxScaleDenominator>
     <se:TextSymbolizer>
       <se:Label>
         <ogc:PropertyName>NAME_UTF</ogc:PropertyName>
       </se:Label>
       <se:Font>
         <se:SvgParameter name="font-family">Arial</se:SvgParameter>
         <se:SvgParameter name="font-size">9</se:SvgParameter>
         <se:SvgParameter name="font-weight">bold</se:SvgParameter>
       </se:Font>
        <se:LabelPlacement>
          <se:PointPlacement>
            <se:AnchorPoint>
              <se:AnchorPointX>0.5</se:AnchorPointX>
              <se:AnchorPointY>0.5</se:AnchorPointY>
            </se:AnchorPoint>
            <se:Displacement>
              <se:DisplacementX>0</se:DisplacementX>
              <se:DisplacementY>0</se:DisplacementY>
            </se:Displacement>
          </se:PointPlacement>
        </se:LabelPlacement>
       <se:Fill>
         <se:SvgParameter name="fill">#FFFFFF</se:SvgParameter>
       </se:Fill>
       **<se:Graphic>**
         <se:Mark>
           <se:WellKnownName>square</se:WellKnownName>
           <se:Fill>
             <se:SvgParameter name="fill">#009FB8</se:SvgParameter>
           </se:Fill>
         </se:Mark>
         <se:Size>6</se:Size>
       </se:Graphic>
       <se:Priority>450</se:Priority>
       <se:VendorOption name="graphic-resize">stretch</se:VendorOption>
       <se:VendorOption name="graphic-margin">2.3</se:VendorOption>
       <se:VendorOption name="maxDisplacement">200</se:VendorOption>
       <se:VendorOption name="repeat">500</se:VendorOption>       
       <se:VendorOption name="spaceAround">10</se:VendorOption>
       <se:VendorOption name="group">yes</se:VendorOption>  
     </se:TextSymbolizer>          
   </se:Rule>
  </se:FeatureTypeStyle>

不幸的是,Geoserver Validation 返回错误,如屏幕截图所示:

地理服务器截图

4

2 回答 2

0

带有“隐形”盾牌的截图

截至目前, Graphic -- /Graphic部分的语法似乎 不正确?!

于 2016-12-21T21:41:29.930 回答
0

您的代码不会验证,因为它是 SLD 标准模式的扩展。如果您按下submit并查看地图,您会发现它工作得很好。

于 2016-12-21T11:16:17.370 回答