目录
- 1.1、前言
- 1.2、伪3D服务效果图
- 1.3、数据准备
- 1.4、基本原理
- 1.5、完整的样式文件
- 1.6、Geoserver中的操作
1.1、前言
本篇文章需要的Geoserver环境,Geoserver的情况请参考博文Geoserver简介、Geoserver安装部署操作请参考博文Geoserver安装部署、Geoserver基本操作请参考博文Geoserver基本操作。
1.2、伪3D服务效果图
原始的二维矢量数据图如下:
伪3D服务效果图如下:
1.3、数据准备
发布伪3D服务需要矢量面数据,为了方便用户获取测试数据,这里提供测试数据的下载,下载地址。数据和样式文件详情具体如下:
1.4、基本原理
实现伪3D效果,主要是视觉上实现其基本原理就是将矢量面在垂直方向上进行拉伸,再在水平方向进行偏移。Geoserver主要是利用sld样式文件支持的isometric和offset两个属性进行伪3D效果。具体如下:
第一个参数the_geom是指空间数据类型的字段名称,也就是储存坐标串的字段名,在geoserver中发布矢量数据的时候能看到要素的属性字段,一般情况下空间数据类型的默认字段名称就是the_geom。
第二个参数是指拉伸长度值单位与要素所在坐标系一致。
第一个参数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的数据目录下;
- 第二步:新建工作空间;
- 第三步:新建数据存储;
- 第四步:新建图层数据;
- 第五步:上传样式文件;
- 第六步:发布图层服务;
- 第七步:预览图层服务;