百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

GIS数据协议——OGC数据服务规范

bigegpt 2024-08-24 23:05 2 浏览

ogc定义

OGC全称是放地理空间信息联盟(Open Geospatial Consortium),它主要是制定各种数据标准和服务协议,然后各大GIS厂商都按照这个标准和协议来开发,说白了就是定义了一系列接口,然后各个GIS厂商按照这个接口去实现,这样就可以保证各个GIS厂商之间的空间数据信息可互相操作使用,要不然大家各搞各的,GIS行业就很难有大的进步。

我们登录到OGC的官网https://www.ogc.org/ 在其standards的页签下,就可找到当前OGC定义的多种数标准和协议,这其中就有很多我们熟悉的GEOTIFF、3DTiles、KML等等的数据协议,而今天小编主要给大家介绍的是OGC定义的数据服务协议。

作为一个GIS软件工程师,无论是你是从事GIS数据服务端还是GIS数据可视化方面,都需要了解最基本的OGC数据服务协议,目前OGC提供了WMS、WFS、WCS、WMTS、WPS五种GIS数据服务协议,下面小编一一解释这些协议的用法。

WMS服务

WMS服务全称是Web Map Service (web地图服务),目前OGC提供的WMS最新版本为1.3.0,并且提供了如下的操作接口:

GetCapabilities:获取服务中的要素及支持的操作,其实就是整个服务的wms的所有信息,包括图层信息、投影以及支持的各种其它操作接口。

请求格式支持KVP和SOAP,其所需的参数主要有以下参数:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE=WMS

服务名称


REQUEST=GetCapabilities

请求接口


FORMAT

返回类型

如果未定义,默认xml

UPDATESEQUENCE


这个参数主要是用来当服务端数据改变的时候,客户端可以通过改变这个参数值来保证获取到最新的数据

GetMap:获取地图数据,这是WMS的核心服务,主要是将各种GIS数据按照请求的bbox渲染为影像数据,并可通过Style来控制其显示样式。

请求格式支持KVP和SOAP,其所需要的参数主要包括:

参数名称

参数含义

是否必须

备注

VERSION

版本号


REQUEST=GetMap

请求接口


LAYERS

图层名称


STYLES

样式类型


BBOX

边界框值


CRS

投影坐标系


WIDTH

图片宽度


HEIGHT

图片高度


FORMAT

图片格式


TRANSPARENT

图片是否透明

默认为false,不透明

BGCOLOR

图片背景

默认为白色

EXCEPTIONS



TIME

请求时间,主要用于元数据中包括时间维度,比如天气预报


ELEVATION

元数据包括高程维度,比如不同海拔高度的臭氧浓度


GetFeatureInfo:获取getMap响应地图上某一点的特征数据信息

请求格式支持KVP和SOAP,其主要参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


REQUEST=GetFeatureInfo

请求接口


QUERY_LAYERS

查询的图层

表示检索的图层信息,多个图层以逗号隔开

INFO_FORMAT

返回格式

表示特征信息以何种形式返回

FEATURE_COUNT

特征信息数

表示每个层返回的最大特征信息数

I

I指的是当前getMap返回图像水平方向的像素值

像素的(0,0点在左上角),I向右增加,J向下增加。

J

J指的是当前getMap返回图像水平方向的像素值

EXCEPTIONS



WFS服务

WFS服务全称是Web Feature Service(web 要素服务),目前OGC提供的WFS的最新版本为2.0.2,WFS服务协议只能用于矢量数据,比如shp、KML、CSV、Geojson等,目前WFS提供了众多操作接口,今天主要介绍如下几个:

GetCapabilities: 获取服务中的要素及支持的操作

请求格式支持KVP和SOAP,其请求的参数如下:

参数名称

参数含义

是否必须

备注

SERVICE

服务名称


REQUEST=GetCapabilities

请求接口


VERSION

版本号


DescribeFeatureType: 操作返回由WFS实例提供的特性类型的模式描述。模式描述定义了WFS期望特性实例在输入时如何编码,以及特性实例在输出时如何编码

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE

服务名称


REQUEST=DescribeFeatureType

请求接口


TYPENAME

图层名称

如果不输入,则是当前系统所有图层的描述信息

OUTPUTFORMAT

输出格式

不输入,默认application/gml+xml; version=3.2

例如:http://localhost:8080/geoserver/wfs?request=DescribeFeatureType&version=2.0.0&service=WFS&outputFormat=application/json&typeName= nuc:陕西省_县道

GetPropertyValue : 操作允许从数据存储中检索一个特性属性的值或一个复杂特性属性值的一部分,以获取使用查询表达式标识的一组特性

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE

服务名称


REQUEST=GetPropertyValue

请求接口


