# Copyright 2005-2017 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. # # In applying this licence, ECMWF does not waive the privileges and immunities granted to it by # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. # include "grib2/template.3.grid.def"; # Di - i direction increment unsigned[4] iDirectionIncrement : can_be_missing,edition_specific; alias Di = iDirectionIncrement; alias Dx = iDirectionIncrement; # Dj - j direction increment unsigned[4] jDirectionIncrement : can_be_missing,edition_specific; alias Dj = jDirectionIncrement; alias Dy = jDirectionIncrement; include "grib2/template.3.scanning_mode.def"; meta g2grid g2grid( latitudeOfFirstGridPoint, longitudeOfFirstGridPoint, latitudeOfLastGridPoint, longitudeOfLastGridPoint, iDirectionIncrement, jDirectionIncrement, basicAngleOfTheInitialProductionDomain, subdivisionsOfBasicAngle ); meta geography.latitudeOfFirstGridPointInDegrees g2latlon(g2grid,0) : dump; meta geography.longitudeOfFirstGridPointInDegrees g2latlon(g2grid,1) : dump; meta geography.latitudeOfLastGridPointInDegrees g2latlon(g2grid,2) : dump; meta geography.longitudeOfLastGridPointInDegrees g2latlon(g2grid,3) : dump; alias xFirst=longitudeOfFirstGridPointInDegrees; alias yFirst=latitudeOfFirstGridPointInDegrees; alias xLast=longitudeOfLastGridPointInDegrees; alias yLast=latitudeOfLastGridPointInDegrees; meta geography.iDirectionIncrementInDegrees g2latlon(g2grid,4, iDirectionIncrementGiven) : can_be_missing,dump; meta geography.jDirectionIncrementInDegrees g2latlon(g2grid,5, jDirectionIncrementGiven) : can_be_missing,dump; alias latitudeFirstInDegrees = latitudeOfFirstGridPointInDegrees; alias longitudeFirstInDegrees = longitudeOfFirstGridPointInDegrees; alias latitudeLastInDegrees = latitudeOfLastGridPointInDegrees; alias longitudeLastInDegrees = longitudeOfLastGridPointInDegrees; alias DiInDegrees = iDirectionIncrementInDegrees; alias DxInDegrees = iDirectionIncrementInDegrees; alias DjInDegrees = jDirectionIncrementInDegrees; alias DyInDegrees = jDirectionIncrementInDegrees; _if ( missing(Ni) && PLPresent == 1 ) { iterator latlon_reduced(numberOfPoints,missingValue,values, latitudeFirstInDegrees,longitudeFirstInDegrees, latitudeLastInDegrees,longitudeLastInDegrees, Nj,DjInDegrees,pl); nearest latlon_reduced(values,radius,Nj,pl,longitudeFirstInDegrees,longitudeLastInDegrees); } else { iterator latlon(numberOfPoints,missingValue,values, longitudeFirstInDegrees,DiInDegrees , Ni,Nj,iScansNegatively, latitudeFirstInDegrees, DjInDegrees,jScansPositively, jPointsAreConsecutive); nearest regular(values,radius,Ni,Nj); } 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);