Geoserver 설정 스타일

1 배경

ArcMap의 층에서 우리는지도 기능을 기호로 직접 정의 할 수 있습니다. 우리가 GeoServer에 발표 된 좋은지도 계층을 SHP 할 경우, 당신은 레이어 스타일이 완전히 손실됩니다 발견 할 것이다. 사실, 이유는 스타일 SHP 파일에 저장되지 않고에서 MXD 또는 MSD에 저장된다,는 ArcMap을 사용하여 좋은 층으로, 매우 간단합니다.

그래서 우리가 어떻게 할 수 GeoServer 릴리스 층은 효과에 도달하기 위해지도를 사용자 정의 할 수 있습니까?

2 SLD 소개

SLD는 짧은 스타일 화 된 레이어 설명자 (스타일이 적용된 레이어 설명자)는 2005 년 OGC에서 제안 된 표준은이 표준은 확장의 시각적 표현을 매핑, 특정 조건 하에서 WMS 서버를 할 수 있습니다. SLD가없는 경우 만 규정 중 일부는지도에서 서버에 좋은 비주얼 스타일을 사용할 수 있습니다. 그리고 우리가 크게 맵 시각화의 유연성을 확대 클라이언트, 개요 및 기타 작업에서 자신 만의 스타일을 정의하는 매핑 할 수있는 SLD 기준을 달성하기 위해 사용하는 경우.

SLD- 사양은 SLD 스타일을 사용자 정의하여 시각화지도 계층을 렌더링하도록 구성 XML 스타일의지도 표시를 사용하여 정의, 필터가 제공 될 수있다, 같은 사용자의 전설. 규칙은 그녀가 데이터 세트의 분류에 관련된 모든 중요한 파라미터는 규칙 요소에 제공되어야한다 (필터를 사용하여) 주어진 파라미터에 따라 분류 할 수 있기 때문에 상기 SLD의 가장 중요한 요소이다.

SLD는 사용자 정의 스타일을 매핑의 경우의 조합을 사용해야합니다 SE (상징 학 인코딩)이 표준을. SE 다른 OGC 표준이며,이 또한 XML 스키마 정의를 기반으로, 표준은 우리가지도 요소에 다른 기호를 표현하는 다른 스타일을 사용자 정의 할 수 있습니다. 지도가 사용자 정의 스타일에 의해 설명 될 수 렌더링지도 서비스가 그렇게 할 때,이 언어를 사용하여 SLD 파일.

다음과 같이 SLD 문서 아키텍처 요소는 다음과 같습니다

                       

스타일 SLD 문서는 일반적인 부분을 포함하고 있지만 다음과 같이 가장 중요한은 다음과 같습니다 :

FeatureTypeStyle :이 부분은 문서의 전체 스타일의 루트이며 적용 할 스타일의 특징이다 유형을 나타냅니다. FeatureTypeStyle는 규칙 요소 조건 매핑을 할 수 있습니다, 하나 개 이상의 요소 규칙이 포함되어 있습니다.

규칙 (룰) 스케일 규칙 그룹 속성 조건을 렌더링하고 맵에 따라 기능을하고, 일반적인 규칙은 요소를 렌더링 한 가지 유형을 허용하는 동시에 및 주석에 점, 선,면 등 모르지만 사용합니다.

Symbolizer는 (심볼) Symbolizer 각각 표준 Symbolizer 1.0 PointSymbolizer (도트 표기) LineSymbolizer (광고 심볼) PloygonSymbolizer (얼굴 심볼) TextSymbolizer (주석) 다섯 개 종 유형을 포함하는 데이터를 시각화하는 방법을 규정 RasterSymbolizer (그리드).

단지 색상과 두께 이상은 SLD에 의해 제공 될 수있다. ,, 점선은 같은 렌더링 또는 점선 될 수있다 다각형 사용자 정의 타일 이미지를 충전 될 수있다; 포인트는 원형, 사각형, 별, 또는 자기 정의 텍스트 또는 지정하는 그래픽 이미지로, 일반적인 형태를 제공 할 수있다 스타일은, 소정의 속성 데이터에 기초 할 수있는 소자 수 있으므로

그것은 서로 다른 스타일로 렌더링됩니다.

