index.cjs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
  2. var _clone = require('@turf/clone');
  3. var _center = require('@turf/center');
  4. var _centroid = require('@turf/centroid');
  5. var _bbox = require('@turf/bbox');
  6. var _rhumbbearing = require('@turf/rhumb-bearing');
  7. var _rhumbdistance = require('@turf/rhumb-distance');
  8. var _rhumbdestination = require('@turf/rhumb-destination');
  9. var _meta = require('@turf/meta');
  10. var _helpers = require('@turf/helpers');
  11. var _invariant = require('@turf/invariant');
  12. function transformScale(geojson, factor, options) {
  13. options = options || {};
  14. if (!_helpers.isObject.call(void 0, options)) throw new Error("options is invalid");
  15. const origin = options.origin || "centroid";
  16. const mutate = options.mutate || false;
  17. if (!geojson) throw new Error("geojson required");
  18. if (typeof factor !== "number" || factor <= 0)
  19. throw new Error("invalid factor");
  20. const originIsPoint = Array.isArray(origin) || typeof origin === "object";
  21. if (mutate !== true) geojson = _clone.clone.call(void 0, geojson);
  22. if (geojson.type === "FeatureCollection" && !originIsPoint) {
  23. _meta.featureEach.call(void 0, geojson, function(feature, index) {
  24. geojson.features[index] = scale(
  25. feature,
  26. factor,
  27. origin
  28. );
  29. });
  30. return geojson;
  31. }
  32. return scale(geojson, factor, origin);
  33. }
  34. function scale(feature, factor, origin) {
  35. const isPoint = _invariant.getType.call(void 0, feature) === "Point";
  36. const originCoord = defineOrigin(feature, origin);
  37. if (factor === 1 || isPoint) return feature;
  38. _meta.coordEach.call(void 0, feature, function(coord) {
  39. const originalDistance = _rhumbdistance.rhumbDistance.call(void 0, originCoord, coord);
  40. const bearing = _rhumbbearing.rhumbBearing.call(void 0, originCoord, coord);
  41. const newDistance = originalDistance * factor;
  42. const newCoord = _invariant.getCoords.call(void 0,
  43. _rhumbdestination.rhumbDestination.call(void 0, originCoord, newDistance, bearing)
  44. );
  45. coord[0] = newCoord[0];
  46. coord[1] = newCoord[1];
  47. if (coord.length === 3) coord[2] *= factor;
  48. });
  49. delete feature.bbox;
  50. return feature;
  51. }
  52. function defineOrigin(geojson, origin) {
  53. if (origin === void 0 || origin === null) origin = "centroid";
  54. if (Array.isArray(origin) || typeof origin === "object")
  55. return _invariant.getCoord.call(void 0, origin);
  56. const bbox = geojson.bbox ? geojson.bbox : _bbox.bbox.call(void 0, geojson, { recompute: true });
  57. const west = bbox[0];
  58. const south = bbox[1];
  59. const east = bbox[2];
  60. const north = bbox[3];
  61. switch (origin) {
  62. case "sw":
  63. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  64. case "southwest":
  65. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  66. case "westsouth":
  67. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  68. case "bottomleft":
  69. return _helpers.point.call(void 0, [west, south]);
  70. case "se":
  71. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  72. case "southeast":
  73. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  74. case "eastsouth":
  75. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  76. case "bottomright":
  77. return _helpers.point.call(void 0, [east, south]);
  78. case "nw":
  79. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  80. case "northwest":
  81. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  82. case "westnorth":
  83. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  84. case "topleft":
  85. return _helpers.point.call(void 0, [west, north]);
  86. case "ne":
  87. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  88. case "northeast":
  89. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  90. case "eastnorth":
  91. // @ts-expect-error undocumented, to be removed for v8 #techdebt
  92. case "topright":
  93. return _helpers.point.call(void 0, [east, north]);
  94. case "center":
  95. return _center.center.call(void 0, geojson);
  96. case void 0:
  97. case null:
  98. case "centroid":
  99. return _centroid.centroid.call(void 0, geojson);
  100. default:
  101. throw new Error("invalid origin");
  102. }
  103. }
  104. var turf_transform_scale_default = transformScale;
  105. exports.default = turf_transform_scale_default; exports.transformScale = transformScale;
  106. //# sourceMappingURL=index.cjs.map