重複したポリゴンの表示の優先順位を決める方法(Geoserverの場合)

GISの話

異なる属性値のポリゴンが重複しており、表現がそれぞれで異なる場合、表示するたびに表示が変わってしまう。

どういう事かというと、国土数値情報の洪水浸水区域データをGeoserverに食わせ表示させた。

浸水深1の場合青、浸水深2の場合赤といった具合にポリゴンの表示を変えるわけだが、いざ表示させたところ表示するたびに色が赤になったり青になったりした。

よく見るとポリゴンが重なっており、浸水深1のポリゴンの上に浸水深2のポリゴンが重なっている。それで表示するたびに1,2の表示の優先順位指定をしていなかった為、表示するたびにランダムに色が変わっていたと思われる。

以下のようにVendorOption の “sortBy” を使うことで表示優先順位を指定する事で表示も固定される。

<?xml version="1.0" encoding="UTF-8"?>
<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>restricted_zone</Name>
    <UserStyle>
      <Title>国土数値情報 洪水浸水想定区域データ</Title>
      <Abstract>国土数値情報 洪水浸水想定区域データ</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Name>1</Name>
          <Title>1</Title>
          <Abstract>1</Abstract>
	      <ogc:Filter>
	        <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>a31_201</ogc:PropertyName>
	          <ogc:Literal>1</ogc:Literal>
	        </ogc:PropertyIsEqualTo>
	      </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FF0000</CssParameter>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>2</Name>
          <Title>2</Title>
          <Abstract>2</Abstract>
	      <ogc:Filter>
	        <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>a31_201</ogc:PropertyName>
	          <ogc:Literal>2</ogc:Literal>
	        </ogc:PropertyIsEqualTo>
	      </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#0000FF</CssParameter>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <VendorOption name="sortBy">a31_201</VendorOption>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

コメント

タイトルとURLをコピーしました