libsim Versione 7.2.0

◆ geo_proj_unproj()

elemental subroutine geo_proj_unproj ( type(geo_proj), intent(in)  this,
double precision, intent(in)  x,
double precision, intent(in)  y,
double precision, intent(out)  lon,
double precision, intent(out)  lat 
)

Computes and returns geographical coordinates given the coordinates in the projected system.

Parametri
[in]thisobject to unproject
[in]xprojected coordinates
[in]yprojected coordinates
[out]longeographical coordinates
[out]latgeographical coordinates

Definizione alla linea 896 del file geo_proj_class.F90.

897
898END SUBROUTINE unproj_stretched_ll
899
900
901! Formulas and notation from:
902! http://mathworld.wolfram.com/LambertConformalConicProjection.html
903! http://en.wikipedia.org/wiki/Lambert_conformal_conic_projection
904! http://fr.wikipedia.org/wiki/Projection_conique_conforme_de_Lambert
905! with the following guess:
906! projection is always polar, so reference latitude=+-90 according to
907! projectionCenterFlag; reference longitude is LoV.
908! how coordinates of south pole should be treated? Metview ignores them.
909ELEMENTAL SUBROUTINE proj_lambert(lon,lat,x,y, &
910 latin1, latin2, lov, lad, projection_center_flag)
911DOUBLE PRECISION, INTENT(in) :: lon,lat
912DOUBLE PRECISION, INTENT(out) :: x,y
913DOUBLE PRECISION, INTENT(in) :: latin1, latin2, lov, lad
914INTEGER, INTENT(in) :: projection_center_flag
915
916DOUBLE PRECISION :: n, f, ro0, ro, cs1, cs2, cs3, pollat, angle, cot
917DOUBLE PRECISION, PARAMETER :: epsy = 1.0d-100
918
919IF (iand(projection_center_flag, 128) == 0) THEN
920 pollat = 90.d0*degrad
921ELSE
922 pollat = -90.d0*degrad
923ENDIF
924cs1 = cos(degrad*latin1)
925cs2 = tan(pi*.25d0 + degrad*latin1*.5d0)
926
927IF (latin1 == latin2) THEN
928 n = sin(degrad*latin1) ! verify that n->sin(latin1) when latin2->latin1
929ELSE
930 n = log(cs1/cos(degrad*latin2)) / &
931 log(tan(pi*.25d0 + degrad*latin2*.5d0) / cs2)
932ENDIF

Generated with Doxygen.