3

私は、Matlab 2011b とcontourf/contourfm を使用して、北米の地図に 2D データをプロットしています。mathworks の Web サイトの Contourfm のヘルプ ページから始めました。「geoid」と呼ばれる既定のデータと参照ベクトル「geoidrefvec」を使用すると、うまく機能します。

プリセット データを操作する簡単なコードを次に示します。

figure
axesm('MapProjection','lambert','maplo',[-175 -45],'mapla',[10 75]);
framem; gridm; axis off; tightmap

load geoid
%geoidrefvec=[1 90 0];

load 'TECvars.mat'
%contourfm(ITEC, geoidrefvec, -120:20:100, 'LineStyle', 'none');
contourfm(geoid, geoidrefvec, -120:20:100, 'LineStyle', 'none');

coast = load('coast');
geoshow(coast.lat, coast.long, 'Color', 'black')
whitebg('w')
title(sprintf('Total Electron Content Units x 10^1^6 m^-^2'),'Fontsize',14,'Color','black')
%axis([-3    -1   0    1.0]);
contourcbar

データを使用しようとすると問題が発生します。参照ベクトルが地球上でデータをプロットする場所を決定すると確信していますが、このベクトルがどのように機能するか、または別のデータで動作するように作成する方法に関するドキュメントを見つけることができませんでした。

ここに私のデータを含む.matファイルがあります。ITEC は、プロットされる値のマトリックスです。地球に対するグリッドの位置に関する情報は、RT と呼ばれるセル配列で見つけることができますが、基本的な考え方は次のとおりです。ITEC(1,1) は Lat=11 Long=-180 を表し、ITEC(58,39) は Lat = 72.5 Long = -53 を表し、等間隔のデータがあります。

参照ベクトルがマップ上のデータの配置場所を定義する方法を知っている人はいますか? それとも、これを達成する別の方法がありますか? 前もって感謝します!

4

1 に答える 1

2

わかった。だから私はそれを理解しました。ベクトルには3次元しかないため、緯度データ間の度は経度データ間の度と同じでなければならないことに気付きました。つまり、各水平データポイント間の間隔は、各垂直ポイント間の間隔と同じである必要があります。たとえば、1度。

参照ベクトルの最初の値は各データポイント間の距離(度単位)であり(私の場合はこれでうまくいくと思います)、ベクトルの2番目の値はそれぞれ最小緯度と最小経度です。

私の場合、データは各方向に等間隔で配置されていましたが、垂直方向と水平方向に同じ間隔ではありませんでした。データを1x1グリッド密度に内挿し、ベクトルの最初の値を1に設定するだけです。

うまくいけば、これは同じ問題を抱えている人を助けるでしょう。

簡単な質問ですが、私は自分の質問に答えたので、賞金はもらえますか?私は50の「貴重な」評判ポイントを失うのは嫌だ

于 2012-06-13T00:31:19.653 に答える