且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS

更新时间:2021-12-06 00:45:18

今天会用TextSymbolizer来显示文字。

数据源geo_first_class_city_point 结构如下:

gid:  int
area:  double
perimeter:  double
res1_4m_:  long 
res1_4m_id:  long 
gbcode:  int 
name:  string 
adcode93:  int
adcode99:  int
adclass:  int 
pinyin:  string 
the_geom:  pointProperty 
 
该层所采用的sld文件:
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS    <FeatureTypeStyle>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS      
<FeatureTypeName>feature</FeatureTypeName>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS      
<Rule>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS        
<TextSymbolizer>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<Geometry>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<ogc:PropertyName>the_geom</ogc:PropertyName>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
</Geometry>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<Label>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<ogc:PropertyName>name</ogc:PropertyName>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
</Label>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<Font>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<CssParameter name="font-family">宋体</CssParameter>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<CssParameter name="font-style">italic</CssParameter>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<CssParameter name="font-Size">
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                    
<literal>10</literal>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
</CssParameter>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
</Font>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<LabelPlacement>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<PointPlacement>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                    
<AnchorPoint>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                        
<AnchorPointX>0</AnchorPointX>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                        
<AnchorPointY>0</AnchorPointY>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                    
</AnchorPoint>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
</PointPlacement>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
</LabelPlacement>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<Fill>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<CssParameter name="fill">#000000</CssParameter>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
</Fill>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<Halo/>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS        
</TextSymbolizer>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS        
<PointSymbolizer>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS        
<Geometry>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<ogc:PropertyName>the_geom</ogc:PropertyName>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS        
</Geometry>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
<graphic>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<size>6</size>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
<mark>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                    
<wellknownname>circle</wellknownname>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                    
<Fill>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                        
<CssParameter name="fill">#FF0000</CssParameter>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                        
<CssParameter name="fill-opacity">0.8</CssParameter>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                    
</Fill>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS                
</mark>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS            
</graphic>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS        
</PointSymbolizer>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS    
</Rule>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS    
</FeatureTypeStyle>


这里就不一项项解释上面各项含意了。不清楚的话请看OGC SLD规范。

得到图:

采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS


现在文字出来了,就是不好看。要弄好看点,可能需要进行坐标变换。看了看geoserver文档,当前geoserver对坐标变换支持不够。那怎么办呢?干脆通过WFS把数据调到客户端,到时候想怎么办就怎么办,想怎么显示就怎么显示,还可以加上超链接。


WFS调用格式举例如下:

http://localhost/geoserver/wfs/GetFeature?typeName=geo_first_class_city_point&BBOX=97.11500000000001,27.5225,119.11500000000001,44.5225

typeName就是你的数据层的名字,BBOX是查询范围。返回结果:

 

采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS <?xml version="1.0" encoding="UTF-8" ?> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" xmlns:topp="http://www.openplans.org/topp" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openplans.org/topp http://localhost:80/geoserver/wfs/DescribeFeatureType?typeName=topp:geo_first_class_city_point http://www.opengis.net/wfs http://localhost:80/geoserver/data/capabilities/wfs/1.0.0/WFS-basic.xsd">
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<gml:boundedBy>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<gml:coordinates decimal="." cs="," ts="">101.7874527,28.20082474 118.77278137,40.82094193</gml:coordinates> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</gml:Box>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</gml:boundedBy>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<gml:featureMember>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<topp:geo_first_class_city_point fid="geo_first_class_city_point.83613">
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:gid>0</topp:gid> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:area>0.0</topp:area> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:perimeter>0.0</topp:perimeter> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:res1_4m_>1</topp:res1_4m_> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:res1_4m_id>61</topp:res1_4m_id> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:gbcode>31010</topp:gbcode> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:name>北京</topp:name> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:adcode93>110100</topp:adcode93> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:adcode99>110100</topp:adcode99> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:adclass>1</topp:adclass> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<topp:pinyin>Beijing</topp:pinyin> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<topp:the_geom>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
<gml:coordinates decimal="." cs="," ts="">116.3809433,39.9236145</gml:coordinates> 
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</gml:Point>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</topp:the_geom>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</topp:geo_first_class_city_point>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</gml:featureMember>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS
<gml:featureMember>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS    ……
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</gml:featureMember>
采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS  
</wfs:FeatureCollection>

这样我可以在客户端解析wfs返回的数据,想怎么显示怎么显示。

实际上Geoserver+Geotools已经实现了大部分webgis的功能,只要理解了OGC规范,不难开发出复杂的应用。

本文转自xiaotie博客园博客,原文链接http://www.cnblogs.com/xiaotie/archive/2005/08/19/218509.html如需转载请自行联系原作者


xiaotie 集异璧实验室(GEBLAB)