Merge pull request #1376 from twpayne/vector-api-simplify-schaub
[vector-api] Schaub simplification
This commit is contained in:
@@ -321,17 +321,17 @@ describe('ol.geom.Polygon', function() {
|
||||
describe('#getSimplifiedGeometry', function() {
|
||||
|
||||
it('returns the expected result', function() {
|
||||
var simplifiedGeometry = polygon.getSimplifiedGeometry(1);
|
||||
var simplifiedGeometry = polygon.getSimplifiedGeometry(9);
|
||||
expect(simplifiedGeometry).to.be.an(ol.geom.Polygon);
|
||||
expect(simplifiedGeometry.getCoordinates()).to.eql(
|
||||
[[[3, 0], [0, 6], [6, 6], [4, 3]]]);
|
||||
[[[3, 0], [0, 3], [0, 6], [6, 6], [3, 3]]]);
|
||||
});
|
||||
|
||||
it('caches multiple simplified geometries', function() {
|
||||
var simplifiedGeometry1 = polygon.getSimplifiedGeometry(1);
|
||||
var simplifiedGeometry2 = polygon.getSimplifiedGeometry(2);
|
||||
var simplifiedGeometry3 = polygon.getSimplifiedGeometry(1);
|
||||
var simplifiedGeometry4 = polygon.getSimplifiedGeometry(2);
|
||||
var simplifiedGeometry1 = polygon.getSimplifiedGeometry(4);
|
||||
var simplifiedGeometry2 = polygon.getSimplifiedGeometry(9);
|
||||
var simplifiedGeometry3 = polygon.getSimplifiedGeometry(4);
|
||||
var simplifiedGeometry4 = polygon.getSimplifiedGeometry(9);
|
||||
expect(simplifiedGeometry1).to.be(simplifiedGeometry3);
|
||||
expect(simplifiedGeometry2).to.be(simplifiedGeometry4);
|
||||
});
|
||||
|
||||
@@ -287,6 +287,71 @@ describe('ol.geom.simplify', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('ol.geom.simplify.quantize', function() {
|
||||
|
||||
it('handles empty coordinates', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[], 0, 0, 2, 2, simplifiedFlatCoordinates, 0)).to.be(0);
|
||||
expect(simplifiedFlatCoordinates).to.be.empty();
|
||||
});
|
||||
|
||||
it('expands points to a zero-length line', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0, 0, 0, 0], 0, 4, 2, 2, simplifiedFlatCoordinates, 0)).to.be(4);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 0, 0]);
|
||||
});
|
||||
|
||||
it('snaps near-by points to the same value', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0.1, 0, 0, 0.1], 0, 4, 2, 2, simplifiedFlatCoordinates, 0)).to.be(4);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 0, 0]);
|
||||
});
|
||||
|
||||
it('eliminates duplicate snapped points', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0.1, 0, 2, 0, 2.1, 0, 2, 0.1, 1.9, 0, 2, -0.1], 0, 12, 2, 2,
|
||||
simplifiedFlatCoordinates, 0)).to.be(4);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 2, 0]);
|
||||
});
|
||||
|
||||
it('eliminates horizontal colinear points', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0, 0, 2, 0, 4, 0, 6, 0], 0, 8, 2, 2,
|
||||
simplifiedFlatCoordinates, 0)).to.be(4);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 6, 0]);
|
||||
});
|
||||
|
||||
it('eliminates vertical colinear points', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0, 0, 0, -2, 0, -4, 0, -6], 0, 8, 2, 2,
|
||||
simplifiedFlatCoordinates, 0)).to.be(4);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 0, -6]);
|
||||
});
|
||||
|
||||
it('eliminates diagonal colinear points', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0, 0, 2, -2, 4, -4, 6, -6], 0, 8, 2, 2,
|
||||
simplifiedFlatCoordinates, 0)).to.be(4);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 6, -6]);
|
||||
});
|
||||
|
||||
it('handles switchbacks', function() {
|
||||
var simplifiedFlatCoordinates = [];
|
||||
expect(ol.geom.simplify.quantize(
|
||||
[0, 0, 2, 0, 0, 0, 4, 0], 0, 8, 2, 2,
|
||||
simplifiedFlatCoordinates, 0)).to.be(8);
|
||||
expect(simplifiedFlatCoordinates).to.eql([0, 0, 2, 0, 0, 0, 4, 0]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user