地图服务¶
地图服务数据¶
学习地图服务前,建议至少了解一下Http协议(可以看看《图解Http》这本书),以及XML的基本概念(参考 XML格式介绍 部分)。本文主要参考 地图服务数据。
地图服务主要有以下几种:
WMS(Web Map Service) :一种**动态地图**服务,根据用户请求实时生成地图图像并返回。由于是实时切片,速度相对较慢,是GeoServer发布地图时常用的服务。
WMTS(Web Map Tile Service) :一种采用**预定义图块方法**发布数字地图的服务。它将地图预先切分成瓦片,虽然牺牲了提供定制地图的灵活性,但通过提供静态瓦片数据极大地提升了服务的响应速度和扩展性。例如我国的天地图就使用此服务,详情可见:关于天地图的瓦片下载。
WFS(Web Feature Service) :旨在返回**纯地理要素数据**(矢量数据),不包含任何绘制样式信息。它支持对要素进行**增、删、改**等事务操作。
WCS(Web Coverage Service) :面向**空间影像数据**(栅格数据)服务,它将包含地理位置信息的栅格数据作为“覆盖”(Coverage)在网上交换。
WPS(Web Processing Service) :一种提供和执行**地理空间处理**功能的服务,用于在Web端发起空间运算操作。
WMSC(Web Map Service - Cached) :一种通过预缓存数据来提升地图请求速度的方法,现已被WMTS和TMS取代。
TMS(Tile Map Service) :也是一种瓦片地图服务,本质上遵循与WMTS类似的切片规则。
下面将主要介绍几种常用服务及其切片方案:
WMS 服务¶
WMS(Web Map Service,网络地图服务)是由开放地理空间联盟(OGC)制定的一项标准,用于通过互联网动态生成和提供地理空间数据的地图图像。WMS 标准定义了一套基于 HTTP 的接口,允许客户端请求地图图像,并支持多种地图图层、样式和坐标参考系统的组合。
WMS 标准的主要目标是实现地理空间数据的互操作性,使得不同来源的地图服务能够在统一的框架下被访问和使用。
版本历史¶
WMS 标准自发布以来经历了多个版本的更新,主要包括:
WMS 1.0.0 :初始版本,发布于 2000 年。
WMS 1.1.0 :发布于 2001 年,增加了对 SLD(Styled Layer Descriptor)的支持。
WMS 1.1.1 :发布于 2002 年,修复了一些错误并进行了小的改进。
WMS 1.3.0 :发布于 2004 年,是目前最广泛使用的版本,支持更多的坐标参考系统和功能。
核心功能¶
WMS 标准定义了三种主要的操作:
GetCapabilities
GetMap
GetFeatureInfo
GetCapabilities¶
GetCapabilities 操作用于获取 WMS 服务的元数据信息,包括支持的地图图层、坐标参考系统、请求格式等。客户端可以通过该操作了解服务的功能和可用资源。
请求示例:
http://example.com/wms?service=WMS&version=1.3.0&request=GetCapabilities
响应示例:
<WMS_Capabilities version="1.3.0">
<Service>
<Name>WMS</Name>
<Title>Example WMS Service</Title>
<Abstract>This is an example WMS service.</Abstract>
...
</Service>
<Capability>
<Layer>
<Title>Base Layer</Title>
<Layer queryable="1">
<Name>base_layer</Name>
<Title>Base Layer</Title>
<CRS>EPSG:4326</CRS>
...
</Layer>
</Layer>
</Capability>
</WMS_Capabilities>
GetMap¶
GetMap 操作用于请求地图图像。客户端可以指定地图的图层、样式、范围、大小和格式等参数。
请求示例:
http://example.com/wms?service=WMS&version=1.3.0&request=GetMap&layers=base_layer&styles=default&CRS=EPSG:4326&BBOX=-180,-90,180,90&width=800&height=600&format=image/png
- 响应示例:
返回的地图图像(PNG、JPEG 等格式)。
GetFeatureInfo¶
GetFeatureInfo 操作用于查询地图上特定位置的要素信息。客户端可以指定查询的图层、位置和返回信息的格式。
请求示例:
http://example.com/wms?service=WMS&version=1.3.0&request=GetFeatureInfo&layers=base_layer&query_layers=base_layer&CRS=EPSG:4326&BBOX=-180,-90,180,90&width=800&height=600&x=400&y=300&info_format=text/plain
响应示例:
Feature ID: 123
Name: Example Feature
Description: This is an example feature.
坐标参考系统¶
WMS 标准支持多种坐标参考系统(CRS),常见的包括:
EPSG:4326 :WGS84 经纬度坐标系。
EPSG:3857 :Web Mercator 投影,常用于 Web 地图服务。
图层和样式¶
WMS 服务可以包含多个图层,每个图层可以有不同的样式。客户端可以通过 GetMap 请求指定所需的图层和样式。
互操作性¶
WMS 标准的互操作性使得不同来源的地图服务能够在统一的框架下被访问和使用。通过遵循 WMS 标准,地理空间数据提供者可以确保其服务能够被广泛的地理信息系统(GIS)软件和 Web 地图应用程序所支持。
应用场景¶
WMS 标准广泛应用于以下场景:
Web 地图服务 :提供动态生成的地图图像,支持多种图层和样式的组合。
地理信息系统(GIS) :作为 GIS 数据源,支持空间数据的可视化和查询。
科学研究和教育 :用于地理空间数据的共享和展示。
相关标准¶
WMS 标准与其他 OGC 标准密切相关,包括:
WFS(Web Feature Service) :用于提供地理空间要素数据。
WCS(Web Coverage Service) :用于提供地理空间覆盖数据。
SLD(Styled Layer Descriptor) :用于定义地图图层的样式。
总结¶
WMS 标准是地理空间数据共享和互操作的重要基础,通过定义统一的接口和协议,使得不同来源的地图服务能够在统一的框架下被访问和使用。随着地理空间数据的广泛应用,WMS 标准在 Web 地图服务、GIS 和科学研究等领域发挥着重要作用。
参考文献¶
WMTS 服务¶
WMTS(Web Map Tile Service,网络地图瓦片服务)是由开放地理空间联盟(OGC)制定的一项标准,用于通过互联网提供预先生成的地图瓦片。WMTS 标准定义了一套基于 HTTP 的接口,允许客户端请求地图瓦片,并支持多种地图图层、样式和坐标参考系统的组合。
WMTS 标准的主要目标是提高地图服务的性能和可扩展性,通过使用预先生成的地图瓦片来减少服务器端的计算负载。
版本历史¶
WMTS 标准自发布以来经历了多个版本的更新,主要包括:
WMTS 1.0.0 :初始版本,发布于 2010 年。
核心功能¶
WMTS 标准定义了三种主要的操作:
GetCapabilities
GetTile
GetFeatureInfo
GetCapabilities¶
GetCapabilities 操作用于获取 WMTS 服务的元数据信息,包括支持的地图图层、坐标参考系统、请求格式等。客户端可以通过该操作了解服务的功能和可用资源。
请求示例:
http://example.com/wmts?service=WMTS&version=1.0.0&request=GetCapabilities
响应示例:
<Capabilities xmlns="http://www.opengis.net/wmts/1.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd" version="1.0.0">
<ows:ServiceIdentification>
<ows:Title>Example WMTS Service</ows:Title>
<ows:Abstract>This is an example WMTS service.</ows:Abstract>
...
</ows:ServiceIdentification>
<Contents>
<Layer>
<ows:Title>Base Layer</ows:Title>
<ows:Identifier>base_layer</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>default</ows:Identifier>
</Style>
<Format>image/png</Format>
<TileMatrixSetLink>
<TileMatrixSet>EPSG:3857</TileMatrixSet>
</TileMatrixSetLink>
...
</Layer>
<TileMatrixSet>
<ows:Identifier>EPSG:3857</ows:Identifier>
<ows:SupportedCRS>urn:ogc:def:crs:EPSG::3857</ows:SupportedCRS>
<TileMatrix>
<ows:Identifier>0</ows:Identifier>
<ScaleDenominator>559082264.0287178</ScaleDenominator>
<TopLeftCorner>-20037508.342789244 20037508.342789244</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1</MatrixWidth>
<MatrixHeight>1</MatrixHeight>
</TileMatrix>
...
</TileMatrixSet>
</Contents>
</Capabilities>
GetTile¶
GetTile 操作用于请求地图瓦片。客户端可以指定地图的图层、样式、瓦片矩阵集、瓦片行列号和格式等参数。
请求示例:
http://example.com/wmts?service=WMTS&version=1.0.0&request=GetTile&layer=base_layer&style=default&format=image/png&TileMatrixSet=EPSG:3857&TileMatrix=0&TileRow=0&TileCol=0
- 响应示例:
返回的地图瓦片图像(PNG、JPEG 等格式)。
GetFeatureInfo¶
GetFeatureInfo 操作用于查询地图瓦片上特定位置的要素信息。客户端可以指定查询的图层、位置和返回信息的格式。
请求示例:
http://example.com/wmts?service=WMTS&version=1.0.0&request=GetFeatureInfo&layer=base_layer&style=default&format=image/png&TileMatrixSet=EPSG:3857&TileMatrix=0&TileRow=0&TileCol=0&I=128&J=128&info_format=text/plain
响应示例:
Feature ID: 123
Name: Example Feature
Description: This is an example feature.
坐标参考系统¶
WMTS 标准支持多种坐标参考系统(CRS),常见的包括:
EPSG:4326 :WGS84 经纬度坐标系。
EPSG:3857 :Web Mercator 投影,常用于 Web 地图服务。
瓦片矩阵集¶
WMTS 服务使用瓦片矩阵集(Tile Matrix Set)来定义地图瓦片的组织方式。每个瓦片矩阵集包含多个瓦片矩阵(Tile Matrix),每个瓦片矩阵定义了特定缩放级别下的瓦片分布。
互操作性¶
WMTS 标准的互操作性使得不同来源的地图服务能够在统一的框架下被访问和使用。通过遵循 WMTS 标准,地理空间数据提供者可以确保其服务能够被广泛的地理信息系统(GIS)软件和 Web 地图应用程序所支持。
应用场景¶
WMTS 标准广泛应用于以下场景:
Web 地图服务 :提供预先生成的地图瓦片,支持快速加载和高性能显示。
地理信息系统(GIS) :作为 GIS 数据源,支持空间数据的可视化和查询。
科学研究和教育 :用于地理空间数据的共享和展示。
相关标准¶
WMTS 标准与其他 OGC 标准密切相关,包括:
WMS(Web Map Service) :用于提供动态生成的地图图像。
WFS(Web Feature Service) :用于提供地理空间要素数据。
WCS(Web Coverage Service) :用于提供地理空间覆盖数据。
总结¶
WMTS 标准是地理空间数据共享和互操作的重要基础,通过定义统一的接口和协议,使得不同来源的地图服务能够在统一的框架下被访问和使用。随着地理空间数据的广泛应用,WMTS 标准在 Web 地图服务、GIS 和科学研究等领域发挥着重要作用。
参考文献¶
TMS 服务¶
TMS(Tile Map Service,瓦片地图服务)是一种用于提供地图瓦片的网络服务标准,由开源空间信息基金会(OSGeo)定义。它主要用于将地图数据切分为瓦片(通常是256x256像素的图片),并通过网络提供给客户端使用。
TMS服务通过将地图数据切分为多个瓦片(Tile),并按层级(Zoom Level)、行(Row)和列(Column)组织,实现地图的高效加载和显示。每个瓦片是一个独立的图片文件,客户端可以根据需要请求特定的瓦片,从而减少数据传输量并提高地图加载速度。
主要特性:
瓦片组织方式 :TMS采用四叉树分割方式,将地图按层级切分为多个瓦片。每个层级的地图分辨率不同,层级越高,瓦片数量越多,地图细节越丰富。
坐标原点 :TMS的坐标原点通常位于地图的**左下角**,与WMTS(Web Map Tile Service)的**左上角**原点不同。
RESTful接口 :TMS服务通常采用 RESTful 风格的URL结构,便于客户端请求特定瓦片。RESTful API 设计请参考 RESTful API 最佳实践。
瓦片格式 :瓦片通常为正方形(如256x256像素),支持多种图片格式(如PNG、JPEG)。
层级与瓦片编号 :每个瓦片通过层级(Zoom Level)、列(X)和行(Y)唯一标识。层级表示地图的缩放级别,列和行表示瓦片在地图上的位置。
TMS与WMTS的区别:
接口类型 :TMS是纯RESTful接口,而WMTS支持KVP(Key-Value Pair)、SOAP和RESTful三种接口。
坐标原点 :TMS的坐标原点在左下角,而WMTS的坐标原点在左上角。
瓦片形状 :TMS瓦片通常是正方形,而WMTS瓦片可以是矩形。
TMS服务广泛应用于以下场景:
Web地图服务 :通过TMS服务提供地图瓦片,支持高效的地图加载和显示。
地理信息系统(GIS) :作为GIS数据源,支持空间数据的可视化和查询。
移动地图应用 :通过TMS服务提供离线地图瓦片,支持移动设备的地图显示。
URL示例:
http://example.com/tms/1.0.0/{layer}/{z}/{x}/{y}.png
其中:
{layer}:地图图层名称。{z}:层级(Zoom Level)。{x}:列(Column)。{y}:行(Row)。
TMS服务的优势:
高效加载 :通过预先生成的瓦片,减少服务器端的计算压力。
灵活性强 :支持多种地图图层和样式组合。
兼容性好 :与多种GIS软件和Web地图应用程序兼容。
总结¶
TMS服务是一种高效、灵活的地图瓦片服务标准,广泛应用于Web地图服务、GIS和移动地图应用中。通过预先生成的地图瓦片,TMS服务能够显著提高地图加载速度,并降低服务器端的计算压力。与WMTS相比,TMS服务具有更简单的RESTful接口和更灵活的瓦片组织方式,适用于多种地图应用场景。
WFS 服务¶
概述¶
WFS(Web Feature Service,网络要素服务)是由开放地理空间联盟(OGC)制定的一项标准,用于通过互联网提供地理空间要素数据(即矢量数据)。WFS 标准定义了一套基于 HTTP 的接口,允许客户端请求、查询、编辑和操作地理空间要素数据。
WFS 标准的主要目标是实现地理空间要素数据的互操作性,使得不同来源的要素服务能够在统一的框架下被访问和使用。
版本历史¶
WFS 标准自发布以来经历了多个版本的更新,主要包括:
WFS 1.0.0 :初始版本,发布于 2002 年。
WFS 1.1.0 :发布于 2005 年,增加了对事务操作的支持。
WFS 2.0.0 :发布于 2010 年,是目前最广泛使用的版本,支持更多的功能和扩展。
核心功能¶
WFS 标准定义了三种主要的操作:
GetCapabilities
DescribeFeatureType
GetFeature
GetCapabilities¶
GetCapabilities 操作用于获取 WFS 服务的元数据信息,包括支持的要素类型、操作、请求格式等。客户端可以通过该操作了解服务的功能和可用资源。
请求示例:
http://example.com/wfs?service=WFS&version=2.0.0&request=GetCapabilities
响应示例:
<wfs:WFS_Capabilities version="2.0.0" 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.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd">
<ows:ServiceIdentification>
<ows:Title>Example WFS Service</ows:Title>
<ows:Abstract>This is an example WFS service.</ows:Abstract>
...
</ows:ServiceIdentification>
<FeatureTypeList>
<FeatureType>
<Name>feature_type</Name>
<Title>Feature Type</Title>
<DefaultCRS>urn:ogc:def:crs:EPSG::4326</DefaultCRS>
...
</FeatureType>
</FeatureTypeList>
...
</wfs:WFS_Capabilities>
DescribeFeatureType¶
DescribeFeatureType 操作用于获取要素类型的结构信息,包括要素的属性字段和数据类型。客户端可以通过该操作了解要素类型的详细结构。
请求示例:
http://example.com/wfs?service=WFS&version=2.0.0&request=DescribeFeatureType&typeName=feature_type
响应示例:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:feature_type="http://example.com/feature_type" targetNamespace="http://example.com/feature_type">
<xsd:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
<xsd:complexType name="feature_typeType">
<xsd:complexContent>
<xsd:extension base="gml:AbstractFeatureType">
<xsd:sequence>
<xsd:element name="geometry" type="gml:PointPropertyType" minOccurs="0" maxOccurs="1"/>
<xsd:element name="attribute1" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="attribute2" type="xsd:double" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="feature_type" type="feature_type:feature_typeType" substitutionGroup="gml:AbstractFeature"/>
</xsd:schema>
GetFeature¶
GetFeature 操作用于请求要素数据。客户端可以指定要素类型、过滤条件、返回格式等参数。
请求示例:
http://example.com/wfs?service=WFS&version=2.0.0&request=GetFeature&typeName=feature_type&outputFormat=application/json
响应示例:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "feature_type.1",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"attribute1": "value1",
"attribute2": 123.45
}
}
]
}
事务操作¶
WFS 标准还支持事务操作(Transaction),允许客户端对要素数据进行插入(Insert)、更新(Update)和删除(Delete)操作。
Insert¶
Insert 操作用于插入新的要素数据。
请求示例:
<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:feature_type="http://example.com/feature_type" service="WFS" version="2.0.0">
<wfs:Insert>
<feature_type:feature_type>
<feature_type:geometry>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4326">
<gml:coordinates>102.0,0.5</gml:coordinates>
</gml:Point>
</feature_type:geometry>
<feature_type:attribute1>value1</feature_type:attribute1>
<feature_type:attribute2>123.45</feature_type:attribute2>
</feature_type:feature_type>
</wfs:Insert>
</wfs:Transaction>
响应示例:
<wfs:TransactionResponse xmlns:wfs="http://www.opengis.net/wfs/2.0">
<wfs:TransactionSummary>
<wfs:totalInserted>1</wfs:totalInserted>
</wfs:TransactionSummary>
<wfs:InsertResults>
<wfs:Feature>
<wfs:FeatureId fid="feature_type.1"/>
</wfs:Feature>
</wfs:InsertResults>
</wfs:TransactionResponse>
Update¶
Update 操作用于更新现有的要素数据。
请求示例:
<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:feature_type="http://example.com/feature_type" service="WFS" version="2.0.0">
<wfs:Update typeName="feature_type">
<wfs:Property>
<wfs:ValueReference>attribute1</wfs:ValueReference>
<wfs:Value>new_value1</wfs:Value>
</wfs:Property>
<wfs:Filter>
<wfs:ResourceId rid="feature_type.1"/>
</wfs:Filter>
</wfs:Update>
</wfs:Transaction>
响应示例:
<wfs:TransactionResponse xmlns:wfs="http://www.opengis.net/wfs/2.0">
<wfs:TransactionSummary>
<wfs:totalUpdated>1</wfs:totalUpdated>
</wfs:TransactionSummary>
</wfs:TransactionResponse>
Delete¶
Delete 操作用于删除现有的要素数据。
请求示例:
<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:feature_type="http://example.com/feature_type" service="WFS" version="2.0.0">
<wfs:Delete typeName="feature_type">
<wfs:Filter>
<wfs:ResourceId rid="feature_type.1"/>
</wfs:Filter>
</wfs:Delete>
</wfs:Transaction>
响应示例:
<wfs:TransactionResponse xmlns:wfs="http://www.opengis.net/wfs/2.0">
<wfs:TransactionSummary>
<wfs:totalDeleted>1</wfs:totalDeleted>
</wfs:TransactionSummary>
</wfs:TransactionResponse>
坐标参考系统¶
WFS 标准支持多种坐标参考系统(CRS),常见的包括:
EPSG:4326 :WGS84 经纬度坐标系。
EPSG:3857 :Web Mercator 投影,常用于 Web 地图服务。
互操作性¶
WFS 标准的互操作性使得不同来源的要素服务能够在统一的框架下被访问和使用。通过遵循 WFS 标准,地理空间数据提供者可以确保其服务能够被广泛的地理信息系统(GIS)软件和 Web 地图应用程序所支持。
应用场景¶
WFS 标准广泛应用于以下场景:
Web 要素服务 :提供地理空间要素数据,支持要素的查询、编辑和操作。
地理信息系统(GIS) :作为 GIS 数据源,支持空间数据的可视化和查询。
科学研究和教育 :用于地理空间数据的共享和展示。
相关标准¶
WFS 标准与其他 OGC 标准密切相关,包括:
WMS(Web Map Service) :用于提供动态生成的地图图像。
WMTS(Web Map Tile Service) :用于提供预先生成的地图瓦片。
GML(Geography Markup Language) :用于编码地理空间要素数据。
总结¶
WFS 标准是地理空间要素数据共享和互操作的重要基础,通过定义统一的接口和协议,使得不同来源的要素服务能够在统一的框架下被访问和使用。随着地理空间数据的广泛应用,WFS 标准在 Web 要素服务、GIS 和科学研究等领域发挥着重要作用。
参考文献¶
WPS 服务¶
概述¶
OGC(开放地理空间联盟)的 WPS(Web Processing Service,网络处理服务) 标准是一种用于在网络上发布、执行和访问地理空间处理服务的规范。WPS 允许客户端通过标准的 HTTP 请求调用远程的地理空间处理功能,例如空间分析、数据转换、模型计算等。
WPS 的主要目标是提供一种标准化的方式,使得不同的地理信息系统(GIS)能够通过 Web 服务进行复杂的地理空间处理任务的互操作。
版本历史¶
WPS 1.0.0 :2007年发布,是 WPS 的第一个版本。
WPS 2.0.0 :2015年发布,增加了对 RESTful 接口的支持,并改进了异步处理和复杂数据类型的支持。
核心概念¶
处理(Process)¶
处理是 WPS 的核心概念,表示一个可执行的地理空间处理任务。每个处理都有一个唯一的标识符(Identifier),并定义了输入参数、输出结果以及执行的逻辑。例如,一个处理可以是“缓冲区分析”,输入是一个几何对象和缓冲区距离,输出是缓冲区的几何结果。
输入和输出(Inputs and Outputs)¶
每个处理都定义了输入参数和输出结果。输入和输出可以是简单数据类型(如字符串、数字)或复杂数据类型(如几何对象、栅格数据)。输入和输出的格式可以通过 WPS 的描述文档进行定义。
操作(Operations)¶
WPS 定义了一系列标准操作,用于与处理服务进行交互:
GetCapabilities :获取服务的元数据,包括支持的处理列表、支持的输入输出格式等。
DescribeProcess :获取特定处理的详细描述,包括输入参数和输出结果的详细信息。
Execute :执行一个处理任务,并返回处理结果。
执行模式(Execution Modes)¶
WPS 支持两种执行模式:
同步执行(Synchronous Execution) :客户端发送请求后,等待处理完成并立即返回结果。
异步执行(Asynchronous Execution) :客户端发送请求后,服务端返回一个任务标识符,客户端可以稍后查询任务状态和结果。
复杂数据类型(Complex Data)¶
WPS 支持复杂数据类型的输入和输出,例如 GML(Geography Markup Language)格式的几何数据、GeoTIFF 格式的栅格数据等。复杂数据可以通过引用(Reference)或内嵌(Inline)的方式传递。
RESTful 风格示例¶
以下是使用 RESTful 风格与 WPS 服务交互的示例。
获取服务能力(GetCapabilities)¶
客户端请求服务的元数据,了解支持的处理列表和输入输出格式。
HTTP GET 请求示例:
GET /wps?service=WPS&version=2.0.0&request=GetCapabilities HTTP/1.1
Host: example.com
响应示例(XML 格式):
<wps:Capabilities xmlns:wps="http://www.opengis.net/wps/2.0">
<wps:ProcessSummary>
<wps:Identifier>buffer</wps:Identifier>
<wps:Title>Buffer Analysis</wps:Title>
<wps:Abstract>Generates a buffer around a given geometry.</wps:Abstract>
</wps:ProcessSummary>
<wps:ProcessSummary>
<wps:Identifier>intersection</wps:Identifier>
<wps:Title>Intersection Analysis</wps:Title>
<wps:Abstract>Computes the intersection of two geometries.</wps:Abstract>
</wps:ProcessSummary>
</wps:Capabilities>
描述处理(DescribeProcess)¶
客户端请求特定处理的详细描述,包括输入参数和输出结果的定义。
HTTP GET 请求示例:
GET /wps?service=WPS&version=2.0.0&request=DescribeProcess&Identifier=buffer HTTP/1.1
Host: example.com
响应示例(XML 格式):
<wps:ProcessDescription xmlns:wps="http://www.opengis.net/wps/2.0">
<wps:Identifier>buffer</wps:Identifier>
<wps:Title>Buffer Analysis</wps:Title>
<wps:Abstract>Generates a buffer around a given geometry.</wps:Abstract>
<wps:Input>
<wps:Identifier>geometry</wps:Identifier>
<wps:Title>Input Geometry</wps:Title>
<wps:Abstract>The geometry to buffer.</wps:Abstract>
<wps:DataDescription>
<wps:Format>application/gml+xml</wps:Format>
</wps:DataDescription>
</wps:Input>
<wps:Input>
<wps:Identifier>distance</wps:Identifier>
<wps:Title>Buffer Distance</wps:Title>
<wps:Abstract>The distance for the buffer.</wps:Abstract>
<wps:DataDescription>
<wps:Format>text/plain</wps:Format>
</wps:DataDescription>
</wps:Input>
<wps:Output>
<wps:Identifier>result</wps:Identifier>
<wps:Title>Buffered Geometry</wps:Title>
<wps:Abstract>The resulting buffered geometry.</wps:Abstract>
<wps:DataDescription>
<wps:Format>application/gml+xml</wps:Format>
</wps:DataDescription>
</wps:Output>
</wps:ProcessDescription>
执行处理(Execute)¶
客户端提交处理请求,指定输入参数和输出格式。
HTTP POST 请求示例:
POST /wps HTTP/1.1
Host: example.com
Content-Type: application/json
{
"process": "buffer",
"inputs": {
"geometry": {
"format": "application/gml+xml",
"data": "<gml:Point><gml:coordinates>10,20</gml:coordinates></gml:Point>"
},
"distance": {
"format": "text/plain",
"data": "100"
}
},
"outputs": {
"result": {
"format": "application/gml+xml"
}
}
}
响应示例(JSON 格式):
{
"result": {
"format": "application/gml+xml",
"data": "<gml:Polygon><gml:coordinates>...</gml:coordinates></gml:Polygon>"
}
}
WPS 的工作流程¶
发现服务能力 客户端通过 GetCapabilities 操作获取 WPS 服务的元数据,了解服务支持的处理列表和输入输出格式。
描述处理 客户端通过 DescribeProcess 操作获取特定处理的详细描述,包括输入参数和输出结果的定义。
执行处理 客户端通过 Execute 操作提交处理请求,指定输入参数和输出格式。服务端执行处理任务,并返回处理结果。
获取结果 对于同步执行,处理结果直接返回给客户端。对于异步执行,客户端需要通过任务标识符查询任务状态,并在任务完成后获取结果。
WPS 的优势¶
标准化 :WPS 提供了一种标准化的方式,使得不同的 GIS 系统可以通过 Web 服务进行地理空间处理任务的互操作。
灵活性 :WPS 支持复杂数据类型的输入和输出,能够处理各种地理空间数据。
可扩展性 :WPS 允许用户自定义处理任务,满足特定的地理空间分析需求。
分布式计算 :WPS 支持异步执行模式,适合处理耗时的计算任务,并支持分布式计算环境。
WPS 的应用场景¶
空间分析 :例如缓冲区分析、叠加分析、路径分析等。
数据转换 :例如将矢量数据转换为栅格数据,或将 GML 格式转换为 GeoJSON 格式。
模型计算 :例如水文模型、气候模型等复杂的地理空间模型计算。
自动化处理 :例如批量处理遥感影像、自动化生成地图等。
总结¶
OGC WPS 标准为地理空间处理任务的发布、执行和访问提供了一种标准化的 Web 服务接口。通过 WPS,用户可以在分布式环境中调用复杂的地理空间处理功能,实现高效的地理空间数据分析和处理。WPS 的灵活性、可扩展性和标准化特性使其成为地理信息系统中不可或缺的一部分。
切片方案¶
地图切片是将地图数据分割成小块(瓦片)以便快速加载和显示的技术。以下是几种常见的地图切片方案:
XYZ 切片方案¶
描述 :XYZ 是最常见的地图切片方案,广泛应用于 Google Maps、OpenStreetMap 等地图服务。
- 切片规则 :
X:经度方向上的切片索引
Y:纬度方向上的切片索引
Z:缩放级别
URL 示例 :
https://tile.openstreetmap.org/{z}/{x}/{y}.png
TMS (Tile Map Service) 切片方案¶
描述 :TMS 是另一种常见的地图切片方案,与 XYZ 类似,但 Y 轴的坐标方向相反(从下往上)。
- 切片规则 :
X:经度方向上的切片索引
Y:纬度方向上的切片索引(从下往上)
Z:缩放级别
URL 示例 :
https://tile.example.com/{z}/{x}/{y}.png
WMTS (Web Map Tile Service) 切片方案¶
描述 :WMTS 是一种标准化的地图切片服务,支持多种切片方案和坐标系统。
- 切片规则 :
TileMatrix:缩放级别
TileRow:纬度方向上的切片索引
TileCol:经度方向上的切片索引
URL 示例 :
https://wmts.example.com/{TileMatrix}/{TileRow}/{TileCol}.png
QuadTree 切片方案¶
描述 :QuadTree 是一种基于四叉树的切片方案,常用于 Bing Maps。
- 切片规则 :
每个切片被递归地分成四个子切片
使用字符串表示切片位置,如 "0123"
URL 示例 :
https://tile.bing.com/{quadkey}.png
Slippy Map 切片方案¶
描述 :Slippy Map 是 OpenStreetMap 使用的切片方案,与 XYZ 类似。
- 切片规则 :
X:经度方向上的切片索引
Y:纬度方向上的切片索引
Z:缩放级别
URL 示例 :
https://tile.openstreetmap.org/{z}/{x}/{y}.png
Google Maps 切片方案¶
描述 :Google Maps 使用自定义的切片方案,基于 Mercator 投影。
- 切片规则 :
X:经度方向上的切片索引
Y:纬度方向上的切片索引
Z:缩放级别
URL 示例 :
https://mt.google.com/vt/lyrs=m&x={x}&y={y}&z={z}
Baidu Maps 切片方案¶
描述 :百度地图使用自定义的切片方案,基于百度墨卡托投影。
- 切片规则 :
X:经度方向上的切片索引
Y:纬度方向上的切片索引
Z:缩放级别
URL 示例 :
https://maponline.bdimg.com/tile/?qt=tile&x={x}&y={y}&z={z}
Gaode Maps 切片方案¶
描述 :高德地图使用自定义的切片方案,基于 Web Mercator 投影。
- 切片规则 :
X:经度方向上的切片索引
Y:纬度方向上的切片索引
Z:缩放级别
URL 示例 :
https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}
总结¶
不同的地图服务提供商可能使用不同的切片方案,选择合适的切片方案对于地图数据的加载和显示至关重要。常见的切片方案包括 XYZ、TMS、WMTS、QuadTree 等,每种方案都有其特定的切片规则和 URL 格式。