目录

上一个主题

5.3. 线状符号

下一个主题

5.5. 添加标注


5.4. 使用多边形符号

多边形是由一组环形、闭合线定义的,因此可以设置笔划的颜色和宽度也就不足为奇了。 通过定义闭合区域,还可以设置填充该区域的方式。关键是 <PolygonSymbolizer> ; 包含在为多边形定义的任何规则中。我们将从一个相当简单的例子开始。

5.4.1. 动作时间–创建简单多边形样式

你从小就熟悉世界政治版图。每个国家都有棕色的边界,每个国家都有不同的颜色。 这不是你第一个多边形造型的好例子吗? 我们将创建一个具有相同颜色和轮廓渲染的所有要素的地图, 从一个简单的示例开始,但是我们将在专题地图部分返回到该样式:

你可能想知道,在一张地图上,你需要多少种不同的颜色, 而每一个相邻的国家并不共享同一种颜色。答案其实并不微不足道, 确实是一个出人意料的小数字。 四种不同的颜色对于具有任意数量多边形特征的贴图来说已经足够了。 看一看在 http://en.wikipedia.org/wiki/Four_color_theorem 更多信息。

1.拿着 Rivers.xml 文件,复制到 Countries.xml ,然后在文本编辑器中编辑新文件。

2.转到第9行并替换 Name 具有以下特征的元素: <Name>Countries</Name>

3.转到第11行并替换 Title 具有以下特征的元素:

<Title> Geoserver Beginners Guide: Countries with outline and fill</Title>

4.当我们使用多边形时,您需要更改第14行和第19行并替换 LineSymbolizer 具有 PolygonSymbolizer

<PolygonSymbolizer> </PolygonSymbolizer>

5.将轮廓颜色设置为棕色,宽度设置为 2 :

<CssParameter name="stroke">#A52A2A</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>

6.线条是用笔划渲染的,但是多边形也可以定义填充。

在第14行的后面插入以下三行 PolygonSymbolizer 开始。 这会将填充颜色设置为棕色的互补色:

<Fill>
<CssParameter name="fill">#29A6A6</CssParameter>
</Fill>

7.现在保存您的文档并将其上载到GeoServer中的样式编辑器。

8.点击 Validate 检查你是否拼错了什么。当它没有返回错误时,单击 提交 按钮。

9.现在将新样式应用于 ne_50m_admin_0_countries 层。

10.打开“图层预览”地图,然后缩放到欧洲。 您的地图应如以下屏幕截图所示:

image142

图 5.18 image142

刚刚发生了什么?

你建立了一个基本的多边形符号。使用轮廓的方式与使用线条的方式大致相同, 可以应用虚线、透明度以及不同的颜色和宽度。 我们将在下一节探讨填充多边形的不同方法。

5.4.2. 行动时间-使用图形填充

颜色可以帮助你指出一些区域,但你可能需要一些不同的东西。 如果要在地形图中表示树木繁茂的区域,可以插入许多小标记,每个标记代表一个圆。 标记模式在地图绘制中有着广泛的应用。 正如我们对点和线所做的那样,解决方案是使用外部图形资源。 位图或矢量,例如 SVG 文件,可用于填充多边形:

1.拿着 Countries.xml 文件,复制到 CountriesGraphics.xml , 然后在文本编辑器中编辑新文件。

2.转到第9行并替换 Name 具有以下内容的元素:

<Name>CountriesGraphics</Name>

3.转到第11行并替换 Title 具有以下内容的元素:

<Title>Geoserver Beginners Guide: Countries with graphics filling</Title>

4.拿着 fill.svg 归档并复制到 ``<GEOSERVER_HOME>``/data/styles 文件夹。

5.现在你需要添加 Fill 就在里面 PolygonSymbolizer ,第14行:

<Fill>
    <GraphicFill>
        <Graphic>
            <ExternalGraphic> <OnlineResource xlink:type="simple" xlink:href="fill.svg" />
                <Format>image/svg+xml</Format>
            </ExternalGraphic>
        </Graphic>
    </GraphicFill>
