Пример #1
0
def load(h):

    h.add(_.Constant('tablesVersionLatest', 25))
    h.add(_.Constant('million', 1000000))
    h.add(_.Constant('grib2divider', 1000000))
    h.alias('extraDimensionPresent', 'zero')
    h.alias('is_tigge', 'zero')
    h.alias('is_s2s', 'zero')
    h.add(_.Transient('is_efas', 0))
    h.add(_.Transient('angleSubdivisions', _.Get('grib2divider')))
    h.add(_.Gts_header('gts_header'))
    h.add(_.Gts_header('gts_TTAAii', 20, 6))
    h.add(_.Gts_header('gts_CCCC', 27, 4))
    h.add(_.Gts_header('gts_ddhh00', 32, 6))
    h.add(_.Transient('missingValue', 9999))
    h.add(_.Constant('ieeeFloats', 1))
    h.add(_.Constant('isHindcast', 0))
    h.add(_.Position('offsetSection0'))
    h.add(_.Constant('section0Length', 16))
    h.add(_.Ascii('identifier', 4))
    h.add(_.Unsigned('reserved', 2))
    h.add(_.Codetable('discipline', 1, "0.0.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('editionNumber', 1))
    h.alias('ls.edition', 'editionNumber')
    h.add(_.Section_length('totalLength', 8))
    h.add(_.Position('startOfHeaders'))
    h.add(_.Section_pointer('section0Pointer', _.Get('offsetSection0'), _.Get('section0Length'), 0))
    _.Template('grib2/sections.def').load(h)
    _.Template('grib2/section.8.def').load(h)
Пример #2
0
def load(h):

    h.add(_.Transient('numberOfValues', ((_.Get('J') + 1) * (_.Get('J') + 2))))
    h.add(_.Transient('numberOfPackedValues', (_.Get('numberOfValues') - 1)))
    h.add(_.Transient('numberOfValues', ((_.Get('J') + 1) * (_.Get('J') + 2))))
    h.add(_.Transient('numberOfPackedValues', (_.Get('numberOfValues') - 1)))
    h.add(
        _.Data_g2simple_packing('codedValues', _.Get('section7Length'),
                                _.Get('offsetBeforeData'),
                                _.Get('offsetSection7'), _.Get('unitsFactor'),
                                _.Get('unitsBias'), _.Get('changingPrecision'),
                                _.Get('numberOfPackedValues'),
                                _.Get('bitsPerValue'), _.Get('referenceValue'),
                                _.Get('binaryScaleFactor'),
                                _.Get('decimalScaleFactor'),
                                _.Get('optimizeScaleFactor')))
    h.add(
        _.Data_g2shsimple_packing('values', _.Get('codedValues'),
                                  _.Get('realPartOf00'),
                                  _.Get('numberOfValues')))
    h.add(
        _.Simple_packing_error('packingError', _.Get('bitsPerValue'),
                               _.Get('binaryScaleFactor'),
                               _.Get('decimalScaleFactor'),
                               _.Get('referenceValue'), _.Get('ieee')))
    h.add(
        _.Simple_packing_error('unpackedError', _.Get('zero'),
                               _.Get('binaryScaleFactor'),
                               _.Get('decimalScaleFactor'),
                               _.Get('referenceValue'), _.Get('ieee')))
    h.alias('x.packedValues', 'values')
    _.Template('common/statistics_spectral.def').load(h)
Пример #3
0
def load(h):

    h.add(_.Codeflag('resolutionAndComponentFlags', 1, "grib1/7.table"))
    h.add(
        _.Bit('ijDirectionIncrementGiven',
              _.Get('resolutionAndComponentFlags'), 7))
    h.alias('iDirectionIncrementGiven', 'ijDirectionIncrementGiven')
    h.alias('jDirectionIncrementGiven', 'ijDirectionIncrementGiven')
    h.alias('DiGiven', 'ijDirectionIncrementGiven')
    h.alias('DjGiven', 'ijDirectionIncrementGiven')
    h.add(_.Bit('earthIsOblate', _.Get('resolutionAndComponentFlags'), 6))

    if h.get_l('earthIsOblate'):
        h.add(_.Transient('earthMajorAxis', 6.37816e+06))
        h.add(_.Transient('earthMinorAxis', 6.35678e+06))
        h.alias('earthMajorAxisInMetres', 'earthMajorAxis')
        h.alias('earthMinorAxisInMetres', 'earthMinorAxis')

    h.add(
        _.Bit('resolutionAndComponentFlags3',
              _.Get('resolutionAndComponentFlags'), 5))
    h.add(
        _.Bit('resolutionAndComponentFlags4',
              _.Get('resolutionAndComponentFlags'), 4))
    h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3))
    h.add(
        _.Bit('resolutionAndComponentFlags6',
              _.Get('resolutionAndComponentFlags'), 2))
    h.add(
        _.Bit('resolutionAndComponentFlags7',
              _.Get('resolutionAndComponentFlags'), 1))
    h.add(
        _.Bit('resolutionAndComponentFlags8',
              _.Get('resolutionAndComponentFlags'), 0))
