# 테이블 속성값 출력 : PropertyName
- PropertyName 사용
- 테이블 내 color속성의 값을 라벨 같은 거에 출력하고 싶을 때
<ogc:PropertyName>color</ogc:PropertyName>
# 두 값이 같은지 확인 : PropertyIsEqualTo
- 두개의 값을 비교함
- color값이 1인지 비교
<ogc:Filter>
<ogc:PropertyIsEqualTo> <!-- 두 값이 같은지 확인 -->
<ogc:PropertyName>color</ogc:PropertyName> <!-- color 값 -->
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
# 속성값에 따라 다른 심볼 이미지
- GeoServer 레이어 스타일 만들 때 테이블 내 속성값에 따라 이미지를 다르게 해야 하는 경우 Relu, Filter 이용
- Ex) 테이블 속성 colour의 값이 1, 2, 3 각 값에 따라 심볼 이미지가 달라져야 함
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/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>layer_style</Name>
<UserStyle>
<Title>layer_style</Title>
<FeatureTypeStyle>
<!-- Rule for color = 1 -->
<Rule>
<Title>color 1</Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo> <!-- 두 값이 같은지 확인 -->
<ogc:PropertyName>color</ogc:PropertyName> <!-- color 값 -->
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<ExternalGraphic xmlns="http://www.opengis.net/sld" xmlns:xlink="http://www.w3.org/1999/xlink">
<OnlineResource xlink:type="simple" xlink:href="COLOR1.svg" />
<Format>image/svg+xml</Format>
</ExternalGraphic>
<Size>18</Size>
<Rotation>130</Rotation>
</Graphic>
</PointSymbolizer>
</Rule>
<!-- Rule for color = 2 -->
<Rule>
<Title>color 2</Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo> <!-- 두 값이 같은지 확인 -->
<ogc:PropertyName>color</ogc:PropertyName> <!-- color 값 -->
<ogc:Literal>2</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<ExternalGraphic xmlns="http://www.opengis.net/sld" xmlns:xlink="http://www.w3.org/1999/xlink">
<OnlineResource xlink:type="simple" xlink:href="COLOR2.svg" />
<Format>image/svg+xml</Format>
</ExternalGraphic>
<Size>18</Size>
<Rotation>130</Rotation>
</Graphic>
</PointSymbolizer>
</Rule>
<!-- Rule for color = 3 -->
<Rule>
<Title>color 3</Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo> <!-- 두 값이 같은지 확인 -->
<ogc:PropertyName>color</ogc:PropertyName> <!-- color 값 -->
<ogc:Literal>3</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<ExternalGraphic xmlns="http://www.opengis.net/sld" xmlns:xlink="http://www.w3.org/1999/xlink">
<OnlineResource xlink:type="simple" xlink:href="COLOR3.svg" />
<Format>image/svg+xml</Format>
</ExternalGraphic>
<Size>18</Size>
<Rotation>130</Rotation>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
# 값 치환 : Recode
- 값 치환해 줌
- choose를 대체할 수 있음
- 맨 윗줄에 어떤 값을 기준으로 할 건지 선택하고, 2개씩 짝으로 어떤 값인 경우 : 어떤 문자로 치환 이런 식으로 사용
<ogc:Function name="Recode">
<ogc:PropertyName>color</ogc:PropertyName> <!-- 테이블 속성 color값이 -->
<ogc:Literal>1</ogc:Literal> <!-- 1인 경우 -->
<ogc:Literal>R </ogc:Literal> <!-- R로 치환 -->
<ogc:Literal>2</ogc:Literal> <!--2인 경우 -->
<ogc:Literal>G </ogc:Literal> <!-- G로 치환 -->
<ogc:Literal>3</ogc:Literal> <!-- 3인 경우 -->
<ogc:Literal>B </ogc:Literal> <!-- B로 치환 -->
</ogc:Function>
# 조건 : if_then_else
- 조건에 따라 다른 값을 추가할 수 있음
- 조건식 / 조건에 대한 결과 true / 조건에 대한 결과 false 이 순서로 적어줌
<ogc:Function name='if_then_else'>
<ogc:Function name='isNull'> <!-- 1. color값이 null인지 비교 -->
<ogc:PropertyName>color</ogc:PropertyName>
</ogc:Function>
<ogc:Literal></ogc:Literal> <!-- 2. null값이면 : 아무 문자열도 추가하지 않음-->
<ogc:Literal>M </ogc:Literal> <!-- 3. null값 아니면 : M 문자열 추가 -->
</ogc:Function>
'Framework' 카테고리의 다른 글
[GeoServer] Style - Geometry 타입 구분하기 (0) | 2024.04.29 |
---|