Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
I'm using the NetCDF-C++ library (4.3.1), and I want to write a netCDF file with an unlimited-size dimension. From what I understood from the documentation, you call the ncFile addDim method without specifying the size of the data. When I write my program with that, the netCDF header says that my dimension is unlimited, but when I look at the variable I used that is directly associated with that dimension it becomes all nulls... If I specify the size of that dimension then the data is no longer nulls, but I don't get the unlimited dimension size. I've got an example below where I want time to be the unlimited dimension: NetCDF example netcdf example { dimensions: latitude = 181 ; longitude = 360 ; time = UNLIMITED ; // (30 currently) variables: float latitude(latitude) ; latitude:units = "degrees_north" ; latitude:long_name = "latitude" ; float longitude(longitude) ; longitude:units = "degrees_east" ; longitude:long_name = "longitude" ; double time(time) ; time:units = "seconds since 1970-01-01 00:00:00.0 0:00" ; time:reference_time = "1637193600." ; time:reference_time_type = "3" ; time:reference_date = "2021.11.18 00:00:00 UTC" ; time:time_step_setting = "auto" ; time:time_step = "21600." ; float sample_observation(time, latitude, longitude) ; sample_observation:units = "m" ; sample_observation:long_name = "sample observation" ; sample_observation:short_name = "so" ; data: time = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; } Code Part: ``` void addData(netCDF::NcFile* file) { netCDF::NcDim latDim = file->addDim(LATITUDE, LAT_SIZE); netCDF::NcDim lonDim = file->addDim(LONGITUDE, LON_SIZE); netCDF::NcDim timeDim = file->addDim(TIME); std::vector<netCDF::NcDim> dims; dims.push_back(timeDim); dims.push_back(latDim); dims.push_back(lonDim); float lats[LAT_SIZE] = {-90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90}; float lons[LON_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359 }; double times[TIME_SIZE] = {1637215200, 1637236800, 1637258400, 1637280000, 1637301600, 1637323200, 1637344800, 1637366400, 1637388000, 1637409600, 1637431200, 1637452800, 1637474400, 1637496000, 1637517600, 1637539200, 1637560800, 1637582400, 1637604000, 1637625600, 1637647200, 1637668800, 1637690400, 1637712000, 1637733600, 1637755200, 1637776800, 1637798400, 1637820000}; netCDF::NcVar latVar = file->addVar(LATITUDE, netCDF::ncFloat, latDim); latVar.putVar(lats); netCDF::NcVar lonVar = file->addVar(LONGITUDE, netCDF::ncFloat, lonDim); lonVar.putVar(lons); netCDF::NcVar timeVar = file->addVar(TIME, netCDF::ncDouble, timeDim); timeVar.putVar(times); ... ``` Any recommendations on how to set the unlimited dimension without losing the data? Jacob Adams
netcdfgroup
archives: