フィルターのクリア

Plotting geographic data not oriented on a grid

2 ビュー (過去 30 日間)
Collin Tuttle
Collin Tuttle 2017 年 11 月 1 日
コメント済み: Collin Tuttle 2017 年 11 月 3 日
I have a column vector of data (23038 x 1), which corresponds to a column vector of the same length for latitude and another for longitude. I am attempting to plot this data (I have used surfm, surfacem, pcolorm), but it always causes MATLAB to slow down to the point of crashing. I assume that this is because matlab prefers the data to be oriented at a 2D matrix (grid). Is this correct, and if so how would I convert the data for plotting? Thanks!

採用された回答

Cam Salzberger
Cam Salzberger 2017 年 11 月 2 日
Hey Collin,
First of all, really neat looking map when you just plot the points at which the data was taken:
Using griddata, you can mesh out your current dataset into a grid:
latmin = min(lat_piomas);
latmax = max(lat_piomas);
lonmin = min(lon_piomas);
lonmax = max(lon_piomas);
gridSize = [100 200];
latvec = linspace(latmin, latmax, gridSize(1));
lonvec = linspace(lonmin, lonmax, gridSize(2));
[LatQ LonQ] = ndgrid(latvec, lonvec);
ThickQ = griddata(lon_piomas, lat_piomas, thickness, LonQ, LatQ);
From there, it's a simple matter to show the data in whichever format you like:
figure
axesm('mercator', 'MapLonLimit', [0 360])
geoshow(LatQ, LonQ, ThickQ, 'DisplayType', 'surface')
And if you want to get real fancy, you can use topological data to show the elevation of the surface, while using the color to show the "thickness" data. Here's an example using built-in example topography data:
% Get example topography data
load topo topo topolatlim topolonlim
Rtopo = georefcells(topolatlim, topolonlim, size(topo));
ElevQ = geointerp(topo, Rtopo, LatQ, LonQ, 'cubic');
% Display the surface
figure
axesm('mercator', 'MapLonLimit', [0 360])
geoshow(LatQ, LonQ, ElevQ, 'DisplayType', 'surface', 'CData', ThickQ)
daspectm('m', 1000) % To exaggerate the height of the topography
Hope this is helpful and interesting.
-Cam
  1 件のコメント
Collin Tuttle
Collin Tuttle 2017 年 11 月 3 日
This worked! Thank you so much!!

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

その他の回答 (1 件)

Sean de Wolski
Sean de Wolski 2017 年 11 月 1 日
For scattered data which is what the column vectors are, use:
scatterm
If those data represent a grid but are oriented as single column vectors, then use geointerp to interpolate to a 2d grid and then call surfm or meshm.
  4 件のコメント
Sean de Wolski
Sean de Wolski 2017 年 11 月 1 日
Can you provide a small set of data?
Collin Tuttle
Collin Tuttle 2017 年 11 月 1 日
Yes, thank you! This is the entire geographic span. One vector for thickness, one for lat, and one for lon.

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

Community Treasure Hunt

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

Start Hunting!

Translated by