turf-buffer
Version:
turf buffer module
52 lines (48 loc) • 1.99 kB
JavaScript
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();
});