GIS的学习(十八)Openlayers+Geoserver使用纪要

1       Geoserver图层发布流程

安装后Geoserver后,发布图层基本上是如下的一个流程:

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>
复制代码

猜你喜欢

转载自topmanopensource.iteye.com/blog/1668006