In RPN files the latitudes and longitudes of all grid points are coded. Depending on the grid type they are coded in the parameters IG1-IG4 (for A, B, G, and L grids) or in the tictacs, '^^', '>>', (Z grids) or in the toctoc, '^>' (U grids, Yin-Yang).
Shell
Obtain longitudes and latitudes in shell
infile=... # RPN input file with one record and tictac's (if needed for the grid type - if xrec can display the field you have everything you need) outfile=... # RPN output file (including path or at least './')
# Create field with constant value 180 / PI = 57.29578 r.diag xlin $infile tmp -a 0 -b 57.29578 r.diag ggtrig tmp tmp2 -kind IDF -lon # ==> outfile=longitude*infile r.diag newnam tmp2 lon -name LON r.diag ggtrig tmp tmp2 -kind IDF # ==> outfile=latitude*infile r.diag newnam tmp2 lat -name LAT
# Combine LO and LA in output file r.diag joinup $outfile lon lat
Python 3
Obtain longitudes and latitudes in Python
#!/usr/bin/env python3
#####################################################################################
#
# Before opening Python you need to first load the Python version (in this case Python3) you want to use with:
# module load python3/miniconda3
# and then load the module needed to read RPN files with Python with:
# module load python3/python-rpn
# module load python3/outils-divers
# and to get access to basic Python packages source:
# source activate base_plus
#
#####################################################################################
# Importation of modules and library import rpnpy.librmn.all as rmn # Module to read RPN files from rotated_lat_lon import RotatedLatLon # Module to project field on native grid (created by Sasha Huziy)
# Read one record filename = '...' # Name of RPN file to readvarname = '...' # Name of variable to read fid = rmn.fstopenall(filename,rmn.FST_RO) # Open the file rec = rmn.fstlir(fid,nomvar=varname) # Read the full record of variable 'varname' field = rec['d'] # Assign 'field' to the data of 'varname'
# Read 2-D latitudes & longitudes - if needed mygrid = rmn.readGrid(fid,rec) # Get the grid information for the (LAM) Grid -- Reads the tictac's latlondict = rmn.gdll(mygrid) # Create 2-D lat and lon fields from the grid information lat = latlondict['lat'] # Assign 'lat' to 2-D latitude field lon = latlondict['lon'] # Assign 'lon' to 2-D longitude field
# Close RPN input file rmn.fstcloseall(fid) # Close the RPN file