개발공작소
article thumbnail
728x90

 

Geoserver Function의 numberFormat 속성을 이용하면 WMS스타일에서 숫자마다 콤마(,)를 줄 수 있다.

numberFormat 속성으로 콤마(,) 말고도 다양한 문자열을 줄 수 있으니 필요한 사람은 문서를 보고 찾아보자.

설명할 건 따로 없고 그냥 아래 샘플코드만 보도록 하자.

 

 

기본 설명코드

<ogc:Function name="numberFormat">
  <!-- 몇 자릿수 마다 콤마(,)를 줄 지 설정. 여기서는 3자리마다.. -->
  <ogc:Literal>###,###,###</ogc:Literal>
  <!-- 연동된 테이블의 컬럼명 -->
  <ogc:PropertyName>column1</ogc:PropertyName>
  <!-- 콤마(콤마 말고도 다른 옵션들도 있으니 찾아보시길.. es가 . 였던 걸로 기억) -->
  <ogc:Literal>en</ogc:Literal>
</ogc:Function>

 

전체 샘플코드

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" version="1.1.0" xmlns:ogc="http://www.opengis.net/ogc" xmlns:se="http://www.opengis.net/se" xmlns:xlink="http://www.w3.org/1999/xlink">
  <NamedLayer>
    <se:Name>sample_layer</se:Name>
    <UserStyle>
      <se:Name>sample_layer</se:Name>
      <se:FeatureTypeStyle>
        <se:Rule>
          <se:Name>Single sample_layer</se:Name>
          <se:MinScaleDenominator>0</se:MinScaleDenominator>
          <se:MaxScaleDenominator>750000</se:MaxScaleDenominator>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#e10fbe</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#010101</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:MinScaleDenominator>0</se:MinScaleDenominator>
          <se:MaxScaleDenominator>750000</se:MaxScaleDenominator>
          <se:TextSymbolizer>
            <se:Label>
              <ogc:Function name="numberFormat">
                  <ogc:Literal>###,###,###</ogc:Literal>
                  <!-- 
                  데이터가 없어서 일반 문자열을 넣었음. 컬럼을 가져다 쓸 사람은
                  <ogc:PropertyName>컬럼명</ogc:PropertyName>을 넣도록 하자.
                  -->
                  <ogc:Literal>3560000</ogc:Literal>
                  <ogc:Literal>en</ogc:Literal>
                </ogc:Function>
            </se:Label>
            <se:Font>
              <se:SvgParameter name="font-family">Gulim</se:SvgParameter>
              <se:SvgParameter name="font-size">13</se:SvgParameter>
            </se:Font>
            <se:LabelPlacement>
              <se:PointPlacement>
                <se:AnchorPoint>
                  <se:AnchorPointX>0</se:AnchorPointX>
                  <se:AnchorPointY>0.5</se:AnchorPointY>
                </se:AnchorPoint>
              </se:PointPlacement>
            </se:LabelPlacement>
            <se:Fill>
              <se:SvgParameter name="fill">#000000</se:SvgParameter>
            </se:Fill>
            <se:VendorOption name="maxDisplacement">1</se:VendorOption>
            <se:VendorOption name="conflictResolution">false</se:VendorOption>
          </se:TextSymbolizer>
        </se:Rule>
      </se:FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

 

 

위처럼 스타일을 만들어 적용하면 아래와 같은 결과물을 볼 수 있다.

숫자 3자리마다 콤마(,)가 정상적으로 찍혔다.

 

 

 

결과물

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!