geomask文档
的geomask返回true的位置在一个特定的地理区域。
内容
语法
掩码= geomask(纬度、经度、latv lonv)面具= geomask(纬度、经度、latv lonv,“包容性”)[面具,坐标]= geomask (…)
描述
掩码= geomask(纬度、经度、latv lonv)返回一个面具的大小纬度和朗这是真正的对所有点的范围之内latv, lonv。
- 标量latv, lonv:如果latv, lonv标量值,输出面具将真正的最近的像素latv, lonv。
- 双元素数组:如果latv, lonv双元素数组是(例如,(40 50)(110 120))输出面具将适用于所有纬度、经度值在地理四边形有界latv, lonv。
- 多边形定义为latv, lonv:如果latv, lonv包含两个以上的元素,输出面具将适用于所有元素的纬度,经度多边形内定义的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 5);lonv = (-170 -120 -120 -170 -170);%绘制尼诺3.4箱:持有在情节(lonv latv,“k -”,“线宽”,2)
对于一个简单的地理四边形的最简单的方法得到一个面具是定义的极限边界框(类似于ingeoquad如果你有Matlab工具箱)的映射。
首先将纬度、经度数组成一个网格,然后被specifing面具地区利益的限制:
%转换纬度,经度为网格:(经度、纬度)= meshgrid(经度、纬度);%的面具在四边形网格细胞:掩码= geomask(纬度,经度,5 [5],[-170 - -120]);%绘制面具:图imagescn(经度、纬度、面具)包含“经”ylabel“纬度”标题‘黄色表示*真*网格细胞(尼诺3.4盒)'
示例2:最近的网格单元
有时你需要单点附近的一个时间序列的兴趣。例如,您可能想把火奴鲁鲁附近的海面温度时间序列(21.3 N, 157.8 W)。让我们找到最接近火奴鲁鲁网格单元:
(檀香山,坐标)= geomask(纬度,经度,21.3,-157.8);图imagescn(经度、纬度、火奴鲁鲁)包含“经”ylabel“纬度”持有在边界%情节国界的上下文
单像素面具可能是一个有限的使用,但对于这样的面具,geomask还提供的行、列和地理位置最近的像素,见:
坐标
坐标=结构体字段:行:20坳:12纬度:21.5000经度:-157.5000
如下证据,我们把平均SST地图与红星照耀我们所需的火奴鲁鲁位置和一个蓝色的方形网格单元离火奴鲁鲁:
%的阴谋平均SST的背景:图imagescn(经度,纬度,意味着(sst, 3))轴xycmocean热包含“经”ylabel“纬度”%情节檀香山红星和其最近的网格单元作为一个蓝色方块:持有在图(-157.8,21.3,“记者”)情节(coords.lon coords.lat,“废话”)文本(-157.8,21.3,“檀香山”,“颜色”,“r”,“绿色”,“高级”)文本(coords.lon coords.lat,“最近的网格单元”,“颜色”,“b”,“绿色”,“底”)
中的行和列信息坐标输出,很容易得到一个时间序列的火奴鲁鲁网格单元。请注意,风场是一个三维矩阵,所以我们必须使用吗挤压命令来删除单维度。为了清晰起见,我
sst_honolulu = sst (coords.row、coords.col:);%去除单维度:sst_honolulu =挤压(sst_honolulu);图绘制(t, sst_honolulu)轴紧盒子从ylabel (火奴鲁鲁SST的)datetick (“x”,“keeplimits”)
示例3:Arbitrarily-shaped多边形(s)
如果你想让一个面具的任意多边形或多个多边形,您可以使用标准的Matlab函数inpolygon或者你可以让geomask为你做这些。与geomask,latv和lonv可以是数值型数组就像你会使用吗inpolygon,或latv和lonv可以用多边形细胞阵列在每一个细胞。
在这个例子中,我们有一个全球网格和我们想知道哪个网格细胞是在拉丁美洲国家的边界。CDT提供了样品borderdata通过这个国家的名字,您可以手动挑选哪些国家对应于拉丁美洲。下面我选择了20个拉丁美洲国家中我们将使用的面具。
这个例子可能需要几秒钟来计算,因为国家轮廓borderdata有些高分辨率和需要时间吗geomask比较41500年边界数据的网格细胞轮廓顶点。
%对于此示例1度分辨率网格:(纬度、经度)=土工格栅;%加载一些国家边界数据:B =负载(“borderdata.mat”);%只使用拉丁美洲国家:latv = B。纬度([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“纬度”
与面具拉丁美洲国家,现在可以使用当地的得到一个时间序列,在拉丁美洲国家area-averaged地表温度。
作者信息
的geomask功能和支持文档写的金宝app乍得a。格林德克萨斯大学奥斯汀分校的地球物理研究所(UTIG)。