[GIS] How to split the polygon, operation using of JSTS

javascriptopenlayerspolygonsplitting

I'm use JSTS 0.17.0 (https://github.com/bjornharrtell/jsts).
How to split the polygon (polygon to multipolygon or two polygons) ?

enter image description here

Input:

  • POLYGON ((1 1, 1 9, 9 9, 9 1, 1 1))
  • LINESTRING (0.5 5, 9.6 5, 9.6 3.9)

Result (or):

  • MULTIPOLYGON (((9 5, 9 1, 1 1, 1 5, 9 5)),((9 9, 9 5, 1 5, 1 9, 9 9)))
  • GEOMETRYCOLLECTION ( POLYGON ((9 5, 9 1, 1 1, 1 5, 9 5)), POLYGON ((9 9, 9 5, 1 5, 1 9, 9 9)) )

JTS does so:

enter image description here

How do too JSTS ?

PS2
Sorry for my English.

Best Answer

Something like this:

// Output:
// POLYGON((1 1,1 5,9 5,9 1,1 1))
// POLYGON((1 5,1 9,9 9,9 5,1 5))

var reader = new jsts.io.WKTReader();
var writer = new jsts.io.WKTWriter();

var a = reader.read('POLYGON ((1 1, 1 9, 9 9, 9 1, 1 1))');
var b = reader.read('LINESTRING (0.5 5, 9.6 5, 9.6 3.9)');
var union = a.getExteriorRing().union(b);

var polygonizer = new jsts.operation.polygonize.Polygonizer();
polygonizer.add(union);

var polygons = polygonizer.getPolygons();
for (var i = polygons.iterator(); i.hasNext();) {
    var polygon = i.next();
    console.log(writer.write(polygon));
}
Related Question