一、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: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

要素集获取要素_OGC的网络要素服务(WFS)(持续更新。。。)相关推荐

  1. 要素集获取要素_Excel点文件转面要素

    ArcMap版本:10.2.2 工作中,经常获取到一些数据是点坐标文件,如何将这些点坐标文件转换成GIS中的数据,为后续工作提供数据基础.本文介绍如何将Excel中点坐标数据转换成面要素.主要思路:首 ...

  2. MapReduce作业在Hadoop完全分布式集群上运行的问题与思考(持续更新)

    1.集群已搭建好且通过了WordCount测试,但是在eclipse上开发的程序却仍然是只在namenode上运行 不知道是不是没有配置好eclipse上的Map/Reduce Locations,个 ...

  3. 【netty篇】- 第0章netty网络编程必备知识[持续更新中]~

    一.三大组件简介 Channel与Buffer Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer).通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NI ...

  4. 前端网络知识目录(持续更新)

    这里收录了前端新手进阶学习网络相关的资源链接,按照一定的先后顺序排列.如果你是新手,可以按照目录中的排序一篇一篇的看.如果你是有经验的老手,也可以选择性的浏览. 1.TCP与UDP UDP与TCP 文 ...

  5. MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】

    视频地址 http://edu.51cto.com/course/course_id-1691.html MariaDB 10培训课程 第一部分 复制 1.基于GTID方式复制配置及注意事项 2.基于 ...

  6. 网络及网络设备(持续更新)

    文章目录 网络 OSI 网络设备 防火墙 作用 接口与安全区域 安全策略 堡垒机 与防火墙区别 网络 OSI 一种规范,根据协议分层 物理层:网线路由器等上网硬件,其他如电压.线缆规范.集线器.中继器 ...

  7. 云数据中心网络架构 -- 数据中心网络(DCN)架构(持续更新)

    云数据中心网络可谓博大精深,DCN网络基础架构与其承载业务紧密相关. DCN网络架构设计,以规划视角不同可分为自顶向下和自底向上,前者以TOGAF等企业架构设计为方法论,后者更偏向于实际落地.本文将采 ...

  8. 数据结构严蔚敏代码合集 严书数据结构代码实现 可直接运行 持续更新by myself

    建议收藏关注,与严书代码高度一致且可实现运行. 有没更新的或者希望快点的可以催更哦. 版权声明:本文为CSDN博主「七灵微」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本 ...

  9. 导入要素集到SDE数据库的方法以及使用GP工具的许可问题(转载)

    转自:http://blog.csdn.net/lk103852503/article/details/7496850 费话不说,先上代码 public static void shpFeatureC ...

最新文章

  1. dubbo协议原理机制 单一长连接
  2. Microsoft Dynamics CRM 2015 数据管理 之 如何批量导入数据到 正式区(二)系统自带示例数据 安装及教学...
  3. 线程Thread,Runnable
  4. vb中mschart利用数组作图_选考VB算法解析之2019年4月高考真题卷第17题
  5. driver.get调用iframe中的页面_【5分钟玩转Lighthouse】爬取JavaScript动态渲染页面
  6. 案例学习BlazeDS+Spring之九Company Manager
  7. Apache Flink,流计算?不仅仅是流计算! 1
  8. 国网四川电力应用大数据服务经济社会发展
  9. Camera Link相机接口
  10. 数字信号处理 matlab 答案,数字信号处理原理及其matlab实现课后习题解答
  11. win10 外接usb摄像头_win10系统外接usb摄像头怎么打开
  12. 深大uooc学术道德与学术规范教育第六章
  13. 计算机c语言与数学知识的联系,计算机数学基础知识
  14. 雷电3接口 显卡 linux,炫龙 耀7000有雷电3接口么?
  15. VxWorks中tornado2.2中的编译器支持哪个C语言标准,有哪些标准库?
  16. WNMP(windows+nginx+mysql+php)环境搭建
  17. (每日更新)里里,阿里里,阿里阿里里:【第一期】喜欢的记得关注哈
  18. 团购网到底该如何实现平台化转型
  19. 大型网站架构系列:电商网站架构案例(3)
  20. python排版word文档 效率_「word技巧」懂得这几个word排版小技巧,还怕效率不高?...

热门文章

  1. CF1042D Petya and Array
  2. 2991:2011 求2011^n的后四位。
  3. 编程:请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”...
  4. Linux操作系统:文件和目录命令
  5. Leetcode: Palindrome Linked List
  6. php随笔10-thinkphp 3.1.3 模板继承 布局
  7. 多线程,异步委托,同步委托几种方式的区别
  8. PowerDesigner教程系列(五)概念数据模型
  9. 浅谈Spring中JDK动态代理与CGLIB动态代理
  10. thinkphp事务处理以及无效时的解决方案(整理)