Map multiple LineStringSegments to a one LineString

This commit is contained in:
Andreas Hocevar
2022-06-10 18:17:02 +02:00
parent 28b99b30a8
commit 2a8cc3d2f5
3 changed files with 46 additions and 9 deletions

View File

@@ -2252,6 +2252,44 @@ describe('ol.format.GML32', function () {
const serialized = format.writeGeometryNode(g);
expect(serialized.firstElementChild).to.xmleql(parse(text));
});
it('can read and write a curve geometry', function () {
const text =
'<gml:Curve xmlns:gml="http://www.opengis.net/gml/3.2" ' +
' srsName="CRS:84">' +
' <gml:segments>' +
' <gml:LineStringSegment>' +
' <gml:posList srsDimension="2">1 2 3 4</gml:posList>' +
' </gml:LineStringSegment>' +
' <gml:LineStringSegment>' +
' <gml:posList srsDimension="2">5 6 7 8</gml:posList>' +
' </gml:LineStringSegment>' +
' </gml:segments>' +
'</gml:Curve>';
const g = readGeometry(format, text);
expect(g).to.be.an(LineString);
expect(g.getCoordinates()).to.eql([
[1, 2, 0],
[3, 4, 0],
[5, 6, 0],
[7, 8, 0],
]);
format = new GML32({srsName: 'CRS:84', curve: true});
const serialized = format.writeGeometryNode(g);
// Conversion back to GML is not lossless, because we don't know
// the mapping of original LineString segements to the OpenLayers
// LineString geometry's coordinates.
const expected =
'<gml:Curve xmlns:gml="http://www.opengis.net/gml/3.2" ' +
' srsName="CRS:84">' +
' <gml:segments>' +
' <gml:LineStringSegment>' +
' <gml:posList srsDimension="2">1 2 3 4 5 6 7 8</gml:posList>' +
' </gml:LineStringSegment>' +
' </gml:segments>' +
'</gml:Curve>';
expect(serialized.firstElementChild).to.xmleql(parse(expected));
});
});
describe('envelope', function () {