示例#1
0
def load(h):

    h.add(
        _.Codetable('derivedForecast', 1, "4.7.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(_.Unsigned('numberOfForecastsInEnsemble', 1))
    h.alias('totalNumber', 'numberOfForecastsInEnsemble')
示例#2
0
def load(h):

    h.add(
        _.Codetable('parameterCategory', 1, "4.1.[discipline:l].table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(
        _.Codetable('parameterNumber', 1,
                    "4.2.[discipline:l].[parameterCategory:l].table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber')))
    h.add(_.Codetable_title('parameterName', _.Get('parameterNumber')))
    h.add(_.Unsigned('inputProcessIdentifier', 2))
    h.add(_.StringCodetable('inputOriginatingCentre', 2, "common/c-11.table"))
    h.add(_.Unsigned('typeOfPostProcessing', 1))
    h.add(
        _.Codetable('typeOfGeneratingProcess', 1, "4.3.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('backgroundProcess', 1))
    h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess')
    h.add(_.Unsigned('generatingProcessIdentifier', 1))
    h.add(_.Unsigned('hoursAfterDataCutoff', 2))
    h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff')
    h.add(_.Unsigned('minutesAfterDataCutoff', 1))
    h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff')
    h.add(
        _.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.alias('defaultStepUnits', 'one')
    _.Template('grib2/localConcepts/[centre:s]/default_step_units.def',
               True).load(h)
    h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table"))
    h.add(_.Signed('forecastTime', 4))
示例#3
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')
示例#4
0
def load(h):

    h.add(_.Unsigned('clusterIdentifier', 1))
    h.alias('number', 'clusterIdentifier')
    h.add(_.Unsigned('NH', 1))
    h.add(_.Unsigned('NL', 1))
    h.add(_.Unsigned('totalNumberOfClusters', 1))
    h.alias('totalNumber', 'totalNumberOfClusters')
    h.add(
        _.Codetable('clusteringMethod', 1, "4.8.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(_.Unsigned('northernLatitudeOfClusterDomain', 4))
    h.add(_.Unsigned('southernLatitudeOfClusterDomain', 4))
    h.add(_.Unsigned('easternLongitudeOfClusterDomain', 4))
    h.add(_.Unsigned('westernLongitudeOfClusterDomain', 4))
    h.add(_.Unsigned('numberOfForecastsInTheCluster', 1))
    h.alias('NC', 'numberOfForecastsInTheCluster')
    h.add(_.Unsigned('scaleFactorOfStandardDeviation', 1))
    h.alias('scaleFactorOfStandardDeviationInTheCluster',
            'scaleFactorOfStandardDeviation')
    h.add(_.Unsigned('scaledValueOfStandardDeviation', 4))
    h.alias('scaledValueOfStandardDeviationInTheCluster',
            'scaledValueOfStandardDeviation')
    h.add(_.Unsigned('scaleFactorOfDistanceFromEnsembleMean', 1))
    h.add(_.Unsigned('scaledValueOfDistanceFromEnsembleMean', 4))
示例#5
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (328 - _.Get('section1Length'))))
    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('clusterNumber', 1))
    h.alias('number', 'clusterNumber')
    h.add(_.Unsigned('totalNumberOfClusters', 1))
    h.alias('totalNumber', 'totalNumberOfClusters')
    h.add(_.Pad('padding_loc2_1', 1))
    h.add(_.Unsigned('clusteringMethod', 1))
    h.add(_.Unsigned('startTimeStep', 2))
    h.add(_.Unsigned('endTimeStep', 2))
    h.add(_.Signed('northernLatitudeOfDomain', 3))
    h.add(_.Signed('westernLongitudeOfDomain', 3))
    h.add(_.Signed('southernLatitudeOfDomain', 3))
    h.add(_.Signed('easternLongitudeOfDomain', 3))
    h.add(_.Unsigned('operationalForecastCluster', 1))
    h.add(_.Unsigned('controlForecastCluster', 1))
    h.add(_.Unsigned('numberOfForecastsInCluster', 1))

    if (h.get_l('numberOfForecastsInCluster') > 0):
        h.add(
            _.Unsigned('ensembleForecastNumbers', 1,
                       _.Get('numberOfForecastsInCluster')))

    h.add(_.Padto('padding_loc2_2', (_.Get('offsetSection1') + 328)))
    h.add(_.Constant('unknown', "-"))
    h.add(
        _.Concept('clusteringDomain', 'unknown', 'cluster_domain.def',
                  'conceptsMasterDir', 'conceptsLocalDirAll', True))
    h.alias('number', 'clusterNumber')
    h.alias('domain', 'clusteringDomain')
示例#6
0
def load(h):

    h.add(_.Unsigned('numberOfTimeSteps', 4))
    h.alias('NT', 'numberOfTimeSteps')
    h.add(
        _.Codetable('unitOfOffsetFromReferenceTime', 1, "4.4.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('offsetFromReferenceOfFirstTime', 4))
    h.add(
        _.Codetable('typeOfTimeIncrement', 1, "4.11.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(
        _.Codetable('unitOfTimeIncrement', 1, "4.4.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(_.Unsigned('timeIncrement', 4))
    h.add(_.Unsigned('year', 2))
    h.add(_.Unsigned('month', 1))
    h.add(_.Unsigned('day', 1))
    h.add(_.Unsigned('hour', 1))
    h.add(_.Unsigned('minute', 1))
    h.add(_.Unsigned('second', 1))
    h.add(_.Unsigned('numberOfVerticalPoints', 2))
    h.add(
        _.Codetable('physicalMeaningOfVerticalCoordinate', 1, "3.15.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(
        _.Codetable('verticalCoordinate', 1, "3.21.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(_.Unsigned('NC', 2))
示例#7
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (960 - _.Get('section1Length'))))
    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('clusterNumber', 1))
    h.alias('number', 'clusterNumber')
    h.add(_.Unsigned('totalNumberOfClusters', 1))
    h.alias('totalNumber', 'totalNumberOfClusters')
    h.add(_.Pad('padding_loc29_1', 1))
    h.add(_.Unsigned('clusteringMethod', 1))
    h.add(_.Signed('northernLatitudeOfDomain', 3))
    h.add(_.Signed('westernLongitudeOfDomain', 3))
    h.add(_.Signed('southernLatitudeOfDomain', 3))
    h.add(_.Signed('easternLongitudeOfDomain', 3))
    h.add(_.Unsigned('numberOfForecastsInCluster', 1))
    h.add(_.Unsigned('numberOfParametersUsedForClustering', 1))
    h.add(_.Unsigned('numberOfPressureLevelsUsedForClustering', 1))
    h.add(_.Unsigned('numberOfStepsUsedForClustering', 1))
    h.add(_.Pad('padding_loc29_2', 10))

    with h.list('listOfEnsembleForecastNumbers'):
        for i in range(0, h.get_l('numberOfForecastsInCluster')):
            h.add(_.Unsigned('baseDateEPS', 4))
            h.add(_.Unsigned('baseTimeEPS', 2))
            h.add(_.Unsigned('number', 1))

    with h.list('listOfParametersUsedForClustering'):
        for i in range(0, h.get_l('numberOfParametersUsedForClustering')):
            h.add(_.Unsigned('parameterCode', 1))
            h.add(_.Unsigned('tableCode', 1))
    h.add(_.Unsigned('pressureLevel', 2, _.Get('numberOfPressureLevelsUsedForClustering')))
    h.add(_.Unsigned('stepForClustering', 2, _.Get('numberOfStepsUsedForClustering')))
    h.add(_.Padto('padding_loc29_3', (_.Get('offsetSection1') + 960)))
    h.alias('number', 'clusterNumber')
示例#8
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (120 - _.Get('section1Length'))))
    h.alias('grib2LocalSectionPresent', 'present')
    h.add(_.Constant('grib2LocalSectionNumber', 18))

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

    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('perturbationNumber', 1))
    h.alias('number', 'perturbationNumber')
    h.add(_.Unsigned('numberOfForecastsInEnsemble', 1))
    h.alias('totalNumber', 'numberOfForecastsInEnsemble')
    h.add(_.Codetable('dataOrigin', 1, "common/c-1.table"))
    h.alias('origin', 'dataOrigin')
    h.add(_.Ascii('modelIdentifier', 4))
    h.add(_.Unsigned('consensusCount', 1))
    h.add(_.Pad('padding_loc18_1', 3))

    with h.list('consensus'):
        for i in range(0, h.get_l('consensusCount')):
            h.add(_.Ascii('ccccIdentifiers', 4))
    h.add(_.Padto('padding_loc18_2', (_.Get('offsetSection1') + 120)))
    h.alias('local.dataOrigin', 'dataOrigin')
    h.alias('local.modelIdentifier', 'modelIdentifier')
    h.alias('local.consensusCount', 'consensusCount')
示例#9
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (328 - _.Get('section1Length'))))
    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('clusterNumber', 1))
    h.alias('number', 'clusterNumber')
    h.add(_.Unsigned('totalNumberOfClusters', 1))
    h.alias('totalNumber', 'totalNumberOfClusters')
    h.add(_.Pad('padding_loc2_1', 1))
    h.add(_.Unsigned('clusteringMethod', 1))
    h.add(_.Unsigned('startTimeStep', 2))
    h.add(_.Unsigned('endTimeStep', 2))
    h.add(_.Signed('northernLatitudeOfDomain', 3))
    h.add(_.Signed('westernLongitudeOfDomain', 3))
    h.add(_.Signed('southernLatitudeOfDomain', 3))
    h.add(_.Signed('easternLongitudeOfDomain', 3))
    h.add(_.Ascii('clusteringDomain', 1))
    h.add(_.Unsigned('operationalForecastCluster', 1))
    h.add(_.Unsigned('controlForecastCluster', 1))
    h.add(_.Unsigned('representativeMember', 1))
    h.add(_.Codetable('climatologicalRegime', 1, "grib1/regime.table"))
    h.add(_.Unsigned('numberOfForecastsInCluster', 1))

    if (h.get_l('numberOfForecastsInCluster') > 0):
        h.add(
            _.Unsigned('ensembleForecastNumbers', 1,
                       _.Get('numberOfForecastsInCluster')))

    h.add(_.Padto('padding_loc2_2', (_.Get('offsetSection1') + 328)))
    h.alias('mars.number', 'clusterNumber')
    h.alias('mars.domain', 'clusteringDomain')
示例#10
0
def load(h):

    h.add(
        _.G1verificationdate('verificationDate', _.Get('dataDate'),
                             _.Get('dataTime'), _.Get('startStep')))
    h.alias('mars.date', 'verificationDate')
    h.alias('mars.step', 'startStep')
示例#11
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)
示例#12
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (334 - _.Get('section1Length'))))
    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('tubeNumber', 1))
    h.add(_.Unsigned('totalNumberOfTubes', 1))
    h.add(_.Unsigned('centralClusterDefinition', 1))
    h.add(_.Unsigned('parameterIndicator', 1))
    h.add(_.Unsigned('levelIndicator', 1))
    h.add(_.Signed('northLatitudeOfDomainOfTubing', 3))
    h.add(_.Signed('westLongitudeOfDomainOfTubing', 3))
    h.add(_.Signed('southLatitudeOfDomainOfTubing', 3))
    h.add(_.Signed('eastLongitudeOfDomainOfTubing', 3))
    h.add(_.Unsigned('numberOfOperationalForecastTube', 1))
    h.add(_.Unsigned('numberOfControlForecastTube', 1))
    h.add(_.Unsigned('heightOrPressureOfLevel', 2))
    h.add(_.Unsigned('referenceStep', 2))
    h.add(_.Unsigned('radiusOfCentralCluster', 2))
    h.add(_.Unsigned('ensembleStandardDeviation', 2))
    h.add(_.Unsigned('distanceFromTubeToEnsembleMean', 2))
    h.add(_.Unsigned('numberOfForecastsInTube', 1))
    h.add(_.Unsigned('ensembleForecastNumbers', 1, _.Get('numberOfForecastsInTube')))
    h.add(_.Padto('padding_loc10_1', (_.Get('offsetSection1') + 334)))
    h.add(_.Concept('tubeDomain', 'unknown', 'tube_domain.def', 'conceptsMasterDir', 'conceptsLocalDirAll', False))
    h.alias('number', 'tubeNumber')
    h.alias('totalNumber', 'totalNumberOfTubes')
    h.alias('reference', 'referenceStep')
    h.alias('domain', 'tubeDomain')
示例#13
0
def load(h):

    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Constant('GRIBEXSection1Problem', (80 - _.Get('section1Length'))))
    h.add(_.Unsigned('number', 1))
    h.alias('perturbationNumber', 'number')
    h.add(_.Unsigned('ensembleSize', 1))
    h.alias('totalNumber', 'ensembleSize')
    h.add(
        _.Sprintf('quantile', "%s:%s", _.Get('number'), _.Get('ensembleSize')))
    h.add(_.Unsigned('versionNumberOfExperimentalSuite', 1))
    h.alias('powerOfTenUsedToScaleClimateWeight',
            'versionNumberOfExperimentalSuite')
    h.add(_.Unsigned('implementationDateOfModelCycle', 4))
    h.alias('weightAppliedToClimateMonth1', 'implementationDateOfModelCycle')
    h.add(_.Unsigned('numberOfReforecastYearsInModelClimate', 3))
    h.alias('firstMonthUsedToBuildClimateMonth1',
            'numberOfReforecastYearsInModelClimate')
    h.add(_.Unsigned('numberOfDaysInClimateSamplingWindow', 3))
    h.alias('lastMonthUsedToBuildClimateMonth1',
            'numberOfDaysInClimateSamplingWindow')
    h.add(_.Unsigned('sampleSizeOfModelClimate', 3))
    h.alias('firstMonthUsedToBuildClimateMonth2', 'sampleSizeOfModelClimate')
    h.add(_.Unsigned('versionOfModelClimate', 3))
    h.alias('lastMonthUsedToBuildClimateMonth2', 'versionOfModelClimate')
    h.add(_.Unsigned('efiOrder', 1))
    h.add(_.Pad('padding_loc19_2', 11))
示例#14
0
def load(h):

    h.add(_.Constant('dataRepresentationType', 90))
    h.add(
        _.Codetable('parameterCategory', 1, "4.1.[discipline:l].table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(
        _.Codetable('parameterNumber', 1,
                    "4.2.[discipline:l].[parameterCategory:l].table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber')))
    h.add(_.Codetable_title('parameterName', _.Get('parameterNumber')))
    h.add(
        _.Codetable('typeOfGeneratingProcess', 1, "4.3.table",
                    _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('observationGeneratingProcessIdentifier', 1))
    h.add(_.Unsigned('NB', 1))
    h.alias('numberOfContributingSpectralBands', 'NB')
    h.add(
        _.Codetable('typeOfAuxiliaryInformation', 1, "4.15.table",
                    _.Get('masterDir'), _.Get('localDir')))

    with h.list('listOfContributingSpectralBands'):
        for i in range(0, h.get_l('numberOfContributingSpectralBands')):
            h.add(_.Unsigned('satelliteSeries', 2))
            h.add(_.Unsigned('satelliteNumber', 2))
            h.add(_.Unsigned('instrumentType', 2))
            h.add(_.Unsigned('scaleFactorOfCentralWaveNumber', 1))
            h.add(_.Unsigned('scaledValueOfCentralWaveNumber', 4))
示例#15
0
def load(h):

    h.add(_.Constant('GRIBEXSection1Problem', (62 - _.Get('section1Length'))))
    _.Template('grib1/mars_labeling.def').load(h)
    h.add(_.Unsigned('intervalBetweenTimes', 1))
    h.add(_.Constant('numberOfIntegers', 12))
    h.add(_.Unsigned('unsignedIntegers', 1, _.Get('numberOfIntegers')))
示例#16
0
def load(h):

    h.add(_.Section_length('section4Length', 3))
    h.add(_.Unsigned('reserved1', 1))
    h.add(_.Codeflag('missingDataFlag', 1, "grib1/1.table"))
    h.add(_.Unsigned('numberOfBytesPerInteger', 1))
    h.add(_.Unsigned('reserved', 2))
    h.add(_.Unsigned('numberOfCharacters', 3))
    h.alias('numberOfChars', 'numberOfCharacters')
    h.add(_.Unsigned('numberOfFloats', 3))
    h.add(_.Unsigned('numberOfIntegers', 3))
    h.alias('numberOfInts', 'numberOfIntegers')
    h.add(_.Unsigned('numberOfLogicals', 3))
    h.add(_.Unsigned('numberOfReservedBytes', 3))
    h.add(_.Unsigned('reserved', 4))
    h.add(_.Unsigned('reserved', 4))
    h.add(_.Unsigned('reserved', 1))
    h.add(_.Ibmfloat('floatValues', 4, _.Get('numberOfFloats')))
    h.alias('floatVal', 'floatValues')

    if h.get_l('numberOfIntegers'):
        h.add(_.Signed('integerValues', 4, _.Get('numberOfIntegers')))

    if h.get_l('numberOfCharacters'):
        h.add(_.StringUnsigned('charValues', 1, _.Get('numberOfCharacters')))

    h.add(_.Section_padding('padding'))
示例#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.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')))
示例#18
0
def load(h):

    h.add(
        _.Codetable('typeOfCalendar', 1, "1.6.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(_.Signed('numberOfTensOfThousandsOfYearsOfOffset', 2))
    h.alias('paleontologicalOffset', 'numberOfTensOfThousandsOfYearsOfOffset')
示例#19
0
def load(h):

    h.add(
        _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'),
                    _.Get('localDir')))
    h.add(_.Unsigned('numberOfGridUsed', 3))
    h.add(_.Unsigned('numberOfGridInReference', 1))
    h.add(_.Bytes('uuidOfHGrid', 16))
示例#20
0
def load(h):

    h.add(_.Constant('section8Length', 4))
    h.add(_.Position('offsetSection8'))
    h.add(_.Ascii('7777', 4))
    h.add(
        _.Section_pointer('section8Pointer', _.Get('offsetSection8'),
                          _.Get('section8Length'), 8))
示例#21
0
def load(h):

    h.add(
        _.G1day_of_the_year_date('dayOfTheYearDate',
                                 _.Get('centuryOfReferenceTimeOfData'),
                                 _.Get('yearOfCentury'), _.Get('month'),
                                 _.Get('day')))
    h.alias('mars.date', 'dayOfTheYearDate')
示例#22
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)
示例#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.alias('mars.origin', 'centre')
    h.add(_.G1fcperiod('forecastperiod', _.Get('P1'), _.Get('P2'), _.Get('timeRangeIndicator'), _.Get('indicatorOfUnitOfTimeRange')))
    h.alias('mars.fcperiod', 'forecastperiod')
    h.unalias('mars.step')
    h.alias('mars.method', 'methodNumber')

    if (h.get_s('class') == "od"):
        h.alias('mars.system', 'systemNumber')
示例#25
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')))
示例#26
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')))
def load(h):

    h.add(_.Codetable('parameterCategory', 1, "4.1.[discipline:l].table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable('parameterNumber', 1, "4.2.[discipline:l].[parameterCategory:l].table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber')))
    h.add(_.Codetable_title('parameterName', _.Get('parameterNumber')))
    h.add(_.Codetable('constituentType', 2, "4.230.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('numberOfModeOfDistribution', 2))
    h.add(_.Unsigned('modeNumber', 2))
    h.add(_.Codetable('typeOfDistributionFunction', 2, "4.240.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('numberOfDistributionFunctionParameters', 1))
    h.alias('NP', 'numberOfDistributionFunctionParameters')

    with h.list('listOfDistributionFunctionParameter'):
        for i in range(0, h.get_l('numberOfDistributionFunctionParameters')):
            h.add(_.Signed('scaleFactorOfDistributionFunctionParameter', 1))
            h.add(_.Unsigned('scaledValueOfDistributionFunctionParameter', 4))
    h.add(_.Codetable('typeOfGeneratingProcess', 1, "4.3.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('backgroundProcess', 1))
    h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess')
    h.add(_.Unsigned('generatingProcessIdentifier', 1))
    h.add(_.Unsigned('hoursAfterDataCutoff', 2))
    h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff')
    h.add(_.Unsigned('minutesAfterDataCutoff', 1))
    h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff')
    h.add(_.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table", _.Get('masterDir'), _.Get('localDir')))
    h.alias('defaultStepUnits', 'one')
    _.Template('grib2/localConcepts/[centre:s]/default_step_units.def', True).load(h)
    h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table"))
    h.add(_.Signed('forecastTime', 4))
示例#28
0
def load(h):

    h.add(_.Codetable('parameterCategory', 1, "4.1.[discipline:l].table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable('parameterNumber', 1, "4.2.[discipline:l].[parameterCategory:l].table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable_units('parameterUnits', _.Get('parameterNumber')))
    h.add(_.Codetable_title('parameterName', _.Get('parameterNumber')))
    h.add(_.Codetable('typeOfGeneratingProcess', 1, "4.3.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('backgroundProcess', 1))
    h.alias('backgroundGeneratingProcessIdentifier', 'backgroundProcess')
    h.add(_.Unsigned('generatingProcessIdentifier', 1))
    h.add(_.Unsigned('hoursAfterDataCutoff', 2))
    h.alias('hoursAfterReferenceTimeOfDataCutoff', 'hoursAfterDataCutoff')
    h.add(_.Unsigned('minutesAfterDataCutoff', 1))
    h.alias('minutesAfterReferenceTimeOfDataCutoff', 'minutesAfterDataCutoff')
    h.add(_.Codetable('indicatorOfUnitOfTimeRange', 1, "4.4.table", _.Get('masterDir'), _.Get('localDir')))
    h.alias('defaultStepUnits', 'one')
    _.Template('grib2/localConcepts/[centre:s]/default_step_units.def', True).load(h)
    h.add(_.TransientCodetable('stepUnits', 1, "stepUnits.table"))
    h.add(_.Signed('forecastTime', 4))
    h.add(_.Codetable('horizontalDimensionProcessed', 1, "4.220.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable('treatmentOfMissingData', 1, "4.221.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Codetable('typeOfStatisticalProcessing', 1, "4.10.table", _.Get('masterDir'), _.Get('localDir')))
    h.add(_.Unsigned('startOfRange', 4))
    h.add(_.Unsigned('endOfRange', 4))
    h.add(_.Unsigned('numberOfDataValues', 2))
示例#29
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')))
示例#30
0
def load(h):

    h.add(_.Data_g2simple_packing('codedValues', _.Get('section7Length'), _.Get('offsetBeforeData'), _.Get('offsetSection7'), _.Get('unitsFactor'), _.Get('unitsBias'), _.Get('changingPrecision'), _.Get('numberOfValues'), _.Get('bitsPerValue'), _.Get('referenceValue'), _.Get('binaryScaleFactor'), _.Get('decimalScaleFactor'), _.Get('optimizeScaleFactor')))
    h.add(_.Data_apply_bitmap('values', _.Get('codedValues'), _.Get('bitmap'), _.Get('missingValue'), _.Get('binaryScaleFactor'), _.Get('numberOfDataPoints'), _.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('data.packedValues', 'codedValues')
    _.Template('common/statistics_grid.def').load(h)