一、WFS简介
    OGC的WMS和WMTS规范都是有关空间数据显示的标准,而WFS(Web Feature Service)则允许用户在分布式的环境下通过HTTP对空间数据进行增、删、改、查。

具体来说,WebGIS服务器除了能够返回一张张地图图像之外,还可以返回绘制该地图图像所使用的真实地理数据。用户利用这些传输到客户端的地理数据可以进行数据渲染可视化、空间分析等操作。而前后端的这种数据交互就是基于WFS规范的。

那么也就能很清楚的说明WMS与WFS之间的区别了。WMS是由服务器将地图图像发送给客户端,而WFS是服务器将矢量数据发送给客户端。也就是在使用WMS时地图由服务器绘制,在使用WFS时地图由客户端绘制。另外最最重要的,使用WFS可以对WebGIS服务器中的地理数据(存储在空间数据库中)直接进行增、删、改、查。

二、WFS的种类与操作
    WFS服务一般支持如下功能:

GetCapabilities    ——    获取WFS服务的元数据(介绍服务中的要素类和支持的操作)
DescribeFeatureType    ——    获取WFS服务支持的要素类的定义(要素类的元数据,比如要素包含哪些字段)
GetFeature    ——    获取要素数据
GetGmlObject    ——    通过XLink获取GML对象
Transaction    ——    创建、更新、删除要素数据的事务操作
LockFeature    ——    在事务过程中锁定要素
    实际中,WebGIS服务器针对这些功能并不是必须全部实现,而是实现全部或部分。

因此,根据依据这些功能的支持与否,可以将WFS分为3类:

Basic WFS    ——    必须支持GetCapabilities、DescribeFeature Type、GetFeature功能
XLink WFS    ——    必须在Basic WFS基础上加上GetGmlObject操作
Transaction WFS    ——    也称为WFS-T,必须在Basic WFS基础上加上Transaction功能以及支持编辑数据,另外也可以加上GetGmlObject或LockFeature功能
三、GetCapabilities(获取元数据)
    GetCapabilities的KVP格式请求需要以下参数:

示例:

获取本机安装的GeoServer中WFS服务的元数据:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities

GeoServer将会返回一个XML文件(由于内容太多,这里就不列出来了),里面包含了关于这个GeoServer服务器的WFS服务的所有元数据,比如,包含哪些要素类,支持哪些操作等等。

四、DescribeFeatureType(获取要素类的元数据)
    DescribeFeatureType的KVP格式请求需要以下参数:

示例:

获取本机GeoServer中guangdong:gd_roads要素类的元数据:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=guangdong:gd_roads

GeoServer返回一个XML文件:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:guangdong="http://localhost:8084/geoserver/guangdong" elementFormDefault="qualified" targetNamespace="http://localhost:8084/geoserver/guangdong">
<xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://localhost:8080/geoserver/schemas/gml/3.1.1/base/gml.xsd"/>
<xsd:complexType name="gd_roadsType">
<xsd:complexContent>
<xsd:extension base="gml:AbstractFeatureType">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" name="the_geom" nillable="true" type="gml:MultiLineStringPropertyType"/>
<xsd:element maxOccurs="1" minOccurs="0" name="osm_id" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="code" nillable="true" type="xsd:int"/>
<xsd:element maxOccurs="1" minOccurs="0" name="fclass" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="ref" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="oneway" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="maxspeed" nillable="true" type="xsd:int"/>
<xsd:element maxOccurs="1" minOccurs="0" name="layer" nillable="true" type="xsd:double"/>
<xsd:element maxOccurs="1" minOccurs="0" name="bridge" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="tunnel" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="type" nillable="true" type="xsd:long"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="gd_roads" substitutionGroup="gml:_Feature" type="guangdong:gd_roadsType"/>
</xsd:schema>

其中,name就是指gd_roads要素类所具有的字段,而type就是该字段数据的数据类型。

五、GetFeature(获取要素数据)

GetFeature的KVP格式请求需要以下参数:

示例:

①返回本机GeoServer中guangdong:gd_roads要素类的要素ID为gd_roads.1的要素,返回数据格式指定为json:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=guangdong:gd_roads&OUTPUTFORMAT=application/json&FEATUREID=gd_roads.1

②返回本机GeoServer的guangdong:gd_roads要素类中的10个要素,返回数据格式指定为json:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=guangdong:gd_roads&OUTPUTFORMAT=application/json&MAXFEATURES=10

