2015-07-03 42 views
2

我正在matlab中使用m_map包生成一些值的全局映射。m_map投影丟失點

下面是一個例子:

lat2 = [-54.54,-33.15,-8.64,-1.3,5.8,15.35,30.7,32.86,37.54,40.25,... 
    43.84,45.95,47.65,49.38,51.04,53.33,54.70,56.33,58.59,60.02,60.84,... 
    62.09,63.15,64.15,66.06]; 
lon2 = [-68.02,-52.84,26.39,33.22,37.54,-83.84,90.66,119.30,89.34,-121.19,... 
    -77.76,-60.83,9.2,-94.91,-90.8,-100.13,-97.58,-76.29,-112.08,-106.06,... 
    31.38,28.52,29.70,-108.45,30.97]; 

figure(1); 
m_proj('Mollweide'); %clongitude, 0 
m_coast('patch','k'); 
m_grid('xaxislocation','middle'); 
for i = 1:length(lat2); 
    m_line(lon2(i),lat2(i),'marker','o','markersize',4,'color','k','MarkerFaceColor','r'); 
end  

figure(2); 
m_proj('Mollweide','clongitude', 0); 
m_coast('patch','k'); 
m_grid('xaxislocation','middle'); 
for i = 1:length(lat2); 
    m_line(lon2(i),lat2(i),'marker','o','markersize',4,'color','k','MarkerFaceColor','r'); 
end  

enter image description here

在兩個凸起正好使用相同的緯度和經度值。爲什麼亞洲點不出現在第一張地圖上?他們似乎只是表明,如果我不設置0作爲數字的中心。

任何意見,將不勝感激。

回答

2

這似乎是一個m_map的錯誤。這個問題似乎沒有東西180W會陰謀。因此,在您的第一張地圖:

m_plot(-175,-40,'r.') % this works 
m_plot(175,-40,'r.') % this doesn't 

m_plot(-185,-40,'r.') % same as second point above 

作品。需要注意的是,如果你在後一種情況下做

m_proj('Mollweide','clongitude', 240); 

發生相反的情況,只亞洲數據點被繪製。

一個快速(但不是很好)的解決方法是將所有(+)經度點轉換爲( - )經度。

p.s.你不需要循環:

m_plot(lon2,lat2,'ko','markersize',4,'MarkerFaceColor','r');