MapServer 之 发布网络覆盖数据服务(WCS-Web Coverage Service)

今天我们讲一下使用 mapserver 发布 OGC 的三大网络地图服务的最后一个 - WCS,wcs 主要是规定了通过网络提供访问 coverage 数据的标准,那么什么是 coverage 数据呢? 狭义的说,可以认为 mapserver wcs 中发布的 coverage 数据就是卫星影像 或者 dem。

广义上说,coverage 数据主要是指时空现象的数字表示,可以是多维的,例如一维的传感器时间序列信号,二维的卫星影像,三维的 x/y/t 格式的“图像时间序列”,或者 x/y/z 格式的三维地理断层数据,四维的 x/y/z/t 格式的数据,数据中既包含 x、y、z坐标信息,还包含时刻信息。常见的 coverage 数据有:航拍图、土地覆盖数据、DEM 等,常用的数据格式有:GeoTIFF(扩展名为 .tif)、NetCDF、HDF-EOS 或者 NITF。



文中名词: openlayers3 === ol3



本文尝试发布北京地区的 pm10 分布情况,数据下载于“地理空间信息云”,本文的数据经过在软件中重新渲染,并且重新投影到 epsg:3857 坐标系下。发布后的结果如下:

mapserver 发布 WCS 配置

与配置 wms 和 wfs 一样,mapserver 发布 wcs 同样需要修改对应的 mapfile 文件,增加全局的 WEB 对象的 METADATA 子对象的键值对,但是 wms 和 wfs 都是针对矢量数据,如 ESRI 的 shapefile 格式,而 wcs 主要是针对栅格格式,所以 mapfile 中图层 type 需要设置栅格,数据源也要使用栅格格式。所以,mapfile 文件需要满足如下条件,对应的图层服务才会拥有 wcs 的能力:

  1. 图层的数据源是栅格(raster)数据(如 GeoTIFF 或者 Erdas Imagine 格式)
  2. 图层名(layer name)必须设置,图层类型(layer type)值必须是 RASTER
  3. metadata
    • WEB metadata 或者 LAYER metadata 的 “wcs_enable_request” 参数必须设置
    • WEB metadata 的 “wcs_label” 参数必须设置
    • LAYER 对象的 metadata 中,”wcs_label” 、”wcs_rangeset_name” 、”wcs_rangeset_label” 必须设置
  4. MAP对象、 LAYER对象的 PROJECTION 对象都必须设置,这里LAYER的 PROJECTION 并不会继承 MAP,所以 LAYER 的 PROJECTION 也必须设置
  5. LAYER 设置为接受 wcs 的相关请求,这个有点抽象,一般是通过 “wcs_enable_request” 参数设置的

以上就是 mapfile 需要满足的要求,下面我们通过一个例子来实现针对特定图层发布 wcs。

wcs mapfile 例子

以下的例子是发布 wcs,mapfile 需要的最小配置,有这些配置,wcs 就可以发布成功。当然,mapfile 中还规定了很多参数,wcs 的规范中也规定了很多参数,这些参数可以通过查看 mapserver 的 mapfile 文档: http://mapserver.org/mapfile/index.html,和 wcs 规范: http://www.opengeospatial.org/standards/wcs

# 发布 WCS 的 mapfile 最小配置文件
# 原文地址: http://blog.csdn.net/qingyafan/article/details/50434132
# @author QINGYAFAN
# @date 2016-2-28

MAP
    NAME wcs_sample
    EXTENT 12847916.7660075146704912 4785268.8040398322045803 13079930.6709103845059872 5021045.0965897748246789
    WEB
        METADATA
            "wcs_enable_request"    "*"
            "wcs_label" "tiff wcs"
        END
    END

    LAYER
        NAME "wcs_layer"
        TYPE RASTER
        DATA "geodata/pm10-color-3857.tif"
        METADATA
            "wcs_label" "pm10"
            "wcs_rangeset_name" "pm"
            "wcs_rangeset_label"    "pm10"
        END
        PROJECTION
            "init=epsg:3857"
        END
    END
END

其实,配置文件中的 EXTENT 参数实际上也可以省略,如果省略, mapserver 会计算出其范围,反之,指定这个参数,那么就会省去每次计算的时间。

调用服务(ol3)

