Socket
Socket
Sign inDemoInstall

turf-extent

Package Overview
Dependencies
Maintainers
2
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

turf-extent - npm Package Compare versions

Comparing version 1.0.0 to 1.0.2

28

bench.js

@@ -1,11 +0,11 @@

var extent = require('./');
global.extent = require('./');
var Benchmark = require('benchmark');
var fs = require('fs');
var fc = require('./geojson/FeatureCollection');
var pt = require('./geojson/Point');
var line = require('./geojson/LineString');
var poly = require('./geojson/Polygon');
var multiLine = require('./geojson/MultiLineString');
var multiPoly = require('./geojson/MultiPolygon');
global.fc = require('./geojson/FeatureCollection');
global.pt = require('./geojson/Point');
global.line = require('./geojson/LineString');
global.poly = require('./geojson/Polygon');
global.multiLine = require('./geojson/MultiLineString');
global.multiPoly = require('./geojson/MultiPolygon');

@@ -15,18 +15,18 @@ var suite = new Benchmark.Suite('turf-extent');

.add('turf-extent#FeatureCollection',function () {
extent(fc);
global.extent(global.fc);
})
.add('turf-extent#Point',function () {
extent(pt);
global.extent(global.pt);
})
.add('turf-extent#LineString',function () {
extent(line);
global.extent(global.line);
})
.add('turf-extent#Polygon',function () {
extent(poly);
global.extent(global.poly);
})
.add('turf-extent#MultiLineString',function () {
extent(multiLine);
global.extent(global.multiLine);
})
.add('turf-extent#MultiPolygon',function () {
extent(multiPoly);
global.extent(global.multiPoly);
})

@@ -39,2 +39,2 @@ .on('cycle', function (event) {

})
.run();
.run();
var flatten = require('flatten');
/**
* Calculates the extent of all features and returns a bounding box.
*
* @alias turf/extent
* @param {GeoJSON-Object} input - any valid GeoJSON Object
* @return {Array<number>} extent - the bounding box of the GeoJSON given
* as an array in WSEN order.
* @example
* var extent = require('turf-extent')
* var fs = require('fs')
* var fc = JSON.parse(fs.readFileSync('/path/to/myFeatureCollection.geojson'))
* var bbox = extent(fc)
* console.log(bbox) // [minX, minY, maxX, maxY]
*/
module.exports = function(layer){
var xmin = Infinity,
ymin = Infinity,
xmax = -Infinity,
ymax = -Infinity;
if(layer.type === 'FeatureCollection'){
for(var i in layer.features){
var coordinates;
switch(layer.features[i].geometry.type){
case 'Point':
coordinates = [layer.features[i].geometry.coordinates];
break
case 'LineString':
coordinates = layer.features[i].geometry.coordinates;
break
case 'Polygon':
coordinates = layer.features[i].geometry.coordinates;
coordinates = flatCoords(coordinates);
break
case 'MultiPoint':
coordinates = layer.features[i].geometry.coordinates;
break
case 'MultiLineString':
coordinates = layer.features[i].geometry.coordinates;
coordinates = flatCoords(coordinates);
break
case 'MultiPolygon':
coordinates = layer.features[i].geometry.coordinates;
coordinates = flatCoords(coordinates);
break
}
if(!layer.features[i].geometry && layer.features[i].properties){
return new Error('Unknown Geometry Type');
}
for(var n in coordinates){
if(xmin > coordinates[n][0]){
xmin = coordinates[n][0];
}
if(ymin > coordinates[n][1]){
ymin = coordinates[n][1];
}
if(xmax < coordinates[n][0]){
xmax = coordinates[n][0];
}
if(ymax < coordinates[n][1]){
ymax = coordinates[n][1];
}
}
}
var bbox = [xmin, ymin, xmax, ymax]
return bbox
}
else{
var coordinates
var geometry
if(layer.type === 'Feature'){
geometry = layer.geometry
}
else{
geometry = layer
}
switch(geometry.type){
var extent = [Infinity, Infinity, -Infinity, -Infinity];
var features = [];
if (layer.type === 'FeatureCollection') features = layer.features;
else if (layer.type === 'Feature') features = [layer];
else features = [{ geometry: layer }];
for(var i = 0; i < features.length; i++){
var coords = features[i].geometry.coordinates;
switch(features[i].geometry.type){
case 'Point':
coordinates = [geometry.coordinates]
break
extent0(coords, extent);
break;
case 'LineString':
coordinates = geometry.coordinates
break
case 'MultiPoint':
extent1(coords, extent);
break;
case 'Polygon':
coordinates = geometry.coordinates
coordinates = flatCoords(coordinates)
break
case 'MultiPoint':
coordinates = geometry.coordinates
break
case 'MultiLineString':
coordinates = geometry.coordinates
coordinates = flatCoords(coordinates)
break
extent2(coords, extent);
break;
case 'MultiPolygon':
coordinates = geometry.coordinates
coordinates = flatCoords(coordinates)
break
extent3(coords, extent);
break;
default:
return new Error('Unknown Geometry Type');
}
if(!geometry){
return new Error('No Geometry Found');
}
return extent;
};
function extent0(coord, extent) {
if(extent[0] > coord[0]) extent[0] = coord[0];
if(extent[1] > coord[1]) extent[1] = coord[1];
if(extent[2] < coord[0]) extent[2] = coord[0];
if(extent[3] < coord[1]) extent[3] = coord[1];
}
function extent1(coords, extent) {
for(var i = 0; i < coords.length; i++){
var coord = coords[i];
if(extent[0] > coord[0]) extent[0] = coord[0];
if(extent[1] > coord[1]) extent[1] = coord[1];
if(extent[2] < coord[0]) extent[2] = coord[0];
if(extent[3] < coord[1]) extent[3] = coord[1];
}
}
function extent2(coords, extent) {
for(var i = 0; i < coords.length; i++){
for(var j = 0; j < coords[i].length; j++){
var coord = coords[i][j];
if(extent[0] > coord[0]) extent[0] = coord[0];
if(extent[1] > coord[1]) extent[1] = coord[1];
if(extent[2] < coord[0]) extent[2] = coord[0];
if(extent[3] < coord[1]) extent[3] = coord[1];
}
for(var n in coordinates){
if(xmin > coordinates[n][0]){
xmin = coordinates[n][0];
}
}
function extent3(coords, extent) {
for(var i = 0; i < coords.length; i++){
for(var j = 0; j < coords[i].length; j++){
for(var k = 0; k < coords[i][j].length; k++){
var coord = coords[i][j][k];
if(extent[0] > coord[0]) extent[0] = coord[0];
if(extent[1] > coord[1]) extent[1] = coord[1];
if(extent[2] < coord[0]) extent[2] = coord[0];
if(extent[3] < coord[1]) extent[3] = coord[1];
}
if(ymin > coordinates[n][1]){
ymin = coordinates[n][1];
}
if(xmax < coordinates[n][0]){
xmax = coordinates[n][0];
}
if(ymax < coordinates[n][1]){
ymax = coordinates[n][1];
}
}
var bbox = [xmin, ymin, xmax, ymax];
return bbox;
}
}
function flatCoords(coords){
var newCoords = [];
coords = flatten(coords);
coords.forEach(function(c, i){
if(i % 2 == 0) // if is even
newCoords.push([c, coords[i+1]]);
})
return newCoords;
}
{
"name": "turf-extent",
"version": "1.0.0",
"version": "1.0.2",
"description": "turf extent module",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc