I checked with John Evans and he said a related problem surfaced recently and needed changes to the mexnc and snctools download. I updated that from sourceforge and now things are basically working.
However, two other problems arose.
The first is that nc_read doesn't have an option to handle the character type variable 'spherical' so I added that to nc_read:
Code: Select all
des003:myroms wilkin$ svn diff
Index: utility/nc_read.m
===================================================================
--- utility/nc_read.m (revision 357)
+++ utility/nc_read.m (working copy)
@@ -319,6 +319,8 @@
[f,status]=mexnc('get_var_float' ,ncid,varid);
elseif (nctype == NC_INT),
[f,status]=mexnc('get_var_int' ,ncid,varid);
+ elseif (nctype == NC_CHAR),
+ [f,status]=mexnc('get_var_text' ,ncid,varid);
else,
[f,status]=mexnc('ncvarget1' ,ncid,varid,[0]);
end,
The second issue is that matlab command "strmatch" returns [] if there is no match, and this fails the logical test to read a coastline file. If a grid file has coastline data already in it (as variables lon_coast and lat_coast) it won't trip this error. So I modified editmask to catch this case.
Now I'm in back business, using editmask on my Macbook with Matlab version
7.7.0.471 (R2008b)
Code: Select all
Index: landmask/editmask.m
===================================================================
--- landmask/editmask.m (revision 357)
+++ landmask/editmask.m (working copy)
@@ -279,7 +279,8 @@
got_Clon=strmatch('lon_coast',varnam);
got_Clat=strmatch('lat_coast',varnam);
- if (~(got_Clon & got_Clat)),
+ %if (~(got_Clon & got_Clat)),
+ if isempty(got_Clon) | isempty(got_Clat)
if (any(coast_file=='*')),
[fn,pth]=uigetfile(coast_file,'Select Coastline file...');
if (~fn),