OGC 标准使用2种基本类型的坐标系统: Map CS 和 Layer SRS。Map CS 应用于由 WMS 生成的地图表达。有边界框的 Layer CRS 应用于源数据。在地图显示操作中,WMS 实现从 Layer CRS 到 Map CS 的地理信息转换。另外,图层还可以有相关的垂直的、时间的或者其它的坐标系统。
Map CS
Map CS 是 WMS 生成的地图使用的一种坐标参考系统。一幅 WMS 的地图是显示在计算机屏幕上的矩形像元格网。Map CS 的水平坐标轴记为 i,垂直坐标轴记为 j。i 和 j 是非负的整数。原点(i,j)=(0,0)定义在地图的左上位置,地图越往右,i 值越大;地图越向下,j 值越大。
GetMap 请求中的 WIDTH 和 HEIGHT 参数,以及包含在 GetFeatureInfo 请求中的 WIDTH 和 HEIGHT 参数与 i 和 j 对应的关系如下:
- WIDTH 对应 i 轴方向的像素值,表示了沿 i 轴的地图图片大小;
- HEIGHT 对应 j 轴方向的像素值,表示了沿 j 轴的地图图片大小。
GetFeatureInfo 请求中的 i 和 j 参数分别表示了 Map CS 中沿 i 和 j 轴的整数值。
Layer CRS
Layer CRS 是一种水平坐标参考系统。每一个 WMS,在下面几个实体中都会对应有一个 CRS:
- 在 service 元数据中的<BoundingBox>元素;
- GetMap 请求中的 CRS 参数;
- 在 GetFeatureInfo 请求中的地图请求部分中的 CRS 参数。
一个 WMS 必须支持至少一种 CRS,只有当从不同的服务器中获取的地图都存在至少一个共同的 CRS 时,这些地图才能够进行 overlay 叠置分析。
每个 Layer CRS 有一个字符串标识符。两种类型的 Layer CRS 标识符有两种:“Label”标识符和“URL”标识符。
- Label 标识符:由名字空间前缀、冒号、一个数值型或字符型的代码以及一些实例中逗号后面的附加的参数组成。
- URL 标识符:URL 是一个合格的标识符,它完全参考了与 ISO 19111一致的公共文件中有关 CRS 的定义。
Layer CRS 有两个坐标轴(有顺序):x 轴(第一坐标轴)和 y 轴(第二坐标轴)。x 轴并非一定指定为东西方向,而 y 轴也并非指定为南北方向,这完全取决于该坐标系统的定义。将一个 Layer CRS 映射到 Map CS 时,WMS 映射将需要考虑该 Layer CRS 的坐标顺序,原点以及方向。
边界框(Bounding box)
Bounding box 的值通过两对坐标对指定了在特定的 Layer CRS 上需要制图的地球表面的范围。它的第一对数字表示 Lay CRS 中的最小坐标,而第二对值则为最大坐标。在大多数的 Lay CRS 中,坐标轴的正向为向东和向北。因此,这样两对数值就分部代表层的左下角和右上角坐标。但是当使用一个地理坐标系统来描述一个包括极点的区域时,或者 Layer CRS 的正向为非东、北向的时候,就得视 CRS 的具体情况了。总而言之,bounding box 的 x 值对应与 CRS 中的第一坐标,而 y 则对应于第二坐标。这个顺序可能与 Map CS 的坐标顺序 i 和 j 的顺序不一致。但是边界框的坐标值的单位必须和 Layer CRS 中定义的单位一致。
Bounding Box 值会在 WMS 的以下几个实体中出现:
- service 元数据中的 <BoundingBox> 元素中;
- GetMap request 的 BBOX 参数中;
- GetFeatureInfo 的地图请求部分中的 BBOX 参数。
边界框包含的面积不能为零。
例如:在 CRS:84 坐标参考系统中描述全球的 <BoundingBox> 元素书写如下:
<BoundingBox CRS=”CRS: 84” minx=”-180” miny=”-90” maxx=”180” maxy=”90”>。
请求获取全球地图的 BBOX 参数书写如下:
BBOX=-180,-90,180,90。
又如,在 EPSG:4326 Layer CRS 中描述全球的 <BoundingBox> 书写如下:
<BoundingBox CRS="EPSG:4326" minx="-90" miny="-180" maxx="90" maxy="180">。
请求获取全球地图的 BBOX 参数书写如下:
BBOX=-90,-180,90,180。
垂直坐标参考系统(Vertical CRS)
一些地理空间信息可能支持多种高程(比如,臭氧层集中分布在大气层中的不同高度)。OGC WMS 必须在其服务元数据中声明可用的高程,而且 GetMap 操作中也包含请求对某一特定高程进行操作的参数。单一高程值或高度值是一个数值,它的单位和方向都是通过一维的垂直 CRS 声明的。高程值可以是单一数值,数值列表,或者数字间隔。
服务器为每个图层最多声明一种垂直 CRS。根据 OGC 标准,水平和垂直 CRS 可被当做独立的元数据元素和请求参数。
对一个地图特定高程的请求包括了此高程数值,但是不包括垂直 CRS 标识符。在提供高程信息的时候,服务器必须在服务元数据中定义一个默认值。当默认值存在而且客户端的请求中不含任何高程值,则服务器必须用这个默认值响应。
垂直 CRS 允许两种类型的标识符的:
- Label 标识符:由名字空间前缀、冒号、一个数值型或字符型的代码以及一些实例中逗号后面的附加的参数组成。
- URL 标识符:URL 是一个完全合格的 URL,它完全参考了与 ISO 19111一致的公共文件中有关 CRS 的定义。
时间坐标系统(Temporal CS)
一些地理空间信息可能是多时相的(比如,小时天气地图)。WMS 在其服务元数据中定义可用的时间参数,并且在 GetMap 操作中包含了请求对特定时间进行操作的参数。时间字符串可以是单一值,数值列表,或者时间间隔。在提供时间信息时,服务器必须在服务元数据中定义一个默认值。如果默认值已经定义并且客户端的请求中不包含任何时间值,服务器必须用默认值响应。
其它坐标系统(Other coordinate systems)
一些地理空间信息可能会用到其它维度(例如,卫星影像的不同波段)。WMS 在其服务元数据中定义了可用的样本维度,并且 GetMap 操作中包含了请求维度数据的机制。每一个样本维度有一个名称和一个或者多个有效值。