Пример #4
0
def load(h):

    _.Template('grib2/mars_labeling.def').load(h)
    h.add(_.Transient('productDefinitionTemplateNumberInternal', -1))
    h.add(
        _.Local_definition('localDefinitionNumber',
                           _.Get('grib2LocalSectionNumber'),
                           _.Get('productDefinitionTemplateNumber'),
                           _.Get('productDefinitionTemplateNumberInternal'),
                           _.Get('type'), _.Get('stream'), _.Get('class'),
                           _.Get('eps'), _.Get('stepType'),
                           _.Get('derivedForecast')))
    h.add(
        _.G2_eps('eps', _.Get('productDefinitionTemplateNumber'),
                 _.Get('type'), _.Get('stream'), _.Get('stepType'),
                 _.Get('derivedForecast')))
    _.Template('grib2/local.98.[grib2LocalSectionNumber:l].def', True).load(h)
    h.add(_.Position('offsetAfterLocalSection'))
    h.add(_.Transient('addExtraLocalSection', 0))
    h.add(_.Transient('deleteExtraLocalSection', 0))
    h.add(
        _.Evaluate(
            'extraLocalSectionPresent',
            (((_.Get('section2Length') - _.Get('offsetAfterLocalSection')) +
              _.Get('offsetSection2')) > 0)))

    if ((h.get_l('extraLocalSectionPresent')
         or h.get_l('addExtraLocalSection'))
            and not (h.get_l('deleteExtraLocalSection'))):
        h.add(
            _.Codetable(
                'extraLocalSectionNumber', 2,
                "grib2/grib2LocalSectionNumber.[centreForLocal:l].table"))
        _.Template('grib2/local.98.[extraLocalSectionNumber:l].def').load(h)
