geomask文档

geomask对于指定地理区域内的位置,返回true。

回到气候数据工具内容

内容

语法

Mask = geomask(lat,lon,latv,lonv) [Mask,coords] = geomask(…)

描述

掩码= geomask(纬度、经度、latv lonv)返回大小为的掩码纬度这是真正的的范围内的所有点latv, lonv

掩码= geomask(纬度、经度、latv lonv,“包容性”)包括纬度、经度边界上的点或由latv, lonv

(面具,坐标)= geomask(…)如果latv, lonv如果是标量,则可选的坐标输出是一个包含掩码中像素坐标的结构。和声结构包括coords.rowcoords.col的行和列是什么纬度、经度电网,coords.latcoords.lon,为输出网格单元的地理位置。

例1:地理四合院

有时你会对地理四边形中的值感兴趣。一个这样的四边形是尼诺3.4箱被定义为(5°S到5°N, 170°W到120°W)。这是一些海洋表面温度的样本数据

加载一些样本数据:负载pacific_sst.mat绘制样本数据:imagescn(经度,纬度,意味着(sst, 3))轴xy图像cmocean包含“经”ylabel“纬度”%定义尼诺3.4盒:Latv = [-5 -5 5 -5];Lonv = [-170 -120 -120 -170 -170];%绘制尼诺3.4盒子:持有情节(lonv latv,“k -”“线宽”, 2)

对于一个简单的地理四边形,获得蒙版的最简单方法是定义边界框的范围(类似于ingeoquad如果你有Matlab的映射工具箱)。

首先转换纬度、经度将数组放入网格中,然后通过指定感兴趣的区域的限制来获取掩码:

将lat,lon转换为网格:(经度、纬度)= meshgrid(经度、纬度);在四边形中获得一个网格单元的蒙版:mask = geomask(经度,经度,[-5 5],[-170 -120]);绘制蒙版:图imagescn(经度、纬度、面具)包含“经”ylabel“纬度”标题“黄色表示*真*格状细胞(尼诺3.4盒)”

例2:最近的网格单元

有时你需要一个时间序列靠近一个兴趣点。例如,你可能想要绘制火奴鲁鲁(21.3 N, 157.8 W)附近的SST时间序列,让我们找到最接近火奴鲁鲁的网格单元格:

(檀香山,坐标)= geomask(纬度,经度,21.3,-157.8);图imagescn(经度、纬度、火奴鲁鲁)包含“经”ylabel“纬度”持有边界%根据上下文绘制国家边界

单像素掩模的用途可能有限,但对于这种掩模,geomask还提供最近像素的行、列和地理位置,参见:

坐标
Coords =结构与字段:row: 20 col: 12纬度:21.5000 lon: -157.5000

作为证明,下面我们绘制了平均海温图,在我们想要的檀香山位置上有一颗红色的星星,在离檀香山最近的网格单元上有一个蓝色的正方形:

绘制上下文的平均海表温度:图imagescn(经度,纬度,意味着(sst, 3))轴xycmocean包含“经”ylabel“纬度”%用红星表示火奴鲁鲁,用蓝色方块表示最近的网格单元:持有图(-157.8,21.3,“记者”)情节(coords.lon coords.lat,“废话”)文本(-157.8,21.3,“檀香山”“颜色”“r”“绿色”“高级”)文本(coords.lon coords.lat,“最近网格单元”“颜色”“b”“绿色”“底”

中的行和列信息坐标输出,很容易得到火奴鲁鲁网格单元的时间序列。请注意,风场是一个3D矩阵,所以我们必须使用挤压命令删除单例维度。为了清晰起见,我

sst_honolulu = sst (coords.row、coords.col:);%移除单例维度:sst_honolulu =挤压(sst_honolulu);图绘制(t, sst_honolulu)轴盒子ylabel (火奴鲁鲁SST的) datetick (“x”“keeplimits”

例3:任意形状的多边形

如果你想要制作一个任意多边形或多个多边形的遮罩,你可以使用标准的Matlab函数inpolygon,或者你可以让geomask为了你自己。与geomasklatvlonv可以是数字数组吗,就像你会用inpolygon,或latvlonv可以是每个单元格中有多边形的单元格数组。

在这个例子中,我们有一个全球网格,我们想知道哪些网格单元位于拉丁美洲国家的边界内。CDT随样本而来borderdata通过浏览国家名称,你可以手动找出哪些国家与拉丁美洲相对应。下面我选择了20个拉丁美洲国家,我们将用它们来制作面具。

这个例子可能需要几秒钟的时间来计算,因为国家的轮廓在里面borderdata分辨率高,需要时间吗geomask将网格单元格与41,500个边界数据顶点的轮廓进行比较。

对于这个1度分辨率的网格示例:(纬度、经度)=土工格栅;%加载一些国家边界数据:B =负载(“borderdata.mat”);%只使用拉丁美洲国家:latv = B.lat([8 17 21 33 38 39 41 48 49 55 75 78 79 120 159 161 162 165 211 214]);lonv = B.lon([8 17 21 33 38 39 41 48 49 55 75 78 79 120 159 161 162 165 211 214]);%查找拉丁美洲国家对应的网格单元:掩码= geomask(纬度、经度、latv lonv);绘制蒙版:图imagescn(经度、纬度、面具)包含“经”ylabel“纬度”

面具对于拉丁美洲国家来说,现在可以使用了当地的来得到一个时间序列,比如拉丁美洲国家的面积平均地表温度。

作者信息

geomask函数和支持文档由金宝app乍得a。格林德克萨斯大学奥斯汀分校地球物理研究所(UTIG)。