我们使用 openlayers3 来测试调用,我们使用切片图层类型来进行调用,原因是这样的加载速度会快一点。代码如下:

/**
 * 请求 WCS 的 ol3 调用代码
 * 原文地址: http://blog.csdn.net/qingyafan/article/details/50434132
 * @author QINGYAFAN
 * @date 2016-2-28
 * /

var wcs_layer = new ol.layer.Tile({
    title: ‘mapserver-geotiff‘,
    extent: [12847916.7660075146704912,4785268.8040398322045803,13079930.6709103845059872,5021045.0965897748246789],
    source : new ol.source.TileWMS({
        url: "http://127.0.0.1:8081/cgi-bin/mapserv.exe?",
        params: {
            ‘map‘:‘C:/xxx/mapfile/wcs_sample.map‘,
            ‘SERVICE‘:‘WCS‘,
            ‘VERSION‘:‘1.0.0‘,
            ‘REQUEST‘:‘GetCoverage‘,
            ‘coverage‘: ‘wcs_layer‘,
            ‘BBOX‘:‘4785268.8040398322045803,12847916.7660075146704912,5021045.0965897748246789,13079930.6709103845059872‘,
            ‘CRS‘:‘EPSG:3857‘,
            ‘FORMAT‘:‘image/png‘
        },
        serverType: ‘mapserver‘
    })
});
map.addLayer( wcs_layer );

看完代码,有些朋友可能会注意到,我们的 layer source 使用了 TileWMS,为什么不用 wcs,反而用了 wms 相关呢?其实,第一,是因为 ol3 并没有直接关于 wcs 的类;其次,wcs 的请求方式和 wms 请求方式是一致的,一般是通过 http get 方式,而 ol.source.TileWMS 主要是根据指定的参数构造一个 http get 请求 url,使用异步通信的方式发出请求并接收返回的结果,外层的 ol.layer.Tile 进行结果的展示。

需要注意,请求中的 ‘url’ 参数是指定 mapserv.exe 的位置,一般是放置在 httpd 的 cgi-bin 目录; ‘map’ 参数必须要指定绝对地址,因为 mapserver 只接受绝对位置的 mapfile 文件解析。

调用后的结果就是文章开始时的样子。

延伸

wcs 包含三个操作,以上的调用只是利用了 getCoverage,其余两个操作是: GetCapabilities 和 DescribeCoverage,主要是获取 wcs 的元数据, coverage 的描述性数据。而且 wcs 有三个历史版本,这里使用的 1.0.0,也就是最早的版本,其余的两个版本是 1.1.0 和 2.0,这里不再延伸其区别,有兴趣的可以去看看相关规范和文章。

总结

这篇文章里,我主要介绍了使用 mapserver 发布卫星影像(或者说栅格图片-地图,又或者说 coverage data),发布这些数据的网络服务需要 OGC 的 wcs 规范,这个规范就是针对于发布 coverage data 网络服务。因此,需要进一步的配置和调用说明,可以参考 mapserver 和 ogc wcs 规范。

文中的例子,我会更新到我的 GitHubhttps://github.com/QingyaFan

好的,就写到这里,有什么问题,可以在文章下面留言或者给我发邮件。

时间: 2024-08-02 21:36:46

MapServer 之 发布网络覆盖数据服务(WCS-Web Coverage Service)的相关文章

MapServer 之 发布网络地图服务(WMS-Web Map Service)

一.环境搭建 操作系统:Windows 7 x64: 地图服务器:MapServer 6.40: Web服务器:Apache httpd 2.2: 空间数据库:PostgreSQL/PostGIS 9.2. 1. Apache HTTP Server Apache HTTP Server(httpd)是一个开源的Web服务器,可以运行在多个操作系统中,包含UNIX.Linux和Windows,能够提供安全.高效和可扩展的web服务,提供与当前的HTTP标准同步的HTTP服务. Httpd项目在1

ArcGIS10.6 通过ArcMap发布二维数据服务。

ArcGIS版本基本每年都会更新,原来一直用10.2,在ArcMap中发布服务: 最近安装10.6整套系统,发现在ArcMap中输入http:id:6080/arcgis  输入用户名,密码 无法登录. 后来发邮件给ESRI北京技术,他们告诉,10.6的服务已经托管给portal,ArcMap登录需要用portal账号,地址也发生变化,不能用IP只能用portal的全域名地址:例如https://www.arcgis.com:6433/arcgis ; 试了一下果然可以.但是发布的服务JS 仍然

在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持

HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable)更强,并具有自描述的特点.使用了HAL的API会更容易地被第三方开源库所调用,并且使用起来也很方便,开发者可以像处理普通JSON数据那样去处理API数据.有关HAL的更多信息,可以参考官方网站:http://stateless.co/hal_specification.html.目前,很多REST

谷歌推无线服务Fi 面临网络覆盖问题

北京时间4月23日早间消息,谷歌周三宣布推出虚拟运营商服务.凭借较低的价格以及灵活的数据套餐,谷歌该服务将给Verizon和AT&T带来压力.不过,谷歌还需要多年时间,才能给美国的大型运营商造成真正的威胁. 谷歌虚拟运营商服务名为Project Fi,起步价为每月20美元,此外每1GB的数据流量价格为10美元.谷歌该服务的合作伙伴为Sprint和T-Mobile.不过该服务也存在缺陷:用户必须拥有或购买一部Nexus 6,此外在大城市以外地区该服务可能并不是很稳定. 此前,Sprint和T-Mo

arcgis api for js 之网络分许服务发布

1.引言 百度地图上有这样的功能:点击两个点,地图上会显示对两个点的路径规划.这个功能能否利用 arcgis api 实现呢?答案是肯定的.不过在实现之前,我们需要将数据发布为网络分析服务,接下来我将介绍如何发布网络分析服务. 2. 步骤 2.1 数据准备 首先,我们需要一个 gdb 数据库,右击这个数据库,创建一个 feature dataset. 右击刚创建的 feature dataset,import 我们进行分析所需要的道路数据. 数据导入成功之后,再次右击这个 feature dat

地图发布的几种服务的区别

1.WMS OGC1999年开始WMT1(Web Map Tested)和WMT2互操作项目.其中著名的GML来自WMT1的成果. 在WMT2中OGC定义了三种地理参考信息模型:Web Map Server(WMS) , Web Feature Server(WFS)   ,Web Coverage Server(WCS) . WMS(Web 地图服务)能够根据用户的请求返回相应的地图(包括PNG,GIF,JPEG等栅格形式或者是SVG和WEB CGM等矢量形式).WMS支持网络协议HTTP,所

【网络大数据】移动互联网大数据告诉你:时间都去哪了?

大数据分析_大数据处理_大数据技术_云计算_网络数据与科学 网络大数据(www.raincent.com)整合了大数据分析,大数据处理,大数据技术,云计算为一体,力争打造国内数一数二的网络数据处理平台. 互联网和手机无疑是现代社会最伟大的发明.当两者结合后,整个世界出现了翻天覆地的变化,人们的生活习惯已然被改变.如今只需一台智能手机和Wifi,我们所有的生活都可以搞定.购物有淘宝和京东.生活用品可以一号店,和朋友交流沟通可以微信或QQ,无聊可以在线视频看电视,还有生活中各种事情都可以通过手机就能

CDN-内容发布网络

什么是CDN? Content Delivery Network 有一条性能黄金法则:“只有10%~20%的最终用户响应时间花在了下载HTML文档上,其余的80%~90%时间花在了下载页面中的所有组件上”.因此如果Web服务器距离用户更近,HTTP请求的响应时间将缩短,提高性能.内容发布网络实现了这一点. 内容发布网络(CDN)是这一组分布在多个不同地理位置的web服务器,用于更加有效地向用户发布内容. CDN的优缺点 CDN除了可以缩短响应时间之外,还有其他优势.他们的服务包括备份.扩展存储能

宜人贷PaaS数据服务平台Genie:技术架构及功能

上篇:架构及组件 一.数据平台的发展 1.1 背景介绍 随着数据时代的到来,数据量和数据复杂度的增加推动了数据工程领域的快速发展.为了满足各类数据获取/计算等需求,业内涌现出了诸多解决方案.但大部分方案都遵循以下原则: 降低数据处理成本 合理提高数据使用/计算效率 提供统一的编程范式 宜人贷的数据服务平台也是遵循这三个原则.本人有幸亲身经历了宜人贷数据平台Genie的整个发展过程,纵观宜人贷和业内,可以说Genie的发展是工业界数据平台发展的缩影. Google 的三大论文和Apache Had