SPHER1
,
SPHER2
spheroid arguments:
SUBROUTINE GRID2XY( GDTYP_O, P_ALP_O, P_BET_O, P_GAM_O, XCENT_O, YCENT_O, SPHER_O, & GDTYP_I, P_ALP_I, P_BET_I, P_GAM_I, XCENT_I, YCENT_I, SPHER_I, & NCOLS_I, NROWS_I, XORIG_I, YORIG_I, XCELL_I, YCELL_I, & XLOC_O, YLOC_O ) SUBROUTINE GRID2XY( GDTYP_O, P_ALP_O, P_BET_O, P_GAM_O, XCENT_O, YCENT_O, & GDTYP_I, P_ALP_I, P_BET_I, P_GAM_I, XCENT_I, YCENT_I, & NCOLS_I, NROWS_I, XORIG_I, YORIG_I, XCELL_I, YCELL_I, & XLOC_O, YLOC_O ) SUBROUTINE BNDY2XY( GDTYP_O, P_ALP_O, P_BET_O, P_GAM_O, XCENT_O, YCENT_O, SPHER_O, & GDTYP_I, P_ALP_I, P_BET_I, P_GAM_I, XCENT_I, YCENT_I, SPHER_I, & NCOLS_I, NROWS_I, NTHIK_I, XORIG_I, YORIG_I, XCELL_I, YCELL_I, & XLOC_B, YLOC_B ) SUBROUTINE BNDY2XY( GDTYP_O, P_ALP_O, P_BET_O, P_GAM_O, XCENT_O, YCENT_O, & GDTYP_I, P_ALP_I, P_BET_I, P_GAM_I, XCENT_I, YCENT_I, & NCOLS_I, NROWS_I, NTHIK_I, XORIG_I, YORIG_I, XCELL_I, YCELL_I, & XLOC_B, YLOC_B ) INTEGER, INTENT(IN ) :: GDTYP_O, GDTYP_I INTEGER, INTENT(IN ) :: NCOLS_I, NROWS_I !! dimensions for GRID_I REAL*8 , INTENT(IN ) :: SPHER_O, SPHER_I !! input, output spheres REAL*8 , INTENT(IN ) :: P_ALP_O, P_BET_O, P_GAM_O, XCENT_O, YCENT_O REAL*8 , INTENT(IN ) :: P_ALP_I, P_BET_I, P_GAM_I, XCENT_I, YCENT_I REAL*8 , INTENT(IN ) :: XORIG_I, YORIG_I, XCELL_I, YCELL_I REAL*8 , INTENT( OUT) :: XLOC_O( NCOLS_I,NROWS_I ) !! GRID_O coords for REAL*8 , INTENT( OUT) :: YLOC_O( NCOLS_I,NROWS_I ) !! GRID_I grid-cell centers REAL*8 , INTENT( OUT) :: XLOC_B( 2*NTHIK_I*(NCOLS_I+NROWS_I+2*NTHIK_I) ) !! ... boundary-cell centers REAL*8 , INTENT( OUT) :: YLOC_B( 2*NTHIK_I*(NCOLS_I+NROWS_I+2*NTHIK_I) ) !!
<XLOC_O_O,YLOC_O>
for all
(input) GRID_I grid-cell or boundary-cell centers
relative to the coordinate system for (output) GRID_O
using USGS GCTP-package routine GTPZ0()
. The usual
I/O API coordinate-description
conventions are used for the
GDTYP,P_ALP,P_BET,P_GAM,XCENT,YCENT
input and output
coordinate description arguments.
Versions without the spheroid arguments use routine
INITSPHERES()
(controlled by environment variable
IOAPI_ISPH) to determine the spheroid used by the map
projections; the two-spheroid-argument versions should be used for
transformations for which the input map projection uses a different
spheroid from the output map projection (in which case, the
tramsform must be implemented "behind the scenes" as a
two-stage process: first, using the input spheroid, from
input-projection coordinates to Lat-Lon; then, using the output
spheroid, from Lat-Lon to the output-projection coordinates).
NOTE: The GRID_I-vs-GRID_O issue for many uses is "backward" to the naive intuition: to interpolate data-grids from GRID_O to GRID_I, one needs to compute the locations of GRID_I-nodes relative to the GRID_O coordinate-and-grid system in order to compute the bilinear coefficients for those points—a coordinate transformation in the reverse of the direction of the data-interpolation.
For I/O API Version 3.2 or later, only: generic module-routine
CONTAIN
ed in MODULE MODGCTP
.
See also Coordinate-coordinate conversion routines:
GCTP coordinate-transform package from USGS
GRID2INDX()/PNTS2INDX()/INDXMULT()
"New" bilinear interpolation package fromMODULE MODGCTP
XY2XY(): array-of-points coordinate transformation routine from
MODULE MODGCTP
USE MODGCTGP
CALL INITSPHERES()
or CALL SETSPHERE()
before using.
BMATVEC()
and BILIN()
and the
m3tools program mtxcalc
for a full-program example.
... INTEGER GDTYP_O !! parameters for output coordinate system REAL*8 P_ALP_O REAL*8 P_BET_O REAL*8 P_GAM_O REAL*8 XCENT_O REAL*8 YCENT_O INTEGER GDTYP_I !! parameters for input grid and coord system INTEGER NCOLS_I INTEGER NROWS_I INTEGER NTHIK_I REAL*8 P_ALP_I REAL*8 P_BET_I REAL*8 P_GAM_I REAL*8 XCENT_I REAL*8 YCENT_I REAL*8 XORIG_I REAL*8 YORIG_I REAL*8 XCELL_I REAL*8 YCELL_I ... REAL*8 XGRID_O( NCOLS_I,NROWS_I ) REAL*8 YGRID_O( NCOLS_I,NROWS_I ) ... CALL GRID2XY( GDTYP_O, P_ALP_O, P_BET_O, P_GAM_O, XCENT_O, YCENT_O, & GDTYP_I, P_ALP_I, P_BET_I, P_GAM_I, XCENT_I, YCENT_I, & NCOLS_I, NROWS_I, XORIG_I, YORIG_I, XCELL_I, YCELL_I, & XGRID_O, YGRID_O ) ...
See also:
GCTP coordinate transformation routine from USGS
GRID2INDX()/PNTS2INDX()/INDXMULT()
: Bilinear-interpolation package inMODULE MODGCTP
XY2XY()
: array-of-points coordinate transformation routinee inMODULE MODGCTP
UNGRIDB()
andBILIN()/BMATVEC()
"old" bilinear interpolation packages
Up: Coordinate and Grid Related Routines
To: Models-3/EDSS I/O API: The Help Pages