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)
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))
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')))
def load(h): h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven')
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')
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')
def load(h): h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY')
def load(h): h.add( _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add( _.From_scale_factor_scaled_value( 'radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add( _.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add( _.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('Ni', 4)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.add(_.Unsigned('Nj', 4)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Ny', 'Nj') h.alias('geography.Ni', 'Ni') h.alias('geography.Nj', 'Nj') h.add(_.Unsigned('basicAngleOfTheInitialProductionDomain', 4)) h.add( _.Transient('mBasicAngle', (_.Get('basicAngleOfTheInitialProductionDomain') * _.Get('oneMillionConstant')))) h.add(_.Transient('angleMultiplier', 1)) h.add(_.Transient('mAngleMultiplier', 1000000)) pass # when block h.add(_.Unsigned('subdivisionsOfBasicAngle', 4)) h.add(_.Transient('angleDivisor', 1000000)) pass # when block h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') with h.list('longitudesList'): for i in range(0, h.get_l('Ni')): h.add(_.Unsigned('longitudes', 4)) with h.list('latitudesList'): for i in range(0, h.get_l('Nj')): h.add(_.Signed('latitudes', 4)) h.add(_.Signed('latitudeOfSouthernPole', 4)) h.alias('latitudeOfTheSouthernPoleOfProjection', 'latitudeOfSouthernPole') h.add(_.Unsigned('longitudeOfSouthernPole', 4)) h.alias('longitudeOfTheSouthernPoleOfProjection', 'longitudeOfSouthernPole') h.add( _.Scale('latitudeOfSouthernPoleInDegrees', _.Get('latitudeOfSouthernPole'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSouthernPoleInDegrees', 'latitudeOfSouthernPoleInDegrees') h.add( _.G2lon('longitudeOfSouthernPoleInDegrees', _.Get('longitudeOfSouthernPole'))) h.alias('geography.longitudeOfSouthernPoleInDegrees', 'longitudeOfSouthernPoleInDegrees') h.add(_.Ieeefloat('angleOfRotation', 4)) h.alias('geography.angleOfRotationInDegrees', 'angleOfRotation') h.alias('angleOfRotationOfProjection', 'angleOfRotation') h.alias('isRotatedGrid', 'one')
def load(h): h.add( _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add( _.From_scale_factor_scaled_value( 'radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add( _.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add( _.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('Nx', 4)) h.alias('Ni', 'Nx') h.alias('numberOfPointsAlongXAxis', 'Nx') h.alias('geography.Nx', 'Nx') h.add(_.Unsigned('Ny', 4)) h.alias('Nj', 'Ny') h.alias('numberOfPointsAlongYAxis', 'Ny') h.alias('geography.Ny', 'Ny') h.add(_.Signed('latitudeOfSubSatellitePoint', 4)) h.add(_.Signed('longitudeOfSubSatellitePoint', 4)) h.add( _.Scale('latitudeOfSubSatellitePointInDegrees', _.Get('latitudeOfSubSatellitePoint'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSubSatellitePointInDegrees', 'latitudeOfSubSatellitePointInDegrees') h.add( _.Scale('longitudeOfSubSatellitePointInDegrees', _.Get('longitudeOfSubSatellitePoint'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfSubSatellitePointInDegrees', 'longitudeOfSubSatellitePointInDegrees') h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add(_.Unsigned('dx', 4)) h.alias('geography.dx', 'dx') h.add(_.Unsigned('dy', 4)) h.alias('geography.dy', 'dy') h.add(_.Unsigned('Xp', 4)) h.add( _.Scale('XpInGridLengths', _.Get('Xp'), _.Get('one'), _.Get('thousand'))) h.alias('geography.XpInGridLengths', 'XpInGridLengths') h.alias('xCoordinateOfSubSatellitePoint', 'XpInGridLengths') h.add(_.Unsigned('Yp', 4)) h.add( _.Scale('YpInGridLengths', _.Get('Yp'), _.Get('one'), _.Get('thousand'))) h.alias('geography.YpInGridLengths', 'YpInGridLengths') h.alias('yCoordinateOfSubSatellitePoint', 'YpInGridLengths') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add(_.Signed('orientationOfTheGrid', 4)) h.add( _.Scale('orientationOfTheGridInDegrees', _.Get('orientationOfTheGrid'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.orientationOfTheGridInDegrees', 'orientationOfTheGridInDegrees') h.add(_.Unsigned('Nr', 4)) h.alias( 'altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius', 'Nr') h.add( _.Scale('NrInRadiusOfEarth', _.Get('Nr'), _.Get('oneConstant'), _.Get('oneMillionConstant'), _.Get('truncateDegrees'))) h.alias('geography.NrInRadiusOfEarth', 'NrInRadiusOfEarth') h.add(_.Unsigned('Xo', 4)) h.alias('xCoordinateOfOriginOfSectorImage', 'Xo') h.alias('geography.Xo', 'Xo') h.add(_.Unsigned('Yo', 4)) h.alias('yCoordinateOfOriginOfSectorImage', 'Yo') h.alias('geography.Yo', 'Yo') h.add( _.Iterator('ITERATOR', _.Get('space_view'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('radius'), _.Get('earthIsOblate'), _.Get('earthMajorAxis'), _.Get('earthMinorAxis'), _.Get('Nx'), _.Get('Ny'), _.Get('latitudeOfSubSatellitePointInDegrees'), _.Get('longitudeOfSubSatellitePointInDegrees'), _.Get('dx'), _.Get('dy'), _.Get('XpInGridLengths'), _.Get('YpInGridLengths'), _.Get('orientationOfTheGridInDegrees'), _.Get('NrInRadiusOfEarth'), _.Get('Xo'), _.Get('Yo'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('jPointsAreConsecutive'), _.Get('alternativeRowScanning')))
def load(h): h.add(_.Unsigned('numberOfDataBinsAlongRadials', 4)) h.alias('Nb', 'numberOfDataBinsAlongRadials') h.add(_.Unsigned('numberOfRadials', 4)) h.alias('Nr', 'numberOfRadials') h.add(_.Signed('latitudeOfCentrePoint', 4)) h.alias('La1', 'latitudeOfCentrePoint') h.add( _.Scale('latitudeOfCentrePointInDegrees', _.Get('latitudeOfCentrePoint'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfCentrePointInDegrees', 'latitudeOfCentrePointInDegrees') h.alias('La1InDegrees', 'latitudeOfCentrePointInDegrees') h.add(_.Unsigned('longitudeOfCentrePoint', 4)) h.alias('Lo1', 'longitudeOfCentrePoint') h.add( _.Scale('longitudeOfCentrePointInDegrees', _.Get('longitudeOfCentrePoint'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfCentrePointInDegrees', 'longitudeOfCentrePointInDegrees') h.alias('Lo1InDegrees', 'longitudeOfCentrePointInDegrees') h.add(_.Unsigned('spacingOfBinsAlongRadials', 4)) h.alias('Dx', 'spacingOfBinsAlongRadials') h.add(_.Unsigned('offsetFromOriginToInnerBound', 4)) h.alias('Dstart', 'offsetFromOriginToInnerBound') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') with h.list('radials'): for i in range(0, h.get_l('numberOfRadials')): h.add(_.Signed('startingAzimuth', 2)) h.alias('Azi', 'startingAzimuth') h.add(_.Signed('azimuthalWidth', 2)) h.alias('Adelta', 'azimuthalWidth')
def load(h): h.add(_.Position('offsetSection4')) h.add(_.G1_section4_length('section4Length', 3, _.Get('totalLength'))) h.add( _.Section_pointer('section4Pointer', _.Get('offsetSection4'), _.Get('section4Length'), 4)) h.add(_.G1_half_byte_codeflag('halfByte')) h.add(_.Codeflag('dataFlag', 1, "grib1/11.table")) h.add(_.Signed('binaryScaleFactor', 2)) h.add(_.Ibmfloat('referenceValue', 4)) h.add( _.Reference_value_error('referenceValueError', _.Get('referenceValue'), _.Get('ibm'))) h.add(_.Bit('sphericalHarmonics', _.Get('dataFlag'), 7)) h.add(_.Bit('complexPacking', _.Get('dataFlag'), 6)) h.add(_.Bit('integerPointValues', _.Get('dataFlag'), 5)) h.add(_.Bit('additionalFlagPresent', _.Get('dataFlag'), 4)) if (h.get_l('complexPacking') and (h.get_l('sphericalHarmonics') == 0)): h.add(_.Unsigned('widthOfFirstOrderValues', 1)) h.add(_.Unsigned('N1', 2)) h.add(_.Codeflag('extendedFlag', 1, "grib1/11-2.table")) h.add(_.Bit('matrixOfValues', _.Get('extendedFlag'), 6)) h.add(_.Bit('secondaryBitmapPresent', _.Get('extendedFlag'), 5)) h.add(_.Bit('secondOrderOfDifferentWidth', _.Get('extendedFlag'), 4)) h.add(_.Bit('generalExtended2ordr', _.Get('extendedFlag'), 3)) h.add(_.Bit('boustrophedonicOrdering', _.Get('extendedFlag'), 2)) h.add(_.Bit('twoOrdersOfSPD', _.Get('extendedFlag'), 1)) h.add(_.Bit('plusOneinOrdersOfSPD', _.Get('extendedFlag'), 0)) h.add( _.Evaluate('orderOfSPD', (_.Get('plusOneinOrdersOfSPD') + (2 * _.Get('twoOrdersOfSPD'))))) h.alias('secondaryBitmap', 'secondaryBitmapPresent') h.alias('boustrophedonic', 'boustrophedonicOrdering') else: h.add(_.Transient('orderOfSPD', 2)) h.add(_.Transient('boustrophedonic', 0)) h.add(_.Transient('hideThis', 0)) def packingType_inline_concept(h): def wrapped(h): sphericalHarmonics = h.get_l('sphericalHarmonics') complexPacking = h.get_l('complexPacking') additionalFlagPresent = h.get_l('additionalFlagPresent') if sphericalHarmonics == 0 and complexPacking == 0 and additionalFlagPresent == 0: return 'grid_simple' integerPointValues = h.get_l('integerPointValues') if sphericalHarmonics == 0 and complexPacking == 0 and integerPointValues == 1 and additionalFlagPresent == 1: return 'grid_ieee' if sphericalHarmonics == 1 and complexPacking == 1 and additionalFlagPresent == 0: return 'spectral_complex' representationMode = h.get_l('representationMode') if sphericalHarmonics == 1 and complexPacking == 0 and additionalFlagPresent == 0 and representationMode == 1: return 'spectral_simple' hideThis = h.get_l('hideThis') if sphericalHarmonics == 1 and complexPacking == 1 and additionalFlagPresent == 0 and hideThis == 1: return 'spectral_ieee' if sphericalHarmonics == 0 and complexPacking == 0 and additionalFlagPresent == 1: return 'grid_simple_matrix' secondOrderOfDifferentWidth = h.get_l( 'secondOrderOfDifferentWidth') matrixOfValues = h.get_l('matrixOfValues') secondaryBitmapPresent = h.get_l('secondaryBitmapPresent') generalExtended2ordr = h.get_l('generalExtended2ordr') if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 0: return 'grid_second_order_row_by_row' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 0 and matrixOfValues == 0 and secondaryBitmapPresent == 1 and generalExtended2ordr == 0: return 'grid_second_order_constant_width' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 1 and generalExtended2ordr == 0: return 'grid_second_order_general_grib1' plusOneinOrdersOfSPD = h.get_l('plusOneinOrdersOfSPD') twoOrdersOfSPD = h.get_l('twoOrdersOfSPD') if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 0 and twoOrdersOfSPD == 0: return 'grid_second_order_no_SPD' boustrophedonic = h.get_l('boustrophedonic') if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 0 and twoOrdersOfSPD == 1 and boustrophedonic == 1: return 'grid_second_order' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 0 and twoOrdersOfSPD == 1 and boustrophedonic == 0: return 'grid_second_order' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 0 and twoOrdersOfSPD == 1 and boustrophedonic == 0: return 'grid_second_order_no_boustrophedonic' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 0 and twoOrdersOfSPD == 1 and boustrophedonic == 1: return 'grid_second_order_boustrophedonic' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 1 and twoOrdersOfSPD == 0: return 'grid_second_order_SPD1' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 0 and twoOrdersOfSPD == 1: return 'grid_second_order_SPD2' if sphericalHarmonics == 0 and complexPacking == 1 and secondOrderOfDifferentWidth == 1 and matrixOfValues == 0 and secondaryBitmapPresent == 0 and generalExtended2ordr == 1 and plusOneinOrdersOfSPD == 1 and twoOrdersOfSPD == 1: return 'grid_second_order_SPD3' if sphericalHarmonics == 0 and complexPacking == 0 and additionalFlagPresent == 0: return 'grid_jpeg' if sphericalHarmonics == 0 and complexPacking == 0 and additionalFlagPresent == 0: return 'grid_png' if sphericalHarmonics == 0 and complexPacking == 0 and additionalFlagPresent == 0: return 'grid_ccsds' if sphericalHarmonics == 0 and complexPacking == 0 and additionalFlagPresent == 0: return 'grid_simple_log_preprocessing' return wrapped h.add( _.Concept('packingType', None, concepts=packingType_inline_concept(h))) h.alias('ls.packingType', 'packingType') h.alias('typeOfPacking', 'packingType') if (h.get_l('binaryScaleFactor') == -32767): h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') h.add(_.Constant('dataRepresentationTemplateNumber', 0)) h.add(_.Constant('bitMapIndicator', 0)) h.add(_.Position('offsetBeforeData')) h.add(_.Transient('numberOfCodedValues', _.Get('numberOfPoints'))) h.add( _.Data_dummy_field('values', _.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'), _.Get('packingType'), _.Get('grid_ieee'), _.Get('precision'), _.Get('missingValue'), _.Get('numberOfPoints'), _.Get('bitmap'))) else: _.Template('grib1/data.[packingType:s].def').load(h) h.add(_.Position('offsetAfterData')) h.add( _.Transient( 'dataLength', ((_.Get('offsetAfterData') - _.Get('offsetBeforeData')) / 8))) if (h.get_l('bitmapPresent') == 1): h.alias('numberOfEffectiveValues', 'numberOfDataPoints') else: h.alias('numberOfEffectiveValues', 'numberOfCodedValues') if h.get_l('sphericalHarmonics'): h.alias('numberOfEffectiveValues', 'numberOfValues') h.add( _.Decimal_precision('changeDecimalPrecision', _.Get('bitsPerValue'), _.Get('decimalScaleFactor'), _.Get('changingPrecision'), _.Get('values'))) h.add( _.Decimal_precision('decimalPrecision', _.Get('bitsPerValue'), _.Get('decimalScaleFactor'), _.Get('changingPrecision'))) h.alias('setDecimalPrecision', 'changeDecimalPrecision') h.add( _.Bits_per_value('bitsPerValueAndRepack', _.Get('values'), _.Get('bitsPerValue'))) h.alias('setBitsPerValue', 'bitsPerValueAndRepack') h.add( _.Scale_values('scaleValuesBy', _.Get('values'), _.Get('missingValue'))) h.add( _.Offset_values('offsetValuesBy', _.Get('values'), _.Get('missingValue'))) def gridType_inline_concept(h): def wrapped(h): dataRepresentationType = h.get_l('dataRepresentationType') sphericalHarmonics = h.get_l('sphericalHarmonics') PLPresent = h.get_l('PLPresent') if dataRepresentationType == 0 and sphericalHarmonics == 0 and PLPresent == 0: return 'regular_ll' Ni = h.get_l('Ni') if dataRepresentationType == 0 and sphericalHarmonics == 0 and PLPresent == 1 and Ni == h._missing( ): return 'reduced_ll' if dataRepresentationType == 1 and sphericalHarmonics == 0 and PLPresent == 0: return 'mercator' if dataRepresentationType == 3 and sphericalHarmonics == 0 and PLPresent == 0: return 'lambert' if dataRepresentationType == 5 and sphericalHarmonics == 0 and PLPresent == 0: return 'polar_stereographic' if dataRepresentationType == 6 and sphericalHarmonics == 0 and PLPresent == 0: return 'UTM' if dataRepresentationType == 7 and sphericalHarmonics == 0 and PLPresent == 0: return 'simple_polyconic' if dataRepresentationType == 8 and sphericalHarmonics == 0 and PLPresent == 0: return 'albers' if dataRepresentationType == 8 and sphericalHarmonics == 0 and PLPresent == 0: return 'miller' if dataRepresentationType == 10 and sphericalHarmonics == 0 and PLPresent == 0: return 'rotated_ll' if dataRepresentationType == 20 and sphericalHarmonics == 0 and PLPresent == 0: return 'stretched_ll' if dataRepresentationType == 30 and sphericalHarmonics == 0 and PLPresent == 0: return 'stretched_rotated_ll' if dataRepresentationType == 4 and sphericalHarmonics == 0 and PLPresent == 0: return 'regular_gg' if dataRepresentationType == 14 and sphericalHarmonics == 0 and PLPresent == 0: return 'rotated_gg' if dataRepresentationType == 24 and sphericalHarmonics == 0 and PLPresent == 0: return 'stretched_gg' if dataRepresentationType == 34 and sphericalHarmonics == 0 and PLPresent == 0: return 'stretched_rotated_gg' numberOfPointsAlongAParallel = h.get_l( 'numberOfPointsAlongAParallel') iDirectionIncrement = h.get_l('iDirectionIncrement') ijDirectionIncrementGiven = h.get_l('ijDirectionIncrementGiven') if dataRepresentationType == 4 and sphericalHarmonics == 0 and PLPresent == 1 and numberOfPointsAlongAParallel == h._missing( ) and iDirectionIncrement == h._missing( ) and ijDirectionIncrementGiven == 0: return 'reduced_gg' if dataRepresentationType == 14 and sphericalHarmonics == 0 and PLPresent == 1 and numberOfPointsAlongAParallel == h._missing( ) and iDirectionIncrement == h._missing( ) and ijDirectionIncrementGiven == 0: return 'reduced_rotated_gg' if dataRepresentationType == 24 and sphericalHarmonics == 0 and PLPresent == 1 and numberOfPointsAlongAParallel == h._missing( ) and iDirectionIncrement == h._missing( ) and ijDirectionIncrementGiven == 0: return 'reduced_stretched_gg' if dataRepresentationType == 34 and sphericalHarmonics == 0 and PLPresent == 1 and numberOfPointsAlongAParallel == h._missing( ) and iDirectionIncrement == h._missing( ) and ijDirectionIncrementGiven == 0: return 'reduced_stretched_rotated_gg' if dataRepresentationType == 14 and sphericalHarmonics == 0 and PLPresent == 0: return 'regular_rotated_gg' if dataRepresentationType == 24 and sphericalHarmonics == 0 and PLPresent == 0: return 'regular_stretched_gg' if dataRepresentationType == 34 and sphericalHarmonics == 0 and PLPresent == 0: return 'regular_stretched_rotated_gg' if dataRepresentationType == 50 and sphericalHarmonics == 1 and PLPresent == 0: return 'sh' if dataRepresentationType == 60 and sphericalHarmonics == 1 and PLPresent == 0: return 'rotated_sh' if dataRepresentationType == 70 and sphericalHarmonics == 1 and PLPresent == 0: return 'stretched_sh' if dataRepresentationType == 80 and sphericalHarmonics == 1 and PLPresent == 0: return 'stretched_rotated_sh' if dataRepresentationType == 90 and sphericalHarmonics == 0 and PLPresent == 0: return 'space_view' if PLPresent == 0: return 'unknown' if PLPresent == 1: return 'unknown_PLPresent' return wrapped h.add(_.Concept('gridType', None, concepts=gridType_inline_concept(h))) h.alias('ls.gridType', 'gridType') h.alias('geography.gridType', 'gridType') h.alias('typeOfGrid', 'gridType') h.add(_.Size('getNumberOfValues', _.Get('values'))) if ((h.get_l('complexPacking') == 0) or (h.get_l('sphericalHarmonics') == 1)): h.add( _.Padtoeven('padding_sec4_1', _.Get('offsetSection4'), _.Get('section4Length'))) h.add( _.Md5('md5Section4', _.Get('offsetSection4'), _.Get('section4Length'))) h.alias('md5DataSection', 'md5Section4')
def load(h): h.add( _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add( _.From_scale_factor_scaled_value( 'radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add( _.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add( _.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('Nx', 4)) h.alias('numberOfPointsAlongTheXAxis', 'Nx') h.alias('geography.Nx', 'Nx') h.add(_.Unsigned('Ny', 4)) h.alias('numberOfPointsAlongTheYAxis', 'Ny') h.alias('geography.Ny', 'Ny') h.add(_.Signed('latitudeOfFirstGridPoint', 4)) h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Unsigned('longitudeOfFirstGridPoint', 4)) h.alias('Lo1', 'longitudeOfFirstGridPoint') h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add(_.Signed('LaD', 4)) h.alias('latitudeWhereDxAndDyAreSpecified', 'LaD') h.add(_.Unsigned('LoV', 4)) h.add(_.Unsigned('xDirectionGridLength', 4)) h.alias('Dx', 'xDirectionGridLength') h.add(_.Unsigned('yDirectionGridLength', 4)) h.alias('Dy', 'yDirectionGridLength') h.add( _.Codeflag('projectionCentreFlag', 1, "grib2/tables/[tablesVersion]/3.5.table")) h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add(_.Signed('Latin1', 4)) h.add( _.Scale('Latin1InDegrees', _.Get('Latin1'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.Latin1InDegrees', 'Latin1InDegrees') h.add(_.Unsigned('Latin2', 4)) h.add( _.Scale('Latin2InDegrees', _.Get('Latin2'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.Latin2InDegrees', 'Latin2InDegrees') h.add(_.Signed('latitudeOfTheSouthernPoleOfProjection', 4)) h.alias('latitudeOfSouthernPole', 'latitudeOfTheSouthernPoleOfProjection') h.add( _.Scale('latitudeOfSouthernPoleInDegrees', _.Get('latitudeOfTheSouthernPoleOfProjection'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSouthernPoleInDegrees', 'latitudeOfSouthernPoleInDegrees') h.add(_.Unsigned('longitudeOfTheSouthernPoleOfProjection', 4)) h.alias('longitudeOfSouthernPole', 'longitudeOfTheSouthernPoleOfProjection') h.add( _.Scale('longitudeOfSouthernPoleInDegrees', _.Get('longitudeOfTheSouthernPoleOfProjection'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfSouthernPoleInDegrees', 'longitudeOfSouthernPoleInDegrees')
def load(h): h.add(_.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add(_.From_scale_factor_scaled_value('radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add(_.From_scale_factor_scaled_value('earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add(_.From_scale_factor_scaled_value('earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add(_.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add(_.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add(_.From_scale_factor_scaled_value('earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add(_.From_scale_factor_scaled_value('earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('Ni', 4)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.add(_.Unsigned('Nj', 4)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Ny', 'Nj') h.alias('geography.Ni', 'Ni') h.alias('geography.Nj', 'Nj') h.add(_.Unsigned('basicAngleOfTheInitialProductionDomain', 4)) h.add(_.Transient('mBasicAngle', (_.Get('basicAngleOfTheInitialProductionDomain') * _.Get('oneMillionConstant')))) h.add(_.Transient('angleMultiplier', 1)) h.add(_.Transient('mAngleMultiplier', 1000000)) pass # when block h.add(_.Unsigned('subdivisionsOfBasicAngle', 4)) h.add(_.Transient('angleDivisor', 1000000)) pass # when block h.add(_.Signed('latitudeOfFirstGridPoint', 4)) h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Signed('longitudeOfFirstGridPoint', 4)) h.alias('Lo1', 'longitudeOfFirstGridPoint') h.add(_.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add(_.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add(_.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add(_.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add(_.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add(_.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add(_.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add(_.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add(_.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add(_.Signed('latitudeOfLastGridPoint', 4)) h.alias('La2', 'latitudeOfLastGridPoint') h.add(_.Signed('longitudeOfLastGridPoint', 4)) h.alias('Lo2', 'longitudeOfLastGridPoint') h.add(_.Unsigned('iDirectionIncrement', 4)) h.alias('Di', 'iDirectionIncrement') h.add(_.Unsigned('N', 4)) h.alias('numberOfParallelsBetweenAPoleAndTheEquator', 'N') h.alias('geography.N', 'N') h.add(_.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add(_.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add(_.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add(_.G2grid('g2grid', _.Get('latitudeOfFirstGridPoint'), _.Get('longitudeOfFirstGridPoint'), _.Get('latitudeOfLastGridPoint'), _.Get('longitudeOfLastGridPoint'), _.Get('iDirectionIncrement'), None, _.Get('basicAngleOfTheInitialProductionDomain'), _.Get('subdivisionsOfBasicAngle'))) h.add(_.G2latlon('latitudeOfFirstGridPointInDegrees', _.Get('g2grid'), 0)) h.alias('geography.latitudeOfFirstGridPointInDegrees', 'latitudeOfFirstGridPointInDegrees') h.add(_.G2latlon('longitudeOfFirstGridPointInDegrees', _.Get('g2grid'), 1)) h.alias('geography.longitudeOfFirstGridPointInDegrees', 'longitudeOfFirstGridPointInDegrees') h.add(_.G2latlon('latitudeOfLastGridPointInDegrees', _.Get('g2grid'), 2)) h.alias('geography.latitudeOfLastGridPointInDegrees', 'latitudeOfLastGridPointInDegrees') h.add(_.G2latlon('longitudeOfLastGridPointInDegrees', _.Get('g2grid'), 3)) h.alias('geography.longitudeOfLastGridPointInDegrees', 'longitudeOfLastGridPointInDegrees') h.add(_.G2latlon('iDirectionIncrementInDegrees', _.Get('g2grid'), 4, _.Get('iDirectionIncrementGiven'))) h.alias('geography.iDirectionIncrementInDegrees', 'iDirectionIncrementInDegrees') h.add(_.Global_gaussian('global', _.Get('N'), _.Get('Ni'), _.Get('iDirectionIncrement'), _.Get('latitudeOfFirstGridPoint'), _.Get('longitudeOfFirstGridPoint'), _.Get('latitudeOfLastGridPoint'), _.Get('longitudeOfLastGridPoint'), _.Get('PLPresent'), _.Get('pl'), _.Get('basicAngleOfTheInitialProductionDomain'), _.Get('subdivisionsOfBasicAngle'))) h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('xLast', 'longitudeOfLastGridPointInDegrees') h.alias('yLast', 'latitudeOfLastGridPointInDegrees') h.alias('latitudeFirstInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('longitudeFirstInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('latitudeLastInDegrees', 'latitudeOfLastGridPointInDegrees') h.alias('longitudeLastInDegrees', 'longitudeOfLastGridPointInDegrees') h.alias('DiInDegrees', 'iDirectionIncrementInDegrees') if (h._missing('Ni') and (h.get_l('PLPresent') == 1)): h.add(_.Iterator('ITERATOR', _.Get('gaussian_reduced'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('N'), _.Get('pl'), _.Get('Nj'))) h.add(_.Nearest('NEAREST', _.Get('reduced'), _.Get('values'), _.Get('radius'), _.Get('Nj'), _.Get('pl'))) else: h.add(_.Iterator('ITERATOR', _.Get('gaussian'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('longitudeFirstInDegrees'), _.Get('DiInDegrees'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('latitudeFirstInDegrees'), _.Get('latitudeLastInDegrees'), _.Get('N'), _.Get('jScansPositively'))) h.add(_.Nearest('NEAREST', _.Get('regular'), _.Get('values'), _.Get('radius'), _.Get('Ni'), _.Get('Nj'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Latitudes('distinctLatitudes', _.Get('values'), 1)) h.add(_.Longitudes('distinctLongitudes', _.Get('values'), 1)) h.add(_.Octahedral_gaussian('isOctahedral', _.Get('N'), _.Get('Ni'), _.Get('PLPresent'), _.Get('pl'))) h.add(_.Gaussian_grid_name('gaussianGridName', _.Get('N'), _.Get('Ni'), _.Get('isOctahedral'))) h.alias('gridName', 'gaussianGridName') h.add(_.Number_of_points_gaussian('numberOfDataPointsExpected', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'), _.Get('N'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('zero'))) h.add(_.Evaluate('legacyGaussSubarea', (_.Get('numberOfDataPoints') != _.Get('numberOfDataPointsExpected')))) h.add(_.Signed('latitudeOfSouthernPole', 4)) h.alias('latitudeOfTheSouthernPoleOfProjection', 'latitudeOfSouthernPole') h.add(_.Unsigned('longitudeOfSouthernPole', 4)) h.alias('longitudeOfTheSouthernPoleOfProjection', 'longitudeOfSouthernPole') h.add(_.Scale('latitudeOfSouthernPoleInDegrees', _.Get('latitudeOfSouthernPole'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSouthernPoleInDegrees', 'latitudeOfSouthernPoleInDegrees') h.add(_.G2lon('longitudeOfSouthernPoleInDegrees', _.Get('longitudeOfSouthernPole'))) h.alias('geography.longitudeOfSouthernPoleInDegrees', 'longitudeOfSouthernPoleInDegrees') h.add(_.Ieeefloat('angleOfRotation', 4)) h.alias('geography.angleOfRotationInDegrees', 'angleOfRotation') h.alias('angleOfRotationOfProjection', 'angleOfRotation') h.alias('isRotatedGrid', 'one')
def load(h): h.add(_.Constant('constantFieldHalfByte', 0)) h.add(_.Unsigned('bitsPerValue', 1)) h.alias('numberOfBitsContainingEachPackedValue', 'bitsPerValue') h.add(_.Unsigned('octetAtWichPackedDataBegins', 2)) h.add(_.Codeflag('extendedFlag', 1, "grib1/11-2.table")) h.add(_.Bit('matrixOfValues', _.Get('extendedFlag'), 3)) h.add(_.Bit('secondaryBitmapPresent', _.Get('extendedFlag'), 2)) h.add(_.Bit('secondOrderOfDifferentWidth', _.Get('extendedFlag'), 1)) h.alias('secondOrderValuesDifferentWidths', 'secondOrderOfDifferentWidth') h.alias('secondaryBitMap', 'secondaryBitmapPresent') h.add(_.Unsigned('NR', 2)) h.alias('firstDimension', 'NR') h.add(_.Unsigned('NC', 2)) h.alias('secondDimension', 'NC') h.add(_.Codeflag('coordinateFlag1', 1, "grib1/12.table")) h.alias('firstDimensionCoordinateValueDefinition', 'coordinateFlag1') h.add(_.Unsigned('NC1', 1)) h.alias( 'numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction', 'NC1') h.add(_.Codeflag('coordinateFlag2', 1, "grib1/12.table")) h.alias('secondDimensionCoordinateValueDefinition', 'coordinateFlag2') h.add(_.Unsigned('NC2', 1)) h.alias( 'numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction', 'NC2') h.add(_.Codeflag('physicalFlag1', 1, "grib1/13.table")) h.alias('firstDimensionPhysicalSignificance', 'physicalFlag1') h.add(_.Codeflag('physicalFlag2', 1, "grib1/13.table")) h.alias('secondDimensionPhysicalSignificance', 'physicalFlag2') h.add(_.Ibmfloat('coefsFirst', 4, _.Get('NC1'))) h.add(_.Ibmfloat('coefsSecond', 4, _.Get('NC2'))) h.alias('data.coefsFirst', 'coefsFirst') h.alias('data.coefsSecond', 'coefsSecond') h.add(_.Position('offsetBeforeData')) if (h.get_l('matrixOfValues') == 0): h.add(_.Constant('matrixBitmapsPresent', 0)) h.add(_.Position('offsetBeforeData')) if h.get_l('bitmapPresent'): h.add(_.Constant('bitMapIndicator', 0)) 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'), _.Get('packingType'), _.Get('grid_ieee'))) h.alias('data.packedValues', 'codedValues') h.add( _.Data_apply_bitmap('values', _.Get('codedValues'), _.Get('bitmap'), _.Get('missingValue'), _.Get('binaryScaleFactor'))) else: h.add(_.Constant('bitMapIndicator', 255)) h.add( _.Data_g1simple_packing('values', _.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.alias('data.packedValues', 'values') else: h.add(_.Constant('matrixBitmapsPresent', 1)) h.add(_.Constant('bitMapIndicator', 0)) h.add(_.Constant('datumSize', (_.Get('NC') * _.Get('NR')))) h.add( _.Transient( 'secondaryBitmapsCount', (_.Get('octetAtWichPackedDataBegins') * _.Get('datumSize')))) h.add( _.Transient('secondaryBitmapsSize', (_.Get('secondaryBitmapsCount') / 8))) h.add(_.Position('offsetBBitmap')) h.add( _.G1bitmap('secondaryBitmaps', _.Get('dummy'), _.Get('missingValue'), _.Get('offsetBBitmap'), _.Get('secondaryBitmapsSize'), _.Get('dummy'))) h.add(_.Position('offsetBeforeData')) 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.alias('data.packedValues', 'codedValues') h.add(_.Constant('expandBy', (_.Get('NC') * _.Get('NR')))) h.add( _.Data_g1secondary_bitmap('secondaryBitmap', _.Get('bitmap'), _.Get('secondaryBitmaps'), _.Get('missingValue'), _.Get('expandBy'), _.Get('octetAtWichPackedDataBegins'))) h.add( _.Data_apply_bitmap('values', _.Get('codedValues'), _.Get('secondaryBitmap'), _.Get('missingValue'), _.Get('binaryScaleFactor'))) h.add( _.Simple_packing_error('packingError', _.Get('bitsPerValue'), _.Get('binaryScaleFactor'), _.Get('decimalScaleFactor'), _.Get('referenceValue'), _.Get('ibm'))) h.add( _.Number_of_coded_values('numberOfCodedValues', _.Get('bitsPerValue'), _.Get('offsetBeforeData'), _.Get('offsetAfterData'), _.Get('halfByte'), _.Get('numberOfValues'))) _.Template('common/statistics_grid.def').load(h)
def load(h): h.add( _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add( _.From_scale_factor_scaled_value( 'radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add( _.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add( _.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('numberOfHorizontalPoints', 5)) h.add(_.Unsigned('basicAngleOfTheInitialProductionDomain', 4)) h.add(_.Unsigned('subdivisionsOfBasicAngle', 4)) h.add(_.Signed('latitudeOfFirstGridPoint', 4)) h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Unsigned('longitudeOfFirstGridPoint', 4)) h.alias('Lo1', 'longitudeOfFirstGridPoint') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add(_.Signed('latitudeOfLastGridPoint', 4)) h.alias('La2', 'latitudeOfLastGridPoint') h.add(_.Unsigned('longitudeOfLastGridPoint', 4)) h.alias('Lo2', 'longitudeOfLastGridPoint') h.add( _.Codetable('typeOfHorizontalLine', 1, "3.20.table", _.Get('masterDir'), _.Get('localDir'))) 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))
def load(h): h.add(_.Unsigned('Ni', 2)) h.alias('numberOfPointsAlongFirstAxis', 'Ni') h.alias('Nx', 'Ni') h.add(_.Unsigned('Nj', 2)) h.alias('numberOfPointsAlongSecondAxis', 'Nj') h.alias('Nx', 'Nj') 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(_.Codeflag('scanningMode', 1, "grib1/8.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Constant('alternativeRowScanning', 0)) h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Bit('scanningMode4', _.Get('scanningMode'), 4)) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.add( _.Number_of_points('numberOfDataPoints', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'))) h.alias('numberOfPoints', 'numberOfDataPoints') h.add( _.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues')))
def load(h): h.add(_.Unsigned('Ni', 2)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.add(_.Signed('Nj', 2)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Ny', 'Nj') 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') h.add(_.Unsigned('iDirectionIncrement', 2)) h.add(_.Scale('iDirectionIncrementInDegrees', _.Get('iDirectionIncrement'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.iDirectionIncrementInDegrees', 'iDirectionIncrementInDegrees') h.alias('Di', 'iDirectionIncrement') h.add(_.Unsigned('N', 2)) h.alias('numberOfParallelsBetweenAPoleAndTheEquator', 'N') h.alias('geography.N', 'N') h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('yLast', 'latitudeOfLastGridPointInDegrees') h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.alias('xLast', 'longitudeOfLastGridPointInDegrees') h.add(_.Codeflag('scanningMode', 1, "grib1/8.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Constant('alternativeRowScanning', 0)) h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Bit('scanningMode4', _.Get('scanningMode'), 4)) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add(_.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add(_.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.add(_.Pad('padding_grid4_1', 4)) h.alias('latitudeFirstInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('longitudeFirstInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('latitudeLastInDegrees', 'latitudeOfLastGridPointInDegrees') h.alias('longitudeLastInDegrees', 'longitudeOfLastGridPointInDegrees') h.alias('DiInDegrees', 'iDirectionIncrementInDegrees') h.add(_.Global_gaussian('global', _.Get('N'), _.Get('Ni'), _.Get('iDirectionIncrement'), _.Get('latitudeOfFirstGridPoint'), _.Get('longitudeOfFirstGridPoint'), _.Get('latitudeOfLastGridPoint'), _.Get('longitudeOfLastGridPoint'), _.Get('PLPresent'), _.Get('pl'))) h.add(_.Number_of_points_gaussian('numberOfDataPoints', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'), _.Get('N'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('one'))) h.add(_.Number_of_points_gaussian('numberOfDataPointsExpected', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'), _.Get('N'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('zero'))) h.add(_.Evaluate('legacyGaussSubarea', (_.Get('numberOfDataPoints') != _.Get('numberOfDataPointsExpected')))) h.alias('numberOfPoints', 'numberOfDataPoints') h.add(_.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues'))) if h._missing('Ni'): h.add(_.Iterator('ITERATOR', _.Get('gaussian_reduced'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('N'), _.Get('pl'), _.Get('Nj'))) h.add(_.Nearest('NEAREST', _.Get('reduced'), _.Get('values'), _.Get('radius'), _.Get('Nj'), _.Get('pl'))) h.add(_.Box('BOX', _.Get('reduced_gaussian'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('N'), _.Get('pl'))) else: h.add(_.Iterator('ITERATOR', _.Get('gaussian'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('longitudeFirstInDegrees'), _.Get('DiInDegrees'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('latitudeFirstInDegrees'), _.Get('latitudeLastInDegrees'), _.Get('N'), _.Get('jScansPositively'))) h.add(_.Nearest('NEAREST', _.Get('regular'), _.Get('values'), _.Get('radius'), _.Get('Ni'), _.Get('Nj'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Latitudes('distinctLatitudes', _.Get('values'), 1)) h.add(_.Longitudes('distinctLongitudes', _.Get('values'), 1)) h.add(_.Octahedral_gaussian('isOctahedral', _.Get('N'), _.Get('Ni'), _.Get('PLPresent'), _.Get('pl'))) h.add(_.Gaussian_grid_name('gaussianGridName', _.Get('N'), _.Get('Ni'), _.Get('isOctahedral'))) h.alias('gridName', 'gaussianGridName')
def load(h): h.add(_.Constant('gridDefinitionTemplateNumber', 20)) h.add(_.Signed('Ni', 2)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.alias('geography.Ni', 'Ni') h.add(_.Signed('Nj', 2)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Nx', 'Nj') h.alias('geography.Nj', 'Nj') 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') h.add(_.Signed('Latin', 3)) h.add(_.Scale('LaDInDegrees', _.Get('Latin'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.LaDInDegrees', 'LaDInDegrees') h.add(_.Pad('padding_grid1_1', 1)) h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('yLast', 'latitudeOfLastGridPointInDegrees') h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.alias('xLast', 'longitudeOfLastGridPointInDegrees') h.add(_.Codeflag('scanningMode', 1, "grib1/8.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Constant('alternativeRowScanning', 0)) h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Bit('scanningMode4', _.Get('scanningMode'), 4)) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add(_.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add(_.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.add(_.Signed('DiInMetres', 3)) h.alias('longitudinalDirectionGridLength', 'DiInMetres') h.alias('Di', 'DiInMetres') h.alias('geography.DiInMetres', 'DiInMetres') h.add(_.Signed('DjInMetres', 3)) h.alias('latitudinalDirectionGridLength', 'DjInMetres') h.alias('Dj', 'DjInMetres') h.alias('geography.DjInMetres', 'DjInMetres') h.add(_.Constant('orientationOfTheGridInDegrees', 0)) h.add(_.Pad('padding_grid1_2', 8)) h.add(_.Number_of_points('numberOfDataPoints', _.Get('Ni'), _.Get('Nj'))) h.alias('numberOfPoints', 'numberOfDataPoints') h.add(_.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues')))
def load(h): h.add(_.Unsigned('Ni', 4)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.add(_.Unsigned('Nj', 4)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Ny', 'Nj') h.alias('geography.Ni', 'Ni') h.alias('geography.Nj', 'Nj') h.add(_.Unsigned('basicAngleOfTheInitialProductionDomain', 4)) h.add( _.Transient('mBasicAngle', (_.Get('basicAngleOfTheInitialProductionDomain') * _.Get('oneMillionConstant')))) h.add(_.Transient('angleMultiplier', 1)) h.add(_.Transient('mAngleMultiplier', 1000000)) pass # when block h.add(_.Unsigned('subdivisionsOfBasicAngle', 4)) h.add(_.Transient('angleDivisor', 1000000)) pass # when block h.add(_.Signed('latitudeOfFirstGridPoint', 4)) h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Signed('longitudeOfFirstGridPoint', 4)) h.alias('Lo1', 'longitudeOfFirstGridPoint') h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add(_.Signed('latitudeOfLastGridPoint', 4)) h.alias('La2', 'latitudeOfLastGridPoint') h.add(_.Signed('longitudeOfLastGridPoint', 4)) h.alias('Lo2', 'longitudeOfLastGridPoint') h.add(_.Unsigned('iDirectionIncrement', 4)) h.alias('Di', 'iDirectionIncrement') h.add(_.Unsigned('N', 4)) h.alias('numberOfParallelsBetweenAPoleAndTheEquator', 'N') h.alias('geography.N', 'N') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add( _.G2grid('g2grid', _.Get('latitudeOfFirstGridPoint'), _.Get('longitudeOfFirstGridPoint'), _.Get('latitudeOfLastGridPoint'), _.Get('longitudeOfLastGridPoint'), _.Get('iDirectionIncrement'), None, _.Get('basicAngleOfTheInitialProductionDomain'), _.Get('subdivisionsOfBasicAngle'))) h.add(_.G2latlon('latitudeOfFirstGridPointInDegrees', _.Get('g2grid'), 0)) h.alias('geography.latitudeOfFirstGridPointInDegrees', 'latitudeOfFirstGridPointInDegrees') h.add(_.G2latlon('longitudeOfFirstGridPointInDegrees', _.Get('g2grid'), 1)) h.alias('geography.longitudeOfFirstGridPointInDegrees', 'longitudeOfFirstGridPointInDegrees') h.add(_.G2latlon('latitudeOfLastGridPointInDegrees', _.Get('g2grid'), 2)) h.alias('geography.latitudeOfLastGridPointInDegrees', 'latitudeOfLastGridPointInDegrees') h.add(_.G2latlon('longitudeOfLastGridPointInDegrees', _.Get('g2grid'), 3)) h.alias('geography.longitudeOfLastGridPointInDegrees', 'longitudeOfLastGridPointInDegrees') h.add( _.G2latlon('iDirectionIncrementInDegrees', _.Get('g2grid'), 4, _.Get('iDirectionIncrementGiven'))) h.alias('geography.iDirectionIncrementInDegrees', 'iDirectionIncrementInDegrees') h.add( _.Global_gaussian('global', _.Get('N'), _.Get('Ni'), _.Get('iDirectionIncrement'), _.Get('latitudeOfFirstGridPoint'), _.Get('longitudeOfFirstGridPoint'), _.Get('latitudeOfLastGridPoint'), _.Get('longitudeOfLastGridPoint'), _.Get('PLPresent'), _.Get('pl'), _.Get('basicAngleOfTheInitialProductionDomain'), _.Get('subdivisionsOfBasicAngle'))) h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('xLast', 'longitudeOfLastGridPointInDegrees') h.alias('yLast', 'latitudeOfLastGridPointInDegrees') h.alias('latitudeFirstInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('longitudeFirstInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('latitudeLastInDegrees', 'latitudeOfLastGridPointInDegrees') h.alias('longitudeLastInDegrees', 'longitudeOfLastGridPointInDegrees') h.alias('DiInDegrees', 'iDirectionIncrementInDegrees') if (h._missing('Ni') and (h.get_l('PLPresent') == 1)): h.add( _.Iterator('ITERATOR', _.Get('gaussian_reduced'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('N'), _.Get('pl'), _.Get('Nj'))) h.add( _.Nearest('NEAREST', _.Get('reduced'), _.Get('values'), _.Get('radius'), _.Get('Nj'), _.Get('pl'))) else: h.add( _.Iterator('ITERATOR', _.Get('gaussian'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('longitudeFirstInDegrees'), _.Get('DiInDegrees'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('latitudeFirstInDegrees'), _.Get('latitudeLastInDegrees'), _.Get('N'), _.Get('jScansPositively'))) h.add( _.Nearest('NEAREST', _.Get('regular'), _.Get('values'), _.Get('radius'), _.Get('Ni'), _.Get('Nj'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Latitudes('distinctLatitudes', _.Get('values'), 1)) h.add(_.Longitudes('distinctLongitudes', _.Get('values'), 1)) h.add( _.Octahedral_gaussian('isOctahedral', _.Get('N'), _.Get('Ni'), _.Get('PLPresent'), _.Get('pl'))) h.add( _.Gaussian_grid_name('gaussianGridName', _.Get('N'), _.Get('Ni'), _.Get('isOctahedral'))) h.alias('gridName', 'gaussianGridName') h.add( _.Number_of_points_gaussian( 'numberOfDataPointsExpected', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'), _.Get('N'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('zero'))) h.add( _.Evaluate('legacyGaussSubarea', (_.Get('numberOfDataPoints') != _.Get('numberOfDataPointsExpected'))))
def load(h): h.add(_.Constant('gridDefinitionTemplateNumber', 90)) h.add(_.Unsigned('Nx', 2)) h.alias('numberOfPointsAlongXAxis', 'Nx') h.alias('Ni', 'Nx') h.alias('geography.Nx', 'Nx') h.add(_.Unsigned('Ny', 2)) h.alias('numberOfPointsAlongYAxis', 'Ny') h.alias('Nj', 'Ny') h.alias('geography.Ny', 'Ny') h.add(_.Signed('latitudeOfSubSatellitePoint', 3)) h.add(_.Scale('latitudeOfSubSatellitePointInDegrees', _.Get('latitudeOfSubSatellitePoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfSubSatellitePointInDegrees', 'latitudeOfSubSatellitePointInDegrees') h.alias('Lap', 'latitudeOfSubSatellitePoint') h.add(_.Signed('longitudeOfSubSatellitePoint', 3)) h.add(_.Scale('longitudeOfSubSatellitePointInDegrees', _.Get('longitudeOfSubSatellitePoint'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfSubSatellitePointInDegrees', 'longitudeOfSubSatellitePointInDegrees') h.alias('Lap', 'longitudeOfSubSatellitePoint') 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(_.Unsigned('dx', 3)) h.alias('geography.dx', 'dx') h.add(_.Unsigned('dy', 3)) h.alias('geography.dy', 'dy') h.add(_.Unsigned('XpInGridLengths', 2)) h.alias('geography.XpInGridLengths', 'XpInGridLengths') h.add(_.Unsigned('YpInGridLengths', 2)) h.alias('geography.YpInGridLengths', 'YpInGridLengths') h.add(_.Codeflag('scanningMode', 1, "grib1/8.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Constant('alternativeRowScanning', 0)) h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Bit('scanningMode4', _.Get('scanningMode'), 4)) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add(_.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add(_.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.add(_.Unsigned('orientationOfTheGrid', 3)) h.add(_.Scale('orientationOfTheGridInDegrees', _.Get('orientationOfTheGrid'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.orientationOfTheGridInDegrees', 'orientationOfTheGridInDegrees') h.add(_.Unsigned('NrInRadiusOfEarth', 3)) h.alias('altitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius', 'NrInRadiusOfEarth') h.add(_.Unsigned('Xo', 2)) h.alias('xCoordinateOfOriginOfSectorImage', 'Xo') h.alias('geography.Xo', 'Xo') h.add(_.Unsigned('Yo', 2)) h.alias('yCoordinateOfOriginOfSectorImage', 'Yo') h.alias('geography.Yo', 'Yo') if (h.get_l('centre') != 98): h.add(_.Pad('padding_grid90_1', 6)) h.add(_.Number_of_points('numberOfDataPoints', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'))) h.alias('numberOfPoints', 'numberOfDataPoints') h.add(_.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues')))
def load(h): h.add( _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add( _.From_scale_factor_scaled_value( 'radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add( _.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add( _.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('Ni', 4)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.alias('geography.Ni', 'Ni') h.add(_.Unsigned('Nj', 4)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Ny', 'Nj') h.alias('geography.Nj', 'Nj') h.add(_.Signed('latitudeOfReferencePoint', 4)) h.alias('LaR', 'latitudeOfReferencePoint') h.add( _.Scale('latitudeOfReferencePointInDegrees', _.Get('latitudeOfReferencePoint'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfReferencePointInDegrees', 'latitudeOfReferencePointInDegrees') h.add(_.Signed('longitudeOfReferencePoint', 4)) h.alias('LoR', 'longitudeOfReferencePoint') h.add( _.Scale('longitudeOfReferencePointInDegrees', _.Get('longitudeOfReferencePoint'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfReferencePointInDegrees', 'longitudeOfReferencePointInDegrees') h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add(_.Ieeefloat('scaleFactorAtReferencePoint', 4)) h.alias('m', 'scaleFactorAtReferencePoint') h.alias('geography.m', 'm') h.add(_.Signed('XR', 4)) h.alias('falseEasting', 'XR') h.add(_.Scale('XRInMetres', _.Get('XR'), _.Get('one'), _.Get('hundred'))) h.alias('geography.XRInMetres', 'XRInMetres') h.add(_.Signed('YR', 4)) h.alias('falseNorthing', 'YR') h.add(_.Scale('YRInMetres', _.Get('YR'), _.Get('one'), _.Get('hundred'))) h.alias('geography.YRInMetres', 'YRInMetres') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add(_.Unsigned('Di', 4)) h.alias('iDirectionIncrementGridLength', 'Di') h.add( _.Scale('DiInMetres', _.Get('Di'), _.Get('oneConstant'), _.Get('hundred'), _.Get('truncateDegrees'))) h.alias('geography.DiInMetres', 'DiInMetres') h.add(_.Unsigned('Dj', 4)) h.alias('jDirectionIncrementGridLength', 'Dj') h.add( _.Scale('DjInMetres', _.Get('Dj'), _.Get('oneConstant'), _.Get('hundred'), _.Get('truncateDegrees'))) h.alias('geography.DjInMetres', 'DjInMetres') h.add(_.Signed('X1', 4)) h.add( _.Scale('X1InGridLengths', _.Get('X1'), _.Get('one'), _.Get('hundred'))) h.alias('geography.X1InGridLengths', 'X1InGridLengths') h.add(_.Signed('Y1', 4)) h.add( _.Scale('Y1InGridLengths', _.Get('Y1'), _.Get('one'), _.Get('hundred'))) h.alias('geography.Y1InGridLengths', 'Y1InGridLengths') h.add(_.Signed('X2', 4)) h.add( _.Scale('X2InGridLengths', _.Get('X2'), _.Get('one'), _.Get('hundred'))) h.alias('geography.X2InGridLengths', 'X2InGridLengths') h.add(_.Signed('Y2', 4)) h.add( _.Scale('Y2InGridLengths', _.Get('Y2'), _.Get('one'), _.Get('hundred'))) h.alias('geography.Y2InGridLengths', 'Y2InGridLengths')
def load(h): h.add(_.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add(_.From_scale_factor_scaled_value('radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add(_.From_scale_factor_scaled_value('earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add(_.From_scale_factor_scaled_value('earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add(_.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add(_.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add(_.From_scale_factor_scaled_value('earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add(_.From_scale_factor_scaled_value('earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('numberOfPointsAlongXAxis', 4)) h.alias('Nx', 'numberOfPointsAlongXAxis') h.alias('Ni', 'Nx') h.add(_.Unsigned('numberOfPointsAlongYAxis', 4)) h.alias('Ny', 'numberOfPointsAlongYAxis') h.alias('Nj', 'Ny') h.add(_.Signed('latitudeOfFirstGridPoint', 4)) h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Scale('latitudeOfFirstGridPointInDegrees', _.Get('latitudeOfFirstGridPoint'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfFirstGridPointInDegrees', 'latitudeOfFirstGridPointInDegrees') h.add(_.Signed('longitudeOfFirstGridPoint', 4)) h.alias('La1', 'longitudeOfFirstGridPoint') h.add(_.Scale('longitudeOfFirstGridPointInDegrees', _.Get('longitudeOfFirstGridPoint'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfFirstGridPointInDegrees', 'longitudeOfFirstGridPointInDegrees') h.add(_.Signed('standardParallelInMicrodegrees', 4)) h.alias('standardParallel', 'standardParallelInMicrodegrees') h.add(_.Scale('standardParallelInDegrees', _.Get('standardParallelInMicrodegrees'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.standardParallelInDegrees', 'standardParallelInDegrees') h.add(_.Signed('centralLongitudeInMicrodegrees', 4)) h.alias('centralLongitude', 'centralLongitudeInMicrodegrees') h.add(_.Scale('centralLongitudeInDegrees', _.Get('centralLongitudeInMicrodegrees'), _.Get('one'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.centralLongitudeInDegrees', 'centralLongitudeInDegrees') h.add(_.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add(_.Unsigned('xDirectionGridLengthInMillimetres', 4)) h.alias('Dx', 'xDirectionGridLengthInMillimetres') h.add(_.Scale('xDirectionGridLengthInMetres', _.Get('xDirectionGridLengthInMillimetres'), _.Get('one'), _.Get('thousand'), _.Get('truncateDegrees'))) h.alias('geography.xDirectionGridLengthInMetres', 'xDirectionGridLengthInMetres') h.add(_.Unsigned('yDirectionGridLengthInMillimetres', 4)) h.alias('Dy', 'yDirectionGridLengthInMillimetres') h.add(_.Scale('yDirectionGridLengthInMetres', _.Get('yDirectionGridLengthInMillimetres'), _.Get('one'), _.Get('thousand'), _.Get('truncateDegrees'))) h.alias('geography.yDirectionGridLengthInMetres', 'yDirectionGridLengthInMetres') h.add(_.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add(_.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add(_.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add(_.Iterator('ITERATOR', _.Get('lambert_azimuthal_equal_area'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('radius'), _.Get('Nx'), _.Get('Ny'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('standardParallel'), _.Get('centralLongitude'), _.Get('Dx'), _.Get('Dy'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('jPointsAreConsecutive'), _.Get('alternativeRowScanning'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Latitudes('distinctLatitudes', _.Get('values'), 1)) h.add(_.Longitudes('distinctLongitudes', _.Get('values'), 1))
def load(h): h.add(_.Constant('gridDefinitionTemplateNumber', 0)) h.add(_.Unsigned('NRj', 2)) h.add(_.Unsigned('numberOfPointsAlongAMeridian', 2)) h.alias('Nj', 'numberOfPointsAlongAMeridian') 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') h.add(_.Unsigned('iDirectionIncrement', 2)) h.add(_.Unsigned('jDirectionIncrement', 2)) h.alias('Dj', 'jDirectionIncrement') h.alias('Di', 'iDirectionIncrement') h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('yLast', 'latitudeOfLastGridPointInDegrees') h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.alias('xLast', 'longitudeOfLastGridPointInDegrees') h.add(_.Codeflag('scanningMode', 1, "grib1/8.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Constant('alternativeRowScanning', 0)) h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Bit('scanningMode4', _.Get('scanningMode'), 4)) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.add(_.Signed('Lar1', 3)) h.add( _.Scale('Lar1InDegrees', _.Get('latitudeOfFirstGridPointOfReferenceDomain'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.Lar1InDegrees', 'Lar1InDegrees') h.alias('La1', 'Lar1') h.add(_.Signed('Lor1', 3)) h.add( _.Scale('Lor1InDegrees', _.Get('longitudeOfFirstGridPointOfReferenceDomain'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.Lor1InDegrees', 'Lor1InDegrees') h.alias('Lo1', 'Lor1') h.add(_.Signed('Lar2', 3)) h.add( _.Scale('Lar2InDegrees', _.Get('latitudeOfLastGridPointOfReferenceDomain'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.Lar2InDegrees', 'Lar2InDegrees') h.alias('La2', 'Lar2') h.add(_.Signed('Lor2', 3)) h.add( _.Scale('Lor2InDegrees', _.Get('longitudeOfLastGridPointOfReferenceDomain'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.Lor2InDegrees', 'Lor2InDegrees') h.alias('Lo2', 'Lor2') h.add( _.Latlon_increment('jDirectionIncrementInDegrees', _.Get('ijDirectionIncrementGiven'), _.Get('jDirectionIncrement'), _.Get('jScansPositively'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('latitudeOfLastGridPointInDegrees'), _.Get('numberOfPointsAlongAMeridian'), _.Get('oneConstant'), _.Get('grib1divider'), 0)) h.alias('geography.jDirectionIncrementInDegrees', 'jDirectionIncrementInDegrees') h.add( _.Latlon_increment('iDirectionIncrementInDegrees', _.Get('ijDirectionIncrementGiven'), _.Get('iDirectionIncrement'), _.Get('iScansPositively'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfLastGridPointInDegrees'), _.Get('Ni'), _.Get('oneConstant'), _.Get('grib1divider'), 1)) h.alias('geography.iDirectionIncrementInDegrees', 'iDirectionIncrementInDegrees') h.alias('latitudeFirstInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('longitudeFirstInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('latitudeLastInDegrees', 'latitudeOfLastGridPointInDegrees') h.alias('longitudeLastInDegrees', 'longitudeOfLastGridPointInDegrees') h.alias('DiInDegrees', 'iDirectionIncrementInDegrees') h.alias('DjInDegrees', 'jDirectionIncrementInDegrees') h.add( _.Number_of_points('numberOfDataPoints', _.Get('Ni'), _.Get('Nj'), _.Get('PLPresent'), _.Get('pl'))) h.alias('numberOfPoints', 'numberOfDataPoints') h.add( _.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues'))) if h._missing('Ni'): h.add( _.Iterator('ITERATOR', _.Get('latlon_reduced'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('latitudeFirstInDegrees'), _.Get('longitudeFirstInDegrees'), _.Get('latitudeLastInDegrees'), _.Get('loLast'), _.Get('Nj'), _.Get('DjInDegrees'), _.Get('pl'))) h.add( _.Nearest('NEAREST', _.Get('latlon_reduced'), _.Get('values'), _.Get('radius'), _.Get('Nj'), _.Get('pl'))) else: h.add(_.Transient('iteratorDisableUnrotate', 0)) h.add( _.Iterator('ITERATOR', _.Get('latlon'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('longitudeFirstInDegrees'), _.Get('iInc'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('latitudeFirstInDegrees'), _.Get('DjInDegrees'), _.Get('jScansPositively'), _.Get('jPointsAreConsecutive'), _.Get('isRotatedGrid'), _.Get('angleOfRotation'), _.Get('latitudeOfSouthernPoleInDegrees'), _.Get('longitudeOfSouthernPoleInDegrees'))) h.add( _.Nearest('NEAREST', _.Get('regular'), _.Get('values'), _.Get('radius'), _.Get('Ni'), _.Get('Nj'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Latitudes('distinctLatitudes', _.Get('values'), 1)) h.add(_.Longitudes('distinctLongitudes', _.Get('values'), 1))
def load(h): h.add(_.Unsigned('Ni', 4)) h.alias('numberOfPointsAlongAParallel', 'Ni') h.alias('Nx', 'Ni') h.add(_.Unsigned('Nj', 4)) h.alias('numberOfPointsAlongAMeridian', 'Nj') h.alias('Ny', 'Nj') h.alias('geography.Ni', 'Ni') h.alias('geography.Nj', 'Nj') h.add(_.Unsigned('basicAngleOfTheInitialProductionDomain', 4)) h.add( _.Transient('mBasicAngle', (_.Get('basicAngleOfTheInitialProductionDomain') * _.Get('oneMillionConstant')))) h.add(_.Transient('angleMultiplier', 1)) h.add(_.Transient('mAngleMultiplier', 1000000)) pass # when block h.add(_.Unsigned('subdivisionsOfBasicAngle', 4)) h.add(_.Transient('angleDivisor', 1000000)) pass # when block h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add( _.Bit('resolutionAndComponentFlags1', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags2', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('iDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 5)) h.add( _.Bit('jDirectionIncrementGiven', _.Get('resolutionAndComponentFlags'), 4)) h.add(_.Bit('uvRelativeToGrid', _.Get('resolutionAndComponentFlags'), 3)) h.add( _.Bit('resolutionAndComponentFlags6', _.Get('resolutionAndComponentFlags'), 7)) h.add( _.Bit('resolutionAndComponentFlags7', _.Get('resolutionAndComponentFlags'), 6)) h.add( _.Bit('resolutionAndComponentFlags8', _.Get('resolutionAndComponentFlags'), 6)) def ijDirectionIncrementGiven_inline_concept(h): def wrapped(h): iDirectionIncrementGiven = h.get_l('iDirectionIncrementGiven') jDirectionIncrementGiven = h.get_l('jDirectionIncrementGiven') if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 1: return 1 if iDirectionIncrementGiven == 1 and jDirectionIncrementGiven == 0: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 1: return 0 if iDirectionIncrementGiven == 0 and jDirectionIncrementGiven == 0: return 0 return wrapped h.add( _.Concept('ijDirectionIncrementGiven', None, concepts=ijDirectionIncrementGiven_inline_concept(h))) h.alias('DiGiven', 'iDirectionIncrementGiven') h.alias('DjGiven', 'jDirectionIncrementGiven') h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') with h.list('longitudesList'): for i in range(0, h.get_l('Ni')): h.add(_.Unsigned('longitudes', 4)) with h.list('latitudesList'): for i in range(0, h.get_l('Nj')): h.add(_.Signed('latitudes', 4))
def load(h): h.add( _.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add( _.From_scale_factor_scaled_value( 'radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add( _.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add( _.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add( _.From_scale_factor_scaled_value( 'earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add( _.From_scale_factor_scaled_value( 'earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Transient('oneThousand', 1000)) h.add(_.Unsigned('Nx', 4)) h.alias('Ni', 'Nx') h.alias('numberOfPointsAlongXAxis', 'Nx') h.alias('geography.Nx', 'Nx') h.add(_.Unsigned('Ny', 4)) h.alias('Nj', 'Ny') h.alias('numberOfPointsAlongYAxis', 'Ny') h.alias('geography.Ny', 'Ny') h.add(_.Signed('latitudeOfFirstGridPoint', 4)) h.add( _.Scale('latitudeOfFirstGridPointInDegrees', _.Get('latitudeOfFirstGridPoint'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.latitudeOfFirstGridPointInDegrees', 'latitudeOfFirstGridPointInDegrees') h.alias('La1', 'latitudeOfFirstGridPoint') h.add(_.Unsigned('longitudeOfFirstGridPoint', 4)) h.add( _.Scale('longitudeOfFirstGridPointInDegrees', _.Get('longitudeOfFirstGridPoint'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.longitudeOfFirstGridPointInDegrees', 'longitudeOfFirstGridPointInDegrees') h.alias('Lo1', 'longitudeOfFirstGridPoint') h.add( _.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add(_.Signed('LaD', 4)) h.alias('latitudeWhereDxAndDyAreSpecified', 'LaD') h.add( _.Scale('LaDInDegrees', _.Get('LaD'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.LaDInDegrees', 'LaDInDegrees') h.alias('latitudeWhereDxAndDyAreSpecifiedInDegrees', 'LaDInDegrees') h.add(_.Signed('orientationOfTheGrid', 4)) h.alias('LoV', 'orientationOfTheGrid') h.add( _.Scale('orientationOfTheGridInDegrees', _.Get('orientationOfTheGrid'), _.Get('oneConstant'), _.Get('grib2divider'), _.Get('truncateDegrees'))) h.alias('geography.orientationOfTheGridInDegrees', 'orientationOfTheGridInDegrees') h.add(_.Unsigned('Dx', 4)) h.add( _.Scale('DxInMetres', _.Get('Dx'), _.Get('one'), _.Get('thousand'), _.Get('truncateDegrees'))) h.alias('geography.DxInMetres', 'DxInMetres') h.alias('xDirectionGridLength', 'Dx') h.add(_.Unsigned('Dy', 4)) h.add( _.Scale('DyInMetres', _.Get('Dy'), _.Get('one'), _.Get('thousand'), _.Get('truncateDegrees'))) h.alias('geography.DyInMetres', 'DyInMetres') h.alias('yDirectionGridLength', 'Dy') h.add( _.Codeflag('projectionCentreFlag', 1, "grib2/tables/[tablesVersion]/3.5.table")) h.add(_.Bit('southPoleOnProjectionPlane', _.Get('projectionCentreFlag'), 7)) h.add( _.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') h.add( _.Iterator('ITERATOR', _.Get('polar_stereographic'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('radius'), _.Get('Nx'), _.Get('Ny'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('southPoleOnProjectionPlane'), _.Get('orientationOfTheGridInDegrees'), _.Get('LaDInDegrees'), _.Get('DxInMetres'), _.Get('DyInMetres'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('jPointsAreConsecutive'), _.Get('alternativeRowScanning'))) h.add( _.Nearest('NEAREST', _.Get('polar_stereographic'), _.Get('values'), _.Get('radius'), _.Get('Nx'), _.Get('Ny'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Unsigned('Nux', 4)) h.alias('numberOfUsefulPointsAlongXAxis', 'Nux') h.add(_.Unsigned('Ncx', 4)) h.alias('numberOfPointsAlongXAxisInCouplingArea', 'Ncx') h.add(_.Unsigned('Nuy', 4)) h.alias('numberOfUsefulPointsAlongYAxis', 'Nuy') h.add(_.Unsigned('Ncy', 4)) h.alias('numberOfPointsAlongYAxisInCouplingArea', 'Ncy')
def load(h): h.add(_.Constant('gridDefinitionTemplateNumber', 20)) h.add(_.Unsigned('Nx', 2)) h.alias('Ni', 'Nx') h.alias('numberOfPointsAlongXAxis', 'Nx') h.alias('geography.Nx', 'Nx') h.add(_.Unsigned('Ny', 2)) h.alias('Nj', 'Ny') h.alias('numberOfPointsAlongYAxis', 'Ny') h.alias('geography.Ny', 'Ny') 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('orientationOfTheGrid', 3)) h.add( _.Scale('orientationOfTheGridInDegrees', _.Get('orientationOfTheGrid'), _.Get('oneConstant'), _.Get('grib1divider'), _.Get('truncateDegrees'))) h.alias('geography.orientationOfTheGridInDegrees', 'orientationOfTheGridInDegrees') h.alias('LoV', 'orientationOfTheGrid') h.add(_.Unsigned('DxInMetres', 3)) h.alias('xDirectionGridLengthInMetres', 'DxInMetres') h.alias('Dx', 'DxInMetres') h.alias('geography.DxInMetres', 'DxInMetres') h.alias('Di', 'DxInMetres') h.add(_.Unsigned('DyInMetres', 3)) h.alias('yDirectionGridLengthInMetres', 'DyInMetres') h.alias('Dy', 'DyInMetres') h.alias('Dj', 'DyInMetres') h.alias('geography.DyInMetres', 'DyInMetres') h.add(_.Constant('latitudeWhereDxAndDyAreSpecifiedInDegrees', 60)) h.add(_.Constant('LaDInDegrees', 60)) h.alias('geography.LaDInDegrees', 'LaDInDegrees') h.add(_.Unsigned('projectionCentreFlag', 1)) h.alias('projectionCenterFlag', 'projectionCentreFlag') h.add(_.Bit('southPoleOnProjectionPlane', _.Get('projectionCentreFlag'), 7)) h.alias('yFirst', 'latitudeOfFirstGridPointInDegrees') h.alias('xFirst', 'longitudeOfFirstGridPointInDegrees') h.add(_.Codeflag('scanningMode', 1, "grib1/8.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Constant('alternativeRowScanning', 0)) h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Bit('scanningMode4', _.Get('scanningMode'), 4)) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add( _.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add( _.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY') if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.add(_.Pad('padding_grid5_1', 4)) h.add( _.Number_of_points('numberOfDataPoints', _.Get('Nx'), _.Get('Ny'), _.Get('PLPresent'), _.Get('pl'))) h.alias('numberOfPoints', 'numberOfDataPoints') h.add( _.Number_of_values('numberOfValues', _.Get('values'), _.Get('bitsPerValue'), _.Get('numberOfDataPoints'), _.Get('bitmapPresent'), _.Get('bitmap'), _.Get('numberOfCodedValues'))) h.add( _.Iterator('ITERATOR', _.Get('polar_stereographic'), _.Get('numberOfPoints'), _.Get('missingValue'), _.Get('values'), _.Get('radius'), _.Get('Nx'), _.Get('Ny'), _.Get('latitudeOfFirstGridPointInDegrees'), _.Get('longitudeOfFirstGridPointInDegrees'), _.Get('southPoleOnProjectionPlane'), _.Get('orientationOfTheGridInDegrees'), _.Get('LaDInDegrees'), _.Get('Dx'), _.Get('Dy'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('jPointsAreConsecutive'), _.Get('alternativeRowScanning'))) h.add( _.Nearest('NEAREST', _.Get('polar_stereographic'), _.Get('values'), _.Get('radius'), _.Get('Nx'), _.Get('Ny'))) h.add(_.Latlonvalues('latLonValues', _.Get('values'))) h.alias('latitudeLongitudeValues', 'latLonValues') h.add(_.Latitudes('latitudes', _.Get('values'), 0)) h.add(_.Longitudes('longitudes', _.Get('values'), 0)) h.add(_.Latitudes('distinctLatitudes', _.Get('values'), 1)) h.add(_.Longitudes('distinctLongitudes', _.Get('values'), 1))
def load(h): h.add(_.Codetable('shapeOfTheEarth', 1, "3.2.table", _.Get('masterDir'), _.Get('localDir'))) h.add(_.Unsigned('scaleFactorOfRadiusOfSphericalEarth', 1)) h.add(_.Unsigned('scaledValueOfRadiusOfSphericalEarth', 4)) h.add(_.Unsigned('scaleFactorOfEarthMajorAxis', 1)) h.alias('scaleFactorOfMajorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMajorAxis') h.add(_.Unsigned('scaledValueOfEarthMajorAxis', 4)) h.alias('scaledValueOfMajorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMajorAxis') h.add(_.Unsigned('scaleFactorOfEarthMinorAxis', 1)) h.alias('scaleFactorOfMinorAxisOfOblateSpheroidEarth', 'scaleFactorOfEarthMinorAxis') h.add(_.Unsigned('scaledValueOfEarthMinorAxis', 4)) h.alias('scaledValueOfMinorAxisOfOblateSpheroidEarth', 'scaledValueOfEarthMinorAxis') h.alias('earthIsOblate', 'one') if (h.get_l('shapeOfTheEarth') == 0): h.add(_.Transient('radius', 6367470)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 1): h.add(_.From_scale_factor_scaled_value('radius', _.Get('scaleFactorOfRadiusOfSphericalEarth'), _.Get('scaledValueOfRadiusOfSphericalEarth'))) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 6): h.add(_.Transient('radius', 6371229)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 8): h.add(_.Transient('radius', 6371200)) h.alias('radiusOfTheEarth', 'radius') h.alias('radiusInMetres', 'radius') h.alias('earthIsOblate', 'zero') if (h.get_l('shapeOfTheEarth') == 2): h.add(_.Transient('earthMajorAxis', 6.37816e+06)) h.add(_.Transient('earthMinorAxis', 6.35678e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 3): h.add(_.From_scale_factor_scaled_value('earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add(_.From_scale_factor_scaled_value('earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.add(_.Divdouble('earthMajorAxisInMetres', _.Get('earthMajorAxis'), 0.001)) h.add(_.Divdouble('earthMinorAxisInMetres', _.Get('earthMinorAxis'), 0.001)) if (h.get_l('shapeOfTheEarth') == 7): h.add(_.From_scale_factor_scaled_value('earthMajorAxis', _.Get('scaleFactorOfEarthMajorAxis'), _.Get('scaledValueOfEarthMajorAxis'))) h.add(_.From_scale_factor_scaled_value('earthMinorAxis', _.Get('scaleFactorOfEarthMinorAxis'), _.Get('scaledValueOfEarthMinorAxis'))) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if ((h.get_l('shapeOfTheEarth') == 4) or (h.get_l('shapeOfTheEarth') == 5)): h.add(_.Transient('earthMajorAxis', 6.37814e+06)) h.add(_.Transient('earthMinorAxis', 6.35675e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') if (h.get_l('shapeOfTheEarth') == 9): h.add(_.Transient('earthMajorAxis', 6.37756e+06)) h.add(_.Transient('earthMinorAxis', 6.35626e+06)) h.alias('earthMajorAxisInMetres', 'earthMajorAxis') h.alias('earthMinorAxisInMetres', 'earthMinorAxis') h.add(_.Unsigned('numberOfPointsAlongXAxis', 4)) h.alias('Nx', 'numberOfPointsAlongXAxis') h.add(_.Unsigned('numberOfPointsAlongYAxis', 4)) h.alias('Ny', 'numberOfPointsAlongYAxis') h.add(_.Signed('latitudeOfTangencyPoint', 4)) h.alias('La1', 'latitudeOfTangencyPoint') h.add(_.Unsigned('longitudeOfTangencyPoint', 4)) h.alias('Lo1', 'longitudeOfTangencyPoint') h.add(_.Codeflag('resolutionAndComponentFlags', 1, "grib2/tables/[tablesVersion]/3.3.table")) h.add(_.Unsigned('Dx', 4)) h.add(_.Unsigned('Dy', 4)) h.add(_.Unsigned('projectionCentreFlag', 1)) h.add(_.Codeflag('scanningMode', 1, "grib2/tables/[tablesVersion]/3.4.table")) h.add(_.Bit('iScansNegatively', _.Get('scanningMode'), 7)) h.add(_.Bit('jScansPositively', _.Get('scanningMode'), 6)) h.add(_.Bit('jPointsAreConsecutive', _.Get('scanningMode'), 5)) h.add(_.Bit('alternativeRowScanning', _.Get('scanningMode'), 4)) if h.get_l('jPointsAreConsecutive'): h.alias('numberOfRows', 'Ni') h.alias('numberOfColumns', 'Nj') else: h.alias('numberOfRows', 'Nj') h.alias('numberOfColumns', 'Ni') h.alias('geography.iScansNegatively', 'iScansNegatively') h.alias('geography.jScansPositively', 'jScansPositively') h.alias('geography.jPointsAreConsecutive', 'jPointsAreConsecutive') h.add(_.Transient('iScansPositively', _.Not(_.Get('iScansNegatively')))) h.add(_.Bit('scanningMode5', _.Get('scanningMode'), 3)) h.add(_.Bit('scanningMode6', _.Get('scanningMode'), 2)) h.add(_.Bit('scanningMode7', _.Get('scanningMode'), 1)) h.add(_.Bit('scanningMode8', _.Get('scanningMode'), 0)) h.add(_.Change_scanning_direction('swapScanningX', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('xFirst'), _.Get('xLast'), _.Get('x'))) h.alias('swapScanningLon', 'swapScanningX') h.add(_.Change_scanning_direction('swapScanningY', _.Get('values'), _.Get('Ni'), _.Get('Nj'), _.Get('iScansNegatively'), _.Get('jScansPositively'), _.Get('yFirst'), _.Get('yLast'), _.Get('y'))) h.alias('swapScanningLat', 'swapScanningY')