UNPKG

turf-buffer

Version:
52 lines (48 loc) 1.99 kB
var test = require('tape'); var buffer = require('../'); var fs = require('fs'); var glob = require('glob'); var featurecollection = require('turf-featurecollection'); var extent = require('turf-extent'); var point = require('turf-point'); var distance = require('turf-distance'); var normalize = require('geojson-normalize'); test('buffer', function(t){ var fixtures = glob.sync(__dirname+'/fixtures/in/*.geojson'); fixtures.forEach(function(path){ var fixture = JSON.parse(fs.readFileSync(path)); var bbox = extent(fixture); var width = distance( point(bbox.slice(0,2)), point(bbox.slice(2,5)), 'miles' ); if(!width) width = 1; var buffed = buffer(fixture, width * 0.1, 'miles'); t.ok(buffed, fixture.type); if(fixture.type === 'Feature') { if(fixture.geometry.type === 'Point') t.equals(buffed.geometry.type, 'Polygon'); if(fixture.geometry.type === 'LineString') t.equals(buffed.geometry.type, 'Polygon'); if(fixture.geometry.type === 'Polygon') t.equals(buffed.geometry.type, 'Polygon'); if(fixture.geometry.type === 'MultiPoint') t.equals(buffed.geometry.type, 'MultiPolygon'); if(fixture.geometry.type === 'MultiLineString') t.equals(buffed.geometry.type, 'MultiPolygon'); if(fixture.geometry.type === 'MultiPolygon') t.equals(buffed.geometry.type, 'MultiPolygon'); if(fixture.geometry.type === 'GeometryCollection') t.equals(buffed.geometry.type, 'MultiPolygon'); } else t.equals(buffed.type, 'FeatureCollection'); buffed = normalize(buffed); buffed.features = buffed.features.map(function(f) { f.properties = { 'fill': '#000', 'fill-opacity': 0.3, 'stroke': '#0ff' }; return f; }); buffed.features = buffed.features.concat(normalize(fixture).features); fs.writeFileSync( __dirname+'/fixtures/out/'+path.split('/')[path.split('/').length-1], JSON.stringify(buffed) ); }); t.end(); });