Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function shortestPath(start, end, options) {
// Optional parameters
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var resolution = options.resolution;
var minDistance = options.minDistance;
var obstacles = options.obstacles || featureCollection([]);
// validation
if (!start) throw new Error('start is required');
if (!end) throw new Error('end is required');
if (resolution && !isNumber(resolution) || resolution <= 0) throw new Error('options.resolution must be a number, greater than 0');
if (minDistance) throw new Error('options.minDistance is not yet implemented');
// Normalize Inputs
var startCoord = getCoord(start);
var endCoord = getCoord(end);
start = point(startCoord);
end = point(endCoord);
function voronoi(points, options) {
// Optional params
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var bbox = options.bbox || [-180, -85, 180, 85];
// Input Validation
if (!points) throw new Error('points is required');
if (!Array.isArray(bbox)) throw new Error('bbox is invalid');
collectionOf(points, 'Point', 'points');
// Main
return featureCollection(
d3voronoi.voronoi()
.x(function (feature) { return feature.geometry.coordinates[0]; })
.y(function (feature) { return feature.geometry.coordinates[1]; })
.extent([[bbox[0], bbox[1]], [bbox[2], bbox[3]]])
.polygons(points.features)
.map(coordsToPolygon)
);
function dissolve(geojson, options) {
if (options === void 0) { options = {}; }
// Optional parameters
options = options || {};
if (!helpers_1.isObject(options)) {
throw new Error("options is invalid");
}
var mutate = options.mutate;
// Validation
if (invariant_1.getType(geojson) !== "FeatureCollection") {
throw new Error("geojson must be a FeatureCollection");
}
if (!geojson.features.length) {
throw new Error("geojson is empty");
}
// Clone geojson to avoid side effects
// Topojson modifies in place, so we need to deep clone first
if (mutate === false || mutate === undefined) {
geojson = clone_1.default(geojson);
}
// Assert homogenity
function dissolve(geojson: FeatureCollection, options: {
mutate?: boolean,
} = {}): Feature | null {
// Optional parameters
options = options || {};
if (!isObject(options)) { throw new Error("options is invalid"); }
const mutate = options.mutate;
// Validation
if (getType(geojson) !== "FeatureCollection") { throw new Error("geojson must be a FeatureCollection"); }
if (!geojson.features.length) { throw new Error("geojson is empty"); }
// Clone geojson to avoid side effects
// Topojson modifies in place, so we need to deep clone first
if (mutate === false || mutate === undefined) { geojson = clone(geojson); }
// Assert homogenity
const type = getHomogenousType(geojson);
if (!type) { throw new Error("geojson must be homogenous"); }
// Data => Typescript hack
const data: any = geojson;
function transformTranslate(geojson, distance, direction, options) {
// Optional parameters
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var units = options.units;
var zTranslation = options.zTranslation;
var mutate = options.mutate;
// Input validation
if (!geojson) throw new Error('geojson is required');
if (distance === undefined || distance === null || isNaN(distance)) throw new Error('distance is required');
if (zTranslation && typeof zTranslation !== 'number' && isNaN(zTranslation)) throw new Error('zTranslation is not a number');
// Shortcut no-motion
zTranslation = (zTranslation !== undefined) ? zTranslation : 0;
if (distance === 0 && zTranslation === 0) return geojson;
if (direction === undefined || direction === null || isNaN(direction)) throw new Error('direction is required');
// Invert with negative distances
function isobands(pointGrid, breaks, options) {
// Optional parameters
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var zProperty = options.zProperty || 'elevation';
var commonProperties = options.commonProperties || {};
var breaksProperties = options.breaksProperties || [];
// Validation
collectionOf(pointGrid, 'Point', 'Input must contain Points');
if (!breaks) throw new Error('breaks is required');
if (!Array.isArray(breaks)) throw new Error('breaks is not an Array');
if (!isObject(commonProperties)) throw new Error('commonProperties is not an Object');
if (!Array.isArray(breaksProperties)) throw new Error('breaksProperties is not an Array');
// Isoband methods
var matrix = gridToMatrix(pointGrid, {zProperty: zProperty, flip: true});
var contours = createContourLines(matrix, breaks, zProperty);
contours = rescaleContours(contours, matrix, pointGrid);
var multipolygons = contours.map(function (contour, index) {
if (breaksProperties[index] && !isObject(breaksProperties[index])) {
throw new Error('Each mappedProperty is required to be an Object');
}
// collect all properties
var contourProperties = objectAssign(
{},
commonProperties,
breaksProperties[index]
var multipolygons = contours.map(function (contour, index) {
if (breaksProperties[index] && !isObject(breaksProperties[index])) {
throw new Error('Each mappedProperty is required to be an Object');
}
// collect all properties
var contourProperties = objectAssign(
{},
commonProperties,
breaksProperties[index]
);
contourProperties[zProperty] = contour[zProperty];
var multiP = multiPolygon(contour.groupedRings, contourProperties);
return multiP;
});
export default function matrixToGrid(matrix, origin, cellSize, options) {
// Optional parameters
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var zProperty = options.zProperty || 'elevation';
var properties = options.properties;
var units = options.units;
// validation
if (!matrix || !Array.isArray(matrix)) throw new Error('matrix is required');
if (!origin) throw new Error('origin is required');
if (Array.isArray(origin)) {
origin = point(origin); // Convert coordinates array to point
}
// all matrix array have to be of the same size
var matrixCols = matrix[0].length;
var matrixRows = matrix.length;
for (var row = 1; row < matrixRows; row++) {
if (matrix[row].length !== matrixCols) throw new Error('matrix requires all rows of equal size');
}
export function findPoint(geojson, options) {
// Optional Parameters
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var featureIndex = options.featureIndex || 0;
var multiFeatureIndex = options.multiFeatureIndex || 0;
var geometryIndex = options.geometryIndex || 0;
var coordIndex = options.coordIndex || 0;
// Find FeatureIndex
var properties = options.properties;
var geometry;
switch (geojson.type) {
case 'FeatureCollection':
if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
properties = properties || geojson.features[featureIndex].properties;
geometry = geojson.features[featureIndex].geometry;
break;
case 'Feature':
function lineSliceAlong(line, startDist, stopDist, options) {
// Optional parameters
options = options || {};
if (!isObject(options)) throw new Error('options is invalid');
var coords;
var slice = [];
// Validation
if (line.type === 'Feature') coords = line.geometry.coordinates;
else if (line.type === 'LineString') coords = line.coordinates;
else throw new Error('input must be a LineString Feature or Geometry');
var origCoordsLength = coords.length
var travelled = 0;
var overshot, direction, interpolated;
for (var i = 0; i < coords.length; i++) {
if (startDist >= travelled && i === coords.length - 1) break;
else if (travelled > startDist && slice.length === 0) {
overshot = startDist - travelled;
if (!overshot) {