</Fill>

6.现在保存您的文档并将其上载到GeoServer中的样式编辑器。

7.点击 Validate 检查你是否拼错了什么。当它没有返回错误时, 单击 提交 按钮。

8.现在去 Data| layers 部分并单击 ne_50m_admin_0_ 国家 图层打开图层属性窗体。

9.转到 Style 部分,然后将 CountriesGraphics 添加到 Selected Styles 列表中。 单击“保存”按钮。

10.打开“图层预览”地图,然后从下拉列表中选择 CountriesGraphics 样式。 放大到北美,并检查您的地图是否如以下屏幕截图所示:

image144

图 5.19 image144

刚刚发生了什么?

使用外部图形可以构建任何可能需要的模式, 但GeoServer为您提供了另一种可能。到下一节去看看。

5.4.3. 动作时间-对多边形使用阴影

填充多边形是一种不同的方式,可以生成类似于上一示例中所示的贴图。 优点是您不需要搜索或构建图形资源;您已经准备好了一组填充模式。 GeoServer在不使用外部图形资源的情况下渲染地图的速度也更快。 当有可能与内部资源达到同样的效果时,坚持孵化!

1.使用 CountriesGraphics.xml 文件,复制到 CountriesGraphics.xml , 然后在文本编辑器中编辑新文件。

2.转到第9行并替换 Name 具有以下内容的元素:

<Name>CountriesHatching</Name>

3.转到第11行并替换 书名 具有以下内容的元素:

<Title>Geoserver Beginners Guide: Countries with hatching</Title>

4.若要添加图案填充的代码,需要替换 图解的 元素,从第17行到第24行。 插入 Mark 元素, 在其中设置要与 WellKnownName 元素(请记住 shape:// 表示法仅在GeoServer中受支持)。

<Graphic>
    <Mark>
        <WellKnownName>shape://dot</WellKnownName>
        <Stroke>
            <CssParameter name="stroke">#29A6A6</CssParameter>
            <CssParameter name="stroke-width">3</CssParameter>
        </Stroke>
    </Mark>
    <Size>16</Size>
</Graphic>

5.现在保存您的文档并将其上载到GeoServer中的样式编辑器。

6.点击 Validate 检查你是否拼错了什么。当它没有返回错误时, 单击 提交 按钮。

7.现在去 Data | layers 部分并单击 **ne_50m_admin_0__countries**图层打开图层属性窗体。

8.转到“样式”部分,然后将 CountriesHatching 添加到“选定样式”列表中。 点击 保存

9.打开“图层预览”地图,然后从下拉列表中选择 CountrysHatching 样式, 然后放大到澳大利亚。 您能看到与使用外部图形资源相似的阴影吗?

image145

图 5.20 image145

刚刚发生了什么?

我们用点标记来填充多边形中的一个区域。 由于GeoServer扩展,不仅可以使用标准SLD支持的一组有限的点标记, 还可以使用以下标记:

  • shape://vertline :垂直线

  • shape://horline :水平线

  • shape://slash :像斜线一样向前倾斜的对角线( / )键盘符号

  • shape://backslash :与前面相同,但方向相反(  )

  • shape://dot :一个很小的圆圈,周围有空间

  • shape://plus 答: + 符号,周围没有空格

  • shape://times :一个 X 符号,周围没有空格

  • shape://oarrow :开放箭头符号

  • shape://carrow :闭合箭头符号

测验-设计线条和多边形

问题1。你能给线条定义一个轮廓吗?

1.不,线路只有 stroke 属性;不能有其他形式的大纲。

2.是的,必须定义不同于笔划颜色的填充颜色。

3.不,线路只有 stroke 属性,但可以模拟填充与另一条宽度较小的线重叠。

问题2。如何填充多边形?

1.您可以使内部区域保持透明或用颜色填充。

2.您可以使用颜色和外部图形资源。

3.只能定义颜色。