如何利用Geoserver将矢量数据发布成伪3D服务

1.1、前言

        本篇文章需要的Geoserver环境,Geoserver的情况请参考博文Geoserver简介、Geoserver安装部署操作请参考博文Geoserver安装部署、Geoserver基本操作请参考博文Geoserver基本操作

1.2、伪3D服务效果图

        原始的二维矢量数据图如下:
图片1伪3D服务效果图如下:
图片2

1.3、数据准备

        发布伪3D服务需要矢量面数据,为了方便用户获取测试数据,这里提供测试数据的下载,下载地址。数据和样式文件详情具体如下:
图片3

1.4、基本原理

        实现伪3D效果,主要是视觉上实现其基本原理就是将矢量面在垂直方向上进行拉伸,再在水平方向进行偏移。Geoserver主要是利用sld样式文件支持的isometric和offset两个属性进行伪3D效果。具体如下:
图片4
        第一个参数the_geom是指空间数据类型的字段名称,也就是储存坐标串的字段名,在geoserver中发布矢量数据的时候能看到要素的属性字段,一般情况下空间数据类型的默认字段名称就是the_geom。
        第二个参数是指拉伸长度值单位与要素所在坐标系一致。
图片5
        第一个参数the_geom是指空间数据类型的字段名称,也就是储存坐标串的字段名,在geoserver中发布矢量数据的时候能看到要素的属性字段,一般情况下空间数据类型的默认字段名称就是the_geom。
        第二、三个参数是指垂直和水平方向上的拉伸长度值,但是单位与要素所在坐标系一致。

1.5、完整的样式文件

  • 样式文件1
<?xml version="1.0" encoding="ISO-8859-1"?>  
<StyledLayerDescriptor version="1.0.0"   
    xsi:schemaLocation="http://www.opengis.net/sld 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>buildings25</Name>  
        <UserStyle>  
            <Title>buildings25</Title>  
            <Abstract>buildings25</Abstract>  
            <FeatureTypeStyle>  
                <Rule>  
                    <PolygonSymbolizer>  
                        <Geometry>  
                            <ogc:Function name="isometric">  
                                <ogc:PropertyName>the_geom</ogc:PropertyName>  
                                <ogc:Literal>0.0001</ogc:Literal>  
                            </ogc:Function>  
                        </Geometry>  
                        <Fill>  
                            <CssParameter name="fill">#828282</CssParameter>  
                        </Fill>  
                        <Stroke>  
                            <CssParameter name="stroke">#828282</CssParameter>  
                            <CssParameter name="stroke-width">0.1</CssParameter>  
                        </Stroke>  
                    </PolygonSymbolizer>  
                </Rule>  
            </FeatureTypeStyle>  
            <FeatureTypeStyle>  
                <Rule>  
                    <PolygonSymbolizer>  
                        <Geometry>  
                            <ogc:Function name="offset">  
                                <ogc:PropertyName>the_geom</ogc:PropertyName>  
                                <ogc:Literal>0</ogc:Literal>  
                                <ogc:Literal>0.0001</ogc:Literal>  
                            </ogc:Function>  
                        </Geometry>  
                        <Fill>  
                            <CssParameter name="fill">#DADADA</CssParameter>  
                        </Fill>  
                        <Stroke>  
                            <CssParameter name="stroke">#DADADA</CssParameter>  
                            <CssParameter name="stroke-width">0.1</CssParameter>  
                        </Stroke>  
                    </PolygonSymbolizer>  
                </Rule>  
            </FeatureTypeStyle>  
        </UserStyle>  
    </NamedLayer>  
</StyledLayerDescriptor>
  • 样式文件2
<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">
    <sld:UserLayer>
        <sld:LayerFeatureConstraints>
            <sld:FeatureTypeConstraint/>
        </sld:LayerFeatureConstraints>
        <sld:UserStyle>
            <sld:Name>js25</sld:Name>
            <sld:FeatureTypeStyle>
                <sld:Name>js25</sld:Name>
                <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
                <sld:Rule>
                    <sld:Name>js25</sld:Name>
                    <sld:PolygonSymbolizer>
                        <sld:Geometry>
                            <ogc:Function name="isometric">
                                <ogc:PropertyName>the_geom</ogc:PropertyName>
                                <ogc:Literal>0.08</ogc:Literal>
                            </ogc:Function>
                        </sld:Geometry>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#001E39</sld:CssParameter>
                            <sld:CssParameter name="fill-opacity">0.61</sld:CssParameter>
                        </sld:Fill>
                       
                    </sld:PolygonSymbolizer>
                    <sld:PolygonSymbolizer>
                        <sld:Geometry>
                            <ogc:Function name="offset">
                                <ogc:PropertyName>the_geom</ogc:PropertyName>
                                <ogc:Literal>0</ogc:Literal>
                                <ogc:Literal>-0.08</ogc:Literal>
                            </ogc:Function>
                        </sld:Geometry>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#001E39</sld:CssParameter>
                        </sld:Fill><Stroke>
          <CssParameter name="stroke">#4B96B6</CssParameter>
          <CssParameter name="stroke-width">0.5</CssParameter>
        </Stroke>
                    </sld:PolygonSymbolizer>
                </sld:Rule>
            </sld:FeatureTypeStyle>
        </sld:UserStyle>
    </sld:UserLayer>
</sld:StyledLayerDescriptor>

1.6、Geoserver中的操作

        Geoserver的操作步骤见文章中前言部分中提到的博文,操作步骤如下:

  • 第一步:拷贝数据到Geoserver的数据目录下;
  • 第二步:新建工作空间;
  • 第三步:新建数据存储;
  • 第四步:新建图层数据;
  • 第五步:上传样式文件;
  • 第六步:发布图层服务;
  • 第七步:预览图层服务;
  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

giser@2011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值