Stored Query Keywords

STOREDQUERY_ID

定义的存储查询id

可通过CreateStoredQuery来创建存储查询

storedquery_parameter=value

存储查询键值对

Adhoc Query Keywords

TYPENAMES

图层名称

这个查询表达式和上面的存储表达式互斥

SRSNAME

坐标代号

aliases

别名

PROPERTYNAME

需要查询的字段名称

FILTER

过滤字段

RESOURCEID

资源id

BBOX

边界框范围

SORTBY

排序字段

VALUEREFERENCE

查询属性字段


OUTPUTFORMAT

输出格式

比如application/gml+xml; version=3.2

例如:http://localhost:8080/geoserver/wfs?request=GetPropertyValue&typeNames=nuc:陕西省_县道&valueReference=kind

GetFeature: 从数据存储中返回所选的特性

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE

服务名称


REQUEST=GetMap

请求接口


RESULTTYPE

响应方式

默认results,表示返回资源的完整文档

OUTPUTFORMAT

输出格式


STARTINDEX

起始索引

这两个参数类似数据库中的分页查询起始和每页总数

Count

限制相应特征属性值

Adhoc Query Keywords

TYPENAMES

图层名称

查询表达式可以

SRSNAME

坐标代号

aliases

别名

PROPERTYNAME

需要查询的字段名称

FILTER

过滤字段

RESOURCEID

资源id

BBOX

边界框范围

SORTBY

排序字段

Stored Query Keywords

STOREDQUERY_ID

定义的存储查询id

存储表达式

storedquery_parameter=value

存储查询键值对

RESOLVE

服务器资源引用解析能力

默认是none,表示不解析资源引用

RESOLVEDEPTH

引用资源解析胜读


RESOLVETIMEOUT



LockFeature: 锁定某个特征数据,确保某个客户端在修改它的时候,其它客户端不去修改,通过公开一个长期的特征锁定机制,以一致性。

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE

服务名称


REQUEST= LockFeature

请求接口


Stored Query Keywords

STOREDQUERY_ID

定义的存储查询id

这三类参数互斥,也就是如果输入了STOREDQUERY_ID,就不要输入TYPENAMES和LockId

storedquery_parameter=value

存储查询键值对

Adhoc Query Keywords

TYPENAMES

图层名称

SRSNAME

坐标代号

aliases

别名

PROPERTYNAME

需要查询的字段名称

FILTER

过滤字段

RESOURCEID

资源id

BBOX

边界框范围

SORTBY

排序字段

LOCKID

锁定标识符

EXPIRY

过期时间

默认释放锁的时间(300s)

LOCKACTION

输出格式


例如

http://localhost:8080/geoserver/wfs?request=lockfeature&typenames=nuc:陕西省_县道&version=2.0.0&&RESOURCEID

Transaction 主要是用来修改矢量的要素信息,包括新增、修改、删除等操作。

该操作不支持KVP请求方式,目前仅支持XML的请求方式,由于篇幅问题,不在这里列举xml的请求方式,具体可参考OGC的官方资料。

此外OGC对WFS还定义了GetFeatureWithLock 、CreateStoredQuery 、DropStoredQuery 、ListStoredQueries 、DescribeStoredQueries接口,这些接口不在这里一一介绍,感兴趣的可以自己查阅OGC的官网。

WCS服务

WCS全称为Web Coverage Service(web覆盖数据),目前OGC提供的WCS的最新版本为2.1,其为我们提供了如下几种操作:

Getcapabilities: 获取服务中的要素及支持的操作

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

SERVICE

服务名称


REQUEST=GetCapabilities

请求接口


DescribeCoverage: 获取服务中的要素及支持的操作

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE

服务名称


REQUEST= DescribeCoverage

请求接口


extension

扩展参数


coverageId

图层名称


例如:

http://localhost:8080/geoserver/wcs?request=DescribeCoverage&coverageId=liuyang:an_hui&version=2.0.1

GetCoverage: 获取栅格数据

请求格式支持KVP和SOAP,其请求参数如下:

参数名称

参数含义

是否必须

备注

VERSION

版本号


SERVICE

服务名称


REQUEST= GetCoverage

请求接口


coverageId

图层名称


subset

子集参数

由于栅格数据有很多维度,这个参数就是用来定义当前请求栅格在某个子集上的值

http://localhost:8080/geoserver/wcs?request=GetCoverage&coverageId=liuyang:china&version=2.0.1&subset=Lat%20,(34,35)&subset=Long,(108,109)

WMTS服务

WMTS全称是Web Map Tile Service(web地图切片服务),目前OGC提供的最新版本是1.0.0,WMTS是OGC首个支持restful风格的服务标准,其提供如下几种操作:

