Geoserver学习笔记-3、服务标准(WFS)

2024-05-16 05:18

本文主要是介绍Geoserver学习笔记-3、服务标准(WFS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、WFS(Web Feature Service)

       Web要素服务,支持对地理要素的插入、更新、删除、检索和发现服务。该服务根据HTTP客户请求返回GML(Geography Markup Language、地理标识语言)数据;也可以通过OGC Filter构造查询条件,并支持基于空间几何关系的查询和基于属性的查询以及基于空间关系和属性域的共同查询。

WFS标准定义了一些操作,这些操作允许用户在分布式的环境下通过HTTP对空间数据进行查询、编辑等操作。
WFS服务要求服务的接口必须由XML描述,另外数据交互必须由GML进行,数据过滤采用CQL语言。

https://docs.geoserver.org/latest/en/user/filter/index.html#filtering
https://docs.geoserver.org/latest/en/user/filter/ecql_reference.html

GeoServer对网络要素服务(WFS)的提供了1.0.0,1.1.0和2.0.0三个版本的支持。

版本的差异:
        1) WFS 2.0.0请求以默认格式返回GML 3.2,
               WFS 1.1.0请求以默认格式返回GML 3,
               WFS 1.0.0请求以默认格式返回GML 2。

地理标记语言(GML)是开放地理空间联盟(OGC)定义的基于XML的规范,用于表达地理特征。较旧的GML标准GML 2对地理信息进行编码,包括空间和非空间属性。GML3将GML2支持范围扩展到3D形状(曲面和实体)以及其他高级功能。GML3采用不同的方式指定几何要素。GeoServer支持GML3和GML2格式的请求。对几何字段的xml表示方式不同,有很多标签不一样,比如 MultiLineString 在GML3中已经没有了,详细差异可以对比相关规范

               http://www.doc88.com/p-9611908996292.html
        2)GeoServer 对于每种支持的GML格式,可以选择不同的SRS格式。
              SRS Style:对返回数据的轴顺序有影响,对几何字段的坐标也会有影响。
              EPSG Code:以格式EPSG:XXXX(例如EPSG:4326)返回典型的EPSG号。以经度/纬度(x / y)的顺序格式化地理坐标。

		以经度/纬度(x / y)的顺序格式化地理坐标WFS 1.0.0-->GML 2-->OGC HTTP URL ("http://www.opengis.net/gml/srs/epsg.xml#4326")以地理和制图系统的传统轴顺序(即纬度/经度(y / x))格式化数据。WFS 1.1.0-->GML 3-->OGC Experimental URN(urn:x-ogc:def:crs:EPSG:4326)	WFS 1.1.1,WFS 2.0.0-->GML 3.2-->OGC URN (urn:ogc:def:crs:EPSG::4326)

        3)WFS 1.1.0和2.0.0支持动态重新投影数据,这支持在本机SRS以外的SRS中返回数据。
        4)WFS 2.0.0引入了新版本的过滤器编码规范,增加了对时间过滤器的支持。
        5)WFS 2.0.0支持通过GetFeature请求进行联接。
        6)WFS 2.0.0增加了通过startIndex和count参数分页GetFeature请求的结果的功能。GeoServer现在在WFS 1.0.0和1.1.0中支持此功能。
        7)WFS 2.0.0支持存储的查询,这是存储在服务器上的常规WFS查询,因此可以通过将适当的标识符与WFS请求一起传递来调用它们。
        8)WFS 2.0.0支持SOAP(简单对象访问协议)作为OGC接口的替代方法。

WFS可以分为三类:
        1. Basic WFS(就是最常被提及的WFS,必须支持GetCapabilities/ DescribeFeatureType/ GetFeature操作,在功能上意味着是一个只读的数据服务)
        2. XLink WFS(必须在Basic WFS基础上加上GetGmlObject操作)
        3. Transaction WFS(也有称为WFS-T,必须在Basic WFS基础上加上Transaction操作以支持编辑数据,另外也可以加上GetGmlObject/LockFeature 操作)

二、WFS支持的操作:

WFS的所有版本都支持以下操作
        1)GetCapabilities:生成描述服务器中的WFS服务以及有效的WFS操作和参数的元数据文档

        2)DescribeFeatureType:返回WFS服务支持的功能类型的描述

        3)GetFeature:从数据源返回一组选择的特征,包括几何和属性值

        4)LockFeature:防止通过持久功能锁定来编辑功能

        5)Transaction:通过创建,更新和删除来编辑现有要素类型