Пример #5
0
def load(h):

    h.add(_.Position('offsetSection6'))
    h.add(_.Position('offsetBSection6'))
    h.add(_.Section_length('section6Length', 4))
    h.add(_.Section_pointer('section6', _.Get('offsetSection6'), _.Get('section6Length'), 6))
    h.add(_.Unsigned('numberOfSection', 1))
    h.add(_.Codetable('bitMapIndicator', 1, "6.0.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.G2bitmap_present('bitmapPresent', _.Get('bitMapIndicator')))
    h.alias('geography.bitmapPresent', 'bitmapPresent')
    h.add(_.Transient('missingValuesPresent', _.Get('bitmapPresent')))

    if (h.get_l('bitMapIndicator') == 0):

        if (h.get_l('dataRepresentationTemplateNumber') == 1):

            if (h.get_l('matrixBitmapsPresent') == 1):
                h.add(_.G2bitmap('primaryBitmap', _.Get('tableReference'), _.Get('missingValue'), _.Get('offsetBSection6'), _.Get('section6Length'), _.Get('numberOfDataMatrices')))
            else:
                h.add(_.G2bitmap('bitmap', _.Get('tableReference'), _.Get('missingValue'), _.Get('offsetBSection6'), _.Get('section6Length'), _.Get('numberOfDataPoints')))
                h.alias('geography.bitmap', 'bitmap')

        else:
            h.add(_.G2bitmap('bitmap', _.Get('tableReference'), _.Get('missingValue'), _.Get('offsetBSection6'), _.Get('section6Length'), _.Get('numberOfDataPoints')))
            h.alias('geography.bitmap', 'bitmap')


    if (h.get_l('bitMapIndicator') == 255):

        if ((h.get_l('dataRepresentationTemplateNumber') == 2) or (h.get_l('dataRepresentationTemplateNumber') == 3)):
            h.add(_.Transient('missingValuesPresent', (_.Get('missingValueManagementUsed') != 0)))


    h.add(_.Md5('md5Section6', _.Get('offsetSection6'), _.Get('section6Length')))
Пример #6
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(_.Unsigned('matrixBitmapsPresent', 1))
    h.alias('secondaryBitmapPresent', 'matrixBitmapsPresent')
    h.add(_.Unsigned('numberOfCodedValues', 4))
    h.add(_.Unsigned('firstDimension', 2))
    h.alias('NR', 'firstDimension')
    h.add(_.Unsigned('secondDimension', 2))
    h.alias('NC', 'secondDimension')
    h.add(_.Unsigned('firstDimensionCoordinateValueDefinition', 1))
    h.add(_.Unsigned('NC1', 1))
    h.alias(
        'numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction',
        'NC1')
    h.add(_.Unsigned('secondDimensionCoordinateValueDefinition', 1))
    h.add(_.Unsigned('NC2', 1))
    h.alias(
        'numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction',
        'NC2')
    h.add(_.Unsigned('firstDimensionPhysicalSignificance', 1))
    h.add(_.Unsigned('secondDimensionPhysicalSignificance', 1))
    h.add(_.Ieeefloat('coefsFirst', 4, _.Get('NC1')))
    h.add(_.Ieeefloat('coefsSecond', 4, _.Get('NC2')))
    h.alias('data.coefsFirst', 'coefsFirst')
    h.alias('data.coefsSecond', 'coefsSecond')

    if (h.get_l('matrixBitmapsPresent') == 1):
        h.add(_.Constant('datumSize', (_.Get('NC') * _.Get('NR'))))
        h.add(
            _.Constant('secondaryBitmapsCount', (_.Get('numberOfValues') + 0)))
        h.add(
            _.Constant('secondaryBitmapsSize',
                       (_.Get('secondaryBitmapsCount') / 8)))
        h.add(
            _.Transient('numberOfDataMatrices',
                        (_.Get('numberOfDataPoints') / _.Get('datumSize'))))
        h.add(_.Position('offsetBBitmap'))
        h.add(
            _.G2bitmap('secondaryBitmaps', _.Get('dummy'),
                       _.Get('missingValue'), _.Get('offsetBSection5'),
                       _.Get('section5Length'), _.Get('numberOfCodedValues'),
                       _.Get('dummy')))
        h.add(
            _.Data_g2secondary_bitmap('bitmap', _.Get('primaryBitmap'),
                                      _.Get('secondaryBitmaps'),
                                      _.Get('missingValue'),
                                      _.Get('datumSize'),
                                      _.Get('numberOfDataPoints')))
Пример #7
0
def load(h):

    h.add(_.Lookup('sectionNumber', 1, 4))

    if ((h.get_l('sectionNumber') == 1) or h._new()):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.1.def').load(h)

    h.add(_.Lookup('sectionNumber', 1, 4))
    h.add(_.Transient('grib2LocalSectionPresent', 0))
    h.alias('section2Used', 'zero')
    h.alias('setLocalDefinition', 'grib2LocalSectionPresent')
    h.add(_.Transient('deleteLocalDefinition', 0))

    if (((h.get_l('sectionNumber') == 2) or
         (h.get_l('grib2LocalSectionPresent') > 0))
            and (h.get_l('deleteLocalDefinition') == 0)):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.2.def').load(h)

    h.alias('localUsePresent', 'section2Used')
    h.add(_.Lookup('sectionNumber', 1, 4))

    if ((h.get_l('sectionNumber') == 3) or h._new()):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.3.def').load(h)

    h.add(_.Lookup('sectionNumber', 1, 4))

    if ((h.get_l('sectionNumber') == 4) or h._new()):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.4.def').load(h)

    h.add(_.Position('endOfHeadersMarker'))
    h.add(
        _.Evaluate('lengthOfHeaders',
                   (_.Get('endOfHeadersMarker') - _.Get('startOfHeaders'))))
    h.add(
        _.Md5('md5Headers', _.Get('startOfHeaders'), _.Get('lengthOfHeaders')))
    h.add(_.Lookup('sectionNumber', 1, 4))

    if ((h.get_l('sectionNumber') == 5) or h._new()):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.5.def').load(h)

    h.add(_.Lookup('sectionNumber', 1, 4))

    if ((h.get_l('sectionNumber') == 6) or h._new()):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.6.def').load(h)

    h.add(_.Lookup('sectionNumber', 1, 4))

    if ((h.get_l('sectionNumber') == 7) or h._new()):
        h.add(_.Position('sectionPosition'))
        _.Template('grib2/section.7.def').load(h)
Пример #8
0
def load(h):

    h.add(_.Transient('bitsPerValue', 0))
    h.add(_.Transient('referenceValue', 0))
    h.add(_.Transient('binaryScaleFactor', 0))
    h.add(_.Transient('decimalScaleFactor', 0))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(
        _.Codetable('precision', 1, "5.7.table", _.Get('masterDir'),
                    _.Get('localDir')))
Пример #9
0
def load(h):

    h.add(_.Constant('ieeeFloats', 0))
    h.add(_.Transient('eps', 0))
    h.add(_.Constant('two', 1))
    h.add(_.Constant('three', 1))
    h.add(_.Constant('eight', 8))
    h.add(_.Constant('eleven', 11))
    h.add(_.Constant('epsPoint', 1))
    h.add(_.Constant('epsContinous', 11))
    h.add(_.Constant('epsStatisticsPoint', 2))
    h.add(_.Constant('epsStatisticsContinous', 12))
    h.add(_.Headers_only('headersOnly'))
    h.add(_.Gts_header('gts_header'))
    h.add(_.Gts_header('gts_TTAAii', 20, 6))
    h.add(_.Gts_header('gts_CCCC', 27, 4))
    h.add(_.Gts_header('gts_ddhh00', 32, 6))
    h.add(_.Ascii('identifier', 4))
    h.add(_.Constant('offsetSection0', 0))
    h.add(_.Constant('section0Length', 8))
    h.add(_.Section_pointer('section0Pointer', _.Get('offsetSection0'), _.Get('section0Length'), 0))
    h.add(_.G1_message_length('totalLength', 3, _.Get('section4Length')))
    h.add(_.Position('startOfHeaders'))
    h.add(_.Unsigned('editionNumber', 1))
    _.Template('grib1/section.1.def').load(h)
    h.alias('ls.edition', 'editionNumber')
    h.add(_.Bit('gridDescriptionSectionPresent', _.Get('section1Flags'), 7))
    h.add(_.Gds_is_present('GDSPresent', _.Get('gridDescriptionSectionPresent'), _.Get('gridDefinition'), _.Get('bitmapPresent'), _.Get('values')))
    h.add(_.Bit('bitmapPresent', _.Get('section1Flags'), 6))
    h.alias('bitmapSectionPresent', 'bitmapPresent')
    h.alias('geography.bitmapPresent', 'bitmapPresent')
    h.alias('missingValuesPresent', 'bitmapPresent')
    h.add(_.Transient('angleSubdivisions', 1000))

    if h.get_l('gridDescriptionSectionPresent'):
        _.Template('grib1/section.2.def').load(h)
    else:
        _.Template('grib1/predefined_grid.def').load(h)

    h.add(_.Position('endOfHeadersMarker'))
    h.add(_.Evaluate('lengthOfHeaders', (_.Get('endOfHeadersMarker') - _.Get('startOfHeaders'))))
    h.add(_.Md5('md5Headers', _.Get('startOfHeaders'), _.Get('lengthOfHeaders')))

    if not (h.get_l('headersOnly')):
        h.add(_.Transient('missingValue', 9999))

        if h.get_l('bitmapPresent'):
            _.Template('grib1/section.3.def').load(h)
        else:
            h.add(_.Constant('tableReference', 0))

        _.Template('grib1/section.4.def').load(h)
        _.Template('grib1/section.5.def').load(h)
Пример #10
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (69 - _.Get('section1Length'))))
    h.add(_.Transient('localFlag', 2))
    _.Template('grib1/mars_labeling.def').load(h)
    h.alias('grib2LocalSectionPresent', 'present')
    h.add(_.Constant('grib2LocalSectionNumber', 26))

    if (h.get_s('stepType') == "instant"):
        h.alias('productDefinitionTemplateNumber', 'epsPoint')
    else:
        h.alias('productDefinitionTemplateNumber', 'epsContinous')

    h.add(_.Constant('wrongPadding', 1))
    h.add(_.Unsigned('number', 1))
    h.add(_.Unsigned('numberOfForecastsInEnsemble', 1))
    h.alias('totalNumber', 'numberOfForecastsInEnsemble')
    h.add(_.Unsigned('referenceDate', 4))
    h.add(_.Unsigned('climateDateFrom', 4))
    h.add(_.Unsigned('climateDateTo', 4))
    h.add(_.Pad('padding_loc26_1', 6))
    h.alias('perturbationNumber', 'number')
    h.alias('local.referenceDate', 'referenceDate')
    h.alias('local.climateDateFrom', 'climateDateFrom')
    h.alias('local.climateDateTo', 'climateDateTo')
