netCDF/OPeNDAP are the perfect file format/web service for gridded data. Gridded data exist in various flavours of complexity.
dimensions: lon = 3 ; lat = 5 ; variables: single VARIABLE(lon,lat), shape = [3 5] VARIABLE:grid_mapping = "wgs84" \\ lat-lon vectors with mapping info single lon(lon), shape = [3] single lat(lat), shape = [5] int32 wgs84([]), shape = [1] |
dimensions: x = 3 ; y = 5 ; variables: single VARIABLE(x,y), shape = [3 5] VARIABLE:coordinates = "lat lon" \\ here we optionally connect the full lat-lon grids VARIABLE:grid_mapping = "epsg" \\ here we choose the x-y sticks \\ x-y vectors with mapping info single x(x), shape = [3] x:grid_mapping = "epsg" single y(y), shape = [5] y:grid_mapping = "epsg" int32 epsg([]), shape = [1] \\ optional: add full lat-lon matrices as if it were a curvi-linear grid single lon(x,y), shape = [3 5] lon:grid_mapping = "wgs84" single lat(x,y), shape = [3 5] lat:grid_mapping = "wgs84" int32 wgs84([]), shape = [1] |
dimensions: j = 3 ; i = 5 ; variables: single VARIABLE(col,row), shape = [3 5] VARIABLE:coordinates = "lat lon" \\ here we connect the full lat-lon grids VARIABLE:grid_mapping = "wgs84" \\ mandatory: add full lat-lon matrices as if it were a curvi-linear grid single lon(col,row), shape = [3 5] lon:grid_mapping = "wgs84" single lat(col,row), shape = [3 5] lat:grid_mapping = "wgs84" int32 wgs84([]), shape = [1] |
dimensions: j = 3 ; i = 5 ; variables: single VARIABLE(col,row), shape = [3 5] VARIABLE:coordinates = "lat lon" \\ we can connect only one set of full coordinate matrices \\ VARIABLE:coordinates2 = "x y" \\ the other we can't connect within the CF standards VARIABLE:grid_mapping = "epsg" \\ define full lat-lon matrices single lon(col,row), shape = [3 5] lon:coordinates = "x y" lon:grid_mapping = "wgs84" single lat(col,row), shape = [3 5] lat:coordinates = "x y" lat:grid_mapping = "wgs84" int32 wgs84([]), shape = [1] \\ define full x-y matrices (extra) single x(col,row), shape = [3 5] x:grid_mapping = "epsg" single y(col,row), shape = [3 5] y:grid_mapping = "epsg" int32 epsg([]), shape = [1] |
For large areas with high resolutions often single netCDF files become too big. Also when there are large parts with _Fillvalue, netCDF3 files can become too large. netCDF4 of course solves this issue by allowing for internal zipping of variables, but not all applications can handle netCDF4 yet (arcGis 9.2, R for windows, ncBrowse,...). So tiling of the full coverage into sub netCDF files is a solution.
>> url = 'http://opendap.deltares.nl/thredds/catalog/opendap/rijkswaterstaat/vaklodingen/catalog.xml' >> L = opendap_catalog(url) >> disp(L{1}) ans = http://opendap.deltares.nl/thredds/dodsC/opendap/rijkswaterstaat/vaklodingen/vaklodingenKB138_0706.nc >> nc_dump(L{1}) |
Most 'GIS'-minded people produce grids without a time dimension, but simply with some kind of time annotation. This does not easily allow to automatic processing of temporal data. Instead, model output, spatially binned remote sensing products and repeated depth sounding products do produce datasets with a clear and explicit time dimension.