Unidata / netcdf-c

Official GitHub repository for netCDF-C libraries and utilities.
BSD 3-Clause "New" or "Revised" License
519 stars 262 forks source link

ncdump ignores OPeNDAP attributes. #152

Closed hyoklee closed 8 years ago

hyoklee commented 9 years ago

Would you please handle attributes as well by parsing DAS output, not just DDS?

WardF commented 9 years ago

I'll leave this to @dmh , our OPeNDAP expert, to address.

DennisHeimbigner commented 9 years ago

Can you please explain in more detail? Internally, the DAS is parsed. Do you see a specific bug?

hyoklee commented 9 years ago

I don't see any global attribute in "CoreMetadata" DAS container in the following output. Please look at the bottom of this comment to see the missing part.

/opt/local/bin/ncdump -h  https://eosdap.hdfgroup.org:8080/opendap/data/NASAFILES/hdf4/1B01_CSI.971221.375.ADLD.6.HDF
netcdf \1B01_CSI.971221.375.ADLD.6 {
dimensions:
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att1 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att2 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att3 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att4 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att5 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att6 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att7 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att8 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att9 = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_greenHourAng = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAlt = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttPitch = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttRoll = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttYaw = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scLat = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scLon = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosX = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosY = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosZ = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelX = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelY = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelZ = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_acsMode = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch1Quality = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch2Quality = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch3Quality = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch4Quality = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch5Quality = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_fractOrbitN = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_geoQuality = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_missing = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_qac = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_scOrient = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_validity = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsAbnCon = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsInstS = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsMode = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_yawUpdateS = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_scan_time_vdf_scanTime = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunMag = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecX = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecY = 675 ;
    VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecZ = 675 ;
    bb_sv_sd = 3 ;
    channel = 5 ;
    dataword = 2 ;
    pixel = 261 ;
    pixel_ld = 27 ;
    satsun = 2 ;
    scan = 675 ;
    tempindex = 6 ;
    zenazm = 2 ;
variables:
    short DATA_GRANULE_SwathData_calCounts(scan, bb_sv_sd, dataword, channel) ;
        DATA_GRANULE_SwathData_calCounts:long_name = "calCounts" ;
    short DATA_GRANULE_SwathData_tempCounts(scan, tempindex) ;
        DATA_GRANULE_SwathData_tempCounts:long_name = "tempCounts" ;
    float DATA_GRANULE_SwathData_localDirection(scan, pixel_ld, satsun, zenazm) ;
        DATA_GRANULE_SwathData_localDirection:long_name = "localDirection" ;
    short DATA_GRANULE_SwathData_channels(scan, pixel, channel) ;
        DATA_GRANULE_SwathData_channels:long_name = "channels" ;
        DATA_GRANULE_SwathData_channels:VIRSChannelsScalingFactors_0 = "OBJECT=CHANNEL_1;\n",
            "\tValue=500;\n",
            "\tData_Location=PGE;\n",
            "\tMandatory=FALSE;\n",
            "END_OBJECT=CHANNEL_1;\n",
            "\n",
            "OBJECT=CHANNEL_2;\n",
            "\tValue=1000;\n",
            "\tData_Location=PGE;\n",
            "\tMandatory=FALSE;\n",
            "END_OBJECT=CHANNEL_2;\n",
            "\n",
            "OBJECT=CHANNEL_3;\n",
            "\tValue=100000;\n",
            "\tData_Location=PGE;\n",
            "\tMandatory=FALSE;\n",
            "END_OBJECT=CHANNEL_3;\n",
            "\n",
            "OBJECT=CHANNEL_4;\n",
            "\tValue=10000;\n",
            "\tData_Location=PGE;\n",
            "\tMandatory=FALSE;\n",
            "END_OBJECT=CHANNEL_4;\n",
            "\n",
            "OBJECT=CHANNEL_5;\n",
            "\tValue=10000;\n",
            "\tData_Location=PGE;\n",
            "\tMandatory=FALSE;\n",
            "END_OBJECT=CHANNEL_5;\n",
            "\n",
            "END;\n",
            "" ;
        DATA_GRANULE_SwathData_channels:coordinates = "latitudeLE_SwathData_geolocation longitudeLE_SwathData_geolocation channel" ;
    float latitudeLE_SwathData_geolocation(scan, pixel) ;
        latitudeLE_SwathData_geolocation:long_name = "latitude" ;
        latitudeLE_SwathData_geolocation:units = "degrees_north" ;
    float longitudeLE_SwathData_geolocation(scan, pixel) ;
        longitudeLE_SwathData_geolocation:long_name = "longitude" ;
        longitudeLE_SwathData_geolocation:units = "degrees_east" ;
    int bb_sv_sd(bb_sv_sd) ;
        bb_sv_sd:long_name = "bb_sv_sd" ;
        bb_sv_sd:units = "level" ;
    int channel(channel) ;
        channel:long_name = "channel" ;
        channel:units = "level" ;
    int dataword(dataword) ;
        dataword:long_name = "dataword" ;
        dataword:units = "level" ;
    int pixel_ld(pixel_ld) ;
        pixel_ld:long_name = "pixel_ld" ;
        pixel_ld:units = "level" ;
    int satsun(satsun) ;
        satsun:long_name = "satsun" ;
        satsun:units = "level" ;
    int tempindex(tempindex) ;
        tempindex:long_name = "tempindex" ;
        tempindex:units = "level" ;
    int zenazm(zenazm) ;
        zenazm:long_name = "zenazm" ;
        zenazm:units = "level" ;
    double vdata_DATA_GRANULE_SwathData_scan_time_vdf_scanTime(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_time_vdf_scanTime) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_missing(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_missing) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_validity(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_validity) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_qac(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_qac) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_geoQuality(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_geoQuality) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch1Quality(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch1Quality) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch2Quality(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch2Quality) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch3Quality(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch3Quality) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch4Quality(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch4Quality) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch5Quality(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_ch5Quality) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_scOrient(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_scOrient) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_acsMode(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_acsMode) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_yawUpdateS(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_yawUpdateS) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsInstS(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsInstS) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsMode(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsMode) ;
    int vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsAbnCon(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_virsAbnCon) ;
    float vdata_DATA_GRANULE_SwathData_scan_status_vdf_fractOrbitN(VDFDim0_vdata_DATA_GRANULE_SwathData_scan_status_vdf_fractOrbitN) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosX(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosX) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosY(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosY) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosZ(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scPosZ) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelX(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelX) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelY(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelY) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelZ(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scVelZ) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scLat(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scLat) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scLon(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scLon) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scAlt(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAlt) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttRoll(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttRoll) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttPitch(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttPitch) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttYaw(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_scAttYaw) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att1(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att1) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att2(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att2) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att3(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att3) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att4(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att4) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att5(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att5) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att6(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att6) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att7(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att7) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att8(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att8) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_att9(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_att9) ;
    float vdata_DATA_GRANULE_SwathData_navigation_vdf_greenHourAng(VDFDim0_vdata_DATA_GRANULE_SwathData_navigation_vdf_greenHourAng) ;
    double vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecX(VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecX) ;
    double vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecY(VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecY) ;
    double vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecZ(VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunVecZ) ;
    double vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunMag(VDFDim0_vdata_DATA_GRANULE_SwathData_solarCal_vdf_sunMag) ;
}

