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> |
效果:
3.2图片填充
3.2.1结构
…PolygonSymbolizer |
|
……Fill |
|
………GraphicFill |
|
…………Graphic |
|
……………ExternalGraphic |
|
………………OnlineResource |
图片来源 |
………………Format |
图片格式 |
……………Size |
大小 |
3.2.2示例
带有使用图片填充的多边形
SLD:
<FeatureTypeStyle> <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> |
效果:
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>
|
效果:
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> |
4.2 中文出现乱码
出现这样的情况,一般是SLD中未进行正确的格式编码赋值。
首先将编码改成GB2312。例如:
<?xml version="1.0" encoding="GB2312"?> |
如果发现还是乱码,则很有可能是目前字体不支持中文。
例如当字体是Arial时,不支持中文:
<CssParameter name="font-family">Arial</CssParameter> |
将字体改成微软雅黑,则注记不再重现乱码:
<CssParameter name="font-family">微软雅黑</CssParameter> |