@@ -1220,22 +1220,28 @@ void OfflineMap::Apply(
12201220 if (m_vecTargetDimNames[1 ] == " lon" ) {
12211221 dimLon = dim1;
12221222 }
1223- NcVar * varLon =
1224- ncTarget.add_var (" lon" , ncDouble, dimLon);
1225-
1223+ NcVar * varLon = ncTarget.get_var (" lon" );
12261224 if (varLon == NULL ) {
1227- _EXCEPTIONT (" Cannot create variable \" lon\" in target file" );
1228- }
1225+ varLon = ncTarget.add_var (" lon" , ncDouble, dimLon);
1226+ if (varLon == NULL ) {
1227+ _EXCEPTIONT (" Cannot create variable \" lon\" in target file" );
1228+ }
1229+
1230+ varLon->put (
1231+ &(m_dVectorTargetCenterLon[0 ]),
1232+ m_dVectorTargetCenterLon.GetRows ());
12291233
1230- varLon->put (
1231- &(m_dVectorTargetCenterLon[0 ]),
1232- m_dVectorTargetCenterLon.GetRows ());
1234+ varLon->add_att (" bounds" , " lon_bnds" );
1235+ varLon->add_att (" units" , " degrees_east" );
1236+ varLon->add_att (" axis" , " X" );
1237+ varLon->add_att (" long_name" , " longitude" );
1238+ varLon->add_att (" standard_name" , " longitude" );
12331239
1234- varLon-> add_att ( " bounds " , " lon_bnds " );
1235- varLon->add_att ( " units " , " degrees_east " );
1236- varLon-> add_att ( " axis " , " X " );
1237- varLon-> add_att ( " long_name " , " longitude " );
1238- varLon-> add_att ( " standard_name " , " longitude " );
1240+ } else {
1241+ if ( varLon->get_dim ( 0 )-> size () != dimLon-> size ()) {
1242+ _EXCEPTIONT ( " \" lon \" variable mismatch " );
1243+ }
1244+ }
12391245
12401246 NcDim * dimLat;
12411247 if (m_vecTargetDimNames[0 ] == " lat" ) {
@@ -1244,34 +1250,42 @@ void OfflineMap::Apply(
12441250 if (m_vecTargetDimNames[1 ] == " lat" ) {
12451251 dimLat = dim1;
12461252 }
1247- NcVar * varLat =
1248- ncTarget.add_var (" lat" , ncDouble, dimLat);
1249-
1253+ NcVar * varLat = ncTarget.get_var (" lat" );
12501254 if (varLat == NULL ) {
1251- _EXCEPTIONT (" Cannot create variable \" lat\" in target file" );
1252- }
1255+ varLat = ncTarget.add_var (" lat" , ncDouble, dimLat);
1256+ if (varLat == NULL ) {
1257+ _EXCEPTIONT (" Cannot create variable \" lat\" in target file" );
1258+ }
1259+
1260+ varLat->put (
1261+ &(m_dVectorTargetCenterLat[0 ]),
1262+ m_dVectorTargetCenterLat.GetRows ());
12531263
1254- varLat->put (
1255- &(m_dVectorTargetCenterLat[0 ]),
1256- m_dVectorTargetCenterLat.GetRows ());
1264+ varLat->add_att (" bounds" , " lat_bnds" );
1265+ varLat->add_att (" units" , " degrees_north" );
1266+ varLat->add_att (" axis" , " Y" );
1267+ varLat->add_att (" long_name" , " latitude" );
1268+ varLat->add_att (" standard_name" , " latitude" );
12571269
1258- varLat-> add_att ( " bounds " , " lat_bnds " );
1259- varLat->add_att ( " units " , " degrees_north " );
1260- varLat-> add_att ( " axis " , " Y " );
1261- varLat-> add_att ( " long_name " , " latitude " );
1262- varLat-> add_att ( " standard_name " , " latitude " );
1270+ } else {
1271+ if ( varLat->get_dim ( 0 )-> size () != dimLat-> size ()) {
1272+ _EXCEPTIONT ( " \" lat \" variable mismatch " );
1273+ }
1274+ }
12631275
12641276 // Output bounds variables
12651277 if ((m_dVectorTargetBoundsLon.GetRows () != 0 ) &&
1266- (m_dVectorTargetBoundsLat.GetRows () != 0 )
1278+ (m_dVectorTargetBoundsLat.GetRows () != 0 ) &&
1279+ (ncTarget.get_dim (" bnds" ) != NULL )
12671280 ) {
12681281 NcDim * dimBounds = ncTarget.add_dim (" bnds" , 2 );
12691282
12701283 NcVar * varLonBounds =
12711284 ncTarget.add_var (" lon_bnds" , ncDouble, dimLon, dimBounds);
12721285
12731286 if (varLonBounds == NULL ) {
1274- _EXCEPTIONT (" Cannot create variable \" lon_bnds\" in target file" );
1287+ _EXCEPTIONT (" Cannot create variable \" lon_bnds\" "
1288+ " in target file" );
12751289 }
12761290
12771291 varLonBounds->put (&(m_dVectorTargetBoundsLon[0 ][0 ]),
@@ -1281,7 +1295,8 @@ void OfflineMap::Apply(
12811295 ncTarget.add_var (" lat_bnds" , ncDouble, dimLat, dimBounds);
12821296
12831297 if (varLatBounds == NULL ) {
1284- _EXCEPTIONT (" Cannot create variable \" lat_bnds\" in target file" );
1298+ _EXCEPTIONT (" Cannot create variable \" lat_bnds\" "
1299+ " in target file" );
12851300 }
12861301
12871302 varLatBounds->put (&(m_dVectorTargetBoundsLat[0 ][0 ]),
0 commit comments