Plotting data on curvilinear coord projection

10 ビュー (過去 30 日間)
mashtine
mashtine 2016 年 7 月 1 日
Hello,
I have two lat and lon matrices, each 622x810 and they are of a curvilinear projection. I previously just used vectors of lon and lat to plot my data with surfacem (see below) but I am not sure how to do this with lat and lon as a matrix of curvilinear coordinates.
Any suggestions?
ax = worldmap(latlim, lonlim);
S = shaperead('landareas','UseGeoCoords',true);
surfacem(lat, lon, inpdata)
shading interp
geoshow([S.Lat], [S.Lon],'Color','black');

回答 (3 件)

KSSV
KSSV 2016 年 7 月 1 日
As you have matrices in hand, it shall be very easy to plot what you want. If you want to get vectors of lon, lat from 622x810 matrices of each, try using unique(); this will give you the vectors.
  2 件のコメント
mashtine
mashtine 2016 年 7 月 1 日
Hey!
Thanks for the reply. This won't be as simple because the projection of the map needs to change. When I use geoshow for instance, the coastline will not match up with where it should be for the UK as the data is in one projection and the geoshow is putting the coastline in another.
Dushantha Sandaruwan WIJENDRA NAIDHELAGE
Is ther anyway to convert the covarian projection (meshgird) into noramal Longitude and latitudes?

サインインしてコメントする。


José-Luis
José-Luis 2016 年 7 月 1 日
It is not clear to me how you want those arrays displayed. If you only want to show the points:
geoshow(S.Lat(:), S.Lon(:),'Color','black');
  2 件のコメント
mashtine
mashtine 2016 年 7 月 1 日
Hi Jose-Luis,
I have another 622x810 matrix of data (inpdata) with values for each grid cells that I would like to plot. Basically, the lon and lat are coordinates of the UK and inpdata is a parameter that I would like to plot to show the pattern across the UK domain.
Makes sense? I need to use surfacem as shown in my code
José-Luis
José-Luis 2016 年 7 月 4 日
I don't know what a matrix of curvilinear coordinates is.

サインインしてコメントする。


Jonathan Eliashiv
Jonathan Eliashiv 2016 年 10 月 18 日
編集済み: Jonathan Eliashiv 2016 年 10 月 18 日
Super simple actually.
Go ahead and reshape your coordinates and data into 1-d vectors:
X_curvi = reshape(lon,[],1);
Y_curvi = reshape(lat,[],1);
data_curvi = reshape(inpdata,[],1);
Make a meshgrid that you want to interpolate into:
[lon_grid,lat_grid] = meshgrid(minlon:dx:maxlon,minlat:dy:maxlat)
and then you can use the griddata function:
[~,~,data_rectilinear] = griddata(X_curvi,Y_curvi,data_curvi,...
lon_grid,lat_grid)
and plot away
pcolor(lon_grid,lat_grid,data_rectilinear); shading flat

カテゴリ

Help Center および File ExchangeLighting, Transparency, and Shading についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by