Пример #11
0
def load(h):

    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Constant('GRIBEXSection1Problem', 0))
    h.add(_.Unsigned('yearOfReference', 1))
    h.add(_.Unsigned('monthOfReference', 1))
    h.add(_.Unsigned('dayOfReference', 1))
    h.add(_.Unsigned('hourOfReference', 1))
    h.add(_.Unsigned('minuteOfReference', 1))
    h.add(_.Unsigned('centuryOfReference', 1))
    h.add(_.Transient('secondsOfReference', 0))
    h.add(_.Unsigned('numberOfForcasts', 1))

    if h.get_l('numberOfForcasts'):
        h.add(_.Unsigned('forecastSteps', 3, _.Get('numberOfForcasts')))

    h.add(_.Unsigned('numberOfAnalysis', 1))

    if h.get_l('numberOfAnalysis'):
        h.add(_.Signed('analysisOffsets', 3, _.Get('numberOfAnalysis')))

    h.add(
        _.G1date('dateOfReference', _.Get('centuryOfReference'),
                 _.Get('yearOfReference'), _.Get('monthOfReference'),
                 _.Get('dayOfReference')))
    h.add(
        _.Time('timeOfReference', _.Get('hourOfReference'),
               _.Get('minuteOfReference'), _.Get('secondsOfReference')))
