mirror of https://github.com/ecmwf/eccodes.git
97 lines
3.8 KiB
Modula-2
97 lines
3.8 KiB
Modula-2
# (C) Copyright 2005- ECMWF.
|
|
|
|
# TEMPLATE 3.30, Lambert conformal
|
|
include "grib2/template.3.shape_of_the_earth.def";
|
|
|
|
unsigned[4] Nx : dump;
|
|
alias Ni = Nx;
|
|
alias numberOfPointsAlongXAxis = Nx;
|
|
alias geography.Nx=Nx;
|
|
|
|
unsigned[4] Ny : dump;
|
|
alias Nj = Ny;
|
|
alias numberOfPointsAlongYAxis = Ny;
|
|
alias geography.Ny=Ny;
|
|
|
|
# La1 - latitude of first grid point
|
|
signed[4] latitudeOfFirstGridPoint : edition_specific;
|
|
alias La1 = latitudeOfFirstGridPoint;
|
|
meta geography.latitudeOfFirstGridPointInDegrees
|
|
scale(latitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump;
|
|
alias La1InDegrees=latitudeOfFirstGridPointInDegrees;
|
|
#meta latitudeOfFirstGridPointInMicrodegrees times(latitudeOfFirstGridPointInDegrees,oneConstant): no_copy;
|
|
|
|
# Lo1 - longitude of first grid point
|
|
unsigned[4] longitudeOfFirstGridPoint : edition_specific;
|
|
alias Lo1 = longitudeOfFirstGridPoint;
|
|
meta geography.longitudeOfFirstGridPointInDegrees
|
|
scale(longitudeOfFirstGridPoint,one,grib2divider,truncateDegrees) : dump;
|
|
alias Lo1InDegrees = longitudeOfFirstGridPointInDegrees;
|
|
#meta longitudeOfFirstGridPointInMicrodegrees times(longitudeOfFirstGridPoint,oneConstant) : no_copy;
|
|
|
|
include "grib2/template.3.resolution_flags.def";
|
|
|
|
# LaD - Latitude where Dx and Dy are specified
|
|
signed[4] LaD : edition_specific ;
|
|
alias latitudeWhereDxAndDyAreSpecified=LaD;
|
|
meta geography.LaDInDegrees scale(LaD,one,grib2divider,truncateDegrees) : dump;
|
|
|
|
# LoV - Longitude of meridian parallel to Y-axis along which latitude increases as the Y-coordinate increases
|
|
unsigned[4] LoV : edition_specific;
|
|
meta geography.LoVInDegrees scale(LoV,one,grib2divider,truncateDegrees) : dump;
|
|
|
|
# Dx - X-direction grid length (in units of millimetres)
|
|
unsigned[4] Dx : edition_specific ;
|
|
alias xDirectionGridLength=Dx;
|
|
alias Di = Dx;
|
|
meta geography.DxInMetres scale(Dx,one,thousand) : dump;
|
|
|
|
# Dy - Y-direction grid length (in units of millimetres)
|
|
unsigned[4] Dy : edition_specific ;
|
|
alias yDirectionGridLength=Dy ;
|
|
alias Dj = Dy;
|
|
meta geography.DyInMetres scale(Dy,one,thousand) : dump;
|
|
|
|
# Projection centre flag
|
|
flags[1] projectionCentreFlag 'grib2/tables/[tablesVersion]/3.5.table' : dump;
|
|
|
|
include "grib2/template.3.scanning_mode.def";
|
|
|
|
# Latin 1 - first latitude from the pole at which the secant cone cuts the sphere
|
|
signed[4] Latin1 : edition_specific;
|
|
alias FirstLatitude=Latin1;
|
|
meta geography.Latin1InDegrees scale(Latin1,one,grib2divider,truncateDegrees) : dump;
|
|
|
|
# Latin 2 - second latitude from the pole at which the secant cone cuts the sphere
|
|
signed[4] Latin2 : dump;
|
|
alias SecondLatitude=Latin2;
|
|
meta geography.Latin2InDegrees scale(Latin2,one,grib2divider,truncateDegrees) : dump;
|
|
|
|
# Latitude of the southern pole of projection
|
|
signed[4] latitudeOfSouthernPole : edition_specific;
|
|
alias latitudeOfTheSouthernPoleOfProjection=latitudeOfSouthernPole;
|
|
meta geography.latitudeOfSouthernPoleInDegrees scale(latitudeOfSouthernPole ,one,grib2divider,truncateDegrees) : dump;
|
|
|
|
# Longitude of the southern pole of projection
|
|
unsigned[4] longitudeOfSouthernPole : edition_specific;
|
|
alias longitudeOfTheSouthernPoleOfProjection=longitudeOfSouthernPole;
|
|
meta geography.longitudeOfSouthernPoleInDegrees scale(longitudeOfSouthernPole,oneConstant,grib2divider,truncateDegrees) : dump;
|
|
|
|
iterator lambert_conformal(numberOfPoints,missingValue,values,
|
|
radius,Nx,Ny,
|
|
LoVInDegrees,LaDInDegrees,
|
|
Latin1InDegrees,Latin2InDegrees,
|
|
latitudeOfFirstGridPointInDegrees,longitudeOfFirstGridPointInDegrees,
|
|
DxInMetres,DyInMetres,
|
|
iScansNegatively,
|
|
jScansPositively,
|
|
jPointsAreConsecutive,
|
|
alternativeRowScanning);
|
|
|
|
nearest lambert_conformal(values,radius,Nx,Ny);
|
|
|
|
meta latLonValues latlonvalues(values);
|
|
alias latitudeLongitudeValues=latLonValues;
|
|
meta latitudes latitudes(values,0);
|
|
meta longitudes longitudes(values,0);
|