我想在Matlap Mapping工具箱中绘制地理投影图中的垂直平面 . 想象一下立方体的四个垂直面,如this example,类似this question . 问题是Matlab没有正确绘制所有面部,如下例所示:
使用 geoshow
的最小代码示例:
xf = [ 0, 1, 1, 0;
1, 1, 0, 0;
1, 1, 0, 0;
0, 1, 1, 0 ]
yf = [ 0, 0, 1, 1;
0, 1, 1, 0;
0, 1, 1, 0;
0, 0, 1, 1 ]
zf = [ 0, 0, 0, 0;
0, 0, 0, 0;
.01, .01, .01, .01;
.01, .01, .01, .01 ]
figure
axesm('miller');
geoshow(xf,yf,zf,'DisplayType','surface','FaceColor','red','FaceAlpha',0.4);
xlabel('lat')
ylabel('lon')
zlabel('alt')
view(-140,-60);
1775064 for geoshow说:
geoshow(lat,lon,Z)项目并显示地理定位数据网格 . Z:M-by-N阵列 . 可能包含NaN值 .
我的猜测是 Z
变量必须以不同的方式定义,但是如何?还是有其他解决方案吗?我真的觉得我的头撞在墙上......
1 回答
我认为你的例子中有两件事情出错:
MATLAB正在绘制您不想要的面,因为
xf
,yf
和zf
中有四行...在水平和垂直相邻点之间绘制边 .xf
的最后一列(类似地yf
和zf
)应该与第一列相同,到"close"框(即画出你丢失的一个垂直墙)My solution:
在一些游戏之后,看起来一个解决方案是定义你的
xf
,yf
和zf
,如下所示:zf
= 2-by-n矩阵,顶行全部为零,底行所有所需的墙壁高度(对于你,0.1;对于我下面的例子,1)xf
= 2×n矩阵,顶部和底部行相同,给出定义您所在地区的正方形的纬度坐标类似地,
yf
= 2×n矩阵,顶部和底部行相同,给出定义您的区域的正方形的经度坐标 .重要笔记:
xf
,yf
和zf
的第一列和最后一列应与"close"相同xf
对应于此处实际为y
坐标的纬度,反之亦然yf
One Wall:
只是试图感受
geoshow
我从一面墙开始:注意第一个输入(全1)对应于y值,因为它们是纬度:
Two Walls:
我为每个
xf
,yf
和zf
添加了另一列:(注意:我在这里调整轴以匹配第一张图片以保持一致性)
Three Walls:
我为每个
xf
,yf
和zf
添加了另一列:(注意:"box"上没有顶部)
Four Walls:
我为每个
xf
,yf
和zf
添加了另一列(第一列的副本):Ta-da! 为了说服你,盒子上没有顶部: