1

マルチポイント ジオメトリ (複数のポイントを含む単一のジオメトリ) があり、各ポイントにラベルを付けたいと考えています (ラベルは常に同じです)。SLDでこれを達成することは可能ですか? 現在、ラベルは 1 点のみに表示されています。

私のSLDは次のようになります。

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
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">
  <NamedLayer>
    <Name>Multipoint with labels</Name>
    <UserStyle>
      <Title>Default Point</Title>
      <Abstract>A sample style that draws a point</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Red Square</Title>
          <Abstract>A 6 pixel square with a red fill and no stroke</Abstract>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>square</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#FF0000</CssParameter>
                </Fill>
              </Mark>
              <Size>6</Size>
            </Graphic>
          </PointSymbolizer>
          <TextSymbolizer>
            <Label>NAME</Label>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>
4

1 に答える 1

0

デフォルトでは、GeoServer ラベル エンジンは、同じフィーチャに複数回ラベルを付けないようにするために多くの問題を抱えているため、これは困難です!

私は最終的に次の(醜い)SLDを使用してそれを管理しました:

   <Rule>
      <Title>Capitals</Title>
              <TextSymbolizer>
         <Geometry>
            <ogc:Function name="getGeometryN">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
                <ogc:Literal>0</ogc:Literal>
            </ogc:Function>
          </Geometry>
        <Label>ID</Label>
      </TextSymbolizer>
      <TextSymbolizer>
         <Geometry>
            <ogc:Function name="getGeometryN">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
                <ogc:Literal>1</ogc:Literal>
            </ogc:Function>
          </Geometry>
        <Label>ID</Label>
      </TextSymbolizer>
       <TextSymbolizer>
         <Geometry>
            <ogc:Function name="getGeometryN">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
                <ogc:Literal>2</ogc:Literal>
            </ogc:Function>
          </Geometry>
        <Label>ID</Label>
      </TextSymbolizer>
              <TextSymbolizer>
         <Geometry>
            <ogc:Function name="getGeometryN">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
                <ogc:Literal>3</ogc:Literal>
            </ogc:Function>
          </Geometry>
        <Label>ID</Label>
      </TextSymbolizer>
    </Rule>

ただし、これは、最大のマルチポイントにいくつのポイントがあるかを知っていることを前提としており、それは非常に小さいです (そうでない場合は、多くのコピーと貼り付けが必要になります)。

私は当初、頂点関数またはおそらくlabelAllGroup ベンダー オプションを使用できることを望んでいましたが、残念ながらどちらもマルチポイントでは機能しませんでした。

于 2016-03-21T15:42:41.033 に答える