GetCapabilities:获取WMTS服务的元数据信息

请求格式支持KVP,SOAP和RESTFUL,其请求参数如下:

参数名称

参数含义

是否必须

备注

SERVICE

服务名称


REQUEST=GetCapabilities

请求接口


GetTile:获取服务的切片信息

请求格式支持KVP,SOAP和RESTFUL,其请求参数如下:

参数名称

参数含义

是否必须

备注

SERVICE

服务名称


REQUEST= GetTile

请求接口


VERSION

版本号


LAYER

图层


STYLE

样式类型


FORMAT

返回格式


TILEMATRIXSET

瓦片矩形设置投影参数


TILEMATRIX

瓦片矩形瓦片级别


TILEROW

矩形瓦片的行索引


TILECOL

矩形瓦片的列索引


TMS服务

把TMS列举到这里来说,其实有点不太合适,因为TMS不是OGC协议,但是TMS协议在GIS数据协议中与WMTS一样被大家所使用,因此小编把它列举到这里,只是强调以下这个协议它是由osgeo提出的(osgeo就是QGIS等开源软件的组织),不属于ogc,而它与WMTS协议之间也可以互相转换,与我们经常说的XYZ协议也基本一致,关于WMTS、TMS、XYZ三个协议可能很多人都不知道选择哪一个,其实没啥大区别,无非就是y轴方向的问题,后续可以列一个简单的三个协议的对比图。

最后感谢大家花时间阅读,再次提醒一下小编会不定期更新GIS方面的相关文章,如有需要,可关注小编一起进步!

相关推荐

Docker篇(二):Docker实战,命令解析

大家好,我是杰哥上周我们通过几个问题,让大家对于Docker有了一个全局的认识。然而,说跟练往往是两个概念。从学习的角度来说,理论知识的学习,往往只是第一步,只有经过实战,才能真正掌握一门技术所以,本...

docker学习笔记——安装和基本操作

今天学习了docker的基本知识,记录一下docker的安装步骤和基本命令(以CentOS7.x为例)一、安装docker的步骤:1.yuminstall-yyum-utils2.yum-con...

不可错过的Docker完整笔记(dockerhib)

简介一、Docker简介Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,...

扔掉运营商的 IPTV 机顶盒,全屋全设备畅看 IPTV!

其实现在看电视节目的需求确实大大降低了,折腾也只是为了单纯的让它实现,享受这个过程带来的快乐而已,哈哈!预期构想家里所有设备直接接入网络随时接收并播放IPTV直播(电信点播的节目不是太多,但好在非常稳...

第五节 Docker 入门实践:从 Hello World 到容器操作

一、Docker容器基础运行(一)单次命令执行通过dockerrun命令可以直接在容器中执行指定命令,这是体验Docker最快捷的方式:#在ubuntu:15.10容器中执行ech...

替代Docker build的Buildah简单介绍

Buildah是用于通过较低级别的coreutils接口构建OCI兼容镜像的工具。与Podman相似,Buildah不依赖于Docker或CRI-O之类的守护程序,并且不需要root特权。Builda...

Docker 命令大全(docker命令大全记录表)

容器生命周期管理run-创建并启动一个新的容器。start/stop/restart-这些命令主要用于启动、停止和重启容器。kill-立即终止一个或多个正在运行的容器rm-于删除一个或...

docker常用指令及安装rabbitMQ(docker安装rabbitmq配置环境)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

使用Docker快速部署Storm环境(docker部署confluence)

Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的D...

Docker Desktop安装使用指南:零基础教程

在之前的文章中,我多次提到使用Docker来安装各类软件,尤其是开源软件应用。鉴于不少读者对此有需求,我决定专门制作一期关于Docker安装与使用的详细教程。我主要以Macbook(Mac平台)为例进...

Linux如何成功地离线安装docker(linux离线安装httpd)

系统环境:Redhat7.2和Centos7.4实测成功近期因项目需要用docker,所以记录一些相关知识,由于生产环境是不能直接连接互联网,尝试在linux中离线安装docker。步骤1.下载...

Docker 类面试题(常见问题)(docker面试题目)

Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimages-q-fdanging=true)命令2、如何查看...

面试官:你知道Dubbo怎么优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、...

【Docker 新手入门指南】第五章:Hello Word

适合人群:完全零基础新手|学习目标:30分钟掌握Docker核心操作一、准备工作:先确认是否安装成功打开终端(Windows用户用PowerShell或GitBash),输入:docker--...

松勤软件测试:详解Docker,如何用portainer管理Docker容器

镜像管理搜索镜像dockersearch镜像名称拉取镜像dockerpullname[:tag]列出镜像dockerimages删除镜像dockerrmiimage名称或id删除...