zoukankan      html  css  js  c++  java
  • 采用开源软件搭建WebGIS系统(8)遇到困难,决定试一试WFS

    今天会用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文件:
        <FeatureTypeStyle>
          
    <FeatureTypeName>feature</FeatureTypeName>
          
    <Rule>
            
    <TextSymbolizer>
                
    <Geometry>
                    
    <ogc:PropertyName>the_geom</ogc:PropertyName>
                
    </Geometry>
                
    <Label>
                    
    <ogc:PropertyName>name</ogc:PropertyName>
                
    </Label>
                
    <Font>
                    
    <CssParameter name="font-family">宋体</CssParameter>
                    
    <CssParameter name="font-style">italic</CssParameter>
                    
    <CssParameter name="font-Size">
                        
    <literal>10</literal>
                    
    </CssParameter>
                
    </Font>
                
    <LabelPlacement>
                    
    <PointPlacement>
                        
    <AnchorPoint>
                            
    <AnchorPointX>0</AnchorPointX>
                            
    <AnchorPointY>0</AnchorPointY>
                        
    </AnchorPoint>
                    
    </PointPlacement>
                
    </LabelPlacement>
                
    <Fill>
                    
    <CssParameter name="fill">#000000</CssParameter>
                
    </Fill>
                
    <Halo/>
            
    </TextSymbolizer>
            
    <PointSymbolizer>
            
    <Geometry>
                
    <ogc:PropertyName>the_geom</ogc:PropertyName>
            
    </Geometry>
                
    <graphic>
                    
    <size>6</size>
                    
    <mark>
                        
    <wellknownname>circle</wellknownname>
                        
    <Fill>
                            
    <CssParameter name="fill">#FF0000</CssParameter>
                            
    <CssParameter name="fill-opacity">0.8</CssParameter>
                        
    </Fill>
                    
    </mark>
                
    </graphic>
            
    </PointSymbolizer>
        
    </Rule>
        
    </FeatureTypeStyle>


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

    得到图:



    现在文字出来了,就是不好看。要弄好看点,可能需要进行坐标变换。看了看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是查询范围。返回结果:

     <?xml version="1.0" encoding="UTF-8" ?> 
    <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">
    <gml:boundedBy>
    <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
      
    <gml:coordinates decimal="." cs="," ts="">101.7874527,28.20082474 118.77278137,40.82094193</gml:coordinates> 
      
    </gml:Box>
      
    </gml:boundedBy>
    <gml:featureMember>
    <topp:geo_first_class_city_point fid="geo_first_class_city_point.83613">
      
    <topp:gid>0</topp:gid> 
      
    <topp:area>0.0</topp:area> 
      
    <topp:perimeter>0.0</topp:perimeter> 
      
    <topp:res1_4m_>1</topp:res1_4m_> 
      
    <topp:res1_4m_id>61</topp:res1_4m_id> 
      
    <topp:gbcode>31010</topp:gbcode> 
      
    <topp:name>北京</topp:name> 
      
    <topp:adcode93>110100</topp:adcode93> 
      
    <topp:adcode99>110100</topp:adcode99> 
      
    <topp:adclass>1</topp:adclass> 
      
    <topp:pinyin>Beijing</topp:pinyin> 
    <topp:the_geom>
    <gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
      
    <gml:coordinates decimal="." cs="," ts="">116.3809433,39.9236145</gml:coordinates> 
      
    </gml:Point>
      
    </topp:the_geom>
      
    </topp:geo_first_class_city_point>
      
    </gml:featureMember>
    <gml:featureMember>
        ……
      
    </gml:featureMember>
      
    </wfs:FeatureCollection>

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

    实际上Geoserver+Geotools已经实现了大部分webgis的功能,只要理解了OGC规范,不难开发出复杂的应用。
    版权所有,欢迎转载
  • 相关阅读:
    Naive Bayesian classification 朴素贝叶斯分类
    svm
    CentOS 7上的性能监控工具
    Elasticsearch .net 客户端条件拼接查询
    centos7 搭建elk
    Elasticsearch 快照和恢复
    Elasticsearch .net client NEST使用说明 2.x
    ELK 日志系统搭建配置
    用微软makecert.exe生成一个自签名的证书
    (从零开始java开发) IDEA+MAVEN构建一个webapp骨架项目(解决一直downloading问题)
  • 原文地址:https://www.cnblogs.com/xiaotie/p/218509.html
Copyright © 2011-2022 走看看