mirror of https://github.com/ecmwf/eccodes.git
75 lines
2.2 KiB
Modula-2
75 lines
2.2 KiB
Modula-2
# (C) Copyright 2005- ECMWF.
|
|
|
|
# GRID DEFINITION Mercator projection
|
|
# grib 1 -> 2
|
|
constant gridDefinitionTemplateNumber = 20;
|
|
|
|
signed[2] Ni : dump;
|
|
alias numberOfPointsAlongAParallel=Ni;
|
|
alias Nx=Ni;
|
|
alias geography.Ni=Ni;
|
|
alias numberOfPointsAlongXAxis=Ni;
|
|
|
|
signed[2] Nj : dump;
|
|
alias numberOfPointsAlongAMeridian=Nj;
|
|
alias Nx=Nj;
|
|
alias geography.Nj=Nj;
|
|
alias numberOfPointsAlongYAxis=Nj;
|
|
|
|
include "grib1/grid_first_last_resandcomp.def";
|
|
|
|
signed[3] Latin : edition_specific,no_copy;
|
|
meta geography.LaDInDegrees scale(Latin,oneConstant,grib1divider,truncateDegrees) : dump;
|
|
|
|
pad padding_grid1_1(1);
|
|
|
|
# for change_scanning_direction
|
|
alias yFirst=latitudeOfFirstGridPointInDegrees;
|
|
alias yLast=latitudeOfLastGridPointInDegrees;
|
|
alias xFirst=longitudeOfFirstGridPointInDegrees;
|
|
alias xLast=longitudeOfLastGridPointInDegrees;
|
|
|
|
include "grib1/scanning_mode.def";
|
|
|
|
signed[3] DiInMetres: dump;
|
|
alias longitudinalDirectionGridLength=DiInMetres;
|
|
alias Di=DiInMetres;
|
|
alias geography.DiInMetres=DiInMetres;
|
|
alias DxInMetres = DiInMetres;
|
|
|
|
signed[3] DjInMetres: dump;
|
|
alias latitudinalDirectionGridLength=DjInMetres;
|
|
alias Dj=DjInMetres;
|
|
alias geography.DjInMetres=DjInMetres;
|
|
alias DyInMetres = DjInMetres;
|
|
|
|
constant orientationOfTheGridInDegrees=0;
|
|
|
|
pad padding_grid1_2(8);
|
|
|
|
meta numberOfDataPoints number_of_points(Ni,Nj) : dump;
|
|
alias numberOfPoints=numberOfDataPoints;
|
|
meta numberOfValues number_of_values(values,bitsPerValue,numberOfDataPoints,bitmapPresent,bitmap,numberOfCodedValues) : dump;
|
|
#alias ls.valuesCount=numberOfValues;
|
|
|
|
iterator mercator(numberOfPoints,missingValue,values,
|
|
radius,Ni,Nj,
|
|
latitudeOfFirstGridPointInDegrees, longitudeOfFirstGridPointInDegrees,
|
|
LaDInDegrees,
|
|
latitudeOfLastGridPointInDegrees, longitudeOfLastGridPointInDegrees,
|
|
orientationOfTheGridInDegrees,
|
|
DiInMetres,DjInMetres,
|
|
iScansNegatively,
|
|
jScansPositively,
|
|
jPointsAreConsecutive,
|
|
alternativeRowScanning);
|
|
|
|
nearest mercator(values,radius,Nx,Ny);
|
|
|
|
meta latLonValues latlonvalues(values);
|
|
alias latitudeLongitudeValues=latLonValues;
|
|
meta latitudes latitudes(values,0);
|
|
meta longitudes longitudes(values,0);
|
|
meta distinctLatitudes latitudes(values,1);
|
|
meta distinctLongitudes longitudes(values,1);
|