仅在1.1.0版中可用,GetGMLObject 通过ID从WFS检索功能和元素。

请求流程:
        当一个客户端想要访问WFS服务时,一般会涉及到以下的流程:
                1. 通过操作获取WFS服务支持的操作和要素类(FeatureType,可以理解为WFS中的数据集) 。
                2. (可能)通过操作获取WFS服务支持的要素类的定义。
                3. 客户端发送某个操作的请求。
                4. WFS服务处理请求。
                5. WFS服务返回处理的结果和状态。

        上面几个步骤中所提到的“操作”包括:
                1. GetCapabilities(获取服务中的要素类及支持的操作)
                2. DescribeFeatureType(描述要素类的信息)
                3. GetFeature(获取要素)
                4. GetGmlObject(通过XLink获取GML对象)
                5. Transaction(创建、更新、删除数据的事务操作)
                6. LockFeature(在事务过程中锁定要素)


GetCapabilities:
1、参数列表

paramo/m
servicemust(值为WFS)
versionmust
requestmust

注意:version(必须完成的版本号)

2、操作示例
KVP格式:http://localhost:8080/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities
POST的等效请求:

<?xml version="1.0" ?>
<GetCapabilitiesservice="WFS"xmlns="http://www.opengis.net/wfs"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfshttp://schemas.opengis.net/wfs/1.1.0/wfs.xsd"/>

3、响应示例
在这里插入图片描述


DescribeFeatureType:
DescribeFeatureType:返回所指定的WFS服务支持的要素类型的描述(图层属性字段等)
1、参数列表

paramo/m
servicemust
versionmust
requestmust
typeNamesmust
exceptionsoption
outputFormateoption

typeNames指定所要描述的要素服务(typeName对于WFS 1.1.0和更早版本);
报告异常的格式-默认值为 application/vnd.ogc.se_xml

2、操作示例
KVP格式:
http://localhost:8080/geoserver/wfs?service=wfs&version=2.0.0&request=DescribeFeatureType&typeNames=topp:states

POST等效请求:

<?xml version="1.0" ?>
<DescribeFeatureTypeservice="WFS"version="2.0.2"xmlns="http://www.opengis.net/wfs/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd"><TypeName>topp:states</TypeName>
</DescribeFeatureType>

3、响应示例

在这里插入图片描述


GetFeature
GetFeature:返回指定图层符合条件的要素
https://docs.geoserver.org/latest/en/user/filter/filter_reference.html
1、参数列表

paramo/m
versionmust
servicemust
requset=GetFeaturemust
typenamemust
outputformatoption
bboxoption
filteroption
sortByoption
maxFeaturesoption
propertyNameoption
srsNameoption
featueIdoption
expiryoption
resultTypeoption
featureVersionoption

2、操作示例
POST请求示例

<?xml version="1.0" ?>
<GetFeatureversion="2.0.2"service="WFS"resultType="results"outputFormat="json"xmlns="http://www.opengis.net/wfs/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
<Query typeNames="basemap:ditiezhandian"/>
</GetFeature>

3、响应示例
在这里插入图片描述


Transaction
Transaction操作可以创建,修改和删除由WFS服务中的要素。
每个Transaction可以包含零个或多个Insert,Update和Delete元素,每个事务元素按顺序执行。
每个GeoServer事务都是原子的,这意味着如果任何元素失败,则事务将被放弃,并且数据将保持不变。
支持事务的 WFS服务器有时也称为WFS-T服务器。

操作示例:

-----------------插入-----------------
--------------点<?xml version="1.0"?>
<wfs:Transactionversion="2.0.2"service="WFS"xmlns:gml="http://www.opengis.net/gml/3.2"xmlns:wfs="http://www.opengis.net/wfs/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0http://schemas.opengis.net/wfs/2.0.02.0/wfs.xsdhttp://www.opengis.net/gml/3.2http://schemas.opengis.net/gml/3.2.1/gml.xsd"><wfs:Insert><ditiezhandian><geom><gml:MultiPoint srsName="http://www.opengis.net/def/crs/EPSG/0/2435"><gml:Point><gml:pos>27554.435382730742 43494.32271040513</gml:pos></gml:Point></gml:MultiPoint></geom><name>测试点</name></ditiezhandian></wfs:Insert>
</wfs:Transaction>以图层名称为insert的子元素,属性名元素(区分大小写)配置其值,空间要素类型要与表中的字段类型匹配
(gml:Point、gml:MultiPoint、gml:LineString、gml:MultiLineString、gml:Polygon、gml:MultiPolygon、gml:Box、gml:Envelope),
注意:坐标顺序是Y、X--------------线-<?xml version="1.0"?>
<wfs:Transactionversion="2.0.2"service="WFS"xmlns:gml="http://www.opengis.net/gml/3.2"xmlns:wfs="http://www.opengis.net/wfs/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0http://schemas.opengis.net/wfs/2.0.02.0/wfs.xsdhttp://www.opengis.net/gml/3.2http://schemas.opengis.net/gml/3.2.1/gml.xsd"><wfs:Insert><ditiexian><geom><gml:MultiLineString srsName="http://www.opengis.net/def/crs/EPSG/0/2435"><gml:LineString><gml:posList>27633.240501038006 43258.39232970535 27652.34980592328 43594.596662530676 27571.732425938524 44154.140996202674 27492.309377509093 44046.05399044533 27473.200072623815 43691.33751851239 27466.6312490695 43419.62708967487</gml:posList></gml:LineString></gml:MultiLineString></geom><name>线测试1</name></ditiexian></wfs:Insert>
</wfs:Transaction>坐标顺序是Y、X--------------面<?xml version="1.0"?>
<wfs:Transactionversion="2.0.2"service="WFS"xmlns:gml="http://www.opengis.net/gml/3.2"xmlns:wfs="http://www.opengis.net/wfs/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0http://schemas.opengis.net/wfs/2.0.02.0/wfs.xsdhttp://www.opengis.net/gml/3.2http://schemas.opengis.net/gml/3.2.1/gml.xsd"><wfs:Insert><slg_rv><geom><gml:MultiPolygon><gml:polygonMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>40927.05946997714 28923.714796715758 40554.42823108966 24901.20834616119 46440.090876081624 27977.80472877062 40927.05946997714 28923.714796715758</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></gml:polygonMember></gml:MultiPolygon></geom><rvnm>面测试</rvnm></slg_rv></wfs:Insert>
</wfs:Transaction>
注意:插入面要素时出现,srid未指定与源数据叠加无法显示问题
坐标顺序是X、Y-----------------修改-----------------<?xml version="1.0"?>
<wfs:Transactionversion="2.0.2"service="WFS"xmlns:gml="http://www.opengis.net/gml/3.2"xmlns:wfs="http://www.opengis.net/wfs/2.0"xmlns:fes="http://www.opengis.net/fes/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://schemas.opengis.net/gml/3.2.1/gml.xsd"><wfs:Update typeName="ps:ditiexian"><wfs:Property><wfs:ValueReference>name</wfs:ValueReference><wfs:Value>地铁一号线修改测试</wfs:Value></wfs:Property><fes:Filter><fes:PropertyIsEqualTo><fes:ValueReference>user_type</fes:ValueReference><fes:Literal>19101</fes:Literal></fes:PropertyIsEqualTo></fes:Filter></wfs:Update>
</wfs:Transaction>fes命名空间:过滤器编码标准-----------------删除------------------------<?xml version="1.0"?>
<wfs:Transactionversion="2.0.2"service="WFS"xmlns:gml="http://www.opengis.net/gml/3.2"xmlns:wfs="http://www.opengis.net/wfs/2.0"xmlns:fes="http://www.opengis.net/fes/2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://schemas.opengis.net/gml/3.2.1/gml.xsd"><wfs:Delete typeName="ps:ditiexian"><fes:Filter><fes:PropertyIsEqualTo><fes:ValueReference>name</fes:ValueReference><fes:Literal>线测试1</fes:Literal></fes:PropertyIsEqualTo></fes:Filter></wfs:Delete>
</wfs:Transaction>

这篇关于Geoserver学习笔记-3、服务标准(WFS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993982

相关文章

C++ Primer 标准库vector示例详解

《C++Primer标准库vector示例详解》该文章主要介绍了C++标准库中的vector类型,包括其定义、初始化、成员函数以及常见操作,文章详细解释了如何使用vector来存储和操作对象集合,... 目录3.3标准库Vector定义和初始化vector对象通列表初始化vector对象创建指定数量的元素值

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas