Changes between Version 6 and Version 7 of PointObservationConventions


Ignore:
Timestamp:
10/26/09 10:11:33 (10 years ago)
Author:
caron
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PointObservationConventions

    v6 v7  
    904904    time:long_name = "time" ;
    905905    time:units = "days since 1970-01-01 00:00:00" ;
     906  int stationIndex(profile) ;
     907    stationIndex:long_name = "which station this obs is for" ;
     908    stationIndex:standard_name = "ragged_parentIndex" ;
     909  int rowSize(profile) ;
     910    rowSize:long_name = "number of obs for this profile " ;
     911    rowSize:standard_name = "ragged_rowSize" ;
     912
     913  float z(obs) ;
     914    z:long_name = "height above mean sea level" ;
     915    z:units = "km" ;
     916    z:positive = "up" ;
     917
     918  float pressure(obs) ;
     919    pressure:long_name = "pressure level" ;
     920    pressure:units = "hPa" ;
     921    pressure:coordinates = "time lon lat z" ;
     922
     923  float temperature(obs) ;
     924    temperature:long_name = "skin temperature" ;
     925    temperature:units = "Celsius" ;
     926    temperature:coordinates = "time lon lat z" ;
     927
     928  float humidity(obs) ;
     929    humidity:long_name = "relative humidity" ;
     930    humidity:units = "%" ;
     931    humidity:coordinates = "time lon lat z" ;
     932
     933attributes:
     934  :CF\:featureType = "stationProfile";
     935}}}
     936
     937The profile is associated with a station using the stationIndex(profile). For each profile, the observations must be written contiguously.
     938
     939The pressure(i), temperature(i), and humidity(i) data is associated with the coordinate values time(p), z(i), lat(s), and lon(s). The time coordinate may depend on z also, eg time(obs) instead of time(profile).
     940
     941=== 9.6.4 Flattened representation of multidimensional profiles ===
     942
     943A variation of multidimensional profiles (9.5.1) allows these to be associated into a station time series. The station information (lat, lon, id) is repeated in each profile:
     944
     945{{{
     946dimensions:
     947  z = 42 ;
     948  profile = 142 ;
     949
     950variables:
     951  int profile(profile) ;
     952     profile:standard_name = "profile_id";
     953  double time(profile);
     954    time:long_name = "time" ;
     955    time:units = "days since 1970-01-01 00:00:00" ;
     956  float lon(profile);
     957    lon:long_name = "longitude" ;
     958    lon:units = "degrees_east" ;
     959  float lat(profile);
     960    lat:long_name = "latitude" ;
     961    lat:units = "degrees_north" ;
     962  char station_name(profile, name_strlen) ;
     963    station_name:long_name = "station name" ;
     964    station_name:standard_name = "station_id";
     965
     966  float alt(profile, z) ;
     967    alt:long_name = "height above mean sea level" ;
     968    alt:units = "km" ;
     969    alt:positive = "up" ;
     970
     971  float pressure(profile, z) ;
     972    pressure:long_name = "pressure level" ;
     973    pressure:units = "hPa" ;
     974    pressure:coordinates = "time lon lat alt" ;
     975
     976  float temperature(profile, z) ;
     977    temperature:long_name = "skin temperature" ;
     978    temperature:units = "Celsius" ;
     979    temperature:coordinates = "time lon lat alt" ;
     980
     981  float humidity(profile, z) ;
     982    humidity:long_name = "relative humidity" ;
     983    humidity:units = "%" ;
     984    humidity:coordinates = "time lon lat alt" ;
     985
     986attributes:
     987  :CF\:featureType = "stationProfile";
     988}}}
     989
     990This is the same as 9.5.1, except that a station_id variable is added for each profile, which associates the profile to a station. The station information is repeated for each profile and should be the same for all profiles with the same station_id.
     991
     992== 9.7 Section Profile Data ==
     993
     994When profiles are taken along a trajectory, one gets a time series of profiles called a section. This looks like a collection of profiles (see 9.5), except that the profile locations are assumed to be a connected set of points along the trajectory.
     995
     996=== 9.7.1 Multidimensional representation ===
     997
     998If there are the same number of profiles for all trajectories, and the same number of vertical levels for every profile, one can use the multidimensional representation:
     999
     1000{{{
     1001dimensions:
     1002  section = 22 ;
     1003  profile = 33;
     1004  z = 42 ;
     1005
     1006variables:
     1007  int section(section) ;
     1008    section:standard_name = "section id" ;
     1009  float lon(section, profile) ;
     1010    lon:units = "degrees_east";
     1011  float lat(section, profile) ;
     1012    lat:long_name = "station latitude" ;
     1013    lat:units = "degrees_north" ;
     1014
     1015  float alt(section, profile , z) ;
     1016    alt:long_name = "height above mean sea level" ;
     1017    alt:units = "km" ;
     1018    alt:positive = "up" ;
     1019
     1020  double time(section, profile ) ;
     1021    time:long_name = "time of measurement" ;
     1022    time:units = "days since 1970-01-01 00:00:00" ;
     1023    time:missing_value = -999.9;
     1024
     1025  float pressure(section, profile , z) ;
     1026    pressure:long_name = "pressure level" ;
     1027    pressure:units = "hPa" ;
     1028    pressure:coordinates = "time lon lat alt" ;
     1029
     1030  float temperature(section, profile , z) ;
     1031    temperature:long_name = "skin temperature" ;
     1032    temperature:units = "Celsius" ;
     1033    temperature:coordinates = "time lon lat alt" ;
     1034
     1035  float humidity(section, profile , z) ;
     1036    humidity:long_name = "relative humidity" ;
     1037    humidity:units = "%" ;
     1038    humidity:coordinates = "time lon lat alt" ;
     1039
     1040attributes:
     1041 :CF\:featureType = "section";
     1042}}}
     1043
     1044The pressure(s,p,i), temperature(s,p,i), and humidity(s,p,i) data is associated with the coordinate values time(s,p), alt(s,p,i), lat(s,p), and lon(s,p).
     1045
     1046The time coordinate may depend on z also, eg time(section,profile,z). If all of the profiles use the same z coordinate, alt(section, profile, z) may be factored out into z(z).
     1047
     1048When there are varying number of profiles for different sections, use time(section, profile) with missing values. When there are varying number of levels for different profiles, use alt(section, profile, z) with missing values.
     1049
     1050=== 9.7.2 Single section in the file ===
     1051
     1052If there is only one section in the file, one can use a variation of the 9.7.1 which removes the section dimension:
     1053
     1054{{{
     1055dimensions:
     1056  profile = 33;
     1057  z = 42 ;
     1058
     1059variables:
     1060  int section ;
     1061    section:standard_name = "section id" ;
     1062  float lon(profile) ;
     1063    lon:units = "degrees_east";
     1064  float lat(profile) ;
     1065    lat:long_name = "station latitude" ;
     1066    lat:units = "degrees_north" ;
     1067
     1068  float alt(profile , z) ;
     1069    alt:long_name = "height above mean sea level" ;
     1070    alt:units = "km" ;
     1071    alt:positive = "up" ;
     1072
     1073  double time(profile ) ;
     1074    time:long_name = "time of measurement" ;
     1075    time:units = "days since 1970-01-01 00:00:00" ;
     1076    time:missing_value = -999.9;
     1077
     1078  float pressure(profile , z) ;
     1079    pressure:long_name = "pressure level" ;
     1080    pressure:units = "hPa" ;
     1081    pressure:coordinates = "time lon lat alt" ;
     1082
     1083  float temperature(profile , z) ;
     1084    temperature:long_name = "skin temperature" ;
     1085    temperature:units = "Celsius" ;
     1086    temperature:coordinates = "time lon lat alt" ;
     1087
     1088  float humidity(profile , z) ;
     1089    humidity:long_name = "relative humidity" ;
     1090    humidity:units = "%" ;
     1091    humidity:coordinates = "time lon lat alt" ;
     1092
     1093attributes:
     1094 :CF\:featureType = "section";
     1095}}}
     1096
     1097=== 9.7.3 Ragged array of section data ===
     1098
     1099When the number of profiles and levels for each station varies, one can use the ragged array representation. This uses the contiguous ragged array representation for profiles (9.5.3), and adds section information with section indexes:
     1100
     1101{{{
     1102dimensions:
     1103  obs = UNLIMITED ;
     1104  profiles = 142 ;
     1105  sections= 3;
     1106
     1107variables:
     1108  int section ;
     1109    section:standard_name = "section id" ;
     1110
     1111  int profile(profile) ;
     1112    profile:standard_name = "profile_id";
     1113  double time(profile);
     1114    time:long_name = "time" ;
     1115    time:units = "days since 1970-01-01 00:00:00" ;
    9061116  float lon(profile);
    9071117    lon:long_name = "longitude" ;
     
    9101120    lat:long_name = "latitude" ;
    9111121    lat:units = "degrees_north" ;
    912   int stationIndex(profile) ;
    913     stationIndex:long_name = "which station this obs is for" ;
    914     stationIndex:standard_name = "ragged_parentIndex" ;
    9151122  int rowSize(profile) ;
    9161123    rowSize:long_name = "number of obs for this profile " ;
    9171124    rowSize:standard_name = "ragged_rowSize" ;
     1125  int sectionIndex(profile) ;
     1126    sectionIndex:long_name = "which section this profileis for" ;
     1127    sectionIndex:standard_name = "ragged_parentIndex" ;
    9181128
    9191129  float z(obs) ;
     
    9381148
    9391149attributes:
    940   :CF\:featureType = "stationProfile";
    941 }}}
    942 
    943 The profile is associated with a station using the stationIndex(profile). For each profile, the observations must be written contiguously.
    944 
    945 The pressure(i), temperature(i), and humidity(i) data is associated with the coordinate values time(p), z(i), lat(s), and lon(s). The time coordinate may depend on z also, eg time(obs) instead of time(profile).
    946 
    947 === 9.6.4 Flattened representation of multidimensional profiles ===
    948 
    949 A variation of multidimensional profiles (9.5.1) allows these to be associated into a station time series. The station information (lat, lon, id) is repeated in each profile:
     1150  :CF\:featureType = "section";
     1151}}}
     1152
     1153The profile is associated with a section using the sectionIndex(profile). For each profile, the observations must be written contiguously.
     1154
     1155The pressure(i), temperature(i), and humidity(i) data is associated with the coordinate values time(p), z(i), lat(p), and lon(p). The time coordinate may depend on z also, eg time(obs) instead of time(profile).
     1156
     1157=== 9.7.4 Flattened representation of multidimensional profiles ===
     1158
     1159A variation of multidimensional profiles (9.5.1) allows these to be associated into a section. The station information:
    9501160
    9511161{{{
     
    9661176    lat:long_name = "latitude" ;
    9671177    lat:units = "degrees_north" ;
    968   char station_name(profile, name_strlen) ;
    969     station_name:long_name = "station name" ;
    970     station_name:standard_name = "station_id";
     1178  int sectionId(profile) ;
     1179    sectionIndex:long_name = "which section this profile is for" ;
     1180    sectionIndex:standard_name = "section_id" ;
    9711181
    9721182  float alt(profile, z) ;
     
    9941204}}}
    9951205
    996 This is the same as 9.5.1, except that a station_id variable is added for each profile, which associates the profile to a station. The station information is repeated for each profile and should be the same for all profiles with the same station_id.
    997 
    998 == 9.7 Section Profile Data ==
    999 
    1000 When profiles are taken along a trajectory, one gets a time series of profiles called a section. This looks like a collection of profiles (see 9.5), except that the profile locations are assumed to be a connected set of points along the trajectory.
    1001 
    1002 === 9.7.1 Multidimensional representation ===
    1003 
    1004 If there are the same number of profiles for all trajectories, and the same number of vertical levels for every profile, one can use the multidimensional representation:
    1005 
    1006 {{{
    1007 dimensions:
    1008   section = 22 ;
    1009   profile = 33;
    1010   z = 42 ;
    1011 
    1012 variables:
    1013   float lon(section, profile) ;
    1014     lon:units = "degrees_east";
    1015   float lat(section, profile) ;
    1016     lat:long_name = "station latitude" ;
    1017     lat:units = "degrees_north" ;
    1018   int section(section) ;
    1019     section:standard_name = "section id" ;
    1020 
    1021   float alt(section, profile , z) ;
    1022     alt:long_name = "height above mean sea level" ;
    1023     alt:units = "km" ;
    1024     alt:positive = "up" ;
    1025 
    1026   double time(section, profile ) ;
    1027     time:long_name = "time of measurement" ;
    1028     time:units = "days since 1970-01-01 00:00:00" ;
    1029     time:missing_value = -999.9;
    1030 
    1031   float pressure(section, profile , z) ;
    1032     pressure:long_name = "pressure level" ;
    1033     pressure:units = "hPa" ;
    1034     pressure:coordinates = "time lon lat alt" ;
    1035 
    1036   float temperature(section, profile , z) ;
    1037     temperature:long_name = "skin temperature" ;
    1038     temperature:units = "Celsius" ;
    1039     temperature:coordinates = "time lon lat alt" ;
    1040 
    1041   float humidity(section, profile , z) ;
    1042     humidity:long_name = "relative humidity" ;
    1043     humidity:units = "%" ;
    1044     humidity:coordinates = "time lon lat alt" ;
    1045 
    1046 attributes:
    1047  :CF\:featureType = "section";
    1048 }}}
    1049 
    1050 The pressure(s,p,i), temperature(s,p,i), and humidity(s,p,i) data is associated with the coordinate values time(s,p), alt(s,p,i), lat(s,p), and lon(s,p).
    1051 
    1052 The time coordinate may depend on z also, eg time(section,profile,z). If all of the profiles use the same z coordinate, alt(section, profile, z) may be factored out into z(z).
    1053 
    1054 When there are varying number of profiles for different sections, use time(section, profile) with missing values. When there are varying number of levels for different profiles, use alt(section, profile, z) with missing values.
    1055 
    1056 === 9.7.2 Single section in the file ===
    1057 
    1058 If there is only one section in the file, one can use a variation of the Multidimensional representation which removes the section dimension:
    1059 
    1060 {{{
    1061 dimensions:
    1062   profile = 33;
    1063   z = 42 ;
    1064 
    1065 variables:
    1066   float lon(profile) ;
    1067     lon:units = "degrees_east";
    1068   float lat(profile) ;
    1069     lat:long_name = "station latitude" ;
    1070     lat:units = "degrees_north" ;
    1071   int section ;
    1072     section:standard_name = "section id" ;
    1073 
    1074   float alt(profile , z) ;
    1075     alt:long_name = "height above mean sea level" ;
    1076     alt:units = "km" ;
    1077     alt:positive = "up" ;
    1078 
    1079   double time(profile ) ;
    1080     time:long_name = "time of measurement" ;
    1081     time:units = "days since 1970-01-01 00:00:00" ;
    1082     time:missing_value = -999.9;
    1083 
    1084   float pressure(profile , z) ;
    1085     pressure:long_name = "pressure level" ;
    1086     pressure:units = "hPa" ;
    1087     pressure:coordinates = "time lon lat alt" ;
    1088 
    1089   float temperature(profile , z) ;
    1090     temperature:long_name = "skin temperature" ;
    1091     temperature:units = "Celsius" ;
    1092     temperature:coordinates = "time lon lat alt" ;
    1093 
    1094   float humidity(profile , z) ;
    1095     humidity:long_name = "relative humidity" ;
    1096     humidity:units = "%" ;
    1097     humidity:coordinates = "time lon lat alt" ;
    1098 
    1099 attributes:
    1100  :CF\:featureType = "section";
    1101 }}}
    1102 
    1103 
    1104 === 9.7.3 Ragged array of sections ===
    1105 
    1106 When the number of profiles and levels for each station varies, one can use the ragged array representation. This uses the contiguous ragged array representation for profiles (9.5.3), and adds the (factored out) station information with station indexes (9.2.4):
    1107 
    1108 {{{
    1109 dimensions:
    1110   obs = UNLIMITED ;
    1111   profiles = 1420 ;
    1112   stations = 42;
    1113 
    1114 variables:
    1115   float lon(station) ;
    1116     lon:long_name = "station longitude";
    1117     lon:units = "degrees_east";
    1118   float lat(station) ;
    1119     lat:long_name = "station latitude" ;
    1120     lat:units = "degrees_north" ;
    1121   float alt(station) ;
    1122     alt:long_name = "altitude above MSL" ;
    1123     alt:units = "m" ;
    1124   char station_name(station, name_strlen) ;
    1125     station_name:long_name = "station name" ;
    1126     station_name:standard_name = "station_id";
    1127   int station_info(station) ;
    1128     station_info:long_name = "some kind of station info" ;
    1129 
    1130   int profile(profile) ;
    1131     profile:standard_name = "profile_id";
    1132   double time(profile);
    1133     time:long_name = "time" ;
    1134     time:units = "days since 1970-01-01 00:00:00" ;
    1135   float lon(profile);
    1136     lon:long_name = "longitude" ;
    1137     lon:units = "degrees_east" ;
    1138   float lat(profile);
    1139     lat:long_name = "latitude" ;
    1140     lat:units = "degrees_north" ;
    1141   int stationIndex(profile) ;
    1142     stationIndex:long_name = "which station this obs is for" ;
    1143     stationIndex:standard_name = "ragged_parentIndex" ;
    1144   int rowSize(profile) ;
    1145     rowSize:long_name = "number of obs for this profile " ;
    1146     rowSize:standard_name = "ragged_rowSize" ;
    1147 
    1148   float z(obs) ;
    1149     z:long_name = "height above mean sea level" ;
    1150     z:units = "km" ;
    1151     z:positive = "up" ;
    1152 
    1153   float pressure(obs) ;
    1154     pressure:long_name = "pressure level" ;
    1155     pressure:units = "hPa" ;
    1156     pressure:coordinates = "time lon lat z" ;
    1157 
    1158   float temperature(obs) ;
    1159     temperature:long_name = "skin temperature" ;
    1160     temperature:units = "Celsius" ;
    1161     temperature:coordinates = "time lon lat z" ;
    1162 
    1163   float humidity(obs) ;
    1164     humidity:long_name = "relative humidity" ;
    1165     humidity:units = "%" ;
    1166     humidity:coordinates = "time lon lat z" ;
    1167 
    1168 attributes:
    1169   :CF\:featureType = "stationProfile";
    1170 }}}
    1171 
    1172 The profile is associated with a station using the stationIndex(profile). For each profile, the observations must be written contiguously.
    1173 
    1174 The pressure(i), temperature(i), and humidity(i) data is associated with the coordinate values time(p), z(i), lat(s), and lon(s). The time coordinate may depend on z also, eg time(obs) instead of time(profile).
    1175 
    1176 === 9.6.4 Flattened representation of multidimensional profiles ===
    1177 
    1178 A variation of multidimensional profiles (9.5.1) allows these to be associated into a station time series. The station information (lat, lon, id) is repeated in each profile:
    1179 
    1180 {{{
    1181 dimensions:
    1182   z = 42 ;
    1183   profile = 142 ;
    1184 
    1185 variables:
    1186   int profile(profile) ;
    1187      profile:standard_name = "profile_id";
    1188   double time(profile);
    1189     time:long_name = "time" ;
    1190     time:units = "days since 1970-01-01 00:00:00" ;
    1191   float lon(profile);
    1192     lon:long_name = "longitude" ;
    1193     lon:units = "degrees_east" ;
    1194   float lat(profile);
    1195     lat:long_name = "latitude" ;
    1196     lat:units = "degrees_north" ;
    1197   char station_name(profile, name_strlen) ;
    1198     station_name:long_name = "station name" ;
    1199     station_name:standard_name = "station_id";
    1200 
    1201   float alt(profile, z) ;
    1202     alt:long_name = "height above mean sea level" ;
    1203     alt:units = "km" ;
    1204     alt:positive = "up" ;
    1205 
    1206   float pressure(profile, z) ;
    1207     pressure:long_name = "pressure level" ;
    1208     pressure:units = "hPa" ;
    1209     pressure:coordinates = "time lon lat alt" ;
    1210 
    1211   float temperature(profile, z) ;
    1212     temperature:long_name = "skin temperature" ;
    1213     temperature:units = "Celsius" ;
    1214     temperature:coordinates = "time lon lat alt" ;
    1215 
    1216   float humidity(profile, z) ;
    1217     humidity:long_name = "relative humidity" ;
    1218     humidity:units = "%" ;
    1219     humidity:coordinates = "time lon lat alt" ;
    1220 
    1221 attributes:
    1222   :CF\:featureType = "stationProfile";
    1223 }}}
    1224 
    1225 This is the same as 9.5.1, except that a station_id variable is added for each profile, which associates the profile to a station. The station information is repeated for each profile and should be the same for all profiles with the same station_id.
    1226 
    1227 == 9.7 Section Profile Data ==
    1228 
    1229 When profiles are taken along a trajectory, one gets a time series of profiles called a section. This looks like a collection of profiles (see 9.5), except that the profile locations are a connected set of points along a trajectory.
    1230 
    1231 === 9.7.1 Multidimensional representation ===
    1232 
    1233 If the vertical levels are the same for each profile, one can use a multidimensional representation:
    1234 
    1235 {{{
    1236 dimensions:
    1237   z = 42 ;
    1238   time = UNLIMITED ;
    1239 
    1240 variables:
    1241   float z(z) ;
    1242     z:long_name = "height above mean sea level" ;
    1243     z:units = "km" ;
    1244     z:positive = "up" ;
    1245 
    1246   double time(time);
    1247     time:long_name = "time" ;
    1248     time:units = "days since 1970-01-01 00:00:00" ;
    1249   float lon(time);
    1250     lon:long_name = "longitude" ;
    1251     lon:units = "degrees_east" ;
    1252   float lat(time);
    1253     lat:long_name = "latitude" ;
    1254     lat:units = "degrees_north" ;
    1255 
    1256   float pressure(time, z) ;
    1257     pressure:long_name = "pressure level" ;
    1258     pressure:units = "hPa" ;
    1259     pressure:coordinates = "time lon lat z" ;
    1260 
    1261   float temperature(time, z) ;
    1262     temperature:long_name = "skin temperature" ;
    1263     temperature:units = "Celsius" ;
    1264     temperature:coordinates = "time lon lat z" ;
    1265 
    1266   float humidity(time, z) ;
    1267     humidity:long_name = "relative humidity" ;
    1268     humidity:units = "%" ;
    1269     humidity:coordinates = "time lon lat z" ;
    1270 
    1271 attributes:
    1272   :CF\:featureType = "section";
    1273 }}}
    1274 
    1275 
    1276 The pressure(i,j), temperature(i,j), and humidity(i,j) data is associated with the coordinate values time(i), z(j), lat(i), and lon(i).
    1277 
    1278 === 5.8.6.2 Ragged Array ===
    1279 
    1280 When the vertical levels vary across profiles, one can use(continguous or non-contiguous) ragged arrays to connect the observations to the profiles. Here we show the non-contiguous case:
    1281 
    1282 
    1283 {{{
    1284 dimensions:
    1285   obs = UNLIMITED ;
    1286   profile = 123
    1287 
    1288 variables:
    1289   double time(profile);
    1290     time:long_name = "time" ;
    1291     time:units = "days since 1970-01-01 00:00:00" ;
    1292   float lon(profile);
    1293     lon:long_name = "longitude" ;
    1294     lon:units = "degrees_east" ;
    1295   float lat(profile);
    1296     lat:long_name = "latitude" ;
    1297     lat:units = "degrees_north" ;
    1298   int profileIndex(obs) ;
    1299     profileIndex:long_name = "profile index for this level" ;
    1300     profileIndex:standard_name = "ragged_parentIndex" ;
    1301 
    1302   float z(obs) ;
    1303     z:long_name = "height above mean sea level" ;
    1304     z:units = "km" ;
    1305     z:positive = "up" ;
    1306 
    1307   float pressure(obs) ;
    1308     pressure:long_name = "pressure level" ;
    1309     pressure:units = "hPa" ;
    1310     pressure:coordinates = "time lon lat z" ;
    1311 
    1312   float temperature(obs) ;
    1313     temperature:long_name = "skin temperature" ;
    1314     temperature:units = "Celsius" ;
    1315     temperature:coordinates = "time lon lat z" ;
    1316 
    1317   float humidity(obs) ;
    1318     humidity:long_name = "relative humidity" ;
    1319     humidity:units = "%" ;
    1320     humidity:coordinates = "time lon lat z" ;
    1321 
    1322 attributes:
    1323   :CF\:featureType = "profileSection";
    1324 }}}
    1325 
    1326 
    1327 The pressure(i), temperature(i), and humidity(i) data is associated with the coordinate values time(p), z(i), lat(p), and lon(p), where p = profile_index(i).
     1206This is the same as 9.5.1, except that a section_id variable is added for each profile, which associates the profile to a section.