六、Transaction(对要素数据增、删、改)

Transaction的KVP格式请求需要以下参数:

目前Transaction的KVP格式请求只支持Delete操作(Insert和Update必须通过XML格式请求)。

示例:

删除本机GeoServer的guangdong:gd_roads要素类中的ID为gd_roads.1的要素:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=Transaction&TYPENAME=guangdong:gd_roads&FEATUREID=gd_roads.1

参考链接:

1、WebGIS中的网络要素服务(WFS)

2、开源GIS之WFS一:WFS介绍

OGC——WFS服务的更多相关文章

  1. java查询WFS服务

    在我们访问wfs服务时候,有时候会遇到前台访问时候的跨域问题.这里给出java访问的一个小例子. import java.io.BufferedReader; import java.io.IOExc ...

  2. arcgis调用国家天地图wfs服务

    1.国家天地图wfs地址 getcapabilities http://www.tianditu.com/wfssearch.shtml?request=getcapabilities&ser ...

  3. WFS服务查询方法

    基于Geoserver发布的wfs服务,实现空间和属性信息的查询.wfs包含getFeature操作,用来检索要素信息,支持返回gml格式的地理要素表达. WFS的getFeature操作需要提供的参 ...

  4. cesium结合geoserver利用WFS服务实现图层新增(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  5. leaflet结合geoserver利用WFS服务实现图层删除功能(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  6. openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)

    内容概览 1.openlayers6结合geoserver利用WFS服务实现图层新增功能2.源代码demo下载 效果图如下: 本篇主要是openlayers6通过调用geoserver发布的地图服务W ...

  7. leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  8. cesium结合geoserver利用WFS服务实现图层编辑(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  9. cesium结合geoserver利用WFS服务实现图层删除(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  10. OpenLayers调用ArcGIS Server发布的WFS服务

    OpenLayers调用ArcGIS Server发布的WFS服务 原创: 蔡建良 2013-08-20 一. 开发环境 1) Openlayers2.13+arcgis server9.3 2) W ...

随机推荐

  1. Java开发23种设计模式(转)

    [转载]https://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 设计模式(Design Patterns) --可复用面 ...

  2. burpsuit无法启动

    在安装burpsuit时,最难的并不是找带有注册机的burpsuit安装包. 而是因为一些底层的原因,无法打开 burpsuit. 提示 Your JRE appears to be version ...

  3. 号码变换配置对接运营商IMS

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. fs直接对接运营商,调试过程中的号码变换规则比较容易出问题. 本文档记录一个较为通用的对接IMS配置方案. 环境 CentOS 7. ...

  4. FA分析树

    \(CFG\) 的分析树 例如语句 \[(1)E \rightarrow E +E \\ (2)E \rightarrow E *E\\ (3)E \rightarrow -E\\ (4)E \rig ...

  5. 低功耗4G模组:LCD应用示例

    ​ 今天我们学习合宙Air780E开发板LCD应用示例,文末[阅读原文]获取最新资料. 本文档适用于Air780E开发板 关联文档和使用工具 lcd-demo: https://gitee.com/o ...

  6. VUE 前端读取excel表格内容

    <el-upload class="upload-demo" :action="''" :show-file-list="false" ...

  7. 51单片机入门:LED灯控制(01)

    第一篇博客,博客园注册很久却一直没有好好利用,今天把以前的文章都删掉,就当开个好头吧. 希望在以后的时间中,自己能够认真.努力.珍惜时间. 零基础入门51单片机 单片机(Microcontroller ...

  8. 关于ClassLoader中getResource与getResourceAsStream的疑问

    背景: 某日临近下班,一个同事欲任何类中获取项目绝对路径,不通过Request方式获取,可是始终获取不到预想的路径.于是晚上回家google了一下,误以为是System.getProperty(&qu ...

  9. linux虚拟ip原理

    在 Linux 中,虚拟 IP(Virtual IP,VIP)是指一组与物理网络接口卡 (NIC) 绑定的虚拟 IP 地址,这些 IP 地址并不是物理上存在的,而是通过软件模拟实现的. Linux 实 ...

  10. CudaSPONGE之Python接口

    技术背景 在上一篇博客中我们介绍了CudaSPONGE的基本安装和使用方法.为了性能考虑,CudaSPONGE是基于纯CUDA C开发的,但是现在很多轮子都是Python开发的.为兼容更多的框架和平台 ...