Пример #12
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(
        _.Codetable('typeOfOriginalFieldValues', 1, "5.1.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('ccsdsFlags', 1))
    h.alias('ccsdsCompressionOptionsMask', 'ccsdsFlags')
    h.add(_.Bit('AEC_DATA_SIGNED_OPTION_MASK', _.Get('ccsdsFlags'), 0))
    h.add(_.Bit('AEC_DATA_3BYTE_OPTION_MASK', _.Get('ccsdsFlags'), 1))
    h.add(_.Bit('AEC_DATA_MSB_OPTION_MASK', _.Get('ccsdsFlags'), 2))
    h.add(_.Bit('AEC_DATA_PREPROCESS_OPTION_MASK', _.Get('ccsdsFlags'), 3))
    h.add(_.Bit('AEC_RESTRICTED_OPTION_MASK', _.Get('ccsdsFlags'), 4))
    h.add(_.Bit('AEC_PAD_RSI_OPTION_MASK', _.Get('ccsdsFlags'), 5))
    h.add(_.Unsigned('ccsdsBlockSize', 1))
    h.add(_.Unsigned('ccsdsRsi', 2))
    h.alias('referenceSampleInterval', 'ccsdsRsi')
Пример #13
0
def load(h):

    h.add(_.Unsigned('n2', 2))
    h.add(_.Unsigned('n3', 2))
    h.add(_.Unsigned('nd', 3))
    h.alias('numberOfDiamonds', 'nd')
    h.alias('Nj', 'nd')
    h.add(_.Unsigned('Ni', 3))
    h.add(
        _.Codeflag('numberingOrderOfDiamonds', 1,
                   "grib1/grid.192.78.3.9.table"))
    h.add(_.Signed('latitudeOfIcosahedronPole', 4))
    h.add(_.Unsigned('longitudeOfIcosahedronPole', 4))
    h.add(_.Unsigned('longitudeOfFirstDiamondCenterLine', 4))
    h.add(_.Unsigned('reservedOctet', 1))
    h.add(
        _.Codeflag('scanningModeForOneDiamond', 1,
                   "grib1/grid.192.78.3.10.table"))
    h.add(
        _.Transient('numberOfPoints',
                    ((_.Get('nd') * (_.Get('Ni') + 1)) * (_.Get('Ni') + 1))))
    h.alias('numberOfDataPoints', 'numberOfPoints')
    h.add(
        _.Number_of_values('numberOfValues', _.Get('values'),
                           _.Get('bitsPerValue'), _.Get('numberOfDataPoints'),
                           _.Get('bitmapPresent'), _.Get('bitmap'),
                           _.Get('numberOfCodedValues')))
Пример #14
0
def load(h):

    h.add(_.Position('offsetSection3'))
    h.add(_.Transient('section3Length', 1))
    h.add(
        _.Section_pointer('section3Pointer', _.Get('offsetSection3'),
                          _.Get('section3Length'), 3))
    h.add(_.Transient('numberOfUnusedBitsAtEndOfSection3', 0))
    h.add(_.Transient('tableReference', 0))
    h.add(
        _.Gds_not_present_bitmap('bitmap', _.Get('missingValue'),
                                 _.Get('numberOfValues'),
                                 _.Get('numberOfPoints'),
                                 _.Get('latitudeOfFirstGridPoint'),
                                 _.Get('Ni'),
                                 _.Get('numberOfUnusedBitsAtEndOfSection3')))
Пример #15
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (60 - _.Get('section1Length'))))
    h.add(_.Transient('localFlag', 1))
    _.Template('grib1/mars_labeling.def').load(h)
    h.alias('grib2LocalSectionPresent', 'present')
    h.add(_.Constant('grib2LocalSectionNumber', 15))

    if (h.get_s('stepType') == "instant"):
        h.alias('productDefinitionTemplateNumber', 'one')
    else:
        h.alias('productDefinitionTemplateNumber', 'eleven')

    h.add(_.Unsigned('perturbationNumber', 2))
    h.alias('number', 'perturbationNumber')
    h.add(_.Unsigned('systemNumber', 2))
    h.add(_.Unsigned('methodNumber', 2))
    h.add(_.Unsigned('numberOfForecastsInEnsemble', 2))
    h.alias('totalNumber', 'numberOfForecastsInEnsemble')
    h.add(_.Pad('padding_loc15_1', 3))
    h.alias('origin', 'centre')
    h.alias('number', 'perturbationNumber')
    h.alias('total', 'numberOfForecastsInEnsemble')
    h.alias('system', 'systemNumber')
    h.alias('method', 'methodNumber')
    h.alias('local.perturbationNumber', 'perturbationNumber')
    h.alias('local.systemNumber', 'systemNumber')
    h.alias('local.methodNumber', 'methodNumber')
Пример #16
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.add(_.Unsigned('widthOfFirstOrderValues', 1))
    h.add(_.Unsigned('numberOfGroups', 4))
    h.add(_.Unsigned('numberOfSecondOrderPackedValues', 4))
    h.add(_.Unsigned('widthOfWidths', 1))
    h.add(_.Unsigned('widthOfLengths', 1))
    h.add(
        _.Codeflag('secondOrderFlags', 1,
                   "grib2/tables/[tablesVersion]/5.50002.table"))
    h.add(_.Unsigned('orderOfSPD', 1))
    h.add(_.Bit('boustrophedonicOrdering', _.Get('secondOrderFlags'), 7))
    h.alias('boustrophedonic', 'boustrophedonicOrdering')

    if h.get_l('orderOfSPD'):
        h.add(_.Unsigned('widthOfSPD', 1))
        h.add(_.Spd('SPD', _.Get('widthOfSPD'), _.Get('orderOfSPD')))
