罗兰谈MATLAB的艺术

将想法转化为MATLAB

请注意

罗兰谈MATLAB的艺术已存档,不会更新。

利用网络地图服务(WMS)可视化墨西哥湾浮油

今天我想介绍一位客座博主,Kelly Luetkemeyer,她是The MathWorks的Mapping Toolbox软件开发人员。Kelly是将Web地图服务(WMS)合并到映射工具箱的项目的主要开发人员。

内容

简介

最近,墨西哥湾的悲惨事故让我开始思考,是否可以使用MathWorks工具来帮助使用Web Map Service (WMS)服务器的图像来可视化浮油。我将向您展示如何使用映射工具箱中的WMS功能来获取该地区的MODIS图像。MODIS传感器安装在NASA的Terra卫星上。WMS是由开放地理空间联盟(OGC)开发的标准,它允许客户端访问web服务器以获得以图像形式呈现的地图。我们已经对超过1000个WMS服务器及其层进行了编目,并将这些信息存储到映射工具箱附带的数据库中。我将使用该数据库找到一个提供MODIS图像的服务器。

获取每日行星层

位于帕萨迪纳市喷气推进实验室(JPL)的NASA WMS服务器提供来自Terra卫星上MODIS传感器的持续更新的视觉图像合成。,可以获得存储层的信息wmsfind方法缩小搜索范围完善方法WMSLayer对象。

JPL = wmsfind“onearth.jpl”“SearchField”“serverurl”);Daily_planet = jpl.refine(“daily_planet”);

更新图层并显示摘要

存储在数据库中的信息只是部分子集。函数可以用来自服务器的最新信息更新该层wmsupdate函数。一旦层被更新,我可以显示层的抽象信息。

Daily_planet = wmsupdate(Daily_planet);disp ([' < html > < bf > 'daily_planet。摘要' < / bf > < / html >”])
来自TERRA MODIS场景的不断更新的视觉图像合成,有关MODIS的详细信息,请参阅http://modis.gsfc.nasa.gov。这个数据集是在OnEarth服务器上本地构建的,一旦场景可用,它就会更新,通常会比实时延迟6到24小时。使用HDFLook应用程序从MODIS场景生成图像。基本分辨率为每像素8角秒。WMS“时间”维度可以使用YYYY-MM-DD符号来检索过去的数据。

定义感兴趣的区域

我为浮油周围的区域定义纬度和经度边界,并要求像素为8角秒。的时间变量用于请求2010年4月29日以后的图像。

Latlim = [28 31];Lonlim = [-90 -87];cellSize = 8/3600;% 8弧秒时间=“2010-04-29”

获取图像

wmsread函数从服务器检索图像。输出一个是图像,R是引用矩阵,和URL是一个WMS URL,可以在浏览器中使用它来下载图像。图像坐标以经度和纬度表示。请注意,有时此WMS服务器很忙,可能会由于服务器过载而发出错误消息。如果发生这种情况,请稍后再试。

[A, R, URL] = wmsread(daily_planet,“时间”、时间、...“CellSize”cellSize,“Latlim”latlim,“Lonlim”, lonlim);

显示标题

我最初是在NASA的网站上找到MODIS图像的http://www.nasa.gov/topics/earth/features/oil-creep.html.我从网站上复制了标题,并把它放在一个文件中。

Fid = fopen(“caption.txt”);C = fread(fid,“字符= >字符”);文件关闭(fid);disp ([' < html > < bf > 'c '' < / bf > < / html >”])
4月29日,Terra卫星上的MODIS图像捕捉到了路易斯安那州海岸附近浮油的广域自然彩色图像(白色轮廓)。浮油呈暗灰色交错的逗号形状,一个不透明,另一个几乎透明。太阳返辉——太阳从水面反射出来的镜面——增强了浮油的能见度。浮油的西北端几乎触及密西西比三角洲。图片来源:美国宇航局/地球天文台/杰西·艾伦,使用威斯康星大学空间科学与工程中心MODIS直接广播系统提供的数据。

显示图像

一个是RGB图像,我可以使用图像处理工具箱功能吗imshow来展示它。图像的坐标以经度(行)和纬度(列)表示。

我可以使用映射工具箱功能geoshow将图像重新投影到兰伯特投影中。使用Mapping Toolbox功能,我还可以将地理数据覆盖到地图上,在本例中是感兴趣区域内各州的边界。状态的边界是从映射工具箱中包含的shapefile中获得的。

S = shaperead(“usastatehi.shp”“UseGeoCoords”,真正的);图(渲染器的“zbuffer”usamap(A,R) geoshow([S。Lat]、[S.Lon]);geoshow(右)标题({墨西哥湾浮油的MODIS图像、时间、...“数据由NASA提供”});

以全分辨率查看图像

你可以在浏览器中点击以下链接查看完整图片:https://blogs.mathworks.com/images/loren/231/gom.png

使用WMS URL查看图像

如果您没有映射工具箱,如果您知道WMS URL,您仍然可以使用WMS。第三个输出wmsread提供此信息。如果您将此URL插入到浏览器中,浏览器将从WMS服务器下载图像。你也可以用MATLAB函数,urlwrite (URL,文件名)下载图像。

disp (URL (1:52)), disp (URL (53:95)), disp (URL (96:140)) disp (URL (141:170)), disp (URL (171:212)),...disp (URL (213:262)), disp (URL(263:结束)
http://onearth.jpl.nasa.gov/wms.cgi?TIME=2010-04-29& SERVICE=WMS&LAYERS=daily_planet&EXCEPTIONS= application/vnd.ogc。se_xml&FORMAT=image/jpeg& TRANSPARENT=FALSE&HEIGHT=1350& BGCOLOR= 0xffffffff&request =GetMap&WIDTH=1350 &BBOX=-90.0,28.0,-87.0,31.0&STYLES=&SRS=EPSG:4326& VERSION=1.1.1

获取2010年5月1日的图片

4月30日至5月6日(不包括5月1日)的图像要么缺失,因为该区域当时没有被传感器成像,要么该区域是多云的。我将下载5月1日的图像进行比较,看看浮油的形状和大小是如何变化的。

时间=“2010-05-01”;[a, R] = wmsread;“时间”、时间、“CellSize”cellSize,...“Latlim”latlim,“Lonlim”, lonlim);图imshow (A2)

提升形象

控件可以增强图像adapthisteq函数从图像处理工具箱。

B = a2;B(:,:,k) = adapthisteq(A2(:,:,k));结束图imshow (B)

同时显示两个图像

为了进行比较,我将把4月29日的图像和5月1日的图像放在同一个图窗口中。你可以看到浮油的形状和大小发生了怎样的变化。

图(渲染器的“zbuffer”) subplot(1,2,1) usamap(A,R) geoshow(A,R) geoshow([S。Lat]、[S.Lon]);标题({“2010-04-29”“数据由NASA提供”}) subplot(1,2,2) usamap(B,R) geoshow(B,R) geoshow([S。Lat]、[S.Lon]);标题({“2010-05-01”“数据由NASA提供”})

使用谷歌™Earth和WMS

一些WMS服务器支持非图像输出。的daily_planet.Details.ImageFormats变量包含JPL服务器支持的所有输出类型。一个输出类型是“应用程序/ vnd.google-earth.kml + xml”.我将修改URL以指定KML作为输出。你可以使用这个文件,gom.kml,在谷歌™Earth中查看图像。

kmlURL = strrep(URL,“图像/ jpeg”...“应用程序/ vnd.google-earth.kml + xml”);urlwrite (kmlURL“gom.kml”);

结论

我已经展示了如何将MATLAB与映射工具箱和图像处理工具箱中的函数结合起来,用于可视化和增强当前事件的数据。你有什么想法可以使用这些工具来跟踪或分析当前事件吗?让我知道在这里




使用MATLAB®7.10发布


评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。

Baidu
map