geomask文档
的geomask对于指定地理区域内的位置,返回true。
内容
语法
Mask = geomask(lat,lon,latv,lonv) [Mask,coords] = geomask(…)
描述
掩码= geomask(纬度、经度、latv lonv)返回大小为的掩码纬度和朗这是真正的的范围内的所有点latv, lonv.
- 标量latv, lonv:如果latv, lonv输出是标量值吗面具将真正的仅用于最接近的像素latv, lonv.
- 双元素数组:如果latv, lonv是双元素数组(例如,(40 50) (110 120))输出面具对所有人都适用吗纬度、经度以。为边界的地理四边形内的值latv, lonv.
- 多边形定义为latv, lonv:如果latv, lonv包含两个以上的元素,输出面具将为所有元素的lat,lon内的多边形定义latv, lonv.
- 单元格格式的多边形:如果latv, lonv单元格数组(通常用于shapefile中的多个区域)是输出吗面具对于任何多边形内的所有元素都是真的吗latv, lonv.
掩码= geomask(纬度、经度、latv lonv,“包容性”)包括纬度、经度边界上的点或由latv, lonv.
(面具,坐标)= geomask(…)如果latv, lonv如果是标量,则可选的坐标输出是一个包含掩码中像素坐标的结构。和声结构包括coords.row和coords.col的行和列是什么纬度、经度电网,coords.lat和coords.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为了你自己。与geomask,latv和lonv可以是数字数组吗,就像你会用inpolygon,或latv和lonv可以是每个单元格中有多边形的单元格数组。
在这个例子中,我们有一个全球网格,我们想知道哪些网格单元位于拉丁美洲国家的边界内。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)。