gpt4 book ai didi

matlab - map 的主要和次要标线?

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:36 27 4
gpt4 key购买 nike

我创建了以下 map ,它具有统一的灰色网格,经线和纬线的间隔均为 1°:

Map with gray grid

我还希望每 5° 间隔(同时保持 1° 网格)的子午线和纬线更粗并显示为黑色,以便网格线与纬度和经度标签匹配,如下所示:

Map with gray and black grids

我知道 MATLAB 有 major and minor grids对于标准的 2D 图,我过去使用过它们。但是,据我所知, map 没有此功能。

我认为我想做的事情可以通过访问 map 对象属性(使用 gcmgetm )并为子午线和平行线的特定子集指定黑色属性(使用 setm )来实现.也许功能 gridmaxesm可以处理这个,但我不确定。

实际上,我不知道该怎么做,因为我对 map 没有任何经验。非常感谢您的帮助。

代码:

Note: This code requires the Mapping Toolbox.

% Read vector features and attributes from shapefile.
landareas = shaperead('landareas.shp', 'UseGeoCoords', true);

% Define map axes and set map properties.
axesm ('lambert',...
'MapLonLimit', [-70 10],...
'MapLatLimit', [30 70],...
'MapParallels', [38.00555556 71.01111111],...
'Frame', 'on',...
'FLineWidth', 1,...
'Grid', 'on',...
'GLineStyle', '-',...
'GLineWidth', 0.1,...
'GColor', [.7 .7 .7]);

% Display map latitude and longitude data.
geoshow(landareas, 'FaceColor', [1 1 .5], 'EdgeColor', [.3 .3 .3]);

% Toggle and control display of graticule lines.
gridm('MLineLocation', 1,...
'MLabelLocation', 5,...
'PLineLocation', 1,...
'PLabelLocation', 5);

% Toggle and control display of meridian labels.
mlabel on;

% Toggle and control display of parallel labels.
plabel on;

axis off;

最佳答案

这是一个非常简单的技巧:在相同的 'Position' 中制作第二个 axes 并在那里制作您想要的主要网格。

从您的代码开始并进行一些修改(我结合了 axesmgridm):

landareas = shaperead('landareas.shp', 'UseGeoCoords', true);

% make the first axes and get the handle of it
ha = axes;

axesm ('lambert',...
'MapLonLimit', [-70 10],...
'MapLatLimit', [30 70],...
'MapParallels', [38.00555556 71.01111111],...
'Grid', 'on',...
'GLineStyle', '-',...
'GLineWidth', 0.1,...
'GColor', [.7 .7 .7], ...
'MLineLocation', 1,...
'PLineLocation', 1);

geoshow(landareas, 'FaceColor', [1 1 .5], 'EdgeColor', [.3 .3 .3]);

axis off;

然后制作第二个轴:

% get the position of the first axes
L = get(ha, 'Position');

% make a new axes in the same position
axes('Position', L)

axesm ('lambert',...
'MapLonLimit', [-70 10],...
'MapLatLimit', [30 70],...
'MapParallels', [38.00555556 71.01111111],...
'Frame', 'on',...
'FLineWidth', 2,...
'Grid', 'on',...
'GLineStyle', '-',...
'GLineWidth', 2,...
'GColor', [.2 .2 .2], ...
'MLineLocation', 5,...
'MLabelLocation', 5,...
'PLineLocation', 5,...
'PLabelLocation', 5);

mlabel on;
plabel on;
axis off;

你会得到这样的结果:

enter image description here

甚至不需要获取和设置位置,因为它们都将在默认位置创建。

关于matlab - map 的主要和次要标线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com