geoserver根据某字段值的不同给点图形设置不同图标

我们在数据库中存储点图形数据的时候,会根据该坐标点对应的东西不同,会通过字段将点类型进行区分。比如饭店的坐标和理发店的坐标,我们在数据库存储的时候会通过某个字段进行区分。
那么我们如果将不同的点在同一个图层上发布成不同的图标呢?
1,首先,我们需要将自定义的图片放到geoserver的data\styles目录下
将会用到的图标上传到geoserver项目的data\styles目录下,图片不要太大,压缩到合适的尺寸再放
2,新建如下样式

<?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>door</Name>
    <UserStyle>
      <Title>A red line style</Title>
      <FeatureTypeStyle>

        <Rule>
          <ogc:Filter>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>node_type</ogc:PropertyName>
                <ogc:Literal>2</ogc:Literal>
              </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PointSymbolizer>
                <Graphic>
                  <ExternalGraphic>
                    <OnlineResource xlink:type="simple" xlink:href="menjia_new.png" />
                    <Format>image/png</Format>
                  </ExternalGraphic>
                  <Size><ogc:Literal>16</ogc:Literal></Size>
                </Graphic>
          </PointSymbolizer>
        </Rule>
        
        <Rule>
          <ogc:Filter>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>node_type</ogc:PropertyName>
                <ogc:Literal>3</ogc:Literal>
              </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PointSymbolizer>
                <Graphic>
                  <ExternalGraphic>
                    <OnlineResource xlink:type="simple" xlink:href="menjia.png" />
                    <Format>image/png</Format>
                  </ExternalGraphic>
                  <Size><ogc:Literal>16</ogc:Literal></Size>
                </Graphic>
          </PointSymbolizer>
        </Rule>


      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

每个rule对应一个过滤条件,每个过滤条件的*ogc:PropertyName代表用以区分图标的字段,下面的ogc:Literal表示该过滤条件试用的过滤字段的值,即该值为多少时适用该过滤条件Format填写image/png,因为我这里用的时png图片。ogc:Literal*代表图层中图标的大小;OnlineResourcessss标签填写自定义图片的名字。
3,将上述样式应用到图层上,保存即可
经过如上操作,发布的图层上就可以根据node_type字段值的不同来展示不同图标啦,效果如下:
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值