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
CONTAINed in MODULE MODGCTP.
See also Coordinate-coordinate conversion routines:
GCTP coordinate-transform package from USGS
GRID2INDX()/PNTS2INDX()/INDXMULT()"New" bilinear interpolation package fromMODULE MODGCTPXY2XY(): 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