Пример #17
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(
        _.Codetable('typeOfOriginalFieldValues', 1, "5.1.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(
        _.Codetable('groupSplittingMethodUsed', 1, "5.4.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(
        _.Codetable('missingValueManagementUsed', 1, "5.5.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('primaryMissingValueSubstitute', 4))
    h.add(_.Unsigned('secondaryMissingValueSubstitute', 4))
    h.add(_.Unsigned('numberOfGroupsOfDataValues', 4))
    h.alias('NG', 'numberOfGroupsOfDataValues')
    h.add(_.Unsigned('referenceForGroupWidths', 1))
    h.add(_.Unsigned('numberOfBitsUsedForTheGroupWidths', 1))
    h.add(_.Unsigned('referenceForGroupLengths', 4))
    h.add(_.Unsigned('lengthIncrementForTheGroupLengths', 1))
    h.add(_.Unsigned('trueLengthOfLastGroup', 4))
    h.add(_.Unsigned('numberOfBitsForScaledGroupLengths', 1))
    h.alias('numberOfBitsUsedForTheScaledGroupLengths',
            'numberOfBitsForScaledGroupLengths')
Пример #18
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (120 - _.Get('section1Length'))))
    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('yearOfReference', 1))
    h.add(_.Unsigned('monthOfReference', 1))
    h.add(_.Unsigned('dayOfReference', 1))
    h.add(_.Unsigned('hourOfReference', 1))
    h.add(_.Unsigned('minuteOfReference', 1))
    h.add(_.Unsigned('centuryOfReference', 1))
    h.add(_.Transient('secondsOfReference', 0))
    h.add(_.Unsigned('numberOfForcasts', 1))
    h.add(_.Unsigned('numberOfAnalysis', 1))

    if h.get_l('numberOfForcasts'):
        h.add(_.Unsigned('forecastSteps', 3, _.Get('numberOfForcasts')))

    if h.get_l('numberOfAnalysis'):
        h.add(_.Signed('analysisOffsets', 3, _.Get('numberOfAnalysis')))

    h.add(_.Padto('padding_local_35', (_.Get('offsetSection1') + 120)))
    h.add(
        _.G1date('dateOfReference', _.Get('centuryOfReference'),
                 _.Get('yearOfReference'), _.Get('monthOfReference'),
                 _.Get('dayOfReference')))
    h.add(
        _.Time('timeOfReference', _.Get('hourOfReference'),
               _.Get('minuteOfReference'), _.Get('secondsOfReference')))

    if (h.get_l('indicatorOfTypeOfLevel') == 160):
        h.alias('mars.levelist', 'level')
Пример #19
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')

    if h._gribex_mode_on():
        h.add(_.Transient('computeLaplacianOperator', 0))
    else:
        h.add(_.Transient('computeLaplacianOperator', 1))

    h.add(
        _.Spectral_truncation('_numberOfValues', _.Get('J'), _.Get('K'),
                              _.Get('M'), _.Get('numberOfValues')))
    h.add(_.Constant('laplacianScalingFactorUnset', -2147483647))
    h.add(_.Signed('laplacianScalingFactor', 4))
    h.add(
        _.Scale('laplacianOperator', _.Get('laplacianScalingFactor'),
                _.Get('one'), _.Get('million'), _.Get('truncateLaplacian')))
    h.alias('data.laplacianOperator', 'laplacianOperator')
    h.add(
        _.Evaluate(
            'laplacianOperatorIsSet',
            _.And((_.Get('laplacianScalingFactor') !=
                   _.Get('laplacianScalingFactorUnset')),
                  _.Not(_.Get('computeLaplacianOperator')))))
    h.add(_.Unsigned('JS', 2))
    h.add(_.Unsigned('KS', 2))
    h.add(_.Unsigned('MS', 2))
    h.alias('subSetJ', 'JS')
    h.alias('subSetK', 'KS')
    h.alias('subSetM', 'MS')
    h.add(_.Unsigned('TS', 4))
    h.add(
        _.Spectral_truncation('_TS', _.Get('JS'), _.Get('KS'), _.Get('MS'),
                              _.Get('TS')))
    h.add(
        _.Codetable('unpackedSubsetPrecision', 1, "5.7.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.alias('precisionOfTheUnpackedSubset', 'unpackedSubsetPrecision')
Пример #20
0
def load(h):

    h.add(_.Transient('conceptDir', "mars"))
    h.add(
        _.Concept('waveDomain', 'unknown', 'wave_domain.def', 'conceptDir',
                  'conceptDir', False))
    h.alias('mars.domain', 'waveDomain')
    h.alias('mars.anoffset', 'offsetToEndOf4DvarWindow')
Пример #21
0
def load(h):

    h.add(_.Signed('latitudeOfFirstGridPoint', 3))
    h.add(_.Scale('latitudeOfFirstGridPointInDegrees', _.Get('latitudeOfFirstGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees')))
    h.alias('geography.latitudeOfFirstGridPointInDegrees', 'latitudeOfFirstGridPointInDegrees')
    h.alias('La1', 'latitudeOfFirstGridPoint')
    h.add(_.Signed('longitudeOfFirstGridPoint', 3))
    h.add(_.Scale('longitudeOfFirstGridPointInDegrees', _.Get('longitudeOfFirstGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees')))
    h.alias('geography.longitudeOfFirstGridPointInDegrees', 'longitudeOfFirstGridPointInDegrees')
    h.alias('Lo1', 'longitudeOfFirstGridPoint')
    h.add(_.Codeflag('resolutionAndComponentFlags', 1, "grib1/7.table"))
    h.add(_.Bit('ijDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 7))
    h.alias('iDirectionIncrementGiven', 'ijDirectionIncrementGiven')
    h.alias('jDirectionIncrementGiven', 'ijDirectionIncrementGiven')
    h.alias('DiGiven', 'ijDirectionIncrementGiven')
    h.alias('DjGiven', 'ijDirectionIncrementGiven')
    h.add(_.Bit('earthIsOblate', _.Get('resolutionAndComponentFlags'), 6))

    if h.get_l('earthIsOblate'):
        h.add(_.Transient('earthMajorAxis', 6.37816e+06))
        h.add(_.Transient('earthMinorAxis', 6.35678e+06))
        h.alias('earthMajorAxisInMetres', 'earthMajorAxis')
        h.alias('earthMinorAxisInMetres', 'earthMinorAxis')

    h.add(_.Bit('resolutionAndComponentFlags3', _.Get('resolutionAndComponentFlags'), 5))
    h.add(_.Bit('resolutionAndComponentFlags4', _.Get('resolutionAndComponentFlags'), 4))
    h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3))
    h.add(_.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 2))
    h.add(_.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 1))
    h.add(_.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 0))
    h.add(_.Signed('latitudeOfLastGridPoint', 3))
    h.add(_.Scale('latitudeOfLastGridPointInDegrees', _.Get('latitudeOfLastGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees')))
    h.alias('geography.latitudeOfLastGridPointInDegrees', 'latitudeOfLastGridPointInDegrees')
    h.alias('La2', 'latitudeOfLastGridPoint')
    h.add(_.Signed('longitudeOfLastGridPoint', 3))
    h.add(_.Scale('longitudeOfLastGridPointInDegrees', _.Get('longitudeOfLastGridPoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees')))
    h.alias('geography.longitudeOfLastGridPointInDegrees', 'longitudeOfLastGridPointInDegrees')
    h.alias('Lo2', 'longitudeOfLastGridPoint')
    h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees')
    h.alias('yLast', 'latitudeOfLastGridPointInDegrees')
    h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees')
    h.alias('xLast', 'longitudeOfLastGridPointInDegrees')
    h.alias('latitudeFirstInDegrees', 'latitudeOfFirstGridPointInDegrees')
    h.alias('longitudeFirstInDegrees', 'longitudeOfFirstGridPointInDegrees')
    h.alias('latitudeLastInDegrees', 'latitudeOfLastGridPointInDegrees')
    h.alias('longitudeLastInDegrees', 'longitudeOfLastGridPointInDegrees')
