@turf/projection 7.1.0 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection
9
9
  ### Parameters
10
10
 
11
11
  * `geojson` **([GeoJSON][1] | [Position][2])** WGS84 GeoJSON object
12
- * `options` **[Object][3]?** Optional parameters
12
+ * `options` **[Object][3]?** Optional parameters (optional, default `{}`)
13
13
 
14
14
  * `options.mutate` **[boolean][4]** allows GeoJSON input to be mutated (significant performance increase if true) (optional, default `false`)
15
15
 
@@ -32,7 +32,7 @@ Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection
32
32
  ### Parameters
33
33
 
34
34
  * `geojson` **([GeoJSON][1] | [Position][2])** Mercator GeoJSON object
35
- * `options` **[Object][3]?** Optional parameters
35
+ * `options` **[Object][3]?** Optional parameters (optional, default `{}`)
36
36
 
37
37
  * `options.mutate` **[boolean][4]** allows GeoJSON input to be mutated (significant performance increase if true) (optional, default `false`)
38
38
 
@@ -11,13 +11,11 @@ function toWgs84(geojson, options = {}) {
11
11
  function convert(geojson, projection, options = {}) {
12
12
  options = options || {};
13
13
  var mutate = options.mutate;
14
- if (!geojson)
15
- throw new Error("geojson is required");
14
+ if (!geojson) throw new Error("geojson is required");
16
15
  if (Array.isArray(geojson) && _helpers.isNumber.call(void 0, geojson[0]))
17
16
  geojson = projection === "mercator" ? convertToMercator(geojson) : convertToWgs84(geojson);
18
17
  else {
19
- if (mutate !== true)
20
- geojson = _clone.clone.call(void 0, geojson);
18
+ if (mutate !== true) geojson = _clone.clone.call(void 0, geojson);
21
19
  _meta.coordEach.call(void 0, geojson, function(coord) {
22
20
  var newCoord = projection === "mercator" ? convertToMercator(coord) : convertToWgs84(coord);
23
21
  coord[0] = newCoord[0];
@@ -33,14 +31,10 @@ function convertToMercator(lonLat) {
33
31
  A * adjusted * D2R,
34
32
  A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R))
35
33
  ];
36
- if (xy[0] > MAXEXTENT)
37
- xy[0] = MAXEXTENT;
38
- if (xy[0] < -MAXEXTENT)
39
- xy[0] = -MAXEXTENT;
40
- if (xy[1] > MAXEXTENT)
41
- xy[1] = MAXEXTENT;
42
- if (xy[1] < -MAXEXTENT)
43
- xy[1] = -MAXEXTENT;
34
+ if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;
35
+ if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;
36
+ if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;
37
+ if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;
44
38
  return xy;
45
39
  }
46
40
  function convertToWgs84(xy) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts"],"names":[],"mappings":";AACA,SAAS,iBAAiB;AAC1B,SAAqB,gBAAgB;AACrC,SAAS,aAAa;AAiBtB,SAAS,WACP,SACA,UAAgC,CAAC,GAC9B;AACH,SAAO,QAAQ,SAAS,YAAY,OAAO;AAC7C;AAiBA,SAAS,QACP,SACA,UAAgC,CAAC,GAC9B;AACH,SAAO,QAAQ,SAAS,SAAS,OAAO;AAC1C;AAYA,SAAS,QACP,SACA,YACA,UAAgC,CAAC,GAC5B;AAEL,YAAU,WAAW,CAAC;AACtB,MAAI,SAAS,QAAQ;AAGrB,MAAI,CAAC;AAAS,UAAM,IAAI,MAAM,qBAAqB;AAGnD,MAAI,MAAM,QAAQ,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC;AAC/C,cACE,eAAe,aACX,kBAAkB,OAAO,IACzB,eAAe,OAAO;AAAA,OAEzB;AAEH,QAAI,WAAW;AAAM,gBAAU,MAAM,OAAO;AAE5C,cAAU,SAAS,SAAU,OAAO;AAClC,UAAI,WACF,eAAe,aACX,kBAAkB,KAAK,IACvB,eAAe,KAAK;AAC1B,YAAM,CAAC,IAAI,SAAS,CAAC;AACrB,YAAM,CAAC,IAAI,SAAS,CAAC;AAAA,IACvB,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAUA,SAAS,kBAAkB,QAAkB;AAC3C,MAAI,MAAM,KAAK,KAAK,KAElB,IAAI,SACJ,YAAY;AAId,MAAI,WACF,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,IAAI;AACzE,MAAI,KAAK;AAAA,IACP,IAAI,WAAW;AAAA,IACf,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,OAAO,MAAM,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,EAC/D;AAGA,MAAI,GAAG,CAAC,IAAI;AAAW,OAAG,CAAC,IAAI;AAC/B,MAAI,GAAG,CAAC,IAAI,CAAC;AAAW,OAAG,CAAC,IAAI,CAAC;AACjC,MAAI,GAAG,CAAC,IAAI;AAAW,OAAG,CAAC,IAAI;AAC/B,MAAI,GAAG,CAAC,IAAI,CAAC;AAAW,OAAG,CAAC,IAAI,CAAC;AAEjC,SAAO;AACT;AAUA,SAAS,eAAe,IAAc;AAEpC,MAAI,MAAM,MAAM,KAAK;AACrB,MAAI,IAAI;AAER,SAAO;AAAA,IACJ,GAAG,CAAC,IAAI,MAAO;AAAA,KACf,KAAK,KAAK,MAAM,IAAM,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK;AAAA,EAC5D;AACF;AASA,SAAS,KAAK,GAAW;AACvB,SAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAClC","sourcesContent":["import { Position } from \"geojson\";\nimport { coordEach } from \"@turf/meta\";\nimport { AllGeoJSON, isNumber } from \"@turf/helpers\";\nimport { clone } from \"@turf/clone\";\n\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @name toMercator\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toMercator<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"mercator\", options);\n}\n\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @name toWgs84\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toWgs84<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"wgs84\", options);\n}\n\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Converted GeoJSON\n */\nfunction convert(\n geojson: any,\n projection: string,\n options: { mutate?: boolean } = {}\n): any {\n // Optional parameters\n options = options || {};\n var mutate = options.mutate;\n\n // Validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n // Handle Position\n if (Array.isArray(geojson) && isNumber(geojson[0]))\n geojson =\n projection === \"mercator\"\n ? convertToMercator(geojson)\n : convertToWgs84(geojson);\n // Handle GeoJSON\n else {\n // Handle possible data mutation\n if (mutate !== true) geojson = clone(geojson);\n\n coordEach(geojson, function (coord) {\n var newCoord =\n projection === \"mercator\"\n ? convertToMercator(coord)\n : convertToWgs84(coord);\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n });\n }\n return geojson;\n}\n\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} lonLat WGS84 point\n * @returns {Array<number>} Mercator [x, y] point\n */\nfunction convertToMercator(lonLat: number[]) {\n var D2R = Math.PI / 180,\n // 900913 properties\n A = 6378137.0,\n MAXEXTENT = 20037508.342789244;\n\n // compensate longitudes passing the 180th meridian\n // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n var adjusted =\n Math.abs(lonLat[0]) <= 180 ? lonLat[0] : lonLat[0] - sign(lonLat[0]) * 360;\n var xy = [\n A * adjusted * D2R,\n A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R)),\n ];\n\n // if xy value is beyond maxextent (e.g. poles), return maxextent\n if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;\n if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;\n if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;\n if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;\n\n return xy;\n}\n\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} xy Mercator [x, y] point\n * @returns {Array<number>} WGS84 [lon, lat] point\n */\nfunction convertToWgs84(xy: number[]) {\n // 900913 properties.\n var R2D = 180 / Math.PI;\n var A = 6378137.0;\n\n return [\n (xy[0] * R2D) / A,\n (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,\n ];\n}\n\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */\nfunction sign(x: number) {\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n\nexport { toMercator, toWgs84 };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-projection/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-projection/dist/cjs/index.cjs","sourcesContent":[null,"import { Position } from \"geojson\";\nimport { coordEach } from \"@turf/meta\";\nimport { AllGeoJSON, isNumber } from \"@turf/helpers\";\nimport { clone } from \"@turf/clone\";\n\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @function\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toMercator<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"mercator\", options);\n}\n\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @function\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toWgs84<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"wgs84\", options);\n}\n\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Converted GeoJSON\n */\nfunction convert(\n geojson: any,\n projection: string,\n options: { mutate?: boolean } = {}\n): any {\n // Optional parameters\n options = options || {};\n var mutate = options.mutate;\n\n // Validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n // Handle Position\n if (Array.isArray(geojson) && isNumber(geojson[0]))\n geojson =\n projection === \"mercator\"\n ? convertToMercator(geojson)\n : convertToWgs84(geojson);\n // Handle GeoJSON\n else {\n // Handle possible data mutation\n if (mutate !== true) geojson = clone(geojson);\n\n coordEach(geojson, function (coord) {\n var newCoord =\n projection === \"mercator\"\n ? convertToMercator(coord)\n : convertToWgs84(coord);\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n });\n }\n return geojson;\n}\n\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} lonLat WGS84 point\n * @returns {Array<number>} Mercator [x, y] point\n */\nfunction convertToMercator(lonLat: number[]) {\n var D2R = Math.PI / 180,\n // 900913 properties\n A = 6378137.0,\n MAXEXTENT = 20037508.342789244;\n\n // compensate longitudes passing the 180th meridian\n // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n var adjusted =\n Math.abs(lonLat[0]) <= 180 ? lonLat[0] : lonLat[0] - sign(lonLat[0]) * 360;\n var xy = [\n A * adjusted * D2R,\n A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R)),\n ];\n\n // if xy value is beyond maxextent (e.g. poles), return maxextent\n if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;\n if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;\n if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;\n if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;\n\n return xy;\n}\n\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} xy Mercator [x, y] point\n * @returns {Array<number>} WGS84 [lon, lat] point\n */\nfunction convertToWgs84(xy: number[]) {\n // 900913 properties.\n var R2D = 180 / Math.PI;\n var A = 6378137.0;\n\n return [\n (xy[0] * R2D) / A,\n (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,\n ];\n}\n\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */\nfunction sign(x: number) {\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n\nexport { toMercator, toWgs84 };\n"]}
@@ -4,7 +4,7 @@ import { AllGeoJSON } from '@turf/helpers';
4
4
  /**
5
5
  * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection
6
6
  *
7
- * @name toMercator
7
+ * @function
8
8
  * @param {GeoJSON|Position} geojson WGS84 GeoJSON object
9
9
  * @param {Object} [options] Optional parameters
10
10
  * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
@@ -22,7 +22,7 @@ declare function toMercator<G = AllGeoJSON | Position>(geojson: G, options?: {
22
22
  /**
23
23
  * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection
24
24
  *
25
- * @name toWgs84
25
+ * @function
26
26
  * @param {GeoJSON|Position} geojson Mercator GeoJSON object
27
27
  * @param {Object} [options] Optional parameters
28
28
  * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
@@ -4,7 +4,7 @@ import { AllGeoJSON } from '@turf/helpers';
4
4
  /**
5
5
  * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection
6
6
  *
7
- * @name toMercator
7
+ * @function
8
8
  * @param {GeoJSON|Position} geojson WGS84 GeoJSON object
9
9
  * @param {Object} [options] Optional parameters
10
10
  * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
@@ -22,7 +22,7 @@ declare function toMercator<G = AllGeoJSON | Position>(geojson: G, options?: {
22
22
  /**
23
23
  * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection
24
24
  *
25
- * @name toWgs84
25
+ * @function
26
26
  * @param {GeoJSON|Position} geojson Mercator GeoJSON object
27
27
  * @param {Object} [options] Optional parameters
28
28
  * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
package/dist/esm/index.js CHANGED
@@ -11,13 +11,11 @@ function toWgs84(geojson, options = {}) {
11
11
  function convert(geojson, projection, options = {}) {
12
12
  options = options || {};
13
13
  var mutate = options.mutate;
14
- if (!geojson)
15
- throw new Error("geojson is required");
14
+ if (!geojson) throw new Error("geojson is required");
16
15
  if (Array.isArray(geojson) && isNumber(geojson[0]))
17
16
  geojson = projection === "mercator" ? convertToMercator(geojson) : convertToWgs84(geojson);
18
17
  else {
19
- if (mutate !== true)
20
- geojson = clone(geojson);
18
+ if (mutate !== true) geojson = clone(geojson);
21
19
  coordEach(geojson, function(coord) {
22
20
  var newCoord = projection === "mercator" ? convertToMercator(coord) : convertToWgs84(coord);
23
21
  coord[0] = newCoord[0];
@@ -33,14 +31,10 @@ function convertToMercator(lonLat) {
33
31
  A * adjusted * D2R,
34
32
  A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R))
35
33
  ];
36
- if (xy[0] > MAXEXTENT)
37
- xy[0] = MAXEXTENT;
38
- if (xy[0] < -MAXEXTENT)
39
- xy[0] = -MAXEXTENT;
40
- if (xy[1] > MAXEXTENT)
41
- xy[1] = MAXEXTENT;
42
- if (xy[1] < -MAXEXTENT)
43
- xy[1] = -MAXEXTENT;
34
+ if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;
35
+ if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;
36
+ if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;
37
+ if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;
44
38
  return xy;
45
39
  }
46
40
  function convertToWgs84(xy) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts"],"sourcesContent":["import { Position } from \"geojson\";\nimport { coordEach } from \"@turf/meta\";\nimport { AllGeoJSON, isNumber } from \"@turf/helpers\";\nimport { clone } from \"@turf/clone\";\n\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @name toMercator\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toMercator<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"mercator\", options);\n}\n\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @name toWgs84\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toWgs84<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"wgs84\", options);\n}\n\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Converted GeoJSON\n */\nfunction convert(\n geojson: any,\n projection: string,\n options: { mutate?: boolean } = {}\n): any {\n // Optional parameters\n options = options || {};\n var mutate = options.mutate;\n\n // Validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n // Handle Position\n if (Array.isArray(geojson) && isNumber(geojson[0]))\n geojson =\n projection === \"mercator\"\n ? convertToMercator(geojson)\n : convertToWgs84(geojson);\n // Handle GeoJSON\n else {\n // Handle possible data mutation\n if (mutate !== true) geojson = clone(geojson);\n\n coordEach(geojson, function (coord) {\n var newCoord =\n projection === \"mercator\"\n ? convertToMercator(coord)\n : convertToWgs84(coord);\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n });\n }\n return geojson;\n}\n\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} lonLat WGS84 point\n * @returns {Array<number>} Mercator [x, y] point\n */\nfunction convertToMercator(lonLat: number[]) {\n var D2R = Math.PI / 180,\n // 900913 properties\n A = 6378137.0,\n MAXEXTENT = 20037508.342789244;\n\n // compensate longitudes passing the 180th meridian\n // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n var adjusted =\n Math.abs(lonLat[0]) <= 180 ? lonLat[0] : lonLat[0] - sign(lonLat[0]) * 360;\n var xy = [\n A * adjusted * D2R,\n A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R)),\n ];\n\n // if xy value is beyond maxextent (e.g. poles), return maxextent\n if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;\n if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;\n if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;\n if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;\n\n return xy;\n}\n\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} xy Mercator [x, y] point\n * @returns {Array<number>} WGS84 [lon, lat] point\n */\nfunction convertToWgs84(xy: number[]) {\n // 900913 properties.\n var R2D = 180 / Math.PI;\n var A = 6378137.0;\n\n return [\n (xy[0] * R2D) / A,\n (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,\n ];\n}\n\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */\nfunction sign(x: number) {\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n\nexport { toMercator, toWgs84 };\n"],"mappings":";AACA,SAAS,iBAAiB;AAC1B,SAAqB,gBAAgB;AACrC,SAAS,aAAa;AAiBtB,SAAS,WACP,SACA,UAAgC,CAAC,GAC9B;AACH,SAAO,QAAQ,SAAS,YAAY,OAAO;AAC7C;AAiBA,SAAS,QACP,SACA,UAAgC,CAAC,GAC9B;AACH,SAAO,QAAQ,SAAS,SAAS,OAAO;AAC1C;AAYA,SAAS,QACP,SACA,YACA,UAAgC,CAAC,GAC5B;AAEL,YAAU,WAAW,CAAC;AACtB,MAAI,SAAS,QAAQ;AAGrB,MAAI,CAAC;AAAS,UAAM,IAAI,MAAM,qBAAqB;AAGnD,MAAI,MAAM,QAAQ,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC;AAC/C,cACE,eAAe,aACX,kBAAkB,OAAO,IACzB,eAAe,OAAO;AAAA,OAEzB;AAEH,QAAI,WAAW;AAAM,gBAAU,MAAM,OAAO;AAE5C,cAAU,SAAS,SAAU,OAAO;AAClC,UAAI,WACF,eAAe,aACX,kBAAkB,KAAK,IACvB,eAAe,KAAK;AAC1B,YAAM,CAAC,IAAI,SAAS,CAAC;AACrB,YAAM,CAAC,IAAI,SAAS,CAAC;AAAA,IACvB,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAUA,SAAS,kBAAkB,QAAkB;AAC3C,MAAI,MAAM,KAAK,KAAK,KAElB,IAAI,SACJ,YAAY;AAId,MAAI,WACF,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,IAAI;AACzE,MAAI,KAAK;AAAA,IACP,IAAI,WAAW;AAAA,IACf,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,OAAO,MAAM,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,EAC/D;AAGA,MAAI,GAAG,CAAC,IAAI;AAAW,OAAG,CAAC,IAAI;AAC/B,MAAI,GAAG,CAAC,IAAI,CAAC;AAAW,OAAG,CAAC,IAAI,CAAC;AACjC,MAAI,GAAG,CAAC,IAAI;AAAW,OAAG,CAAC,IAAI;AAC/B,MAAI,GAAG,CAAC,IAAI,CAAC;AAAW,OAAG,CAAC,IAAI,CAAC;AAEjC,SAAO;AACT;AAUA,SAAS,eAAe,IAAc;AAEpC,MAAI,MAAM,MAAM,KAAK;AACrB,MAAI,IAAI;AAER,SAAO;AAAA,IACJ,GAAG,CAAC,IAAI,MAAO;AAAA,KACf,KAAK,KAAK,MAAM,IAAM,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK;AAAA,EAC5D;AACF;AASA,SAAS,KAAK,GAAW;AACvB,SAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAClC;","names":[]}
1
+ {"version":3,"sources":["../../index.ts"],"sourcesContent":["import { Position } from \"geojson\";\nimport { coordEach } from \"@turf/meta\";\nimport { AllGeoJSON, isNumber } from \"@turf/helpers\";\nimport { clone } from \"@turf/clone\";\n\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @function\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toMercator<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"mercator\", options);\n}\n\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @function\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toWgs84<G = AllGeoJSON | Position>(\n geojson: G,\n options: { mutate?: boolean } = {}\n): G {\n return convert(geojson, \"wgs84\", options);\n}\n\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Converted GeoJSON\n */\nfunction convert(\n geojson: any,\n projection: string,\n options: { mutate?: boolean } = {}\n): any {\n // Optional parameters\n options = options || {};\n var mutate = options.mutate;\n\n // Validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n // Handle Position\n if (Array.isArray(geojson) && isNumber(geojson[0]))\n geojson =\n projection === \"mercator\"\n ? convertToMercator(geojson)\n : convertToWgs84(geojson);\n // Handle GeoJSON\n else {\n // Handle possible data mutation\n if (mutate !== true) geojson = clone(geojson);\n\n coordEach(geojson, function (coord) {\n var newCoord =\n projection === \"mercator\"\n ? convertToMercator(coord)\n : convertToWgs84(coord);\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n });\n }\n return geojson;\n}\n\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} lonLat WGS84 point\n * @returns {Array<number>} Mercator [x, y] point\n */\nfunction convertToMercator(lonLat: number[]) {\n var D2R = Math.PI / 180,\n // 900913 properties\n A = 6378137.0,\n MAXEXTENT = 20037508.342789244;\n\n // compensate longitudes passing the 180th meridian\n // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n var adjusted =\n Math.abs(lonLat[0]) <= 180 ? lonLat[0] : lonLat[0] - sign(lonLat[0]) * 360;\n var xy = [\n A * adjusted * D2R,\n A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R)),\n ];\n\n // if xy value is beyond maxextent (e.g. poles), return maxextent\n if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;\n if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;\n if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;\n if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;\n\n return xy;\n}\n\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} xy Mercator [x, y] point\n * @returns {Array<number>} WGS84 [lon, lat] point\n */\nfunction convertToWgs84(xy: number[]) {\n // 900913 properties.\n var R2D = 180 / Math.PI;\n var A = 6378137.0;\n\n return [\n (xy[0] * R2D) / A,\n (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,\n ];\n}\n\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */\nfunction sign(x: number) {\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n\nexport { toMercator, toWgs84 };\n"],"mappings":";AACA,SAAS,iBAAiB;AAC1B,SAAqB,gBAAgB;AACrC,SAAS,aAAa;AAiBtB,SAAS,WACP,SACA,UAAgC,CAAC,GAC9B;AACH,SAAO,QAAQ,SAAS,YAAY,OAAO;AAC7C;AAiBA,SAAS,QACP,SACA,UAAgC,CAAC,GAC9B;AACH,SAAO,QAAQ,SAAS,SAAS,OAAO;AAC1C;AAYA,SAAS,QACP,SACA,YACA,UAAgC,CAAC,GAC5B;AAEL,YAAU,WAAW,CAAC;AACtB,MAAI,SAAS,QAAQ;AAGrB,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,qBAAqB;AAGnD,MAAI,MAAM,QAAQ,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC;AAC/C,cACE,eAAe,aACX,kBAAkB,OAAO,IACzB,eAAe,OAAO;AAAA,OAEzB;AAEH,QAAI,WAAW,KAAM,WAAU,MAAM,OAAO;AAE5C,cAAU,SAAS,SAAU,OAAO;AAClC,UAAI,WACF,eAAe,aACX,kBAAkB,KAAK,IACvB,eAAe,KAAK;AAC1B,YAAM,CAAC,IAAI,SAAS,CAAC;AACrB,YAAM,CAAC,IAAI,SAAS,CAAC;AAAA,IACvB,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAUA,SAAS,kBAAkB,QAAkB;AAC3C,MAAI,MAAM,KAAK,KAAK,KAElB,IAAI,SACJ,YAAY;AAId,MAAI,WACF,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,IAAI;AACzE,MAAI,KAAK;AAAA,IACP,IAAI,WAAW;AAAA,IACf,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,OAAO,MAAM,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,EAC/D;AAGA,MAAI,GAAG,CAAC,IAAI,UAAW,IAAG,CAAC,IAAI;AAC/B,MAAI,GAAG,CAAC,IAAI,CAAC,UAAW,IAAG,CAAC,IAAI,CAAC;AACjC,MAAI,GAAG,CAAC,IAAI,UAAW,IAAG,CAAC,IAAI;AAC/B,MAAI,GAAG,CAAC,IAAI,CAAC,UAAW,IAAG,CAAC,IAAI,CAAC;AAEjC,SAAO;AACT;AAUA,SAAS,eAAe,IAAc;AAEpC,MAAI,MAAM,MAAM,KAAK;AACrB,MAAI,IAAI;AAER,SAAO;AAAA,IACJ,GAAG,CAAC,IAAI,MAAO;AAAA,KACf,KAAK,KAAK,MAAM,IAAM,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK;AAAA,EAC5D;AACF;AASA,SAAS,KAAK,GAAW;AACvB,SAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAClC;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turf/projection",
3
- "version": "7.1.0",
3
+ "version": "7.2.0",
4
4
  "description": "turf projection module",
5
5
  "author": "Turf Authors",
6
6
  "contributors": [
@@ -64,25 +64,25 @@
64
64
  "test:types": "tsc --esModuleInterop --module node16 --moduleResolution node16 --noEmit --strict types.ts"
65
65
  },
66
66
  "devDependencies": {
67
- "@turf/truncate": "^7.1.0",
67
+ "@turf/truncate": "^7.2.0",
68
68
  "@types/benchmark": "^2.1.5",
69
- "@types/tape": "^4.2.32",
69
+ "@types/tape": "^4.13.4",
70
70
  "benchmark": "^2.1.4",
71
71
  "load-json-file": "^7.0.1",
72
72
  "npm-run-all": "^4.1.5",
73
73
  "proj4": "^2.9.2",
74
- "tape": "^5.7.2",
75
- "tsup": "^8.0.1",
76
- "tsx": "^4.6.2",
77
- "typescript": "^5.2.2",
74
+ "tape": "^5.9.0",
75
+ "tsup": "^8.3.5",
76
+ "tsx": "^4.19.2",
77
+ "typescript": "^5.5.4",
78
78
  "write-json-file": "^5.0.0"
79
79
  },
80
80
  "dependencies": {
81
- "@turf/clone": "^7.1.0",
82
- "@turf/helpers": "^7.1.0",
83
- "@turf/meta": "^7.1.0",
81
+ "@turf/clone": "^7.2.0",
82
+ "@turf/helpers": "^7.2.0",
83
+ "@turf/meta": "^7.2.0",
84
84
  "@types/geojson": "^7946.0.10",
85
- "tslib": "^2.6.2"
85
+ "tslib": "^2.8.1"
86
86
  },
87
- "gitHead": "68915eeebc9278bb40dec3f1034499698a0561ef"
87
+ "gitHead": "7b0f0374c4668cd569f8904c71e2ae7d941be867"
88
88
  }