// Test points for the Gnomonic Projection
//
//
// --------------------------------------------------------------------------
// How to run this script:
//
//    chdir org/geotools/referencing/test-data/scripts
//    java -ea org.geotools.referencing.ScriptRunner Gnomonic.txt
//
// A test is performed every time a "target pt" statement occurs. If the target point computed
// by Geotools is different from the target point declared in this script by an amount greater
// than the value specified in the last "test tolerance" statement, then a failure is reported.
// Inverse transforms are tested if java assertions are enabled.
// If some test fails, "print" statements can be added in this script for debugging purpose:
//
//    print crs            (prints the source and target CRS, and the transform between them)
//    print pts            (prints the source and target points, and their transformed points)
////////////////////////////////////////////

test tolerance = (1e-4, 1e-4)
set _sphere_ = GEOGCS["WGS84",  DATUM["WGS84",  SPHEROID["WGS84",  6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]]


//----------------------------------------------------------------------------------------------------------------
// This tests the spherical case
// This test data was generated by QGIS 2.4 which uses PROJ.4, which only has a spherical gnomonic algorithm.
//----------------------------------------------------------------------------------------------------------------

source crs = _sphere_

//--------------------------------------------------------
// center at (0, 0)
//--------------------------------------------------------

set _gnomonic_sphere_0E_0N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  0.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_sphere_0E_0N_

source pt = (0.0, 0.0)
target pt = ( 0.0, 0.0)

source pt = (10.0, 10.0)
target pt = ( 1124637.6398, 1141986.9881)

source pt = (-10.0, 10.0)
target pt = ( -1124637.6398, 1141986.9881)

source pt = (10.0, -10.0)
target pt = ( 1124637.6398, -1141986.9881)

source pt = (-10.0, -10.0)
target pt = ( -1124637.6398, -1141986.9881)

source pt = (30.0, 30.0)
target pt = ( 3682419.1139, 4252091.3333)

source pt = (-30.0, 30.0)
target pt = ( -3682419.1139, 4252091.3333)

source pt = (30.0, -30.0)
target pt = ( 3682419.1139, -4252091.3333)

source pt = (-30.0, -30.0)
target pt = ( -3682419.1139, -4252091.3333)


//--------------------------------------------------------
// center at (100W, 20N)
//--------------------------------------------------------

set _gnomonic_sphere_100W_20N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -100.0], PARAMETER["latitude_of_origin",  20.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_sphere_100W_20N_

source pt = (-100.0, 20.0)
target pt = ( 0.0, 0.0)

source pt = (-110.0, 10.0)
target pt = ( -1123592.3185, -1107304.4171)

source pt = (-110.0, 30.0)
target pt = ( -986347.5118, 1168450.3663)

source pt = (-90.0, 30.0)
target pt = ( 986347.5118, 1168450.3663)

source pt = (-90.0, 10.0)
target pt = ( 1123592.3185, -1107304.4171)


source pt = (-130.0, -10.0)
target pt = ( -4232394.8841, -3909812.7109)

source pt = (-130.0, 50.0)
target pt = ( -2610991.3240, 4301263.1587)

source pt = (-70.0, 50.0)
target pt = ( 2610991.3240, 4301263.1587)

source pt = (-70.0, -10.0)
target pt = ( 4232394.8841, -3909812.7109)


//--------------------------------------------------------
// center at North Pole (0E, 90N)
//--------------------------------------------------------

set _gnomonic_sphere_0E_90N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  90.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _sphere_
target crs = _gnomonic_sphere_0E_90N_

source pt = (0.0, 90.0)
target pt = (0.0, 0.0)

source pt = (0.0, 80.0)
target pt = (0.0, -1124637.6398)

source pt = (90.0, 80.0)
target pt = (1124637.6398, 0.0)

source pt = (180.0, 80.0)
target pt = (0.0, 1124637.6398)

source pt = (-90.0, 80.0)
target pt = (-1124637.6398, 0.0)

source pt = (45.0, 80.0)
target pt = (795238.9014, -795238.9014)

source pt = (135.0, 80.0)
target pt = (795238.9014, 795238.9014)

source pt = (-135.0, 80.0)
target pt = (-795238.9014, 795238.9014)

source pt = (-45.0, 80.0)
target pt = (-795238.9014, -795238.9014)


//--------------------------------------------------------
// center at South Pole (0E, 90S)
//--------------------------------------------------------

set _gnomonic_sphere_0E_90S_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  -90.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _sphere_
target crs = _gnomonic_sphere_0E_90S_

source pt = (0.0, -90.0)
target pt = (0.0, 0.0)

source pt = (0.0, -80.0)
target pt = (0.0, 1124637.6398)

source pt = (90.0, -80.0)
target pt = (1124637.6398, 0.0)

source pt = (180.0, -80.0)
target pt = (0.0, -1124637.6398)

source pt = (-90.0, -80.0)
target pt = (-1124637.6398, 0.0)

source pt = (45.0, -80.0)
target pt = (795238.9014, 795238.9014)

source pt = (135.0, -80.0)
target pt = (795238.9014, -795238.9014)

source pt = (-135.0, -80.0)
target pt = (-795238.9014, -795238.9014)

source pt = (-45.0, -80.0)
target pt = (-795238.9014, 795238.9014)


//--------------------------------------------------------
// center near North Pole (0E, 89N)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _sphere_
target crs = _gnomonic_sphere_0E_89N_

source pt = (0.0, 90.0)
target pt = (0.0, 111330.7955)

source pt = (180.0, 90.0)
target pt = (0.0, 111330.7955)

source pt = (17.0, 90.0)
target pt = (0.0, 111330.7955)

//--------------------------------------------------------
// center near South Pole (0E, 89S)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89S_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  -89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _sphere_
target crs = _gnomonic_sphere_0E_89S_

source pt = (0.0, -90.0)
target pt = (0.0, -111330.7955)

source pt = (180.0, -90.0)
target pt = (0.0, -111330.7955)

source pt = (-132.0, -90.0)
target pt = (0.0, -111330.7955)


//--------------------------------------------------------
// center very near North Pole (0E, 89.999N)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89_999N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  89.999], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _sphere_
target crs = _gnomonic_sphere_0E_89_999N_

source pt = (0.0, 89.998)
target pt = (0.0, -111.3195)

//--------------------------------------------------------
// center very near South Pole (0E, 89.999S)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89_999S_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  -89.999], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _sphere_
target crs = _gnomonic_sphere_0E_89_999S_

source pt = (0.0, -89.998)
target pt = (0.0, 111.3195)


//----------------------------------------------------------------------------------------------------------------
// Now test the inverse transform for the spherical case
// This test data is the same as the forward transform but source and targets reversed
//----------------------------------------------------------------------------------------------------------------

test tolerance = (1e-6, 1e-6)

target crs = _sphere_

//--------------------------------------------------------
// center at (0, 0)
//--------------------------------------------------------

set _gnomonic_sphere_0E_0N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  0.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_0N_

source pt = (0.0, 0.0)
target pt = ( 0.0, 0.0)

source pt = ( 0.0, 111330.7955)
target pt = (0.0, 1.0)

source pt = ( 111330.7955, 0.0)
target pt = (1.0, 0.0)

source pt = ( 1124637.6398, 1141986.9881)
target pt = (10.0, 10.0)

source pt = ( -1124637.6398, 1141986.9881)
target pt = (-10.0, 10.0)

source pt = ( 1124637.6398, -1141986.9881)
target pt = (10.0, -10.0)

source pt = ( -1124637.6398, -1141986.9881)
target pt = (-10.0, -10.0)

source pt = ( 3682419.1139, 4252091.3333)
target pt = (30.0, 30.0)

source pt = ( -3682419.1139, 4252091.3333)
target pt = (-30.0, 30.0)

source pt = ( 3682419.1139, -4252091.3333)
target pt = (30.0, -30.0)

source pt = ( -3682419.1139, -4252091.3333)
target pt = (-30.0, -30.0)

//--------------------------------------------------------
// center at (100W, 20N)
//--------------------------------------------------------

set _gnomonic_sphere_100W_20N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -100.0], PARAMETER["latitude_of_origin",  20.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_100W_20N_

source pt = ( 0, 0)
target pt = (-100.0, 20.0)

source pt = ( -1123592.3185, -1107304.4171)
target pt = (-110.0, 10.0)

source pt = ( -986347.5118, 1168450.3663)
target pt = (-110.0, 30.0)

source pt = ( 986347.5118, 1168450.3663)
target pt = (-90.0, 30.0)

source pt = ( 1123592.3185, -1107304.4171)
target pt = (-90.0, 10.0)


source pt = ( -4232394.8841, -3909812.7109)
target pt = (-130.0, -10.0)

source pt = ( -2610991.3240, 4301263.1587)
target pt = (-130.0, 50.0)

source pt = ( 2610991.3240, 4301263.1587)
target pt = (-70.0, 50.0)

source pt = ( 4232394.8841, -3909812.7109)
target pt = (-70.0, -10.0)


//--------------------------------------------------------
// center at North Pole (0E, 90N)
//--------------------------------------------------------

set _gnomonic_sphere_0E_90N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  90.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_90N_
target crs = _sphere_

source pt = (0.0, 0.0)
target pt = (0.0, 90.0)

source pt = (0.0, -1124637.6398)
target pt = (0.0, 80.0)

source pt = (1124637.6398, 0.0)
target pt = (90.0, 80.0)

source pt = (0.0, 1124637.6398)
target pt = (180.0, 80.0)

source pt = (-1124637.6398, 0.0)
target pt = (-90.0, 80.0)

source pt = (795238.9014, -795238.9014)
target pt = (45.0, 80.0)

source pt = (795238.9014, 795238.9014)
target pt = (135.0, 80.0)

source pt = (-795238.9014, 795238.9014)
target pt = (-135.0, 80.0)

source pt = (-795238.9014, -795238.9014)
target pt = (-45.0, 80.0)


//--------------------------------------------------------
// center at South Pole (0E, 90S)
//--------------------------------------------------------

set _gnomonic_sphere_0E_90S_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  -90.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_90S_
target crs = _sphere_

source pt = (0.0, 0.0)
target pt = (0.0, -90.0)

source pt = (0.0, 1124637.6398)
target pt = (0.0, -80.0)

source pt = (-1124637.6398, 0.0)
target pt = (-90.0, -80.0)

source pt = (0.0, -1124637.6398)
target pt = (180.0, -80.0)

source pt = (1124637.6398, 0.0)
target pt = (90.0, -80.0)

source pt = (-795238.9014, 795238.9014)
target pt = (-45.0, -80.0)

source pt = (-795238.9014, -795238.9014)
target pt = (-135.0, -80.0)

source pt = (795238.9014, -795238.9014)
target pt = (135.0, -80.0)

source pt = (795238.9014, 795238.9014)
target pt = (45.0, -80.0)


//--------------------------------------------------------
// center near North Pole (0E, 89N)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_89N_
target crs = _sphere_

source pt = (0.0, 111330.7955)
target pt = (180.0, 90.0)

//--------------------------------------------------------
// center near South Pole (0E, 89S)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  -89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_89N_
target crs = _sphere_

source pt = (0.0, -111330.7954)
target pt = (0.0, -90.0)


//--------------------------------------------------------
// center very near North Pole (0E, 89.999N)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89_999N_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  89.999], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_89_999N_
target crs = _sphere_

source pt = (0.0, -111.3195)
target pt = (0.0, 89.998)

//--------------------------------------------------------
// center very near South Pole (0E, 89.999S)
//--------------------------------------------------------

set _gnomonic_sphere_0E_89_999S_ = PROJCS["Gnomonic",      GEOGCS["Sphere", DATUM["Sphere", SPHEROID["Sphere", 6378137.0, 0],TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  -89.999], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_sphere_0E_89_999S_
target crs = _sphere_

source pt = (0.0, 111.3195)
target pt = (0.0, -89.998)


//----------------------------------------------------------------------------------------------------------------
// Now test the spheroid case
//----------------------------------------------------------------------------------------------------------------

test tolerance = (1e-4, 1e-4)

set _spheroid_ = GEOGCS["WGS84",  DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]], PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295], AXIS["Longitude",EAST], AXIS["Latitude",NORTH]]