공통 매개 변수 :

상징

의미

<이름>

스타일 이름

<FeatureTypeStyle>

스타일의 요소

<규칙>

규칙

<OGC : 필터>

필터

<OGC : PropertyIsBetween>

두 개의 속성 값 사이의 필터를 정의하기 위해 사용

<OGC : PropertyIsLessThan>

속성 값을 정의하는 데 사용된다 필터 미만인

<OGC : PropertyIsGreaterThan>

필터는보다 속성 큰 값을 정의하는 데 사용

<OGC : PROPERTYNAME>

속성 필드 이름

<OGC 리터럴>

속성 값

<PointSymbolizer>

포인트 마커

<LineSymbolizer>

라인 마커

<PolygonSymbolizer>

표면 마커

<CssParameter 이름 = "채우기">

색상 채우기

<CssParameter 이름 = "폰트 패밀리">

글꼴

<CssParameter 이름 = "글꼴 스타일">

글꼴 스타일

<CssParameter 이름 = "폰트 크기">

글꼴 크기

 

3 층은 다각형, 예를 들어 상세히 설명

3.1 기본 색상 채우기

3.1.1 구조

... PolygonSymbolizer

 

...... 기입

충전재

......... CssParameter 이름 = "채우기"

......... CssParameter 이름 = "채우기 불투명도를"

투명도

...... 스트로크

경계

......... CssParameter 이름 = "스트로크"

......... CssParameter 이름 = "스트로크 폭"

3.1.2 예

투명와 경계 다각형

SLD :

<FeatureTypeStyle>
    <Rule>
        <PolygonSymbolizer>
        <Fill>
         <CssParameter   name="fill">#AAAAAA</CssParameter>
         <CssParameter   name="fill-opacity">0.5</CssParameter>
       </Fill>
       <Stroke>
        <CssParameter   name="stroke">#000000</CssParameter>
        <CssParameter   name="stroke-width">1</CssParameter>
      </Stroke>
     </PolygonSymbolizer>
    </Rule>
   </FeatureTypeStyle>

 

效果:

 

3.2图片填充

3.2.1结构

PolygonSymbolizer

 

……Fill

 

………GraphicFill

 

…………Graphic

 

……………ExternalGraphic

 

………………OnlineResource

图片来源

………………Format

图片格式

……………Size

大小

3.2.2示例

带有使用图片填充的多边形

SLD:

<FeatureTypeStyle>
    <Rule>
       <PolygonSymbolizer>

            <Fill>

              <GraphicFill>

                <Graphic>

                    <ExternalGraphic>

                     <OnlineResource xlink:type="simple"   xlink:href="20101.gif" />

                   <Format>image/gif</Format>

                    </ExternalGraphic>

                    <Size>20</Size>

                </Graphic>

              </GraphicFill>

            </Fill>

            <Stroke>

              <CssParameter   name="stroke">#000000</CssParameter>

              <CssParameter   name="stroke-width">1</CssParameter>

            </Stroke>

        </PolygonSymbolizer>

  </Rule>
   </FeatureTypeStyle>

效果:

 

3.3注记显示

3.2.1结构

TextSymbolizer

 

……Label

 

………ogc:PropertyName

注记的属性字段名称

……Font

字体

………CssParameter  name="font-family"

字体类型

………CssParameter  name="font-size"

字体大小

………CssParameter  name="font-style"

字体样式

………CssParameter  name="font-weight"

字体加粗

……LabelPlacement

注记的位置

………PointPlacement

注记点位置

…………AnchorPoint

 

……………AnchorPointX

 

……………AnchorPointY

 

…………Displacement

 

……………Displacement X

 

……………Displacement Y

 

…………Rotation

设置旋转角度

……Fill

填充

………CssParameter  name="fill"

填充颜色

3.2.2示例

带有注记的填充色透明的多边形

SLD:

 <TextSymbolizer>
         <Label>
             <ogc:PropertyName>COMNAME</ogc:PropertyName>
         </Label>
         <Font>
             <CssParameter name="font-family">
