{"version":3,"file":"344.81960b2bf57dfd831379.js","mappings":"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","sources":["webpack://customer-portal-web-app/./node_modules/mgrs/mgrs.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/Point.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/Proj.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/adjust_axis.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/adjust_lat.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/adjust_lon.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/asinz.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/e0fn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/e1fn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/e2fn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/e3fn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/gN.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/imlfn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/iqsfnz.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/mlfn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/msfnz.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/phi2z.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/pj_enfn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/qsfnz.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/sign.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/srat.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/toPoint.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/common/tsfnz.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/constants/Datum.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/constants/units.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/core.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/datum.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/datum_transform.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/defs.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/deriveConstants.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/extend.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/global.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/includedProjections.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/index.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/parseCode.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projString.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/aea.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/aeqd.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/cass.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/cea.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/eqc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/eqdc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/gauss.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/gnom.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/krovak.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/laea.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/lcc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/longlat.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/merc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/mill.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/moll.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/nzmg.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/omerc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/poly.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/sinu.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/somerc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/stere.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/sterea.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/tmerc.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/utm.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/projections/vandg.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/transform.js","webpack://customer-portal-web-app/./node_modules/proj4/lib/wkt.js"],"sourcesContent":["\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\n\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 4 for 1000 m or 5 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexports.forward = function(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexports.inverse = function(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexports.toPoint = function(mgrsStr) {\n var llbbox = exports.inverse(mgrsStr);\n return [(llbbox[2] + llbbox[0]) / 2, (llbbox[3] + llbbox[1]) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n var seasting = \"\" + utm.easting,\n snorthing = \"\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","var mgrs = require('mgrs');\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n }else if(typeof x === 'object'){\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n }\n else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(mgrs.toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return mgrs.forward([this.x, this.y], accuracy);\n};\nmodule.exports = Point;","var parseCode = require(\"./parseCode\");\nvar extend = require('./extend');\nvar projections = require('./projections');\nvar deriveConstants = require('./deriveConstants');\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var modifiedJSON = deriveConstants(json);\n var ourProj = Projection.projections.get(modifiedJSON.projName);\n if(ourProj){\n extend(this, modifiedJSON);\n extend(this, ourProj);\n this.init();\n callback(null, this);\n }else{\n callback(srsCode);\n }\n}\nProjection.projections = projections;\nProjection.projections.start();\nmodule.exports = Projection;\n","module.exports = function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n t = 'x';\n }\n else if (i === 1) {\n v = yin;\n t = 'y';\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n point[t] = v;\n break;\n case 'w':\n point[t] = -v;\n break;\n case 'n':\n point[t] = v;\n break;\n case 's':\n point[t] = -v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n point.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n point.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return point;\n};\n","var HALF_PI = Math.PI/2;\nvar sign = require('./sign');\n\nmodule.exports = function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n};","var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nvar SPI = 3.14159265359;\nvar sign = require('./sign');\n\nmodule.exports = function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n};","module.exports = function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n};","module.exports = function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n};","module.exports = function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n};","module.exports = function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n};","module.exports = function(x) {\n return (x * x * x * (35 / 3072));\n};","module.exports = function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n};","module.exports = function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n};","var HALF_PI = Math.PI/2;\n\nmodule.exports = function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n};","module.exports = function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n};","module.exports = function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n};","var HALF_PI = Math.PI/2;\nmodule.exports = function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n};","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nmodule.exports = function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n};","var pj_mlfn = require(\"./pj_mlfn\");\nvar EPSLN = 1.0e-10;\nvar MAX_ITER = 20;\nmodule.exports = function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n};","module.exports = function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n};","module.exports = function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n};","module.exports = function(x) {\n return x<0 ? -1 : 1;\n};","module.exports = function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n};","module.exports = function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n};","var HALF_PI = Math.PI/2;\n\nmodule.exports = function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n};","exports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\nexports.potsdam = {\n towgs84: \"606.0,23.0,413.0\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\nexports.hermannskogel = {\n towgs84: \"653.0,-212.0,449.0\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};","exports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\nexports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};","exports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"","exports.ft = {to_meter: 0.3048};\nexports['us-ft'] = {to_meter: 1200 / 3937};\n","var proj = require('./Proj');\nvar transform = require('./transform');\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords) {\n var transformedArray;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords);\n if (coords.length === 3) {\n return [transformedArray.x, transformedArray.y, transformedArray.z];\n }\n else {\n return [transformedArray.x, transformedArray.y];\n }\n }\n else {\n return transform(from, to, coords);\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n }\n else {\n obj = {\n forward: function(coords) {\n return transformer(fromProj, toProj, coords);\n },\n inverse: function(coords) {\n return transformer(toProj, fromProj, coords);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nmodule.exports = proj4;","var HALF_PI = Math.PI/2;\nvar PJD_3PARAM = 1;\nvar PJD_7PARAM = 2;\nvar PJD_GRIDSHIFT = 3;\nvar PJD_WGS84 = 4; // WGS84 or equivalent\nvar PJD_NODATUM = 5; // WGS84 or equivalent\nvar SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nvar AD_C = 1.0026000;\nvar COS_67P5 = 0.38268343236508977;\nvar datum = function(proj) {\n if (!(this instanceof datum)) {\n return new datum(proj);\n }\n this.datum_type = PJD_WGS84; //default setting\n if (!proj) {\n return;\n }\n if (proj.datumCode && proj.datumCode === 'none') {\n this.datum_type = PJD_NODATUM;\n }\n if (proj.datum_params) {\n for (var i = 0; i < proj.datum_params.length; i++) {\n proj.datum_params[i] = parseFloat(proj.datum_params[i]);\n }\n if (proj.datum_params[0] !== 0 || proj.datum_params[1] !== 0 || proj.datum_params[2] !== 0) {\n this.datum_type = PJD_3PARAM;\n }\n if (proj.datum_params.length > 3) {\n if (proj.datum_params[3] !== 0 || proj.datum_params[4] !== 0 || proj.datum_params[5] !== 0 || proj.datum_params[6] !== 0) {\n this.datum_type = PJD_7PARAM;\n proj.datum_params[3] *= SEC_TO_RAD;\n proj.datum_params[4] *= SEC_TO_RAD;\n proj.datum_params[5] *= SEC_TO_RAD;\n proj.datum_params[6] = (proj.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n // DGR 2011-03-21 : nadgrids support\n this.datum_type = proj.grids ? PJD_GRIDSHIFT : this.datum_type;\n\n this.a = proj.a; //datum object also uses these values\n this.b = proj.b;\n this.es = proj.es;\n this.ep2 = proj.ep2;\n this.datum_params = proj.datum_params;\n if (this.datum_type === PJD_GRIDSHIFT) {\n this.grids = proj.grids;\n }\n};\ndatum.prototype = {\n\n\n /****************************************************************/\n // cs_compare_datums()\n // Returns TRUE if the two datums match, otherwise FALSE.\n compare_datums: function(dest) {\n if (this.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n }\n else if (this.a !== dest.a || Math.abs(this.es - dest.es) > 0.000000000050) {\n // the tolerence for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n }\n else if (this.datum_type === PJD_3PARAM) {\n return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2]);\n }\n else if (this.datum_type === PJD_7PARAM) {\n return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2] && this.datum_params[3] === dest.datum_params[3] && this.datum_params[4] === dest.datum_params[4] && this.datum_params[5] === dest.datum_params[5] && this.datum_params[6] === dest.datum_params[6]);\n }\n else if (this.datum_type === PJD_GRIDSHIFT || dest.datum_type === PJD_GRIDSHIFT) {\n //alert(\"ERROR: Grid shift transformations are not implemented.\");\n //return false\n //DGR 2012-07-29 lazy ...\n return this.nadgrids === dest.nadgrids;\n }\n else {\n return true; // datums are equal\n }\n }, // cs_compare_datums()\n\n /*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\n geodetic_to_geocentric: function(p) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n var X; // output\n var Y;\n var Z;\n\n var Error_Code = 0; // GEOCENT_NO_ERROR;\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n }\n else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n }\n else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return null;\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = this.a / (Math.sqrt(1.0e0 - this.es * Sin2_Lat));\n X = (Rn + Height) * Cos_Lat * Math.cos(Longitude);\n Y = (Rn + Height) * Cos_Lat * Math.sin(Longitude);\n Z = ((Rn * (1 - this.es)) + Height) * Sin_Lat;\n\n p.x = X;\n p.y = Y;\n p.z = Z;\n return Error_Code;\n }, // cs_geodetic_to_geocentric()\n\n\n geocentric_to_geodetic: function(p) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var At_Pole; /* indicates location is in polar region */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n At_Pole = false;\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / this.a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n At_Pole = true;\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / this.a < genau) {\n Latitude = HALF_PI;\n Height = -this.b;\n return;\n }\n }\n else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - this.es * (2.0 - this.es) * ST * ST);\n CPHI0 = ST * (1.0 - this.es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = this.a / Math.sqrt(1.0 - this.es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - this.es * SPHI0 * SPHI0);\n\n RK = this.es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n\n p.x = Longitude;\n p.y = Latitude;\n p.z = Height;\n return p;\n }, // cs_geocentric_to_geodetic()\n\n /** Convert_Geocentric_To_Geodetic\n * The method used here is derived from 'An Improved Algorithm for\n * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996\n */\n geocentric_to_geodetic_noniter: function(p) {\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n var W; /* distance from Z axis */\n var W2; /* square of distance from Z axis */\n var T0; /* initial estimate of vertical component */\n var T1; /* corrected estimate of vertical component */\n var S0; /* initial estimate of horizontal component */\n var S1; /* corrected estimate of horizontal component */\n var Sin_B0; /* Math.sin(B0), B0 is estimate of Bowring aux variable */\n var Sin3_B0; /* cube of Math.sin(B0) */\n var Cos_B0; /* Math.cos(B0) */\n var Sin_p1; /* Math.sin(phi1), phi1 is estimated latitude */\n var Cos_p1; /* Math.cos(phi1) */\n var Rn; /* Earth radius at location */\n var Sum; /* numerator of Math.cos(phi1) */\n var At_Pole; /* indicates location is in polar region */\n\n X = parseFloat(X); // cast from string to float\n Y = parseFloat(Y);\n Z = parseFloat(Z);\n\n At_Pole = false;\n if (X !== 0.0) {\n Longitude = Math.atan2(Y, X);\n }\n else {\n if (Y > 0) {\n Longitude = HALF_PI;\n }\n else if (Y < 0) {\n Longitude = -HALF_PI;\n }\n else {\n At_Pole = true;\n Longitude = 0.0;\n if (Z > 0.0) { /* north pole */\n Latitude = HALF_PI;\n }\n else if (Z < 0.0) { /* south pole */\n Latitude = -HALF_PI;\n }\n else { /* center of earth */\n Latitude = HALF_PI;\n Height = -this.b;\n return;\n }\n }\n }\n W2 = X * X + Y * Y;\n W = Math.sqrt(W2);\n T0 = Z * AD_C;\n S0 = Math.sqrt(T0 * T0 + W2);\n Sin_B0 = T0 / S0;\n Cos_B0 = W / S0;\n Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;\n T1 = Z + this.b * this.ep2 * Sin3_B0;\n Sum = W - this.a * this.es * Cos_B0 * Cos_B0 * Cos_B0;\n S1 = Math.sqrt(T1 * T1 + Sum * Sum);\n Sin_p1 = T1 / S1;\n Cos_p1 = Sum / S1;\n Rn = this.a / Math.sqrt(1.0 - this.es * Sin_p1 * Sin_p1);\n if (Cos_p1 >= COS_67P5) {\n Height = W / Cos_p1 - Rn;\n }\n else if (Cos_p1 <= -COS_67P5) {\n Height = W / -Cos_p1 - Rn;\n }\n else {\n Height = Z / Sin_p1 + Rn * (this.es - 1.0);\n }\n if (At_Pole === false) {\n Latitude = Math.atan(Sin_p1 / Cos_p1);\n }\n\n p.x = Longitude;\n p.y = Latitude;\n p.z = Height;\n return p;\n }, // geocentric_to_geodetic_noniter()\n\n /****************************************************************/\n // pj_geocentic_to_wgs84( p )\n // p = point to transform in geocentric coordinates (x,y,z)\n geocentric_to_wgs84: function(p) {\n\n if (this.datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n p.x += this.datum_params[0];\n p.y += this.datum_params[1];\n p.z += this.datum_params[2];\n\n }\n else if (this.datum_type === PJD_7PARAM) {\n var Dx_BF = this.datum_params[0];\n var Dy_BF = this.datum_params[1];\n var Dz_BF = this.datum_params[2];\n var Rx_BF = this.datum_params[3];\n var Ry_BF = this.datum_params[4];\n var Rz_BF = this.datum_params[5];\n var M_BF = this.datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n var x_out = M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF;\n var y_out = M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF;\n var z_out = M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF;\n p.x = x_out;\n p.y = y_out;\n p.z = z_out;\n }\n }, // cs_geocentric_to_wgs84\n\n /****************************************************************/\n // pj_geocentic_from_wgs84()\n // coordinate system definition,\n // point to transform in geocentric coordinates (x,y,z)\n geocentric_from_wgs84: function(p) {\n\n if (this.datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n p.x -= this.datum_params[0];\n p.y -= this.datum_params[1];\n p.z -= this.datum_params[2];\n\n }\n else if (this.datum_type === PJD_7PARAM) {\n var Dx_BF = this.datum_params[0];\n var Dy_BF = this.datum_params[1];\n var Dz_BF = this.datum_params[2];\n var Rx_BF = this.datum_params[3];\n var Ry_BF = this.datum_params[4];\n var Rz_BF = this.datum_params[5];\n var M_BF = this.datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n p.x = x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp;\n p.y = -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp;\n p.z = Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp;\n } //cs_geocentric_from_wgs84()\n }\n};\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nmodule.exports = datum;\n","var PJD_3PARAM = 1;\nvar PJD_7PARAM = 2;\nvar PJD_GRIDSHIFT = 3;\nvar PJD_NODATUM = 5; // WGS84 or equivalent\nvar SRS_WGS84_SEMIMAJOR = 6378137; // only used in grid shift transforms\nvar SRS_WGS84_ESQUARED = 0.006694379990141316; //DGR: 2012-07-29\nmodule.exports = function(source, dest, point) {\n var wp, i, l;\n\n function checkParams(fallback) {\n return (fallback === PJD_3PARAM || fallback === PJD_7PARAM);\n }\n // Short cut if the datums are identical.\n if (source.compare_datums(dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n //DGR: 2012-07-29 : add nadgrids support (begin)\n var src_a = source.a;\n var src_es = source.es;\n\n var dst_a = dest.a;\n var dst_es = dest.es;\n\n var fallback = source.datum_type;\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n if (fallback === PJD_GRIDSHIFT) {\n if (this.apply_gridshift(source, 0, point) === 0) {\n source.a = SRS_WGS84_SEMIMAJOR;\n source.es = SRS_WGS84_ESQUARED;\n }\n else {\n // try 3 or 7 params transformation or nothing ?\n if (!source.datum_params) {\n source.a = src_a;\n source.es = source.es;\n return point;\n }\n wp = 1;\n for (i = 0, l = source.datum_params.length; i < l; i++) {\n wp *= source.datum_params[i];\n }\n if (wp === 0) {\n source.a = src_a;\n source.es = source.es;\n return point;\n }\n if (source.datum_params.length > 3) {\n fallback = PJD_7PARAM;\n }\n else {\n fallback = PJD_3PARAM;\n }\n }\n }\n if (dest.datum_type === PJD_GRIDSHIFT) {\n dest.a = SRS_WGS84_SEMIMAJOR;\n dest.es = SRS_WGS84_ESQUARED;\n }\n // Do we need to go through geocentric coordinates?\n if (source.es !== dest.es || source.a !== dest.a || checkParams(fallback) || checkParams(dest.datum_type)) {\n //DGR: 2012-07-29 : add nadgrids support (end)\n // Convert to geocentric coordinates.\n source.geodetic_to_geocentric(point);\n // CHECK_RETURN;\n // Convert between datums\n if (checkParams(source.datum_type)) {\n source.geocentric_to_wgs84(point);\n // CHECK_RETURN;\n }\n if (checkParams(dest.datum_type)) {\n dest.geocentric_from_wgs84(point);\n // CHECK_RETURN;\n }\n // Convert back to geodetic coordinates\n dest.geocentric_to_geodetic(point);\n // CHECK_RETURN;\n }\n // Apply grid shift to destination if required\n if (dest.datum_type === PJD_GRIDSHIFT) {\n this.apply_gridshift(dest, 1, point);\n // CHECK_RETURN;\n }\n\n source.a = src_a;\n source.es = src_es;\n dest.a = dst_a;\n dest.es = dst_es;\n\n return point;\n};\n\n","var globals = require('./global');\nvar parseProj = require('./projString');\nvar wkt = require('./wkt');\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nmodule.exports = defs;\n","var Datum = require('./constants/Datum');\nvar Ellipsoid = require('./constants/Ellipsoid');\nvar extend = require('./extend');\nvar datum = require('./datum');\nvar EPSLN = 1.0e-10;\n// ellipoid pj_set_ell.c\nvar SIXTH = 0.1666666666666666667;\n/* 1/6 */\nvar RA4 = 0.04722222222222222222;\n/* 17/360 */\nvar RA6 = 0.02215608465608465608;\nmodule.exports = function(json) {\n // DGR 2011-03-20 : nagrids -> nadgrids\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = Datum[json.datumCode];\n if (datumDef) {\n json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n if (!json.a) { // do we have an ellipsoid?\n var ellipse = Ellipsoid[json.ellps] ? Ellipsoid[json.ellps] : Ellipsoid.WGS84;\n extend(json, ellipse);\n }\n if (json.rf && !json.b) {\n json.b = (1.0 - 1.0 / json.rf) * json.a;\n }\n if (json.rf === 0 || Math.abs(json.a - json.b) < EPSLN) {\n json.sphere = true;\n json.b = json.a;\n }\n json.a2 = json.a * json.a; // used in geocentric\n json.b2 = json.b * json.b; // used in geocentric\n json.es = (json.a2 - json.b2) / json.a2; // e ^ 2\n json.e = Math.sqrt(json.es); // eccentricity\n if (json.R_A) {\n json.a *= 1 - json.es * (SIXTH + json.es * (RA4 + json.es * RA6));\n json.a2 = json.a * json.a;\n json.b2 = json.b * json.b;\n json.es = 0;\n }\n json.ep2 = (json.a2 - json.b2) / json.b2; // used in geocentric\n if (!json.k0) {\n json.k0 = 1.0; //default value\n }\n //DGR 2010-11-12: axis\n if (!json.axis) {\n json.axis = \"enu\";\n }\n\n if (!json.datum) {\n json.datum = datum(json);\n }\n return json;\n};\n","module.exports = function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n};\n","module.exports = function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n};\n","var projs = [\n require('./projections/tmerc'),\n require('./projections/utm'),\n require('./projections/sterea'),\n require('./projections/stere'),\n require('./projections/somerc'),\n require('./projections/omerc'),\n require('./projections/lcc'),\n require('./projections/krovak'),\n require('./projections/cass'),\n require('./projections/laea'),\n require('./projections/aea'),\n require('./projections/gnom'),\n require('./projections/cea'),\n require('./projections/eqc'),\n require('./projections/poly'),\n require('./projections/nzmg'),\n require('./projections/mill'),\n require('./projections/sinu'),\n require('./projections/moll'),\n require('./projections/eqdc'),\n require('./projections/vandg'),\n require('./projections/aeqd')\n];\nmodule.exports = function(proj4){\n projs.forEach(function(proj){\n proj4.Proj.projections.add(proj);\n });\n};","var proj4 = require('./core');\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = require('./Proj');\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = require('./Point');\nproj4.toPoint = require(\"./common/toPoint\");\nproj4.defs = require('./defs');\nproj4.transform = require('./transform');\nproj4.mgrs = require('mgrs');\nproj4.version = require('../package.json').version;\nrequire('./includedProjections')(proj4);\nmodule.exports = proj4;","var defs = require('./defs');\nvar wkt = require('./wkt');\nvar projStr = require('./projString');\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\nfunction testWKT(code){\n var codeWords = ['GEOGCS','GEOCCS','PROJCS','LOCAL_CS'];\n return codeWords.reduce(function(a,b){\n return a+1+code.indexOf(b);\n },0);\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n else if (testWKT(code)) {\n return wkt(code);\n }\n else if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nmodule.exports = parse;","var D2R = 0.01745329251994329577;\nvar PrimeMeridian = require('./constants/PrimeMeridian');\nvar units = require('./constants/units');\n\nmodule.exports = function(defData) {\n var self = {};\n var paramObj = {};\n defData.split(\"+\").map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).forEach(function(a) {\n var split = a.split(\"=\");\n split.push(true);\n paramObj[split[0].toLowerCase()] = split[1];\n });\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n if (units[v]) {\n self.to_meter = units[v].to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n self.from_greenwich = (PrimeMeridian[v] ? PrimeMeridian[v] : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n};\n","var projs = [\n require('./projections/merc'),\n require('./projections/longlat')\n];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexports.add = add;\n\nexports.get = function(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n};\nexports.start = function() {\n projs.forEach(add);\n};\n","var EPSLN = 1.0e-10;\nvar msfnz = require('../common/msfnz');\nvar qsfnz = require('../common/qsfnz');\nvar adjust_lon = require('../common/adjust_lon');\nvar asinz = require('../common/asinz');\nexports.init = function() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n};\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexports.forward = function(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n};\n\n\nexports.inverse = function(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n};\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexports.phi1z = function(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n};\nexports.names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\n","var adjust_lon = require('../common/adjust_lon');\nvar HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nvar mlfn = require('../common/mlfn');\nvar e0fn = require('../common/e0fn');\nvar e1fn = require('../common/e1fn');\nvar e2fn = require('../common/e2fn');\nvar e3fn = require('../common/e3fn');\nvar gN = require('../common/gN');\nvar asinz = require('../common/asinz');\nvar imlfn = require('../common/imlfn');\nexports.init = function() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n};\n\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c / Math.sin(c);\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n};\n\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n};\nexports.names = [\"Azimuthal_Equidistant\", \"aeqd\"];\n","var mlfn = require('../common/mlfn');\nvar e0fn = require('../common/e0fn');\nvar e1fn = require('../common/e1fn');\nvar e2fn = require('../common/e2fn');\nvar e3fn = require('../common/e3fn');\nvar gN = require('../common/gN');\nvar adjust_lon = require('../common/adjust_lon');\nvar adjust_lat = require('../common/adjust_lat');\nvar imlfn = require('../common/imlfn');\nvar HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nexports.init = function() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n};\n\n\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexports.forward = function(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n};\n\n/* Inverse equations\n -----------------*/\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n};\nexports.names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];","var adjust_lon = require('../common/adjust_lon');\nvar qsfnz = require('../common/qsfnz');\nvar msfnz = require('../common/msfnz');\nvar iqsfnz = require('../common/iqsfnz');\n/*\n reference: \n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexports.init = function() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n};\n\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n};\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"cea\"];\n","var adjust_lon = require('../common/adjust_lon');\nvar adjust_lat = require('../common/adjust_lat');\nexports.init = function() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n};\n\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexports.forward = function(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n};\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexports.inverse = function(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n};\nexports.names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\n","var e0fn = require('../common/e0fn');\nvar e1fn = require('../common/e1fn');\nvar e2fn = require('../common/e2fn');\nvar e3fn = require('../common/e3fn');\nvar msfnz = require('../common/msfnz');\nvar mlfn = require('../common/mlfn');\nvar adjust_lon = require('../common/adjust_lon');\nvar adjust_lat = require('../common/adjust_lat');\nvar imlfn = require('../common/imlfn');\nvar EPSLN = 1.0e-10;\nexports.init = function() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n};\n\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n};\n\n/* Inverse equations\n -----------------*/\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n};\nexports.names = [\"Equidistant_Conic\", \"eqdc\"];\n","var FORTPI = Math.PI/4;\nvar srat = require('../common/srat');\nvar HALF_PI = Math.PI/2;\nvar MAX_ITER = 20;\nexports.init = function() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n};\n\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n};\n\nexports.inverse = function(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"gauss\"];\n","var adjust_lon = require('../common/adjust_lon');\nvar EPSLN = 1.0e-10;\nvar asinz = require('../common/asinz');\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexports.init = function() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n};\n\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexports.forward = function(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project \n // to infinity, on a bearing \n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that \n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n};\n\n\nexports.inverse = function(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"gnom\"];\n","var adjust_lon = require('../common/adjust_lon');\nexports.init = function() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n};\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexports.forward = function(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n};\n\n/* calculate lat/lon from xy */\nexports.inverse = function(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n};\nexports.names = [\"Krovak\", \"krovak\"];\n","var HALF_PI = Math.PI/2;\nvar FORTPI = Math.PI/4;\nvar EPSLN = 1.0e-10;\nvar qsfnz = require('../common/qsfnz');\nvar adjust_lon = require('../common/adjust_lon');\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexports.S_POLE = 1;\nexports.N_POLE = 2;\nexports.EQUIT = 3;\nexports.OBLIQ = 4;\n\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexports.init = function() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = this.authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n};\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexports.forward = function(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.phi0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n};\n\n/* Inverse equations\n -----------------*/\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = 0;\n p.y = this.phi0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = 0;\n p.y = this.phi0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = this.authlat(Math.asin(ab), this.apa);\n }\n\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n};\n\n/* determine latitude from authalic latitude */\nexports.P00 = 0.33333333333333333333;\nexports.P01 = 0.17222222222222222222;\nexports.P02 = 0.10257936507936507936;\nexports.P10 = 0.06388888888888888888;\nexports.P11 = 0.06640211640211640211;\nexports.P20 = 0.01641501294219154443;\n\nexports.authset = function(es) {\n var t;\n var APA = [];\n APA[0] = es * this.P00;\n t = es * es;\n APA[0] += t * this.P01;\n APA[1] = t * this.P10;\n t *= es;\n APA[0] += t * this.P02;\n APA[1] += t * this.P11;\n APA[2] = t * this.P20;\n return APA;\n};\n\nexports.authlat = function(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n};\nexports.names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\n","var EPSLN = 1.0e-10;\nvar msfnz = require('../common/msfnz');\nvar tsfnz = require('../common/tsfnz');\nvar HALF_PI = Math.PI/2;\nvar sign = require('../common/sign');\nvar adjust_lon = require('../common/adjust_lon');\nvar phi2z = require('../common/phi2z');\nexports.init = function() {\n\n // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north\n //double c_lat; /* center latitude */\n //double c_lon; /* center longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n};\n\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexports.forward = function(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n};\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexports.inverse = function(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n};\n\nexports.names = [\"Lambert Tangential Conformal Conic Projection\", \"Lambert_Conformal_Conic\", \"Lambert_Conformal_Conic_2SP\", \"lcc\"];\n","exports.init = function() {\n //no-op for longlat\n};\n\nfunction identity(pt) {\n return pt;\n}\nexports.forward = identity;\nexports.inverse = identity;\nexports.names = [\"longlat\", \"identity\"];\n","var msfnz = require('../common/msfnz');\nvar HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nvar R2D = 57.29577951308232088;\nvar adjust_lon = require('../common/adjust_lon');\nvar FORTPI = Math.PI/4;\nvar tsfnz = require('../common/tsfnz');\nvar phi2z = require('../common/phi2z');\nexports.init = function() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n};\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n};\n\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexports.inverse = function(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n};\n\nexports.names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\n","var adjust_lon = require('../common/adjust_lon');\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexports.init = function() {\n //no-op\n};\n\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n};\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"Miller_Cylindrical\", \"mill\"];\n","var adjust_lon = require('../common/adjust_lon');\nvar EPSLN = 1.0e-10;\nexports.init = function() {};\n\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexports.forward = function(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n for (var i = 0; true; i++) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n};\n\nexports.inverse = function(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"Mollweide\", \"moll\"];\n","var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexports.iterations = 1;\n\nexports.init = function() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n};\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexports.forward = function(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n};\n\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexports.inverse = function(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n};\nexports.names = [\"New_Zealand_Map_Grid\", \"nzmg\"];","var tsfnz = require('../common/tsfnz');\nvar adjust_lon = require('../common/adjust_lon');\nvar phi2z = require('../common/phi2z');\nvar HALF_PI = Math.PI/2;\nvar FORTPI = Math.PI/4;\nvar EPSLN = 1.0e-10;\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexports.init = function() {\n this.no_off = this.no_off || false;\n this.no_rot = this.no_rot || false;\n\n if (isNaN(this.k0)) {\n this.k0 = 1;\n }\n var sinlat = Math.sin(this.lat0);\n var coslat = Math.cos(this.lat0);\n var con = this.e * sinlat;\n\n this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));\n this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);\n var t0 = tsfnz(this.e, this.lat0, sinlat);\n var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));\n if (dl * dl < 1) {\n dl = 1;\n }\n var fl;\n var gl;\n if (!isNaN(this.longc)) {\n //Central point and azimuth method\n\n if (this.lat0 >= 0) {\n fl = dl + Math.sqrt(dl * dl - 1);\n }\n else {\n fl = dl - Math.sqrt(dl * dl - 1);\n }\n this.el = fl * Math.pow(t0, this.bl);\n gl = 0.5 * (fl - 1 / fl);\n this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);\n this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;\n\n }\n else {\n //2 points method\n var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));\n var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));\n if (this.lat0 >= 0) {\n this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n else {\n this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n var hl = Math.pow(t1, this.bl);\n var ll = Math.pow(t2, this.bl);\n fl = this.el / hl;\n gl = 0.5 * (fl - 1 / fl);\n var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);\n var pl = (ll - hl) / (ll + hl);\n var dlon12 = adjust_lon(this.long1 - this.long2);\n this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;\n this.long0 = adjust_lon(this.long0);\n var dlon10 = adjust_lon(this.long1 - this.long0);\n this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);\n this.alpha = Math.asin(dl * Math.sin(this.gamma0));\n }\n\n if (this.no_off) {\n this.uc = 0;\n }\n else {\n if (this.lat0 >= 0) {\n this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n else {\n this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n }\n\n};\n\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n var dlon = adjust_lon(lon - this.long0);\n var us, vs;\n var con;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n if (lat > 0) {\n con = -1;\n }\n else {\n con = 1;\n }\n vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));\n us = -1 * con * HALF_PI * this.al / this.bl;\n }\n else {\n var t = tsfnz(this.e, lat, Math.sin(lat));\n var ql = this.el / Math.pow(t, this.bl);\n var sl = 0.5 * (ql - 1 / ql);\n var tl = 0.5 * (ql + 1 / ql);\n var vl = Math.sin(this.bl * (dlon));\n var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;\n if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {\n vs = Number.POSITIVE_INFINITY;\n }\n else {\n vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;\n }\n if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {\n us = this.al * this.bl * (dlon);\n }\n else {\n us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;\n }\n }\n\n if (this.no_rot) {\n p.x = this.x0 + us;\n p.y = this.y0 + vs;\n }\n else {\n\n us -= this.uc;\n p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);\n p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);\n }\n return p;\n};\n\nexports.inverse = function(p) {\n var us, vs;\n if (this.no_rot) {\n vs = p.y - this.y0;\n us = p.x - this.x0;\n }\n else {\n vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);\n us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);\n us += this.uc;\n }\n var qp = Math.exp(-1 * this.bl * vs / this.al);\n var sp = 0.5 * (qp - 1 / qp);\n var tp = 0.5 * (qp + 1 / qp);\n var vp = Math.sin(this.bl * us / this.al);\n var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;\n var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);\n if (Math.abs(up - 1) < EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n }\n else if (Math.abs(up + 1) < EPSLN) {\n p.x = this.long0;\n p.y = -1 * HALF_PI;\n }\n else {\n p.y = phi2z(this.e, ts);\n p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);\n }\n return p;\n};\n\nexports.names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"omerc\"];","var e0fn = require('../common/e0fn');\nvar e1fn = require('../common/e1fn');\nvar e2fn = require('../common/e2fn');\nvar e3fn = require('../common/e3fn');\nvar adjust_lon = require('../common/adjust_lon');\nvar adjust_lat = require('../common/adjust_lat');\nvar mlfn = require('../common/mlfn');\nvar EPSLN = 1.0e-10;\nvar gN = require('../common/gN');\nvar MAX_ITER = 20;\nexports.init = function() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n};\n\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n};\n\n\n/* Inverse equations\n -----------------*/\nexports.inverse = function(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"Polyconic\", \"poly\"];","var adjust_lon = require('../common/adjust_lon');\nvar adjust_lat = require('../common/adjust_lat');\nvar pj_enfn = require('../common/pj_enfn');\nvar MAX_ITER = 20;\nvar pj_mlfn = require('../common/pj_mlfn');\nvar pj_inv_mlfn = require('../common/pj_inv_mlfn');\nvar HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nvar asinz = require('../common/asinz');\nexports.init = function() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n};\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexports.forward = function(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n};\n\nexports.inverse = function(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"Sinusoidal\", \"sinu\"];","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\nexports.init = function() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n};\n\n\nexports.forward = function(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n};\n\nexports.inverse = function(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n};\n\nexports.names = [\"somerc\"];\n","var HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nvar sign = require('../common/sign');\nvar msfnz = require('../common/msfnz');\nvar tsfnz = require('../common/tsfnz');\nvar phi2z = require('../common/phi2z');\nvar adjust_lon = require('../common/adjust_lon');\nexports.ssfn_ = function(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n};\n\nexports.init = function() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n};\n\n// Stereographic forward equations--mapping lat,long to x,y\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n};\n\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexports.inverse = function(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n};\nexports.names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\n","var gauss = require('./gauss');\nvar adjust_lon = require('../common/adjust_lon');\nexports.init = function() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n};\n\nexports.forward = function(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n};\n\nexports.inverse = function(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n};\n\nexports.names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\"];\n","var e0fn = require('../common/e0fn');\nvar e1fn = require('../common/e1fn');\nvar e2fn = require('../common/e2fn');\nvar e3fn = require('../common/e3fn');\nvar mlfn = require('../common/mlfn');\nvar adjust_lon = require('../common/adjust_lon');\nvar HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nvar sign = require('../common/sign');\nvar asinz = require('../common/asinz');\n\nexports.init = function() {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n};\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexports.forward = function(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (this.sphere) {\n var b = cos_phi * Math.sin(delta_lon);\n if ((Math.abs(Math.abs(b) - 1)) < 0.0000000001) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b));\n con = Math.acos(cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - b * b));\n if (lat < 0) {\n con = -con;\n }\n y = this.a * this.k0 * (con - this.lat0);\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var tq = Math.tan(lat);\n var t = Math.pow(tq, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var n = this.a / Math.sqrt(con);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n\n x = this.k0 * n * al * (1 + als / 6 * (1 - t + c + als / 20 * (5 - 18 * t + Math.pow(t, 2) + 72 * c - 58 * this.ep2))) + this.x0;\n y = this.k0 * (ml - this.ml0 + n * tq * (als * (0.5 + als / 24 * (5 - t + 9 * c + 4 * Math.pow(c, 2) + als / 30 * (61 - 58 * t + Math.pow(t, 2) + 600 * c - 330 * this.ep2))))) + this.y0;\n\n }\n p.x = x;\n p.y = y;\n return p;\n};\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexports.inverse = function(p) {\n var con, phi;\n var delta_phi;\n var i;\n var max_iter = 6;\n var lat, lon;\n\n if (this.sphere) {\n var f = Math.exp(p.x / (this.a * this.k0));\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + p.y / (this.a * this.k0);\n var h = Math.cos(temp);\n con = Math.sqrt((1 - h * h) / (1 + g * g));\n lat = asinz(con);\n if (temp < 0) {\n lat = -lat;\n }\n if ((g === 0) && (h === 0)) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n\n con = (this.ml0 + y / this.k0) / this.a;\n phi = con;\n for (i = 0; true; i++) {\n delta_phi = ((con + this.e1 * Math.sin(2 * phi) - this.e2 * Math.sin(4 * phi) + this.e3 * Math.sin(6 * phi)) / this.e0) - phi;\n phi += delta_phi;\n if (Math.abs(delta_phi) <= EPSLN) {\n break;\n }\n if (i >= max_iter) {\n return (95);\n }\n } // for()\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.tan(phi);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var n = this.a / Math.sqrt(con);\n var r = n * (1 - this.es) / con;\n var d = x / (n * this.k0);\n var ds = Math.pow(d, 2);\n lat = phi - (n * tan_phi * ds / r) * (0.5 - ds / 24 * (5 + 3 * t + 10 * c - 4 * cs - 9 * this.ep2 - ds / 30 * (61 + 90 * t + 298 * c + 45 * ts - 252 * this.ep2 - 3 * cs)));\n lon = adjust_lon(this.long0 + (d * (1 - ds / 6 * (1 + 2 * t + c - ds / 20 * (5 - 2 * c + 28 * t - 3 * cs + 8 * this.ep2 + 24 * ts))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\n","var D2R = 0.01745329251994329577;\nvar tmerc = require('./tmerc');\nexports.dependsOn = 'tmerc';\nexports.init = function() {\n if (!this.zone) {\n return;\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(this.zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n tmerc.init.apply(this);\n this.forward = tmerc.forward;\n this.inverse = tmerc.inverse;\n};\nexports.names = [\"Universal Transverse Mercator System\", \"utm\"];\n","var adjust_lon = require('../common/adjust_lon');\nvar HALF_PI = Math.PI/2;\nvar EPSLN = 1.0e-10;\nvar asinz = require('../common/asinz');\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexports.init = function() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n};\n\nexports.forward = function(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n};\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexports.inverse = function(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n};\nexports.names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];","var D2R = 0.01745329251994329577;\nvar R2D = 57.29577951308232088;\nvar PJD_3PARAM = 1;\nvar PJD_7PARAM = 2;\nvar datum_transform = require('./datum_transform');\nvar adjust_axis = require('./adjust_axis');\nvar proj = require('./Proj');\nvar toPoint = require('./common/toPoint');\nmodule.exports = function transform(source, dest, point) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n function checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== \"WGS84\");\n }\n\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && (checkNotWGS(source, dest) || checkNotWGS(dest, source))) {\n wgs84 = new proj('WGS84');\n transform(source, wgs84, point);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (source.axis !== \"enu\") {\n adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === \"longlat\") {\n point.x *= D2R; // convert degrees to radians\n point.y *= D2R;\n }\n else {\n if (source.to_meter) {\n point.x *= source.to_meter;\n point.y *= source.to_meter;\n }\n source.inverse(point); // Convert Cartesian to longlat\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point.x -= dest.from_greenwich;\n }\n\n if (dest.projName === \"longlat\") {\n // convert radians to decimal degrees\n point.x *= R2D;\n point.y *= R2D;\n }\n else { // else project\n dest.forward(point);\n if (dest.to_meter) {\n point.x /= dest.to_meter;\n point.y /= dest.to_meter;\n }\n }\n\n // DGR, 2010/11/12\n if (dest.axis !== \"enu\") {\n adjust_axis(dest, true, point);\n }\n\n return point;\n};","var D2R = 0.01745329251994329577;\nvar extend = require('./extend');\n\nfunction mapit(obj, key, v) {\n obj[key] = v.map(function(aa) {\n var o = {};\n sExpr(aa, o);\n return o;\n }).reduce(function(a, b) {\n return extend(a, b);\n }, {});\n}\n\nfunction sExpr(v, obj) {\n var key;\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n else {\n key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n }\n else {\n obj[key] = v[0];\n }\n }\n else if (!v.length) {\n obj[key] = true;\n }\n else if (key === 'TOWGS84') {\n obj[key] = v;\n }\n else {\n obj[key] = {};\n if (['UNIT', 'PRIMEM', 'VERT_DATUM'].indexOf(key) > -1) {\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n obj[key].auth = v[2];\n }\n }\n else if (key === 'SPHEROID') {\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n obj[key].auth = v[3];\n }\n }\n else if (['GEOGCS', 'GEOCCS', 'DATUM', 'VERT_CS', 'COMPD_CS', 'LOCAL_CS', 'FITTED_CS', 'LOCAL_DATUM'].indexOf(key) > -1) {\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n }\n else if (v.every(function(aa) {\n return Array.isArray(aa);\n })) {\n mapit(obj, key, v);\n }\n else {\n sExpr(v, obj[key]);\n }\n }\n }\n}\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n }\n else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n }\n else {\n if (typeof wkt.PROJECTION === \"object\") {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n }\n else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n wkt.to_meter = parseFloat(wkt.UNIT.convert, 10);\n }\n }\n\n if (wkt.GEOGCS) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (wkt.GEOGCS.DATUM) {\n wkt.datumCode = wkt.GEOGCS.DATUM.name.toLowerCase();\n }\n else {\n wkt.datumCode = wkt.GEOGCS.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === \"wgs_1984\") {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = \"rnb72\";\n }\n if (wkt.GEOGCS.DATUM && wkt.GEOGCS.DATUM.SPHEROID) {\n wkt.ellps = wkt.GEOGCS.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === \"international\") {\n wkt.ellps = 'intl';\n }\n\n wkt.a = wkt.GEOGCS.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(wkt.GEOGCS.DATUM.SPHEROID.rf, 10);\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = \"osgb36\";\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return parseFloat(input, 10) * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['false_easting', 'False_Easting'],\n ['false_northing', 'False_Northing'],\n ['central_meridian', 'Central_Meridian'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === \"Lambert_Azimuthal_Equal_Area\")) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nmodule.exports = function(wkt, self) {\n var lisp = JSON.parse((\",\" + wkt).replace(/\\s*\\,\\s*([A-Z_0-9]+?)(\\[)/g, ',[\"$1\",').slice(1).replace(/\\s*\\,\\s*([A-Z_0-9]+?)\\]/g, ',\"$1\"]').replace(/,\\[\"VERTCS\".+/,''));\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n lisp.unshift('output');\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj.output);\n return extend(self, obj.output);\n};\n"],"names":["SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","A","I","O","degToRad","deg","Math","PI","radToDeg","rad","UTMtoLL","utm","UTMNorthing","northing","UTMEasting","easting","zoneLetter","zoneNumber","eccPrimeSquared","N1","T1","C1","R1","D","LongOrigin","mu","phi1Rad","k0","a","eccSquared","e1","sqrt","x","y","sin","tan","cos","pow","lat","result","lon","accuracy","topRight","top","right","bottom","left","get100kSetForZone","i","setParm","getMinNorthing","exports","forward","ll","column","row","index","colOrigin","rowOrigin","colInt","rowInt","rollover","seasting","snorthing","floor","charCodeAt","String","fromCharCode","substr","length","encode","N","T","C","LongOriginRad","ZoneNumber","Lat","Long","LatRad","LongRad","LetterDesignator","round","LLtoUTM","inverse","mgrs","bbox","mgrsString","testChar","hunK","sb","test","charAt","parseInt","substring","set","east100k","e","curCol","eastingValue","rewindMarker","getEastingFromChar","north100k","n","curRow","northingValue","getNorthingFromChar","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","parseFloat","decode","toUpperCase","toPoint","mgrsStr","llbbox","Point","z","this","Array","isArray","coords","split","console","warn","fromMGRS","prototype","toMGRS","module","parseCode","extend","projections","deriveConstants","Projection","srsCode","callback","error","json","modifiedJSON","ourProj","get","projName","init","start","crs","denorm","point","v","t","xin","yin","zin","undefined","axis","HALF_PI","sign","abs","TWO_PI","asin","sinphi","temp","ml","e0","e2","e3","phi","dphi","NaN","eccent","q","log","sin_phi","cos_phi","con","cosphi","ts","eccnth","atan","C04","C06","C08","es","en","pj_mlfn","arg","k","s","sphi","cphi","esinp","exp","array","out","m","com","wgs84","towgs84","ellipse","datumName","ch1903","ggrs87","nad83","nad27","nadgrids","potsdam","carthage","hermannskogel","ire65","rassadiran","nzgd49","osgb36","s_jtsk","beduaram","gunung_segara","rnb72","MERIT","rf","ellipseName","SGS85","GRS80","IAU76","airy","b","APL4","NWL9D","mod_airy","andrae","aust_SA","GRS67","bessel","bess_nam","clrk66","clrk80","clrk58","CPM","delmbr","engelis","evrst30","evrst48","evrst56","evrst69","evrstSS","fschr60","fschr60m","fschr68","helmert","hough","intl","kaula","lerch","mprts","new_intl","plessis","krass","SEasia","walbeck","WGS60","WGS66","WGS7","WGS84","sphere","greenwich","lisbon","paris","bogota","madrid","rome","bern","jakarta","ferro","brussels","stockholm","athens","oslo","ft","to_meter","proj","transform","transformer","from","to","transformedArray","checkProj","item","oProj","fromProj","toProj","coord","obj","single","SEC_TO_RAD","COS_67P5","datum","datum_type","datumCode","datum_params","grids","ep2","compare_datums","dest","geodetic_to_geocentric","p","X","Y","Z","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","geocentric_to_geodetic","P","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","atan2","geocentric_to_geodetic_noniter","W","W2","T0","S0","S1","Sin_B0","Sin3_B0","Cos_B0","Sin_p1","Cos_p1","Sum","At_Pole","geocentric_to_wgs84","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","x_out","y_out","z_out","geocentric_from_wgs84","x_tmp","y_tmp","z_tmp","SRS_WGS84_SEMIMAJOR","SRS_WGS84_ESQUARED","source","wp","l","checkParams","fallback","src_a","src_es","dst_a","dst_es","apply_gridshift","globals","parseProj","wkt","defs","name","that","arguments","def","map","apply","EPSG","ESRI","IAU2000","Datum","Ellipsoid","datumDef","ellps","a2","b2","R_A","destination","value","property","GOOGLE","projs","proj4","forEach","Proj","add","defaultDatum","version","projStr","code","testObj","testDef","reduce","indexOf","testWKT","testProj","D2R","PrimeMeridian","units","defData","paramName","paramVal","paramOutname","self","paramObj","trim","filter","push","toLowerCase","params","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","alpha","lonc","longc","x_0","x0","y_0","y0","k_0","r_a","zone","south","utmSouth","from_greenwich","pm","legalAxis","names","projStore","len","EPSLN","msfnz","qsfnz","adjust_lon","asinz","sin_po","cos_po","t1","ms1","qs1","t2","ms2","qs2","t3","qs0","ns0","c","rh","qs","rh1","theta","phi1z","eccnts","mlfn","e0fn","e1fn","e2fn","e3fn","gN","imlfn","sin_p12","cos_p12","Mlp","Ml","tanphi","Nl1","Nl","psi","Az","G","H","GH","Hs","kp","cos_c","s2","s3","s4","dlon","acos","sinz","cosz","cosAz","tmp","B","Ee","F","adjust_lat","ml0","lam","nl","tl","al","asq","cl","dd","ml1","phi1","nl1","rl1","tl1","dl","dsq","iqsfnz","title","rc","dlat","ns","ml2","g","FORTPI","srat","phic0","ratexp","K","num","sin_p14","cos_p14","infinity_dist","coslon","sinc","cosc","s45","s90","fi0","alfa","uq","u0","k1","n0","s0","ro0","ad","gfi","u","deltav","d","eps","ro","delta_lon","czech","fi1","ok","S_POLE","N_POLE","EQUIT","OBLIQ","mode","qp","mmf","apa","authset","rq","xmf","ymf","sinb1","cosb1","sinph0","cosph0","coslam","sinlam","sinb","cosb","phi0","cCe","sCe","rho","ab","authlat","P00","P01","P02","P10","P11","P20","APA","beta","tsfnz","phi2z","sin1","cos1","ts1","sin2","cos2","ts2","ts0","isNaN","f0","identity","pt","R2D","delta_theta","iterations","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_im1","delta_x","z_n_re","z_n_im","num_re","num_im","den_re","den_im","den2","d_psi_n","no_off","no_rot","sinlat","coslat","bl","fl","gl","t0","el","hl","jl","pl","dlon12","dlon10","gamma0","uc","us","vs","ql","sl","vl","ul","Number","POSITIVE_INFINITY","sp","tp","vp","up","mln","mlnp","ma","pj_enfn","pj_inv_mlfn","C_y","C_x","V","phy0","lambda0","sinPhy0","semiMajorAxis","flattening","R","b0","k2","k3","Sa1","Sa2","S","rotI","rotB","lambda","phy","prevPhy","iteration","ssfn_","phit","eccen","coslat0","sinlat0","cons","X0","cosX0","sinX0","sinX","cosX","ce","Chi","gauss","sinc0","cosc0","R2","cosl","als","tq","delta_phi","f","h","tan_phi","cs","r","ds","tmerc","dependsOn","sinth","costh","gsq","msq","xx","yy","xys","c1","c2","c3","a1","m1","th1","datum_transform","adjust_axis","checkNotWGS","mapit","key","aa","o","sExpr","shift","convert","auth","every","d2r","input","lisp","JSON","parse","replace","slice","type","unshift","toMeter","ratio","local","PROJECTION","Object","keys","UNIT","GEOGCS","DATUM","SPHEROID","isFinite","outName","inName","cleanWKT","output"],"sourceRoot":""}