Пример #22
0
def load(h):

    h.add(_.Transient('conceptDir', "mars"))
    h.add(_.Concept('waveDomain', 'unknown', 'wave_domain.def', 'conceptDir', 'conceptDir', False))
    h.alias('mars.domain', 'waveDomain')

    if (h.get_s('class') == "lw"):
        h.unalias('mars.domain')
Пример #23
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(_.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
Пример #24
0
def load(h):

    h.add(_.Position('startOfHeaders'))
    h.add(_.Ascii('identifier', 4))
    h.alias('ls.identifier', 'identifier')
    h.add(_.Transient('missingValue', 9999))
    h.add(_.Constant('ieeeFloats', 0))
    h.add(_.Constant('zero', 0))
    _.Template('diag/section.1.def').load(h)
    _.Template('diag/section.4.def').load(h)
    h.add(_.Ascii('endMark', 4))
    h.add(_.Position('totalLength'))
Пример #25
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(_.Transient('computeLaplacianOperator', 1))
    h.add(
        _.Codetable('biFourierSubTruncationType', 1, "5.25.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(
        _.Codetable('biFourierPackingModeForAxes', 1, "5.26.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Constant('laplacianScalingFactorUnset', -2147483647))
    h.add(_.Signed('laplacianScalingFactor', 4))
    h.add(
        _.Scale('laplacianOperator', _.Get('laplacianScalingFactor'),
                _.Get('one'), _.Get('million'), _.Get('truncateLaplacian')))
    h.alias('data.laplacianOperator', 'laplacianOperator')
    h.add(
        _.Evaluate(
            'laplacianOperatorIsSet',
            _.And((_.Get('laplacianScalingFactor') !=
                   _.Get('laplacianScalingFactorUnset')),
                  _.Not(_.Get('computeLaplacianOperator')))))
    h.add(_.Unsigned('biFourierResolutionSubSetParameterN', 2))
    h.add(_.Unsigned('biFourierResolutionSubSetParameterM', 2))
    h.add(_.Unsigned('totalNumberOfValuesInUnpackedSubset', 4))
    h.add(
        _.Codetable('unpackedSubsetPrecision', 1, "5.7.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.alias('precisionOfTheUnpackedSubset', 'unpackedSubsetPrecision')
Пример #26
0
def load(h):

    h.add(_.Transient('dummyc', 0))
    h.add(_.Constant('conceptsMasterDir', "grib2"))
    h.add(_.Constant('conceptsLocalDirAll', "grib2/localConcepts/[centre:s]"))
    h.add(_.Constant('conceptsLocalDirECMF', "grib2/localConcepts/ecmf"))
    h.add(
        _.Concept('paramIdECMF', 'defaultParameter', 'paramId.def',
                  'conceptsMasterDir', 'conceptsLocalDirECMF', False))
    h.add(
        _.Concept('paramId', 'paramIdECMF', 'paramId.def', 'conceptsMasterDir',
                  'conceptsLocalDirAll', False))
    h.add(
        _.Concept('shortNameECMF', 'defaultShortName', 'shortName.def',
                  'conceptsMasterDir', 'conceptsLocalDirECMF', False))
    h.add(
        _.Concept('shortName', 'shortNameECMF', 'shortName.def',
                  'conceptsMasterDir', 'conceptsLocalDirAll', False))
    h.alias('ls.shortName', 'shortName')
    h.add(
        _.Concept('unitsECMF', 'defaultName', 'units.def', 'conceptsMasterDir',
                  'conceptsLocalDirECMF', False))
    h.add(
        _.Concept('units', 'unitsECMF', 'units.def', 'conceptsMasterDir',
                  'conceptsLocalDirAll', False))
    h.add(
        _.Concept('nameECMF', 'defaultName', 'name.def', 'conceptsMasterDir',
                  'conceptsLocalDirECMF', False))
    h.add(
        _.Concept('name', 'nameECMF', 'name.def', 'conceptsMasterDir',
                  'conceptsLocalDirAll', False))
    h.add(
        _.Concept('cfNameECMF', 'defaultShortName', 'cfName.def',
                  'conceptsMasterDir', 'conceptsLocalDirECMF', False))
    h.add(
        _.Concept('cfName', 'cfNameECMF', 'cfName.def', 'conceptsMasterDir',
                  'conceptsLocalDirAll', False))
    h.add(
        _.Concept('cfVarNameECMF', 'defaultShortName', 'cfVarName.def',
                  'conceptsMasterDir', 'conceptsLocalDirECMF', False))
    h.add(
        _.Concept('cfVarName', 'cfVarNameECMF', 'cfVarName.def',
                  'conceptsMasterDir', 'conceptsLocalDirAll', False))
    h.add(
        _.Concept('modelName', 'defaultName', 'modelName.def',
                  'conceptsMasterDir', 'conceptsLocalDirAll', False))
    _.Template('grib2/products_[productionStatusOfProcessedData].def',
               True).load(h)
    h.add(_.Ifs_param('ifsParam', _.Get('paramId'), _.Get('type')))
Пример #27
0
def load(h):

    h.add(_.Ieeefloat('referenceValue', 4))
    h.add(
        _.Reference_value_error('referenceValueError', _.Get('referenceValue'),
                                _.Get('ieee')))
    h.add(_.Signed('binaryScaleFactor', 2))
    h.add(_.Signed('decimalScaleFactor', 2))
    h.add(_.Transient('optimizeScaleFactor', 0))
    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBits', 'bitsPerValue')
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(
        _.Codetable('typeOfOriginalFieldValues', 1, "5.1.table",
                    _.Get('masterDir'), _.Get('localDir')))
Пример #28
0
def load(h):

    h.add(_.Unsigned('bitsPerValue', 1))
    h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue')
    h.add(_.Ibmfloat('realPart', 4))
    h.add(_.Position('offsetBeforeData'))
    h.add(_.Transient('P', 0))

    if h._gribex_mode_on():
        h.add(_.Transient('computeLaplacianOperator', 0))
    else:
        h.add(_.Transient('computeLaplacianOperator', 1))

    h.add(
        _.Data_g1simple_packing('codedValues', _.Get('section4Length'),
                                _.Get('offsetBeforeData'),
                                _.Get('offsetSection4'), _.Get('unitsFactor'),
                                _.Get('unitsBias'), _.Get('changingPrecision'),
                                _.Get('numberOfCodedValues'),
                                _.Get('bitsPerValue'), _.Get('referenceValue'),
                                _.Get('binaryScaleFactor'),
                                _.Get('decimalScaleFactor'),
                                _.Get('optimizeScaleFactor'),
                                _.Get('halfByte')))
    h.add(
        _.Data_g1shsimple_packing('values', _.Get('codedValues'),
                                  _.Get('realPart')))
    h.alias('data.packedValues', 'values')
    h.add(
        _.G1number_of_coded_values_sh_simple('numberOfCodedValues',
                                             _.Get('bitsPerValue'),
                                             _.Get('offsetBeforeData'),
                                             _.Get('offsetAfterData'),
                                             _.Get('halfByte'),
                                             _.Get('numberOfValues')))
    _.Template('common/statistics_spectral.def').load(h)
Пример #29
0
def load(h):

    h.add(_.Position('offsetSection2'))
    h.add(_.Section_length('section2Length', 4))
    h.add(
        _.Section_pointer('section2Pointer', _.Get('offsetSection2'),
                          _.Get('section2Length'), 2))
    h.add(_.Unsigned('numberOfSection', 1))
    h.alias('tiggeSuiteID', 'zero')
    h.add(_.Transient('addEmptySection2', 0))

    if (h.get_l('addEmptySection2') == 0):

        if ((h.get_l('grib2LocalSectionPresent') == 1)
                or ((h.get_l('section2Length') > 5) or h._new())):
            h.alias('section2Used', 'one')

            if ((h.get_l('productionStatusOfProcessedData') == 4)
                    or (h.get_l('productionStatusOfProcessedData') == 5)):
                h.add(
                    _.Codetable('tiggeLocalVersion', 2,
                                "grib2/tiggeLocalVersion.table"))
                _.Template('grib2/local.tigge.[tiggeLocalVersion:l].def').load(
                    h)

            if ((h.get_l('productionStatusOfProcessedData') == 10)
                    or (h.get_l('productionStatusOfProcessedData') == 11)):
                h.add(
                    _.Codetable('crraLocalVersion', 2,
                                "grib2/crraLocalVersion.table"))
                _.Template('grib2/local.crra.[crraLocalVersion:l].def').load(h)

            h.add(
                _.Codetable(
                    'grib2LocalSectionNumber', 2,
                    "grib2/grib2LocalSectionNumber.[centreForLocal:l].table"))

            if (h.get_l('grib2LocalSectionNumber') != 0):
                _.Template('grib2/local.[centreForLocal:l].def', True).load(h)
            else:
                h.add(_.Constant('deleteLocalDefinition', 1))

            h.add(_.Position('offsetAfterCentreLocalSection'))

    h.add(_.Section_padding('section2Padding'))
Пример #30
0
def load(h):

    h.add(_.Position('startOfHeaders'))
    h.add(_.Ascii('identifier', 4))
    h.alias('ls.identifier', 'identifier')
    h.add(_.Transient('missingValue', 9999))
    h.add(_.Constant('ieeeFloats', 0))
    _.Template('tide/section.1.def').load(h)
    _.Template('tide/mars_labeling.def').load(h)
    h.add(_.Position('endOfHeadersMarker'))
    h.add(
        _.Evaluate('lengthOfHeaders',
                   (_.Get('endOfHeadersMarker') - _.Get('startOfHeaders'))))
    h.add(
        _.Md5('md5Headers', _.Get('startOfHeaders'), _.Get('lengthOfHeaders')))
    _.Template('tide/section.4.def').load(h)
    h.add(_.Ascii('endMark', 4))
    h.add(_.Position('totalLength'))