赞
踩
本篇文章需要的Geoserver环境,Geoserver的情况请参考博文Geoserver简介、Geoserver安装部署操作请参考博文Geoserver安装部署、Geoserver基本操作请参考博文Geoserver基本操作。
原始的二维矢量数据图如下:
伪3D服务效果图如下:
发布伪3D服务需要矢量面数据,为了方便用户获取测试数据,这里提供测试数据的下载,下载地址。数据和样式文件详情具体如下:
实现伪3D效果,主要是视觉上实现其基本原理就是将矢量面在垂直方向上进行拉伸,再在水平方向进行偏移。Geoserver主要是利用sld样式文件支持的isometric和offset两个属性进行伪3D效果。具体如下:
第一个参数the_geom是指空间数据类型的字段名称,也就是储存坐标串的字段名,在geoserver中发布矢量数据的时候能看到要素的属性字段,一般情况下空间数据类型的默认字段名称就是the_geom。
第二个参数是指拉伸长度值单位与要素所在坐标系一致。
第一个参数the_geom是指空间数据类型的字段名称,也就是储存坐标串的字段名,在geoserver中发布矢量数据的时候能看到要素的属性字段,一般情况下空间数据类型的默认字段名称就是the_geom。
第二、三个参数是指垂直和水平方向上的拉伸长度值,但是单位与要素所在坐标系一致。
<?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>
<?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>
Geoserver的操作步骤见文章中前言部分中提到的博文,操作步骤如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。