function netcdf_gps(mooringDirectory, ncFilename, mooring) % NETCDF_GPS - create a netcdf file from pCO2 data % % Use as: netcdf_gps(mooringDirectory, ncFilename, mooring) % % Inputs: mooringDirectory = Root directory of mooring directory tree % for example '\\tsunami.shore.mbari.org\oasis\m1' % ncFilename = Name of the netcdf file to be created. The file % created adheres to the COARDS and MBARI conventions % mooring = Id for the mooring. Example: 'M1'. This string is used to search % for properties in \\tsunami.shore.mbari.org\oasis\cfg\mooring.properties % file. % Brian Schlining % 20 Jul 2000 %=========== % Open File %=========== outfile = netcdf(ncFilename, 'clobber'); % outfile is a netcdf object if isempty(outfile) error(['Unable to create ' ncFilename]); end if nargin < 3 mooring = upper(input('Enter mooring ID: ')); % Needed to specify mooring location end %=================================================================== % Get the type of reader to use from the properties file and use it %=================================================================== prop = readProperties(fullfile(getOasisPath, 'cfg', 'mooring.properties')); gpsType = getProperty(prop, [lower(mooring) '.gps.type']); gps = readgps(fullfile(mooringDirectory, 'data', 'gps'), gpsType); %================================================================= % Construct Netcdf schema for a single microcat on eqpac moorings %================================================================= [Year Month Day] = datevec(now); dateS = sprintf('%02i/%02i/%04i', Month, Day, Year); % Add global Attributes outfile.conventions = 'MBARI/timeSeries/mooring/gps'; outfile.creationDate = dateS; outfile.lastModified = dateS; fprintf(1,'Creating netcdf schema') outfile.mooring = mooring; outfile.description = 'Mooring gps data'; % Give location based on user input lon = str2num(getProperty(prop, [lower(mooring) '.longitude'])); if lon < 0 lonS = [num2str(abs(lon)) 'W']; else lonS = [num2str(lon) 'E']; end lat = str2num(getProperty(prop, [lower(mooring) '.latitude'])); if lat < 0 latS = [num2str(abs(lat)) 'S']; else latS = [num2str(lat) 'N']; end outfile.longitude = lonS; outfile.latitude = latS; outfile.waterDepth = getProperty(prop, [lower(mooring) '.waterdepth']); outfile.keywords = 'pCO2'; outfile.instumentType = 'pCO2 Can'; outfile('latitude') = 1; % Dimension outfile{'latitude'} = ncdouble('latitude'); % Specify Co-ordinate variable dimensions outfile{'latitude'}.long_name = 'Latitude'; outfile{'latitude'}.units = 'degrees_north'; outfile{'latitude'}(:) = lat; outfile('longitude') = 1; % Dimension outfile{'longitude'} = ncdouble('longitude'); % Specify Co-ordinate variable dimensions outfile{'longitude'}.long_name = 'Longitude'; outfile{'longitude'}.units = 'degrees_east'; outfile{'longitude'}(:) = lon; outfile('depth') = 1; % Dimension outfile{'depth'} = ncdouble('depth'); % Specify Co-ordinate variable dimensions outfile{'depth'}.long_name = 'Depth'; outfile{'depth'}.units = 'meters'; outfile{'depth'}.positive = 'down'; outfile{'depth'}(:) = 0; outfile('time') = 0; % Define Unlimited dimension outfile{'time'} = ncdouble('time'); outfile{'time'}.long_name = 'time GMT'; outfile{'time'}.units = 'seconds since 1970-01-01 00:00:00'; outfile{'lat'} = ncfloat('time','depth','longitude','latitude'); outfile{'lat'}.long_name = 'GPS Latitude'; outfile{'lat'}.units = 'degrees_north'; outfile{'lat'}.symbol = 'Lat'; outfile{'lat'}.FillValue_ = -999; outfile{'lat'}.missing_value = -999; outfile{'lon'} = ncfloat('time','depth','longitude','latitude'); outfile{'lon'}.long_name = 'GPS Longitude'; outfile{'lon'}.units = 'degrees_east'; outfile{'lon'}.symbol = 'Lon'; outfile{'lon'}.FillValue_ = -999; outfile{'lon'}.missing_value = -999; outfile{'stdDev'} = ncfloat('time','depth','longitude','latitude'); outfile{'stdDev'}.long_name = 'Standard deviation of position'; outfile{'stdDev'}.units = 'meters'; outfile{'stdDev'}.symbol = 'null'; outfile{'stdDev'}.FillValue_ = -999; outfile{'stdDev'}.missing_value = -999; outfile{'numOfSamples'} = ncfloat('time','depth','longitude','latitude'); outfile{'numOfSamples'}.long_name = 'Number of Samples taken to yeild position'; outfile{'numOfSamples'}.units = 'null'; outfile{'numOfSamples'}.symbol = 'n'; outfile{'numOfSamples'}.FillValue_ = -999; outfile{'numOfSamples'}.missing_value = -999; outfile{'time'}(1:length(gps(:,1))) = sdn2utc(gps(:,1)); outfile{'lat'}(:) = gps(:,2); outfile{'lon'}(:) = gps(:,3); outfile{'stdDev'}(:) = gps(:,4); outfile{'numOfSamples'}(:) = gps(:,5); ncquit(outfile)