微软雅黑</CssParameter>
             <CssParameter name="font-size">15</CssParameter>
             <CssParameter name="font-style">normal</CssParameter>
             <CssParameter name="font-weight">bold</CssParameter>
         </Font>
         <LabelPlacement>
             <PointPlacement>
                  <AnchorPoint>
               <AnchorPointX>0.5</AnchorPointX>
               <AnchorPointY>0.5</AnchorPointY>
               </AnchorPoint>
             </PointPlacement>
         </LabelPlacement>
         <Fill>
             <CssParameter name="fill">#FF5226</CssParameter>
         </Fill>
         <VendorOption name="followLine">true</VendorOption>
    </TextSymbolizer> 

 

 

效果:

 

3.4 分属性渲染

3.4.1结构

PolygonSymbolizer

 

……Rule

 

………Filter

 

………PolygonSymbolizer

 

………TextSymbolizer

 

3.4.2示例

根据属性字段值范围用不同颜色渲染。

SLD:

<FeatureTypeStyle>

<Rule>

<Name>SmallCOMM</Name>

<Title>Less Than 510104024008</Title>

<ogc:Filter>

<ogc:PropertyIsLessThan>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024008</ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Filter>

<PolygonSymbolizer>

  <Fill>

 <CssParameter   name="fill">#66FF66</CssParameter>

 </Fill>

 </PolygonSymbolizer>

</Rule>

<Rule>

<Name>MediumCOMM</Name>

<Title>510104024008 to 510104024011</Title>

<ogc:Filter>

<ogc:And>

<ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024008</ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyIsLessThan>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024011</ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:And>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#33CC33</CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name>LargeCOMM</Name>

<Title>Greater Than 510104024011</Title>

<ogc:Filter>

<ogc:PropertyIsGreaterThan>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024011</ogc:Literal>

</ogc:PropertyIsGreaterThan>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#009900</CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

 

效果:

                       

在SLD中还根据3.3的注记写法,增加了注记的显示。

3.5分级渲染

3.5.1结构

PolygonSymbolizer

 

……Rule

 

………MinScaleDenominator

 

………MaxScaleDenominator

 

………PolygonSymbolizer

 

………TextSymbolizer

 

 

3.5.2示例

通过设置不同比例尺时的显示颜色,展示不同的效果。

SLD:

<FeatureTypeStyle>

<Rule>

<Name>Large</Name>

<MaxScaleDenominator>5746</MaxScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#CCCCCC</CssParameter>

</Fill>

<Stroke>

<CssParameter name="stroke">#000000</CssParameter>

<CssParameter name="stroke-width">7</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name>Medium</Name>

<MinScaleDenominator>5746</MinScaleDenominator>

<MaxScaleDenominator>12000</MaxScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#0000CC</CssParameter>

</Fill>

<Stroke>

<CssParameter name="stroke">#000000</CssParameter>

<CssParameter name="stroke-width">4</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name>Small</Name>

<MinScaleDenominator>12000</MinScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#0000CC</CssParameter>

</Fill>

<Stroke>

<CssParameter name="stroke">#000000</CssParameter>

<CssParameter name="stroke-width">1</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

效果图:

 

 

 

4 注意

4.1 注记渲染时某些注记未显示

初始时,某个要素的注记无法显示:

 

放大后其又可以出现:

 

出现这种情况,往往是因为注记显示的地方在另外一个要素下面。

解决方法比较简单,利用LabelPalcement元素调整注记显示的地方便可解决。例如:

 <LabelPlacement>
         <PointPlacement>
           <AnchorPoint>
               <AnchorPointX>0.5</AnchorPointX>
               <AnchorPointY>0.5</AnchorPointY>
           </AnchorPoint>
         </PointPlacement>
       </LabelPlacement>

4.2 中文出现乱码


出现这样的情况,一般是SLD中未进行正确的格式编码赋值。

首先将编码改成GB2312。例如:

<?xml version="1.0" encoding="GB2312"?>

如果发现还是乱码,则很有可能是目前字体不支持中文。

例如当字体是Arial时,不支持中文:

<CssParameter name="font-family">Arial</CssParameter>

将字体改成微软雅黑,则注记不再重现乱码:

<CssParameter name="font-family">微软雅黑</CssParameter>

추천

출처www.cnblogs.com/yangzhengier/p/11459181.html