1# Copyright 2005-2018 ECMWF. 2# 3# This software is licensed under the terms of the Apache Licence Version 2.0 4# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 5# 6# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by 7# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. 8# 9 10unsigned[2] Nx : dump; 11alias Ni = Nx; 12alias numberOfPointsAlongXAxis = Nx; 13alias geography.Nx=Nx; 14 15unsigned[2] Ny : dump; 16alias Nj = Ny; 17alias numberOfPointsAlongYAxis = Ny; 18alias geography.Ny=Ny; 19 20# La1 - latitude of first grid point 21signed[3] latitudeOfFirstGridPoint : edition_specific; 22meta geography.latitudeOfFirstGridPointInDegrees 23 scale(latitudeOfFirstGridPoint,oneConstant,grib1divider,truncateDegrees) : dump; 24alias La1 = latitudeOfFirstGridPoint; 25alias La1InDegrees=latitudeOfFirstGridPointInDegrees; 26#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPoint,thousand); 27 28 29# Lo1 - longitude of first grid point 30signed[3] longitudeOfFirstGridPoint : edition_specific; 31meta geography.longitudeOfFirstGridPointInDegrees 32 scale(longitudeOfFirstGridPoint,oneConstant,grib1divider,truncateDegrees) : dump; 33alias Lo1 = longitudeOfFirstGridPoint; 34alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees; 35#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,thousand); 36 37# Resolution and component flags 38include "grib1/resolution_flags.def"; 39 40# LoV - orientation of the grid; i.e. the east longitude value of the meridian which is parallel to the Y-axis 41signed[3] LoV : edition_specific ; 42meta geography.LoVInDegrees 43 scale(LoV,oneConstant,grib1divider,truncateDegrees) : dump; 44alias orientationOfTheGrid = LoV; 45alias orientationOfTheGridInDegrees = LoVInDegrees; 46 47# Dx - X-direction grid length 48unsigned[3] DxInMetres : dump; 49alias xDirectionGridLength=DxInMetres; 50alias geography.DxInMetres=DxInMetres ; 51alias Dx = DxInMetres; 52alias Di = DxInMetres; 53 54 55# Dy - Y-direction grid length 56unsigned[3] DyInMetres : dump; 57alias yDirectionGridLength=DyInMetres; 58alias geography.DyInMetres=DyInMetres; 59alias Dy= DyInMetres; 60alias Dj = DyInMetres; 61 62 63unsigned[1] projectionCentreFlag : dump; 64# Also add the old spelling of "centre" for backward compatibility 65alias projectionCenterFlag=projectionCentreFlag; 66 67# for change_scanning_direction 68alias yFirst=latitudeOfFirstGridPointInDegrees; 69alias xFirst=longitudeOfFirstGridPointInDegrees; 70 71include "grib1/scanning_mode.def"; 72 73# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere 74signed[3] Latin1 : edition_specific; 75meta geography.Latin1InDegrees scale(Latin1,oneConstant,grib1divider,truncateDegrees) : dump; 76alias firstLatitude=Latin1; 77alias firstLatitudeInDegrees=Latin1InDegrees; 78 79# GRIB Edition 1 does not have the LaD parameter so we use Latin1 instead 80constant LaDInDegrees = Latin1InDegrees : dump; 81alias geography.LaDInDegrees=LaDInDegrees; 82 83# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere 84signed[3] Latin2 :edition_specific; 85alias secondLatitude=Latin2; 86meta geography.Latin2InDegrees scale(Latin2,oneConstant,grib1divider,truncateDegrees) : dump; 87alias secondLatitudeInDegrees=Latin2InDegrees; 88 89signed[3] latitudeOfSouthernPole : no_copy; 90meta geography.latitudeOfSouthernPoleInDegrees 91 scale(latitudeOfSouthernPole,oneConstant,grib1divider,truncateDegrees) : dump; 92 93signed[3] longitudeOfSouthernPole : no_copy; 94meta geography.longitudeOfSouthernPoleInDegrees 95 scale(longitudeOfSouthernPole,oneConstant,grib1divider,truncateDegrees) : dump; 96 97meta numberOfDataPoints number_of_points(Nx,Ny,PLPresent,pl) : dump; 98alias numberOfPoints=numberOfDataPoints; 99meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints, 100 bitmapPresent,bitmap,numberOfCodedValues) : dump; 101#alias ls.valuesCount=numberOfValues; 102 103iterator lambert_conformal(numberOfPoints,missingValue,values, 104 radius,Nx,Ny, 105 LoVInDegrees,LaDInDegrees, 106 Latin1InDegrees,Latin2InDegrees, 107 latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees, 108 Dx,Dy, 109 iScansNegatively, 110 jScansPositively, 111 jPointsAreConsecutive, 112 alternativeRowScanning); 113 114 115meta latLonValues latlonvalues(values); 116alias latitudeLongitudeValues=latLonValues; 117meta latitudes latitudes(values,0); 118meta longitudes longitudes(values,0); 119meta distinctLatitudes latitudes(values,1); 120meta distinctLongitudes longitudes(values,1); 121 122nearest lambert_conformal(values,radius,Nx,Ny); 123 124pad padding_grid3_1(2); 125 126# END 1/grid_definition.lambert_conformal ---------------------------------------------------------------------- 127 128