• Geoserver学习(二)——图层发布(转)


    转自:http://topmanopensource.iteye.com/blog/1668006

    1、使用管理员账户登陆。一般用户名和密码是admin/geoserver;

    2、建立一个“新的工作空间”。此时可以指定改工作空间的名称及命名空间的Uri,如果原意使用默认的工作空间,就不用建立了~~

    3、添加一个数据集合。Geoserver支持的数据源有很多种,如shapefile、postgis等等,在这里,笔者使用的是shapefile~~

    4、选择后,可以指定该数据集合的工作空间、数据源名称、描述、shapefile的位置、字符集等等。

    5、添加一个图层。在刚才添加完数据集合后,即可看到一个发布新图层的页面

    6、同样也可以通过:所有图层->添加一个新的资源->选择Test:Test的方式打开发布图层的界面

     

    7、点击发布,可以设定相关的信息,如名称、标题等,可以根据项目的实际需要进行设定。

     

    2       参数设定

    WfsUrl:Wfs服务的地址,如http://localhost:8080/geoserver/wfs

    WfsNamespace:Wfs服务的命名空间,即上文的Test

    WfsLayerName:Wfs服务的图层名称,即上文图中的states

    FeatureIdKey:Wfs服务图层中字段的名称,如上文图中的STATE_NAME

    SrsName:wfs图层数据的实际投影坐标系,即地图显示时设置的投影坐标系,如EPSG:2436

    2.1     查询

    2.1.1 范围查询

    假定我们指定的查询范围为bbox,根据上述参数设定,进行范围查询的Url为:“WfsUrl?REQUEST=GetFeature&typeName= WfsNamespace : WfsLayerName &bbox=bbox&outputFormat=json”。bbox是怎么来的呢?bbox实际上描绘的是一个矩形,假定矩形左下角的点是Max(x1,y1),右上角的点是Min(x2,y2),则bbox是形如“x1,y1,x2,y2”的一个字符串。

    2.1.2 属性查询

    假定我们的查询条件是STATE_NAME为“北京”,则根据上述参数设定,此查询的url为:WfsUrl,同时需要将如下形式的参数信息,提交到服务器。如以post的方式,将参数信息写入HttpWebRequest的RequestStream中。

    复制代码
     1 <w:GetFeature service="WFS" version="1.1.0" 
     2     xmlns:w="http://www.opengis.net/wfs" 
     3     xmlns:f=" WfsNamespace" 
     4     xmlns:g="http://www.opengis.net/gml" 
     5     xmlns:o="http://www.opengis.net/ogc" 
     6     x:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd WfsUrl/DescribeFeatureType?version=1.1.0&amp;typename= WfsNamespace:WfsLayerName" 
     7     xmlns:x="http://www.w3.org/2001/XMLSchema-instance">
     8     <w:Query typeName="f: WfsLayerName ">
     9         <o:Filter>
    10             <o:PropertyIsEqualTo>
    11                 <o:PropertyName>f: FeatureIdKey </o:PropertyName>
    12                 <o:Literal>北京</o:Literal>
    13             </o:PropertyIsEqualTo>
    14         </o:Filter>
    15     </w:Query>
    16 </w:GetFeature>
    复制代码

    由上文可以看出,PropertyIsEqualTo 意味着等于,其它的逻辑关系如大于、小于、不等于等等,可以参考Geoserver的官方网站的例子。

    2.2     增加点

    假定我们要添加的点信息如下:

    1、经纬度为longitude, latitude

    2、STATE_NAME为北京

    则根据上述参数设定,此查询的url为:WfsUrl,同时需要将如下形式的参数信息,提交到服务器。如以post的方式,将参数信息写入HttpWebRequest的RequestStream中。

    复制代码
     1 <w:Transaction xmlns:w="http://www.opengis.net/wfs" 
     2         xmlns:g="http://www.opengis.net/gml" 
     3         service="WFS" version="1.1.0" 
     4         x:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd WfsUrl/DescribeFeatureType?version=1.1.0&amp;typename=WfsNamespace: WfsLayerName " xmlns:x="http://www.w3.org/2001/XMLSchema-instance">
     5     <w:Insert>
     6         <f: WfsLayerName xmlns:f=" WfsNamespace ">
     7             <f: FeatureIdKey >北京</f: FeatureIdKey >
     8             <f:the_geom>
     9                 <g:Point srsName="SrsName">
    10                     <g:coordinates decimal="." cs="," ts=" ">lonValue,latValue</g:coordinates>
    11                 </g:Point>
    12             </f:the_geom>
    13         </f: WfsLayerName >
    14     </w:Insert>
    15 </w:Transaction>
    复制代码

    2.3     删除点

    假定我们要删除的STATE_NAME为北京的点,则根据上述参数设定,此查询的url为:WfsUrl,同时需要将如下形式的参数信息,提交到服务器。如以post的方式,将参数信息写入HttpWebRequest的RequestStream中。

    复制代码
     1 <w:Transaction xmlns:w="http://www.opengis.net/wfs" 
     2 xmlns:f="WfsNamespace" xmlns:g="http://www.opengis.net/gml" 
     3 service="WFS" version="1.1.0" xmlns:o="http://www.opengis.net/ogc" 
     4 x:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd WfsUrl /DescribeFeatureType?version=1.1.0&amp;typename=WfsNamespace:WfsLayerName " xmlns:x="http://www.w3.org/2001/XMLSchema-instance">
     5     <w:Delete typeName="f:WfsLayerName ">
     6         <o:Filter>
     7             <o:PropertyIsEqualTo>
     8                 <o:PropertyName>f: FeatureIdKey </o:PropertyName>
     9                 <o:Literal>北京</o:Literal>
    10             </o:PropertyIsEqualTo>
    11         </o:Filter>
    12     </w:Delete>
    13 </w:Transaction>
  • 相关阅读:
    mysql数据向Redis快速导入
    jquery.cookie.js使用
    怎么才能在职场中如鱼得水(转)
    内部类(编程思想)
    main方法原来只要放在public static类中就能跑,涨知识了
    匿名内部类--工厂
    Java通过继承外部类来建立该外部类的protected内部类的实例(转)
    监听器的使用例子 ServletContextListener
    Class.getResource()方法的使用
    maven打包资源文件(转)
  • 原文地址:https://www.cnblogs.com/LCGIS/p/3034649.html
Copyright © 2020-2023  润新知