2014-05-19 58 views
2

目前,我想要繪製從.shp文件的地圖,其結果是不美觀:Matlab的:geo​​show的網格和框架

minx=-75; 
maxx=-68; 
miny=-40; 
maxy=-30; 
cntry02=shaperead('cntry02', 'UseGeoCoords', true); 

figure 
geoshow(cntry02, 'FaceColor', [1 1 1]); 
axis([minx-1 maxx+1 miny-1 maxy+1]) 
grid on 

產生 rubish

有沒有一種方法到

1)繪製所有的網格(在國家)?

2)繪製整個框架?

3)顯示•W,代替緯度和經度的負值和?

我一直在這個問題所有的戰鬥上午。提前致謝。

您可以從這裏下載.shp文件。 http://openmap.bbn.com/svn/openmap/trunk/share/data/shape/cntry02/

回答

1

對於問題1和問題2,原因是軸總是在圖的後面。因此,一種解決方案是在當前的軸上添加新軸並顯示網格,框和自定義刻度。

對於問題3,我使用regexprep以取代S後綴負緯度(同上爲經度)。我唯一的問題是經度0將是0E,緯度0,0N。

這裏是代碼:

figure; 
axes; 
geoshow(cntry02, 'FaceColor', [1 1 1]); 
axis([minx-1 maxx+1 miny-1 maxy+1]); 
axis off; 
hold on; %hold to add new axes 
axes('Color','none'); %specify no background, else default is here white 
axis([minx-1 maxx+1 miny-1 maxy+1]); 
grid on; 
box on; 
set(gca,'XTick', minx-1:2:maxx+1); 
%compute x tick labels 
xticks = num2str(minx-1:2:maxx+1); 
xticks = regexprep(regexprep(xticks,'-([\d.]+)','$1W'), '\b[\d\.]+','$0E'); 
xticks_cell = cellstr(regexp(xticks,'\s+','split')); 
set(gca,'XTickLabel',xticks_cell) 
set(gca,'YTick', miny-1:2:maxy+1); 
% compute y tick labels 
yticks = num2str(miny-1:2:maxy+1); 
yticks = regexprep(regexprep(yticks,'-([\d.]+)','$1S'), '\b[\d\.]+','$0N'); 
yticks_cell = cellstr(regexp(yticks,'\s+','split')); 
set(gca,'YTickLabel',yticks_cell)