The below is missing global attribute that exists in DAS but ncdump missed.

    CoreMetadata {
        OrbitNumber {
            Int32 Value 375;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        RangeBeginningDate {
            String Value "1997/12/21";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        RangeBeginningTime {
            String Value "16:31:36";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        RangeEndingDate {
            String Value "1997/12/21";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        RangeEndingTime {
            String Value "16:35:02";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        GranulePointer {
            String Value "1B01_CSI.971221.375.ADLD.6.HDF";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        ShortName {
            String Value "VIRS Radiance";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SizeMBECSDataGranule {
            Float64 Value 3.481854;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        LongitudeOfMaximumLatitude {
            Float64 Value 9.633907;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SpatialCoverageType {
            String Value "Horizontal";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EllipsoidName {
            String Value "World Geodetic System (WGS) 84";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EquatorialRadius {
            Float64 Value 6378.137;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        DenominatorFlatteningRatio {
            Float64 Value 0.00335281;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        OrbitalModelName {
            String Value "Definitive FDF Ephemeris";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SemiMajorAxis {
            Float64 Value 6725777.500000;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        MeanAnomaly {
            Float64 Value 3.192575;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        RightAscensionNode {
            Float64 Value 4.347882;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        ArgumentOfPerigee {
            Float64 Value 1.519822;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        Eccentricity {
            Float64 Value 0.000185;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        Inclination {
            Float64 Value 0.610432;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EpochTime {
            String Value "15:10:22";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EpochDate {
            String Value "1997/12/21";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EpochMillisec {
            Int32 Value 363;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        WestBoundingCoordinate {
            Int32 Value -180;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EastBoundingCoordinate {
            Int32 Value 180;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        NorthBoundingCoordinate {
            Int32 Value 40;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SouthBoundingCoordinate {
            Int32 Value -40;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        CenterLatitude {
            Float64 Value -9999.9;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        CenterLongitude {
            Float64 Value -9999.9;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        RadiusValue {
            Float64 Value -9999.9;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        LatitudeResolution {
            Float64 Value -9999.9;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        LongitudeResolution {
            Float64 Value -9999.9;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        GeographicCoordinateUnits {
            String Value "NULL";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        TemporalRangeType {
            String Value "Continuous Range";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        QualityAssuranceParameterName {
            String Value "ScienceQualityFlag";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        QualityAssuranceParameterValue {
            String Value "NOT BEING INVESTIGATED";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        ReprocessingActual {
            String Value "NULL";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        BrowsePointer {
            String Value "NULL";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        ScienceContact {
            String Value "William Barnes";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        MeanMotion {
            Float64 Value 15.739437;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        OrbitAdjustFlag {
            Int32 Value 0;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        AttitudeModeFlag {
            Int32 Value 1;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SolarBetaAngleAtBeginningOfGranule {
            Float64 Value -30.646681;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SolarBetaAngleAtEndOfGranule {
            Float64 Value -30.687693;
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SensorAlignment {
            String Value "0.0,0.0,0.0,1,2,3";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        SensorAlignmentChannelOffsets {
            String Value "0,0,0,0,0";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        ScanPathModel {
            String Value "1,3,90,-45.0,90.0,0.15,0.0";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        ScanPathModelParam {
            String Value "0,0,0,0,0";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
        EphemerisFileID {
            String Value "EPHEM.971221";
            String Data_Location "PGE";
            String Mandatory "FALSE";
        }
    }
DennisHeimbigner commented 9 years ago

I am not sure how you want to represent these missing attributes in the netcdf file. For example: if I look at this: CoreMetadata { OrbitNumber { Int32 Value 375; String Data_Location "PGE"; String Mandatory "FALSE"; }... Neither CoreMetdata nor OrbitNumber is a variable. So that means you want these inserted as some kind of global attribute, correct? How do you think that the OrbitNumber information should be represented in the netcdf file?

hyoklee commented 9 years ago

Yes, I want them inserted as global attributes. You can follow what netCDF-Java does. For example,

int32 CoreMetadata.Orbit_number.Value 375

WardF commented 8 years ago

Fixed and merged.