Problems with showing geolocated data with geoshow. Error in Zdata

11 visualizzazioni (ultimi 30 giorni)
Hi. I have a number of netCDF files containing geolocated satellite data that I need to plot and analyze, but I’m having some difficulties doing so. For example I have a file called COTdm201101010000001230023301MA.nc containing optical cloud thickness for a specific time. This is how I try to open and read it:
netCDF_info = ncinfo('COTdm201101010000001230023301MA.nc');
lat = ncread('COTdm201101010000001230023301MA.nc','lat');
lon = ncread('COTdm201101010000001230023301MA.nc','lon');
cot = ncread('COTdm201101010000001230023301MA.nc','cot');
And at this point everything works and I have one variable “lat” with 3600 latitude values from -90° to +90°. Another one called “lon” also with 3600 values from -90° to +90° and finally a variable called “cot” with 3600x3600 values for cloud thickness.
If I understand the documentation behind the mapping toolbox correctly this should be a simple matter of using “geoshow(lat,lon,Z)”, which in this case would be “ geoshow(lat,lon,cot) ”. But when I do this I get the error:
Warning: Error creating or updating Surface
Error in value of property ZData
Array is wrong shape or size
Which I don’t really understand, to me the array seems to have exactly the correct shape. What am I doing wrong here? I should also mention that there are some gaps in the cot variable that are “NaN” if I look inside the variable, could that be the problem or am I just doing something fundamentally wrong with the geoshow? Maybe it is that my data isn’t covering the entire globe and geoshow expects it to do so?
  2 Commenti
Rob Comer
Rob Comer il 12 Feb 2015
Can you say what size(lat), size(lon), and size(cot) are?
PetterS
PetterS il 17 Feb 2015
yes.
size(lat)= 3600 1
size(lon)= 3600 1
size(cot)= 3600 3600
I suspected that the problem could be that both lat and long are in the format 3600x1 and instead they should be 3600x1 and 1x3600 respectively, but I believe that I have tried to transpose them in all combinations that I can think of and it doesn’t matter.

Accedi per commentare.

Risposta accettata

Chad Greene
Chad Greene il 19 Feb 2015
Use meshgrid.
[latgrid,longrid] = meshgrid(lat,lon);
geoshow(latgrid,longrid,cot,'DisplayType','texturemap')

Più risposte (1)

Kelly Luetkemeyer
Kelly Luetkemeyer il 12 Feb 2015
You can explicitly tell geoshow to treat your data as a surface. Try either of these commands:
geoshow(lat,lon,cot,'DisplayType','surface')
or
geoshow(lat,lon,cot,'DisplayType','texturemap')
  1 Commento
PetterS
PetterS il 12 Feb 2015
I tried both commands but unfortunately I’m getting exactly the same error message as before

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by