source crs = _spheroid_

//--------------------------------------------------------
// center at (0E, 0N)
//--------------------------------------------------------

set _gnomonic_spheroid_0E_0N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  0.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_0E_0N_

source pt = (-5.0, -5.0)
target pt = ( -558014.6819,	-556424.7653)


//--------------------------------------------------------
// center at (100W, 20N)
//--------------------------------------------------------

set _gnomonic_spheroid_100W_20N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -100.0], PARAMETER["latitude_of_origin",  20.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_100W_20N_

source pt = (-100.0, 20.0)
target pt = ( 0.0, 0.0)

source pt = (-110.0, 15.0)
target pt = ( -1089192.3268,	-530028.0129)

source pt = (-95,	35)
target pt = ( 473293.2228,	1713554.3155)

source pt = (-130,	45)
target pt = ( -2762538.5978,	3540666.2393)

source pt = (-80,	-15)
target pt = ( 2753808.5005,	-4590929.2750)


//--------------------------------------------------------
// center at (130E, 55N)
//--------------------------------------------------------

set _gnomonic_spheroid_130E_55N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 130.0], PARAMETER["latitude_of_origin",  55.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_130E_55N_

source pt = (140,	60)
target pt = (559735.9934,	600832.2421)


//--------------------------------------------------------
// center at (45W, 35S)
//--------------------------------------------------------

set _gnomonic_spheroid_45W_35S_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -45.0], PARAMETER["latitude_of_origin",  -35.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_45W_35S_

source pt = (-55,	-30)
target pt = (-974160.2274,	513114.4315)

//--------------------------------------------------------
// center at (175E, 30N)
//--------------------------------------------------------

set _gnomonic_spheroid_175E_30N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 175.0], PARAMETER["latitude_of_origin",  30.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_175E_30N_

source pt = (-175,	35)
target pt = (921678.2311,	602319.2877)


//--------------------------------------------------------
// center at (175W, 30N)
//--------------------------------------------------------

set _gnomonic_spheroid_175W_30N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -175.0], PARAMETER["latitude_of_origin",  30.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_175W_30N_

source pt = (175,	35)
target pt = (-921678.2311,	602319.2877)

//--------------------------------------------------------
// center at (25E, 89N)
//--------------------------------------------------------

set _gnomonic_spheroid_25E_89N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 25.0], PARAMETER["latitude_of_origin",  89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_25E_89N_

source pt = (-175,	88)
target pt = (76489.3698,	321890.0360)

source pt = (-145,	87)
target pt = (-58300.4557,	442393.8874)


//--------------------------------------------------------
// center at (25E, 89S)
//--------------------------------------------------------

set _gnomonic_spheroid_25E_89S_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 25.0], PARAMETER["latitude_of_origin",  -89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_25E_89S_

source pt = (-175,	-88)
target pt = (76489.3698,	-321890.0360)

source pt = (-145,	-87)
target pt = (-58300.4557,	-442393.8874)


//--------------------------------------------------------
// center at (125E, 89N)
//--------------------------------------------------------

set _gnomonic_spheroid_25E_89N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 125.0], PARAMETER["latitude_of_origin",  89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_25E_89N_

source pt = (-175,	88)
target pt = (193507.9716,	-33.6903)

source pt = (-145,	87)
target pt = (335436.4816,	111705.2076)


//--------------------------------------------------------
// center at (125E, 89S)
//--------------------------------------------------------

set _gnomonic_spheroid_25E_89S_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 125.0], PARAMETER["latitude_of_origin",  -89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

target crs = _gnomonic_spheroid_25E_89S_

source pt = (-175,	-88)
target pt = (193507.9716,	33.6903)

source pt = (-145,	-87)
target pt = (335436.4816,	-111705.2076)


//----------------------------------------------------------------------------------------------------------------
// Now test the inverse transform for the spheroid case
// This test data is the same as the forward transform but source and targets reversed
//----------------------------------------------------------------------------------------------------------------

test tolerance = (1e-6, 1e-6)

target crs = _spheroid_

//--------------------------------------------------------
// center at (0E, 0N)
//--------------------------------------------------------

set _gnomonic_spheroid_0E_0N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 0.0], PARAMETER["latitude_of_origin",  0.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_0E_0N_

source pt = ( -558014.6819,	-556424.7653)
target pt = (-5.0, -5.0)

//--------------------------------------------------------
// center at (100W, 20N)
//--------------------------------------------------------

set _gnomonic_spheroid_100W_20N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -100.0], PARAMETER["latitude_of_origin",  20.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_100W_20N_

source pt = ( 0.0, 0.0)
target pt = (-100.0, 20.0)

source pt = ( -1089192.3268,	-530028.0129)
target pt = (-110.0, 15.0)

source pt = ( 473293.2228,	1713554.3155)
target pt = (-95,	35)

source pt = ( -2762538.5978,	3540666.2393)
target pt = (-130,	45)

source pt = ( 2753808.5005,	-4590929.2750)
target pt = (-80,	-15)


//--------------------------------------------------------
// center at (130E, 55N)
//--------------------------------------------------------

set _gnomonic_spheroid_130E_55N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 130.0], PARAMETER["latitude_of_origin",  55.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_130E_55N_

source pt = (559735.9934,	600832.2421)
target pt = (140,	60)


//--------------------------------------------------------
// center at (45W, 35S)
//--------------------------------------------------------

set _gnomonic_spheroid_45W_35S_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -45.0], PARAMETER["latitude_of_origin",  -35.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_45W_35S_

source pt = (-974160.2274,	513114.4315)
target pt = (-55,	-30)

//--------------------------------------------------------
// center at (175E, 30N)
//--------------------------------------------------------

set _gnomonic_spheroid_175E_30N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 175.0], PARAMETER["latitude_of_origin",  30.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_175E_30N_

source pt = (921678.2311,	602319.2877)
target pt = (-175,	35)


//--------------------------------------------------------
// center at (175W, 30N)
//--------------------------------------------------------

set _gnomonic_spheroid_175W_30N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", -175.0], PARAMETER["latitude_of_origin",  30.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_175W_30N_

source pt = (-921678.2311,	602319.2877)
target pt = (175,	35)

//--------------------------------------------------------
// center at (25E, 89N)
//--------------------------------------------------------

set _gnomonic_spheroid_25E_89N_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 25.0], PARAMETER["latitude_of_origin",  89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_25E_89N_

source pt = (76489.3698,	321890.0360)
target pt = (-175,	88)

source pt = (-58300.4557,	442393.8874)
target pt = (-145,	87)

//--------------------------------------------------------
// center at (25E, 89S)
//--------------------------------------------------------

set _gnomonic_spheroid_25E_89S_ = PROJCS["Gnomonic",      GEOGCS["WGS 84",        DATUM["WGS_1984",            SPHEROID["WGS 84",6378137,298.257223563,                AUTHORITY["EPSG",7030]],            TOWGS84[0,0,0,0,0,0,0],            AUTHORITY["EPSG",6326]],        PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],        UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],        AXIS["Lat",NORTH],        AXIS["Long",EAST],        AUTHORITY["EPSG",4326]], PROJECTION["Gnomonic"], PARAMETER["central_meridian", 25.0], PARAMETER["latitude_of_origin",  -89.0], PARAMETER["false_easting",      0.0], PARAMETER["false_northing",     0.0], UNIT["meter", 1.0], AXIS["x",EAST], AXIS["y",NORTH]]

source crs = _gnomonic_spheroid_25E_89S_

source pt = (76489.3698,	-321890.0360)
target pt = (-175,	-88)

source pt = (-58300.4557,	-442393.8874)
target pt = (-145,	-87)


