\n * The WKTWriter
outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *
\n * The SFS WKT spec does not define a special tag for {@link LinearRing}s.\n * Under the spec, rings are output as \n * LINESTRING
s.\n */\nexport default class WKTWriter {\n /**\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory)\n }\n\n /**\n * Converts a Geometry
to its Well-known Text representation.\n *\n * @param {Geometry} geometry a Geometry
to process.\n * @return {string} a GeoJSONReader
is parameterized by a GeometryFactory
,\n * to allow it to create Geometry
objects of the appropriate\n * implementation. In particular, the GeometryFactory
determines\n * the PrecisionModel
and SRID
that is used.\n *\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new GeoJSONParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a GeoJSON representation of a {@link Geometry}\n *\n * Will also parse GeoJSON Features/FeatureCollections as custom objects.\n *\n * @param {Object|String} geoJson a GeoJSON Object or String.\n * @return {Geometry|Object} a Geometry or Feature/FeatureCollection representation.
\n * @memberof module:org/locationtech/jts/io/GeoJSONReader#\n */\n read(geoJson) {\n const geometry = this.parser.read(geoJson)\n return geometry\n }\n}\n","/**\n * @module org/locationtech/jts/io/GeoJSONWriter\n */\n\nimport GeoJSONParser from './GeoJSONParser'\n\n/**\n * Writes the GeoJSON representation of a {@link Geometry}. The\n * The GeoJSON format is defined here.\n */\nexport default class GeoJSONWriter {\n /**\n * The GeoJSONWriter
outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\n constructor() {\n this.parser = new GeoJSONParser(this.geometryFactory)\n }\n\n /**\n * Converts a Geometry
to its GeoJSON representation.\n *\n * @param {Geometry}\n * geometry a Geometry
to process.\n * @return {Object} The GeoJSON representation of the Geometry.\n * @memberof module:org/locationtech/jts/io/GeoJSONWriter#\n */\n write(geometry) {\n return this.parser.write(geometry)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory'\nimport WKTParser from './WKTParser'\n\n/**\n * Converts a geometry in Well-Known Text format to a {@link Geometry}.\n * WKTReader
supports extracting Geometry
objects\n * from either {@link Reader}s or {@link String}s. This allows it to function\n * as a parser to read Geometry
objects from text blocks embedded\n * in other data formats (e.g. XML).\n */\n\nexport default class WKTReader {\n /**\n * A WKTReader
is parameterized by a GeometryFactory
,\n * to allow it to create Geometry
objects of the appropriate\n * implementation. In particular, the GeometryFactory
determines\n * the PrecisionModel
and SRID
that is used.\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a Well-Known Text representation of a {@link Geometry}\n *\n * @param {string}\n * wkt a Geometry
read from\n * string.
\n * @memberof module:org/locationtech/jts/io/WKTReader#\n */\n read(wkt) {\n return this.parser.read(wkt)\n }\n}\n","/* eslint-disable no-undef */\n\n/**\n * @module org/locationtech/jts/io/OL3Parser\n */\n\nimport Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\n\nfunction p2c(p) {\n return [p.x, p.y]\n}\n\nexport default class OL3Parser {\n /**\n * OpenLayers Geometry parser and writer\n * @param {GeometryFactory} geometryFactory\n * @param {ol} olReference\n */\n constructor(geometryFactory, olReference) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.ol = olReference || (typeof ol !== 'undefined' && ol)\n }\n\n /**\n * Inject OpenLayers geom classes\n */\n inject(Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection) {\n this.ol = {\n geom: {\n Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection\n }\n }\n }\n\n /**\n * @param geometry {ol.geom.Geometry}\n * @return {Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n read(geometry) {\n const ol = this.ol\n if (geometry instanceof ol.geom.Point)\n return this.convertFromPoint(geometry)\n else if (geometry instanceof ol.geom.LineString)\n return this.convertFromLineString(geometry)\n else if (geometry instanceof ol.geom.LinearRing)\n return this.convertFromLinearRing(geometry)\n else if (geometry instanceof ol.geom.Polygon)\n return this.convertFromPolygon(geometry)\n else if (geometry instanceof ol.geom.MultiPoint)\n return this.convertFromMultiPoint(geometry)\n else if (geometry instanceof ol.geom.MultiLineString)\n return this.convertFromMultiLineString(geometry)\n else if (geometry instanceof ol.geom.MultiPolygon)\n return this.convertFromMultiPolygon(geometry)\n else if (geometry instanceof ol.geom.GeometryCollection) return this.convertFromCollection(geometry)\n }\n\n convertFromPoint(point) {\n const coordinates = point.getCoordinates()\n return this.geometryFactory.createPoint(new Coordinate(coordinates[0], coordinates[1]))\n }\n\n convertFromLineString(lineString) {\n return this.geometryFactory.createLineString(lineString.getCoordinates().map(function(coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromLinearRing(linearRing) {\n return this.geometryFactory.createLinearRing(linearRing.getCoordinates().map(function(coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromPolygon(polygon) {\n const linearRings = polygon.getLinearRings()\n let shell = null\n const holes = []\n for (let i = 0; i < linearRings.length; i++) {\n const linearRing = this.convertFromLinearRing(linearRings[i])\n if (i === 0)\n shell = linearRing\n else holes.push(linearRing)\n }\n return this.geometryFactory.createPolygon(shell, holes)\n }\n\n convertFromMultiPoint(multiPoint) {\n const points = multiPoint.getPoints().map(function(point) {\n return this.convertFromPoint(point)\n }, this)\n return this.geometryFactory.createMultiPoint(points)\n }\n\n convertFromMultiLineString(multiLineString) {\n const lineStrings = multiLineString.getLineStrings().map(function(lineString) {\n return this.convertFromLineString(lineString)\n }, this)\n return this.geometryFactory.createMultiLineString(lineStrings)\n }\n\n convertFromMultiPolygon(multiPolygon) {\n const polygons = multiPolygon.getPolygons().map(function(polygon) {\n return this.convertFromPolygon(polygon)\n }, this)\n return this.geometryFactory.createMultiPolygon(polygons)\n }\n\n convertFromCollection(collection) {\n const geometries = collection.getGeometries().map(function(geometry) {\n return this.read(geometry)\n }, this)\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n\n /**\n * @param geometry\n * {Geometry}\n * @return {ol.geom.Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n write(geometry) {\n if (geometry.getGeometryType() === 'Point')\n return this.convertToPoint(geometry.getCoordinate())\n else if (geometry.getGeometryType() === 'LineString')\n return this.convertToLineString(geometry)\n else if (geometry.getGeometryType() === 'LinearRing')\n return this.convertToLinearRing(geometry)\n else if (geometry.getGeometryType() === 'Polygon')\n return this.convertToPolygon(geometry)\n else if (geometry.getGeometryType() === 'MultiPoint')\n return this.convertToMultiPoint(geometry)\n else if (geometry.getGeometryType() === 'MultiLineString')\n return this.convertToMultiLineString(geometry)\n else if (geometry.getGeometryType() === 'MultiPolygon')\n return this.convertToMultiPolygon(geometry)\n else if (geometry.getGeometryType() === 'GeometryCollection') return this.convertToCollection(geometry)\n }\n\n convertToPoint(coordinate) {\n return new this.ol.geom.Point([coordinate.x, coordinate.y])\n }\n\n convertToLineString(lineString) {\n const points = lineString._points._coordinates.map(p2c)\n return new this.ol.geom.LineString(points)\n }\n\n convertToLinearRing(linearRing) {\n const points = linearRing._points._coordinates.map(p2c)\n return new this.ol.geom.LinearRing(points)\n }\n\n convertToPolygon(polygon) {\n const rings = [polygon._shell._points._coordinates.map(p2c)]\n for (let i = 0; i < polygon._holes.length; i++) rings.push(polygon._holes[i]._points._coordinates.map(p2c))\n\n return new this.ol.geom.Polygon(rings)\n }\n\n convertToMultiPoint(multiPoint) {\n return new this.ol.geom.MultiPoint(multiPoint.getCoordinates().map(p2c))\n }\n\n convertToMultiLineString(multiLineString) {\n const lineStrings = []\n for (let i = 0; i < multiLineString._geometries.length; i++) lineStrings.push(this.convertToLineString(multiLineString._geometries[i]).getCoordinates())\n\n return new this.ol.geom.MultiLineString(lineStrings)\n }\n\n convertToMultiPolygon(multiPolygon) {\n const polygons = []\n for (let i = 0; i < multiPolygon._geometries.length; i++) polygons.push(this.convertToPolygon(multiPolygon._geometries[i]).getCoordinates())\n\n return new this.ol.geom.MultiPolygon(polygons)\n }\n\n convertToCollection(geometryCollection) {\n const geometries = []\n for (let i = 0; i < geometryCollection._geometries.length; i++) {\n const geometry = geometryCollection._geometries[i]\n geometries.push(this.write(geometry))\n }\n return new this.ol.geom.GeometryCollection(geometries)\n }\n}\n","import Assert from '../util/Assert'\nexport default class SegmentPointComparator {\n static relativeSign(x0, x1) {\n if (x0 < x1) return -1\n if (x0 > x1) return 1\n return 0\n }\n static compare(octant, p0, p1) {\n if (p0.equals2D(p1)) return 0\n const xSign = SegmentPointComparator.relativeSign(p0.x, p1.x)\n const ySign = SegmentPointComparator.relativeSign(p0.y, p1.y)\n switch (octant) {\n case 0:\n return SegmentPointComparator.compareValue(xSign, ySign)\n case 1:\n return SegmentPointComparator.compareValue(ySign, xSign)\n case 2:\n return SegmentPointComparator.compareValue(ySign, -xSign)\n case 3:\n return SegmentPointComparator.compareValue(-xSign, ySign)\n case 4:\n return SegmentPointComparator.compareValue(-xSign, -ySign)\n case 5:\n return SegmentPointComparator.compareValue(-ySign, -xSign)\n case 6:\n return SegmentPointComparator.compareValue(-ySign, xSign)\n case 7:\n return SegmentPointComparator.compareValue(xSign, -ySign)\n }\n Assert.shouldNeverReachHere('invalid octant value')\n return 0\n }\n static compareValue(compareSign0, compareSign1) {\n if (compareSign0 < 0) return -1\n if (compareSign0 > 0) return 1\n if (compareSign1 < 0) return -1\n if (compareSign1 > 0) return 1\n return 0\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport SegmentPointComparator from './SegmentPointComparator'\nimport Comparable from '../../../../java/lang/Comparable'\nexport default class SegmentNode {\n constructor() {\n SegmentNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._segString = null\n this.coord = null\n this.segmentIndex = null\n this._segmentOctant = null\n this._isInterior = null\n const segString = arguments[0], coord = arguments[1], segmentIndex = arguments[2], segmentOctant = arguments[3]\n this._segString = segString\n this.coord = new Coordinate(coord)\n this.segmentIndex = segmentIndex\n this._segmentOctant = segmentOctant\n this._isInterior = !coord.equals2D(segString.getCoordinate(segmentIndex))\n }\n getCoordinate() {\n return this.coord\n }\n print(out) {\n out.print(this.coord)\n out.print(' seg # = ' + this.segmentIndex)\n }\n compareTo(obj) {\n const other = obj\n if (this.segmentIndex < other.segmentIndex) return -1\n if (this.segmentIndex > other.segmentIndex) return 1\n if (this.coord.equals2D(other.coord)) return 0\n if (!this._isInterior) return -1\n if (!other._isInterior) return 1\n return SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord)\n }\n isEndPoint(maxSegmentIndex) {\n if (this.segmentIndex === 0 && !this._isInterior) return true\n if (this.segmentIndex === maxSegmentIndex) return true\n return false\n }\n toString() {\n return this.segmentIndex + ':' + this.coord.toString()\n }\n isInterior() {\n return this._isInterior\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport SegmentNode from './SegmentNode'\nimport Iterator from '../../../../java/util/Iterator'\nimport Coordinate from '../geom/Coordinate'\nimport NodedSegmentString from './NodedSegmentString'\nimport Integer from '../../../../java/lang/Integer'\nimport UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nimport Assert from '../util/Assert'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class SegmentNodeList {\n constructor() {\n SegmentNodeList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n this._edge = null\n const edge = arguments[0]\n this._edge = edge\n }\n getSplitCoordinates() {\n const coordList = new CoordinateList()\n this.addEndpoints()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n this.addEdgeCoordinates(eiPrev, ei, coordList)\n eiPrev = ei\n }\n return coordList.toCoordinateArray()\n }\n addCollapsedNodes() {\n const collapsedVertexIndexes = new ArrayList()\n this.findCollapsesFromInsertedNodes(collapsedVertexIndexes)\n this.findCollapsesFromExistingVertices(collapsedVertexIndexes)\n for (let it = collapsedVertexIndexes.iterator(); it.hasNext(); ) {\n const vertexIndex = it.next().intValue()\n this.add(this._edge.getCoordinate(vertexIndex), vertexIndex)\n }\n }\n createSplitEdgePts(ei0, ei1) {\n let npts = ei1.segmentIndex - ei0.segmentIndex + 2\n if (npts === 2) return [new Coordinate(ei0.coord), new Coordinate(ei1.coord)]\n const lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex)\n const useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt)\n if (!useIntPt1) \n npts--\n \n const pts = new Array(npts).fill(null)\n let ipt = 0\n pts[ipt++] = new Coordinate(ei0.coord)\n for (let i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) \n pts[ipt++] = this._edge.getCoordinate(i)\n \n if (useIntPt1) pts[ipt] = new Coordinate(ei1.coord)\n return pts\n }\n print(out) {\n out.println('Intersections:')\n for (let it = this.iterator(); it.hasNext(); ) {\n const ei = it.next()\n ei.print(out)\n }\n }\n findCollapsesFromExistingVertices(collapsedVertexIndexes) {\n for (let i = 0; i < this._edge.size() - 2; i++) {\n const p0 = this._edge.getCoordinate(i)\n const p1 = this._edge.getCoordinate(i + 1)\n const p2 = this._edge.getCoordinate(i + 2)\n if (p0.equals2D(p2)) \n collapsedVertexIndexes.add(Integer.valueOf(i + 1))\n \n }\n }\n addEdgeCoordinates(ei0, ei1, coordList) {\n const pts = this.createSplitEdgePts(ei0, ei1)\n coordList.add(pts, false)\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n addSplitEdges(edgeList) {\n this.addEndpoints()\n this.addCollapsedNodes()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const newEdge = this.createSplitEdge(eiPrev, ei)\n edgeList.add(newEdge)\n eiPrev = ei\n }\n }\n findCollapseIndex(ei0, ei1, collapsedVertexIndex) {\n if (!ei0.coord.equals2D(ei1.coord)) return false\n let numVerticesBetween = ei1.segmentIndex - ei0.segmentIndex\n if (!ei1.isInterior()) \n numVerticesBetween--\n \n if (numVerticesBetween === 1) {\n collapsedVertexIndex[0] = ei0.segmentIndex + 1\n return true\n }\n return false\n }\n findCollapsesFromInsertedNodes(collapsedVertexIndexes) {\n const collapsedVertexIndex = new Array(1).fill(null)\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const isCollapsed = this.findCollapseIndex(eiPrev, ei, collapsedVertexIndex)\n if (isCollapsed) collapsedVertexIndexes.add(Integer.valueOf(collapsedVertexIndex[0]))\n eiPrev = ei\n }\n }\n getEdge() {\n return this._edge\n }\n addEndpoints() {\n const maxSegIndex = this._edge.size() - 1\n this.add(this._edge.getCoordinate(0), 0)\n this.add(this._edge.getCoordinate(maxSegIndex), maxSegIndex)\n }\n createSplitEdge(ei0, ei1) {\n const pts = this.createSplitEdgePts(ei0, ei1)\n return new NodedSegmentString(pts, this._edge.getData())\n }\n add(intPt, segmentIndex) {\n const eiNew = new SegmentNode(this._edge, intPt, segmentIndex, this._edge.getSegmentOctant(segmentIndex))\n const ei = this._nodeMap.get(eiNew)\n if (ei !== null) {\n Assert.isTrue(ei.coord.equals2D(intPt), 'Found equal nodes with different coordinates')\n return ei\n }\n this._nodeMap.put(eiNew, eiNew)\n return eiNew\n }\n checkSplitEdgesCorrectness(splitEdges) {\n const edgePts = this._edge.getCoordinates()\n const split0 = splitEdges.get(0)\n const pt0 = split0.getCoordinate(0)\n if (!pt0.equals2D(edgePts[0])) throw new RuntimeException('bad split edge start point at ' + pt0)\n const splitn = splitEdges.get(splitEdges.size() - 1)\n const splitnPts = splitn.getCoordinates()\n const ptn = splitnPts[splitnPts.length - 1]\n if (!ptn.equals2D(edgePts[edgePts.length - 1])) throw new RuntimeException('bad split edge end point at ' + ptn)\n }\n}\nclass NodeVertexIterator {\n constructor() {\n NodeVertexIterator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeList = null\n this._edge = null\n this._nodeIt = null\n this._currNode = null\n this._nextNode = null\n this._currSegIndex = 0\n const nodeList = arguments[0]\n this._nodeList = nodeList\n this._edge = nodeList.getEdge()\n this._nodeIt = nodeList.iterator()\n this.readNextNode()\n }\n next() {\n if (this._currNode === null) {\n this._currNode = this._nextNode\n this._currSegIndex = this._currNode.segmentIndex\n this.readNextNode()\n return this._currNode\n }\n if (this._nextNode === null) return null\n if (this._nextNode.segmentIndex === this._currNode.segmentIndex) {\n this._currNode = this._nextNode\n this._currSegIndex = this._currNode.segmentIndex\n this.readNextNode()\n return this._currNode\n }\n if (this._nextNode.segmentIndex > this._currNode.segmentIndex) {}\n return null\n }\n remove() {\n throw new UnsupportedOperationException(this.getClass().getName())\n }\n hasNext() {\n if (this._nextNode === null) return false\n return true\n }\n readNextNode() {\n if (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null\n }\n get interfaces_() {\n return [Iterator]\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nexport default class Octant {\n static octant() {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const dx = arguments[0], dy = arguments[1]\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the octant for point ( ' + dx + ', ' + dy + ' )')\n const adx = Math.abs(dx)\n const ady = Math.abs(dy)\n if (dx >= 0) \n if (dy >= 0) \n if (adx >= ady) return 0; else return 1\n else \n if (adx >= ady) return 7; else return 6\n \n else \n if (dy >= 0) \n if (adx >= ady) return 3; else return 2\n else \n if (adx >= ady) return 4; else return 5\n \n \n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const p0 = arguments[0], p1 = arguments[1]\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the octant for two identical points ' + p0)\n return Octant.octant(dx, dy)\n }\n }\n}\n","export default class SegmentString {\n getCoordinates() {}\n size() {}\n getCoordinate(i) {}\n isClosed() {}\n setData(data) {}\n getData() {}\n}\n","import SegmentString from './SegmentString'\nexport default class NodableSegmentString {\n addIntersection(intPt, segmentIndex) {}\n get interfaces_() {\n return [SegmentString]\n }\n}\n","import SegmentNodeList from './SegmentNodeList'\nimport WKTWriter from '../io/WKTWriter'\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence'\nimport Coordinate from '../geom/Coordinate'\nimport Octant from './Octant'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport NodableSegmentString from './NodableSegmentString'\nexport default class NodedSegmentString {\n constructor() {\n NodedSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeList = new SegmentNodeList(this)\n this._pts = null\n this._data = null\n const pts = arguments[0], data = arguments[1]\n this._pts = pts\n this._data = data\n }\n static getNodedSubstrings() {\n if (arguments.length === 1) {\n const segStrings = arguments[0]\n const resultEdgelist = new ArrayList()\n NodedSegmentString.getNodedSubstrings(segStrings, resultEdgelist)\n return resultEdgelist\n } else if (arguments.length === 2) {\n const segStrings = arguments[0], resultEdgelist = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n ss.getNodeList().addSplitEdges(resultEdgelist)\n }\n }\n }\n getCoordinates() {\n return this._pts\n }\n size() {\n return this._pts.length\n }\n getCoordinate(i) {\n return this._pts[i]\n }\n isClosed() {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\n getSegmentOctant(index) {\n if (index === this._pts.length - 1) return -1\n return this.safeOctant(this.getCoordinate(index), this.getCoordinate(index + 1))\n }\n setData(data) {\n this._data = data\n }\n safeOctant(p0, p1) {\n if (p0.equals2D(p1)) return 0\n return Octant.octant(p0, p1)\n }\n getData() {\n return this._data\n }\n addIntersection() {\n if (arguments.length === 2) {\n const intPt = arguments[0], segmentIndex = arguments[1]\n this.addIntersectionNode(intPt, segmentIndex)\n } else if (arguments.length === 4) {\n const li = arguments[0], segmentIndex = arguments[1], geomIndex = arguments[2], intIndex = arguments[3]\n const intPt = new Coordinate(li.getIntersection(intIndex))\n this.addIntersection(intPt, segmentIndex)\n }\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n getNodeList() {\n return this._nodeList\n }\n addIntersectionNode(intPt, segmentIndex) {\n let normalizedSegmentIndex = segmentIndex\n const nextSegIndex = normalizedSegmentIndex + 1\n if (nextSegIndex < this._pts.length) {\n const nextPt = this._pts[nextSegIndex]\n if (intPt.equals2D(nextPt)) \n normalizedSegmentIndex = nextSegIndex\n \n }\n const ei = this._nodeList.add(intPt, normalizedSegmentIndex)\n return ei\n }\n addIntersections(li, segmentIndex, geomIndex) {\n for (let i = 0; i < li.getIntersectionNum(); i++) \n this.addIntersection(li, segmentIndex, geomIndex, i)\n \n }\n get interfaces_() {\n return [NodableSegmentString]\n }\n}\n","import LineSegment from '../../geom/LineSegment'\nexport default class MonotoneChainOverlapAction {\n constructor() {\n MonotoneChainOverlapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._overlapSeg1 = new LineSegment()\n this._overlapSeg2 = new LineSegment()\n }\n overlap() {\n if (arguments.length === 2) {\n const seg1 = arguments[0], seg2 = arguments[1]\n } else if (arguments.length === 4) {\n const mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3]\n mc1.getLineSegment(start1, this._overlapSeg1)\n mc2.getLineSegment(start2, this._overlapSeg2)\n this.overlap(this._overlapSeg1, this._overlapSeg2)\n }\n }\n}\n","import Envelope from '../../geom/Envelope'\nexport default class MonotoneChain {\n constructor() {\n MonotoneChain.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._start = null\n this._end = null\n this._env = null\n this._context = null\n this._id = null\n const pts = arguments[0], start = arguments[1], end = arguments[2], context = arguments[3]\n this._pts = pts\n this._start = start\n this._end = end\n this._context = context\n }\n getLineSegment(index, ls) {\n ls.p0 = this._pts[index]\n ls.p1 = this._pts[index + 1]\n }\n computeSelect(searchEnv, start0, end0, mcs) {\n const p0 = this._pts[start0]\n const p1 = this._pts[end0]\n if (end0 - start0 === 1) {\n mcs.select(this, start0)\n return null\n }\n if (!searchEnv.intersects(p0, p1)) return null\n const mid = Math.trunc((start0 + end0) / 2)\n if (start0 < mid) \n this.computeSelect(searchEnv, start0, mid, mcs)\n \n if (mid < end0) \n this.computeSelect(searchEnv, mid, end0, mcs)\n \n }\n getCoordinates() {\n const coord = new Array(this._end - this._start + 1).fill(null)\n let index = 0\n for (let i = this._start; i <= this._end; i++) \n coord[index++] = this._pts[i]\n \n return coord\n }\n computeOverlaps() {\n if (arguments.length === 2) {\n const mc = arguments[0], mco = arguments[1]\n this.computeOverlaps(this._start, this._end, mc, mc._start, mc._end, mco)\n } else if (arguments.length === 6) {\n const start0 = arguments[0], end0 = arguments[1], mc = arguments[2], start1 = arguments[3], end1 = arguments[4], mco = arguments[5]\n if (end0 - start0 === 1 && end1 - start1 === 1) {\n mco.overlap(this, start0, mc, start1)\n return null\n }\n if (!this.overlaps(start0, end0, mc, start1, end1)) return null\n const mid0 = Math.trunc((start0 + end0) / 2)\n const mid1 = Math.trunc((start1 + end1) / 2)\n if (start0 < mid0) {\n if (start1 < mid1) this.computeOverlaps(start0, mid0, mc, start1, mid1, mco)\n if (mid1 < end1) this.computeOverlaps(start0, mid0, mc, mid1, end1, mco)\n }\n if (mid0 < end0) {\n if (start1 < mid1) this.computeOverlaps(mid0, end0, mc, start1, mid1, mco)\n if (mid1 < end1) this.computeOverlaps(mid0, end0, mc, mid1, end1, mco)\n }\n }\n }\n setId(id) {\n this._id = id\n }\n select(searchEnv, mcs) {\n this.computeSelect(searchEnv, this._start, this._end, mcs)\n }\n getEnvelope() {\n if (this._env === null) {\n const p0 = this._pts[this._start]\n const p1 = this._pts[this._end]\n this._env = new Envelope(p0, p1)\n }\n return this._env\n }\n overlaps(start0, end0, mc, start1, end1) {\n return Envelope.intersects(this._pts[start0], this._pts[end0], mc._pts[start1], mc._pts[end1])\n }\n getEndIndex() {\n return this._end\n }\n getStartIndex() {\n return this._start\n }\n getContext() {\n return this._context\n }\n getId() {\n return this._id\n }\n}\n","import MonotoneChain from './MonotoneChain'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Quadrant from '../../geomgraph/Quadrant'\nexport default class MonotoneChainBuilder {\n static findChainEnd(pts, start) {\n let safeStart = start\n while (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) \n safeStart++\n \n if (safeStart >= pts.length - 1) \n return pts.length - 1\n \n const chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1])\n let last = start + 1\n while (last < pts.length) {\n if (!pts[last - 1].equals2D(pts[last])) {\n const quad = Quadrant.quadrant(pts[last - 1], pts[last])\n if (quad !== chainQuad) break\n }\n last++\n }\n return last - 1\n }\n static getChains() {\n if (arguments.length === 1) {\n const pts = arguments[0]\n return MonotoneChainBuilder.getChains(pts, null)\n } else if (arguments.length === 2) {\n const pts = arguments[0], context = arguments[1]\n const mcList = new ArrayList()\n let chainStart = 0\n do {\n const chainEnd = MonotoneChainBuilder.findChainEnd(pts, chainStart)\n const mc = new MonotoneChain(pts, chainStart, chainEnd, context)\n mcList.add(mc)\n chainStart = chainEnd\n } while (chainStart < pts.length - 1)\n return mcList\n }\n }\n}\n","export default class Noder {\n computeNodes(segStrings) {}\n getNodedSubstrings() {}\n}\n","import Noder from './Noder'\nexport default class SinglePassNoder {\n constructor() {\n SinglePassNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._segInt = null\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const segInt = arguments[0]\n this.setSegmentIntersector(segInt)\n }\n }\n setSegmentIntersector(segInt) {\n this._segInt = segInt\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import STRtree from '../index/strtree/STRtree'\nimport NodedSegmentString from './NodedSegmentString'\nimport MonotoneChainOverlapAction from '../index/chain/MonotoneChainOverlapAction'\nimport MonotoneChainBuilder from '../index/chain/MonotoneChainBuilder'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport SinglePassNoder from './SinglePassNoder'\nexport default class MCIndexNoder extends SinglePassNoder {\n constructor() {\n super()\n MCIndexNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._monoChains = new ArrayList()\n this._index = new STRtree()\n this._idCounter = 0\n this._nodedSegStrings = null\n this._nOverlaps = 0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const si = arguments[0]\n SinglePassNoder.constructor_.call(this, si)\n }\n }\n getMonotoneChains() {\n return this._monoChains\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n getIndex() {\n return this._index\n }\n add(segStr) {\n const segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr)\n for (let i = segChains.iterator(); i.hasNext(); ) {\n const mc = i.next()\n mc.setId(this._idCounter++)\n this._index.insert(mc.getEnvelope(), mc)\n this._monoChains.add(mc)\n }\n }\n computeNodes(inputSegStrings) {\n this._nodedSegStrings = inputSegStrings\n for (let i = inputSegStrings.iterator(); i.hasNext(); ) \n this.add(i.next())\n \n this.intersectChains()\n }\n intersectChains() {\n const overlapAction = new SegmentOverlapAction(this._segInt)\n for (let i = this._monoChains.iterator(); i.hasNext(); ) {\n const queryChain = i.next()\n const overlapChains = this._index.query(queryChain.getEnvelope())\n for (let j = overlapChains.iterator(); j.hasNext(); ) {\n const testChain = j.next()\n if (testChain.getId() > queryChain.getId()) {\n queryChain.computeOverlaps(testChain, overlapAction)\n this._nOverlaps++\n }\n if (this._segInt.isDone()) return null\n }\n }\n }\n}\nclass SegmentOverlapAction extends MonotoneChainOverlapAction {\n constructor() {\n super()\n SegmentOverlapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._si = null\n const si = arguments[0]\n this._si = si\n }\n overlap() {\n if (arguments.length === 4) {\n const mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3]\n const ss1 = mc1.getContext()\n const ss2 = mc2.getContext()\n this._si.processIntersections(ss1, start1, ss2, start2)\n } else {\n return super.overlap.apply(this, arguments)\n }\n }\n}\nMCIndexNoder.SegmentOverlapAction = SegmentOverlapAction\n","import hasInterface from '../../../../hasInterface'\nimport Collection from '../../../../java/util/Collection'\nimport Noder from './Noder'\nimport Coordinate from '../geom/Coordinate'\nimport NodedSegmentString from './NodedSegmentString'\nimport System from '../../../../java/lang/System'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class ScaledNoder {\n constructor() {\n ScaledNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._noder = null\n this._scaleFactor = null\n this._offsetX = null\n this._offsetY = null\n this._isScaled = false\n if (arguments.length === 2) {\n const noder = arguments[0], scaleFactor = arguments[1]\n ScaledNoder.constructor_.call(this, noder, scaleFactor, 0, 0)\n } else if (arguments.length === 4) {\n const noder = arguments[0], scaleFactor = arguments[1], offsetX = arguments[2], offsetY = arguments[3]\n this._noder = noder\n this._scaleFactor = scaleFactor\n this._isScaled = !this.isIntegerPrecision()\n }\n }\n rescale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.rescale(ss.getCoordinates())\n }\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n for (let i = 0; i < pts.length; i++) {\n pts[i].x = pts[i].x / this._scaleFactor + this._offsetX\n pts[i].y = pts[i].y / this._scaleFactor + this._offsetY\n }\n if (pts.length === 2 && pts[0].equals2D(pts[1])) \n System.out.println(pts)\n \n }\n }\n scale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n const nodedSegmentStrings = new ArrayList(segStrings.size())\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n nodedSegmentStrings.add(new NodedSegmentString(this.scale(ss.getCoordinates()), ss.getData()))\n }\n return nodedSegmentStrings\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n const roundPts = new Array(pts.length).fill(null)\n for (let i = 0; i < pts.length; i++) \n roundPts[i] = new Coordinate(Math.round((pts[i].x - this._offsetX) * this._scaleFactor), Math.round((pts[i].y - this._offsetY) * this._scaleFactor), pts[i].getZ())\n \n const roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts)\n return roundPtsNoDup\n }\n }\n isIntegerPrecision() {\n return this._scaleFactor === 1.0\n }\n getNodedSubstrings() {\n const splitSS = this._noder.getNodedSubstrings()\n if (this._isScaled) this.rescale(splitSS)\n return splitSS\n }\n computeNodes(inputSegStrings) {\n let intSegStrings = inputSegStrings\n if (this._isScaled) intSegStrings = this.scale(inputSegStrings)\n this._noder.computeNodes(intSegStrings)\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import LineString from '../geom/LineString'\nimport BoundaryNodeRule from '../algorithm/BoundaryNodeRule'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport TreeMap from '../../../../java/util/TreeMap'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class BoundaryOp {\n constructor() {\n BoundaryOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._geomFact = null\n this._bnRule = null\n this._endpointMap = null\n if (arguments.length === 1) {\n const geom = arguments[0]\n BoundaryOp.constructor_.call(this, geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE)\n } else if (arguments.length === 2) {\n const geom = arguments[0], bnRule = arguments[1]\n this._geom = geom\n this._geomFact = geom.getFactory()\n this._bnRule = bnRule\n }\n }\n static getBoundary() {\n if (arguments.length === 1) {\n const g = arguments[0]\n const bop = new BoundaryOp(g)\n return bop.getBoundary()\n } else if (arguments.length === 2) {\n const g = arguments[0], bnRule = arguments[1]\n const bop = new BoundaryOp(g, bnRule)\n return bop.getBoundary()\n }\n }\n boundaryMultiLineString(mLine) {\n if (this._geom.isEmpty()) \n return this.getEmptyMultiPoint()\n \n const bdyPts = this.computeBoundaryCoordinates(mLine)\n if (bdyPts.length === 1) \n return this._geomFact.createPoint(bdyPts[0])\n \n return this._geomFact.createMultiPointFromCoords(bdyPts)\n }\n getBoundary() {\n if (this._geom instanceof LineString) return this.boundaryLineString(this._geom)\n if (this._geom instanceof MultiLineString) return this.boundaryMultiLineString(this._geom)\n return this._geom.getBoundary()\n }\n boundaryLineString(line) {\n if (this._geom.isEmpty()) \n return this.getEmptyMultiPoint()\n \n if (line.isClosed()) {\n const closedEndpointOnBoundary = this._bnRule.isInBoundary(2)\n if (closedEndpointOnBoundary) \n return line.getStartPoint()\n else \n return this._geomFact.createMultiPoint()\n \n }\n return this._geomFact.createMultiPoint([line.getStartPoint(), line.getEndPoint()])\n }\n getEmptyMultiPoint() {\n return this._geomFact.createMultiPoint()\n }\n computeBoundaryCoordinates(mLine) {\n const bdyPts = new ArrayList()\n this._endpointMap = new TreeMap()\n for (let i = 0; i < mLine.getNumGeometries(); i++) {\n const line = mLine.getGeometryN(i)\n if (line.getNumPoints() === 0) continue\n this.addEndpoint(line.getCoordinateN(0))\n this.addEndpoint(line.getCoordinateN(line.getNumPoints() - 1))\n }\n for (let it = this._endpointMap.entrySet().iterator(); it.hasNext(); ) {\n const entry = it.next()\n const counter = entry.getValue()\n const valence = counter.count\n if (this._bnRule.isInBoundary(valence)) \n bdyPts.add(entry.getKey())\n \n }\n return CoordinateArrays.toCoordinateArray(bdyPts)\n }\n addEndpoint(pt) {\n let counter = this._endpointMap.get(pt)\n if (counter === null) {\n counter = new Counter()\n this._endpointMap.put(pt, counter)\n }\n counter.count++\n }\n}\nclass Counter {\n constructor() {\n Counter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.count = null\n }\n}\n","import TreeSet from '../../../../java/util/TreeSet'\nimport LineString from '../geom/LineString'\nimport hasInterface from '../../../../hasInterface'\nimport MultiPoint from '../geom/MultiPoint'\nimport GeometryGraph from '../geomgraph/GeometryGraph'\nimport GeometryCollection from '../geom/GeometryCollection'\nimport Polygonal from '../geom/Polygonal'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter'\nimport TreeMap from '../../../../java/util/TreeMap'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class IsSimpleOp {\n constructor() {\n IsSimpleOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._isClosedEndpointsInInterior = true\n this._nonSimpleLocation = null\n if (arguments.length === 1) {\n const geom = arguments[0]\n this._inputGeom = geom\n } else if (arguments.length === 2) {\n const geom = arguments[0], boundaryNodeRule = arguments[1]\n this._inputGeom = geom\n this._isClosedEndpointsInInterior = !boundaryNodeRule.isInBoundary(2)\n }\n }\n static isSimple() {\n if (arguments.length === 1) {\n const geom = arguments[0]\n const op = new IsSimpleOp(geom)\n return op.isSimple()\n } else if (arguments.length === 2) {\n const geom = arguments[0], boundaryNodeRule = arguments[1]\n const op = new IsSimpleOp(geom, boundaryNodeRule)\n return op.isSimple()\n }\n }\n isSimpleMultiPoint(mp) {\n if (mp.isEmpty()) return true\n const points = new TreeSet()\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const pt = mp.getGeometryN(i)\n const p = pt.getCoordinate()\n if (points.contains(p)) {\n this._nonSimpleLocation = p\n return false\n }\n points.add(p)\n }\n return true\n }\n isSimplePolygonal(geom) {\n const rings = LinearComponentExtracter.getLines(geom)\n for (let i = rings.iterator(); i.hasNext(); ) {\n const ring = i.next()\n if (!this.isSimpleLinearGeometry(ring)) return false\n }\n return true\n }\n hasClosedEndpointIntersection(graph) {\n const endPoints = new TreeMap()\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const isClosed = e.isClosed()\n const p0 = e.getCoordinate(0)\n this.addEndpoint(endPoints, p0, isClosed)\n const p1 = e.getCoordinate(e.getNumPoints() - 1)\n this.addEndpoint(endPoints, p1, isClosed)\n }\n for (let i = endPoints.values().iterator(); i.hasNext(); ) {\n const eiInfo = i.next()\n if (eiInfo.isClosed && eiInfo.degree !== 2) {\n this._nonSimpleLocation = eiInfo.getCoordinate()\n return true\n }\n }\n return false\n }\n getNonSimpleLocation() {\n return this._nonSimpleLocation\n }\n isSimpleLinearGeometry(geom) {\n if (geom.isEmpty()) return true\n const graph = new GeometryGraph(0, geom)\n const li = new RobustLineIntersector()\n const si = graph.computeSelfNodes(li, true)\n if (!si.hasIntersection()) return true\n if (si.hasProperIntersection()) {\n this._nonSimpleLocation = si.getProperIntersectionPoint()\n return false\n }\n if (this.hasNonEndpointIntersection(graph)) return false\n if (this._isClosedEndpointsInInterior) \n if (this.hasClosedEndpointIntersection(graph)) return false\n \n return true\n }\n hasNonEndpointIntersection(graph) {\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const maxSegmentIndex = e.getMaximumSegmentIndex()\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n if (!ei.isEndPoint(maxSegmentIndex)) {\n this._nonSimpleLocation = ei.getCoordinate()\n return true\n }\n }\n }\n return false\n }\n addEndpoint(endPoints, p, isClosed) {\n let eiInfo = endPoints.get(p)\n if (eiInfo === null) {\n eiInfo = new EndpointInfo(p)\n endPoints.put(p, eiInfo)\n }\n eiInfo.addEndpoint(isClosed)\n }\n computeSimple(geom) {\n this._nonSimpleLocation = null\n if (geom.isEmpty()) return true\n if (geom instanceof LineString) return this.isSimpleLinearGeometry(geom)\n if (geom instanceof MultiLineString) return this.isSimpleLinearGeometry(geom)\n if (geom instanceof MultiPoint) return this.isSimpleMultiPoint(geom)\n if (hasInterface(geom, Polygonal)) return this.isSimplePolygonal(geom)\n if (geom instanceof GeometryCollection) return this.isSimpleGeometryCollection(geom)\n return true\n }\n isSimple() {\n this._nonSimpleLocation = null\n return this.computeSimple(this._inputGeom)\n }\n isSimpleGeometryCollection(geom) {\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const comp = geom.getGeometryN(i)\n if (!this.computeSimple(comp)) return false\n }\n return true\n }\n}\nclass EndpointInfo {\n constructor() {\n EndpointInfo.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.pt = null\n this.isClosed = null\n this.degree = null\n const pt = arguments[0]\n this.pt = pt\n this.isClosed = false\n this.degree = 0\n }\n addEndpoint(isClosed) {\n this.degree++\n this.isClosed |= isClosed\n }\n getCoordinate() {\n return this.pt\n }\n}\nIsSimpleOp.EndpointInfo = EndpointInfo\n","export default class BufferParameters {\n constructor() {\n BufferParameters.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n this._endCapStyle = BufferParameters.CAP_ROUND\n this._joinStyle = BufferParameters.JOIN_ROUND\n this._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT\n this._isSingleSided = false\n this._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const quadrantSegments = arguments[0]\n this.setQuadrantSegments(quadrantSegments)\n } else if (arguments.length === 2) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n } else if (arguments.length === 4) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1], joinStyle = arguments[2], mitreLimit = arguments[3]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n this.setJoinStyle(joinStyle)\n this.setMitreLimit(mitreLimit)\n }\n }\n static bufferDistanceError(quadSegs) {\n const alpha = Math.PI / 2.0 / quadSegs\n return 1 - Math.cos(alpha / 2.0)\n }\n getEndCapStyle() {\n return this._endCapStyle\n }\n isSingleSided() {\n return this._isSingleSided\n }\n setQuadrantSegments(quadSegs) {\n this._quadrantSegments = quadSegs\n if (this._quadrantSegments === 0) this._joinStyle = BufferParameters.JOIN_BEVEL\n if (this._quadrantSegments < 0) {\n this._joinStyle = BufferParameters.JOIN_MITRE\n this._mitreLimit = Math.abs(this._quadrantSegments)\n }\n if (quadSegs <= 0) \n this._quadrantSegments = 1\n \n if (this._joinStyle !== BufferParameters.JOIN_ROUND) \n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n \n }\n getJoinStyle() {\n return this._joinStyle\n }\n setJoinStyle(joinStyle) {\n this._joinStyle = joinStyle\n }\n setSimplifyFactor(simplifyFactor) {\n this._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor\n }\n getSimplifyFactor() {\n return this._simplifyFactor\n }\n getQuadrantSegments() {\n return this._quadrantSegments\n }\n setEndCapStyle(endCapStyle) {\n this._endCapStyle = endCapStyle\n }\n getMitreLimit() {\n return this._mitreLimit\n }\n setMitreLimit(mitreLimit) {\n this._mitreLimit = mitreLimit\n }\n setSingleSided(isSingleSided) {\n this._isSingleSided = isSingleSided\n }\n}\nBufferParameters.CAP_ROUND = 1\nBufferParameters.CAP_FLAT = 2\nBufferParameters.CAP_SQUARE = 3\nBufferParameters.JOIN_ROUND = 1\nBufferParameters.JOIN_MITRE = 2\nBufferParameters.JOIN_BEVEL = 3\nBufferParameters.DEFAULT_QUADRANT_SEGMENTS = 8\nBufferParameters.DEFAULT_MITRE_LIMIT = 5.0\nBufferParameters.DEFAULT_SIMPLIFY_FACTOR = 0.01\n","import Position from '../../geomgraph/Position'\nimport Orientation from '../../algorithm/Orientation'\nimport Assert from '../../util/Assert'\nexport default class RightmostEdgeFinder {\n constructor() {\n RightmostEdgeFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._minIndex = -1\n this._minCoord = null\n this._minDe = null\n this._orientedDe = null\n }\n getCoordinate() {\n return this._minCoord\n }\n getRightmostSide(de, index) {\n let side = this.getRightmostSideOfSegment(de, index)\n if (side < 0) side = this.getRightmostSideOfSegment(de, index - 1)\n if (side < 0) {\n this._minCoord = null\n this.checkForRightmostCoordinate(de)\n }\n return side\n }\n findRightmostEdgeAtVertex() {\n const pts = this._minDe.getEdge().getCoordinates()\n Assert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, 'rightmost point expected to be interior vertex of edge')\n const pPrev = pts[this._minIndex - 1]\n const pNext = pts[this._minIndex + 1]\n const orientation = Orientation.index(this._minCoord, pNext, pPrev)\n let usePrev = false\n if (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === Orientation.COUNTERCLOCKWISE) \n usePrev = true\n else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === Orientation.CLOCKWISE) \n usePrev = true\n \n if (usePrev) \n this._minIndex = this._minIndex - 1\n \n }\n getRightmostSideOfSegment(de, i) {\n const e = de.getEdge()\n const coord = e.getCoordinates()\n if (i < 0 || i + 1 >= coord.length) return -1\n if (coord[i].y === coord[i + 1].y) return -1\n let pos = Position.LEFT\n if (coord[i].y < coord[i + 1].y) pos = Position.RIGHT\n return pos\n }\n getEdge() {\n return this._orientedDe\n }\n checkForRightmostCoordinate(de) {\n const coord = de.getEdge().getCoordinates()\n for (let i = 0; i < coord.length - 1; i++) \n if (this._minCoord === null || coord[i].x > this._minCoord.x) {\n this._minDe = de\n this._minIndex = i\n this._minCoord = coord[i]\n }\n \n }\n findRightmostEdgeAtNode() {\n const node = this._minDe.getNode()\n const star = node.getEdges()\n this._minDe = star.getRightmostEdge()\n if (!this._minDe.isForward()) {\n this._minDe = this._minDe.getSym()\n this._minIndex = this._minDe.getEdge().getCoordinates().length - 1\n }\n }\n findEdge(dirEdgeList) {\n for (let i = dirEdgeList.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.checkForRightmostCoordinate(de)\n }\n Assert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), 'inconsistency in rightmost processing')\n if (this._minIndex === 0) \n this.findRightmostEdgeAtNode()\n else \n this.findRightmostEdgeAtVertex()\n \n this._orientedDe = this._minDe\n const rightmostSide = this.getRightmostSide(this._minDe, this._minIndex)\n if (rightmostSide === Position.LEFT) \n this._orientedDe = this._minDe.getSym()\n \n }\n}\n","export default class LinkedList {\n constructor() {\n this.array = []\n }\n\n addLast(e) {\n this.array.push(e)\n }\n\n removeFirst() {\n return this.array.shift()\n }\n\n isEmpty() {\n return this.array.length === 0\n }\n}\n","import HashSet from '../../../../../java/util/HashSet'\nimport Position from '../../geomgraph/Position'\nimport Stack from '../../../../../java/util/Stack'\nimport RightmostEdgeFinder from './RightmostEdgeFinder'\nimport TopologyException from '../../geom/TopologyException'\nimport LinkedList from '../../../../../java/util/LinkedList'\nimport Comparable from '../../../../../java/lang/Comparable'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nexport default class BufferSubgraph {\n constructor() {\n BufferSubgraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._finder = null\n this._dirEdgeList = new ArrayList()\n this._nodes = new ArrayList()\n this._rightMostCoord = null\n this._env = null\n this._finder = new RightmostEdgeFinder()\n }\n clearVisitedEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n de.setVisited(false)\n }\n }\n getRightmostCoordinate() {\n return this._rightMostCoord\n }\n computeNodeDepth(n) {\n let startEdge = null\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isVisited() || de.getSym().isVisited()) {\n startEdge = de\n break\n }\n }\n if (startEdge === null) throw new TopologyException('unable to find edge to compute depths at ' + n.getCoordinate())\n n.getEdges().computeDepths(startEdge)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setVisited(true)\n this.copySymDepths(de)\n }\n }\n computeDepth(outsideDepth) {\n this.clearVisitedEdges()\n const de = this._finder.getEdge()\n const n = de.getNode()\n const label = de.getLabel()\n de.setEdgeDepths(Position.RIGHT, outsideDepth)\n this.copySymDepths(de)\n this.computeDepths(de)\n }\n create(node) {\n this.addReachable(node)\n this._finder.findEdge(this._dirEdgeList)\n this._rightMostCoord = this._finder.getCoordinate()\n }\n findResultEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) \n de.setInResult(true)\n \n }\n }\n computeDepths(startEdge) {\n const nodesVisited = new HashSet()\n const nodeQueue = new LinkedList()\n const startNode = startEdge.getNode()\n nodeQueue.addLast(startNode)\n nodesVisited.add(startNode)\n startEdge.setVisited(true)\n while (!nodeQueue.isEmpty()) {\n const n = nodeQueue.removeFirst()\n nodesVisited.add(n)\n this.computeNodeDepth(n)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym.isVisited()) continue\n const adjNode = sym.getNode()\n if (!nodesVisited.contains(adjNode)) {\n nodeQueue.addLast(adjNode)\n nodesVisited.add(adjNode)\n }\n }\n }\n }\n compareTo(o) {\n const graph = o\n if (this._rightMostCoord.x < graph._rightMostCoord.x) \n return -1\n \n if (this._rightMostCoord.x > graph._rightMostCoord.x) \n return 1\n \n return 0\n }\n getEnvelope() {\n if (this._env === null) {\n const edgeEnv = new Envelope()\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const dirEdge = it.next()\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) \n edgeEnv.expandToInclude(pts[i])\n \n }\n this._env = edgeEnv\n }\n return this._env\n }\n addReachable(startNode) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.add(node, nodeStack)\n }\n }\n copySymDepths(de) {\n const sym = de.getSym()\n sym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT))\n sym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT))\n }\n add(node, nodeStack) {\n node.setVisited(true)\n this._nodes.add(node)\n for (let i = node.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n this._dirEdgeList.add(de)\n const sym = de.getSym()\n const symNode = sym.getNode()\n if (!symNode.isVisited()) nodeStack.push(symNode)\n }\n }\n getNodes() {\n return this._nodes\n }\n getDirectedEdges() {\n return this._dirEdgeList\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import Location from '../geom/Location'\nimport Position from './Position'\nimport PointLocation from '../algorithm/PointLocation'\nimport TopologyException from '../geom/TopologyException'\nimport Orientation from '../algorithm/Orientation'\nimport Label from './Label'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Assert from '../util/Assert'\nexport default class EdgeRing {\n constructor() {\n EdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._startDe = null\n this._maxNodeDegree = -1\n this._edges = new ArrayList()\n this._pts = new ArrayList()\n this._label = new Label(Location.NONE)\n this._ring = null\n this._isHole = null\n this._shell = null\n this._holes = new ArrayList()\n this._geometryFactory = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const start = arguments[0], geometryFactory = arguments[1]\n this._geometryFactory = geometryFactory\n this.computePoints(start)\n this.computeRing()\n }\n }\n computeRing() {\n if (this._ring !== null) return null\n const coord = new Array(this._pts.size()).fill(null)\n for (let i = 0; i < this._pts.size(); i++) \n coord[i] = this._pts.get(i)\n \n this._ring = this._geometryFactory.createLinearRing(coord)\n this._isHole = Orientation.isCCW(this._ring.getCoordinates())\n }\n isIsolated() {\n return this._label.getGeometryCount() === 1\n }\n computePoints(start) {\n this._startDe = start\n let de = start\n let isFirstEdge = true\n do {\n if (de === null) throw new TopologyException('Found null DirectedEdge')\n if (de.getEdgeRing() === this) throw new TopologyException('Directed Edge visited twice during ring-building at ' + de.getCoordinate())\n this._edges.add(de)\n const label = de.getLabel()\n Assert.isTrue(label.isArea())\n this.mergeLabel(label)\n this.addPoints(de.getEdge(), de.isForward(), isFirstEdge)\n isFirstEdge = false\n this.setEdgeRing(de, this)\n de = this.getNext(de)\n } while (de !== this._startDe)\n }\n getLinearRing() {\n return this._ring\n }\n getCoordinate(i) {\n return this._pts.get(i)\n }\n computeMaxNodeDegree() {\n this._maxNodeDegree = 0\n let de = this._startDe\n do {\n const node = de.getNode()\n const degree = node.getEdges().getOutgoingDegree(this)\n if (degree > this._maxNodeDegree) this._maxNodeDegree = degree\n de = this.getNext(de)\n } while (de !== this._startDe)\n this._maxNodeDegree *= 2\n }\n addPoints(edge, isForward, isFirstEdge) {\n const edgePts = edge.getCoordinates()\n if (isForward) {\n let startIndex = 1\n if (isFirstEdge) startIndex = 0\n for (let i = startIndex; i < edgePts.length; i++) \n this._pts.add(edgePts[i])\n \n } else {\n let startIndex = edgePts.length - 2\n if (isFirstEdge) startIndex = edgePts.length - 1\n for (let i = startIndex; i >= 0; i--) \n this._pts.add(edgePts[i])\n \n }\n }\n isHole() {\n return this._isHole\n }\n setInResult() {\n let de = this._startDe\n do {\n de.getEdge().setInResult(true)\n de = de.getNext()\n } while (de !== this._startDe)\n }\n containsPoint(p) {\n const shell = this.getLinearRing()\n const env = shell.getEnvelopeInternal()\n if (!env.contains(p)) return false\n if (!PointLocation.isInRing(p, shell.getCoordinates())) return false\n for (let i = this._holes.iterator(); i.hasNext(); ) {\n const hole = i.next()\n if (hole.containsPoint(p)) return false\n }\n return true\n }\n addHole(ring) {\n this._holes.add(ring)\n }\n isShell() {\n return this._shell === null\n }\n getLabel() {\n return this._label\n }\n getEdges() {\n return this._edges\n }\n getMaxNodeDegree() {\n if (this._maxNodeDegree < 0) this.computeMaxNodeDegree()\n return this._maxNodeDegree\n }\n getShell() {\n return this._shell\n }\n mergeLabel() {\n if (arguments.length === 1) {\n const deLabel = arguments[0]\n this.mergeLabel(deLabel, 0)\n this.mergeLabel(deLabel, 1)\n } else if (arguments.length === 2) {\n const deLabel = arguments[0], geomIndex = arguments[1]\n const loc = deLabel.getLocation(geomIndex, Position.RIGHT)\n if (loc === Location.NONE) return null\n if (this._label.getLocation(geomIndex) === Location.NONE) {\n this._label.setLocation(geomIndex, loc)\n return null\n }\n }\n }\n setShell(shell) {\n this._shell = shell\n if (shell !== null) shell.addHole(this)\n }\n toPolygon(geometryFactory) {\n const holeLR = new Array(this._holes.size()).fill(null)\n for (let i = 0; i < this._holes.size(); i++) \n holeLR[i] = this._holes.get(i).getLinearRing()\n \n const poly = geometryFactory.createPolygon(this.getLinearRing(), holeLR)\n return poly\n }\n}\n","import EdgeRing from '../../geomgraph/EdgeRing'\nexport default class MinimalEdgeRing extends EdgeRing {\n constructor() {\n super()\n MinimalEdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const start = arguments[0], geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n }\n setEdgeRing(de, er) {\n de.setMinEdgeRing(er)\n }\n getNext(de) {\n return de.getNextMin()\n }\n}\n","import MinimalEdgeRing from './MinimalEdgeRing'\nimport EdgeRing from '../../geomgraph/EdgeRing'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class MaximalEdgeRing extends EdgeRing {\n constructor() {\n super()\n MaximalEdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const start = arguments[0], geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n }\n buildMinimalRings() {\n const minEdgeRings = new ArrayList()\n let de = this._startDe\n do {\n if (de.getMinEdgeRing() === null) {\n const minEr = new MinimalEdgeRing(de, this._geometryFactory)\n minEdgeRings.add(minEr)\n }\n de = de.getNext()\n } while (de !== this._startDe)\n return minEdgeRings\n }\n setEdgeRing(de, er) {\n de.setEdgeRing(er)\n }\n linkDirectedEdgesForMinimalEdgeRings() {\n let de = this._startDe\n do {\n const node = de.getNode()\n node.getEdges().linkMinimalDirectedEdges(this)\n de = de.getNext()\n } while (de !== this._startDe)\n }\n getNext(de) {\n return de.getNext()\n }\n}\n","import PointLocation from '../../algorithm/PointLocation'\nimport TopologyException from '../../geom/TopologyException'\nimport MaximalEdgeRing from './MaximalEdgeRing'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class PolygonBuilder {\n constructor() {\n PolygonBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geometryFactory = null\n this._shellList = new ArrayList()\n const geometryFactory = arguments[0]\n this._geometryFactory = geometryFactory\n }\n static findEdgeRingContaining(testEr, shellList) {\n const testRing = testEr.getLinearRing()\n const testEnv = testRing.getEnvelopeInternal()\n let testPt = testRing.getCoordinateN(0)\n let minShell = null\n let minShellEnv = null\n for (let it = shellList.iterator(); it.hasNext(); ) {\n const tryShell = it.next()\n const tryShellRing = tryShell.getLinearRing()\n const tryShellEnv = tryShellRing.getEnvelopeInternal()\n if (tryShellEnv.equals(testEnv)) continue\n if (!tryShellEnv.contains(testEnv)) continue\n testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryShellRing.getCoordinates())\n let isContained = false\n if (PointLocation.isInRing(testPt, tryShellRing.getCoordinates())) isContained = true\n if (isContained) \n if (minShell === null || minShellEnv.contains(tryShellEnv)) {\n minShell = tryShell\n minShellEnv = minShell.getLinearRing().getEnvelopeInternal()\n }\n \n }\n return minShell\n }\n sortShellsAndHoles(edgeRings, shellList, freeHoleList) {\n for (let it = edgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.isHole()) \n freeHoleList.add(er)\n else \n shellList.add(er)\n \n }\n }\n computePolygons(shellList) {\n const resultPolyList = new ArrayList()\n for (let it = shellList.iterator(); it.hasNext(); ) {\n const er = it.next()\n const poly = er.toPolygon(this._geometryFactory)\n resultPolyList.add(poly)\n }\n return resultPolyList\n }\n placeFreeHoles(shellList, freeHoleList) {\n for (let it = freeHoleList.iterator(); it.hasNext(); ) {\n const hole = it.next()\n if (hole.getShell() === null) {\n const shell = PolygonBuilder.findEdgeRingContaining(hole, shellList)\n if (shell === null) throw new TopologyException('unable to assign hole to a shell', hole.getCoordinate(0))\n hole.setShell(shell)\n }\n }\n }\n buildMinimalEdgeRings(maxEdgeRings, shellList, freeHoleList) {\n const edgeRings = new ArrayList()\n for (let it = maxEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.getMaxNodeDegree() > 2) {\n er.linkDirectedEdgesForMinimalEdgeRings()\n const minEdgeRings = er.buildMinimalRings()\n const shell = this.findShell(minEdgeRings)\n if (shell !== null) {\n this.placePolygonHoles(shell, minEdgeRings)\n shellList.add(shell)\n } else {\n freeHoleList.addAll(minEdgeRings)\n }\n } else {\n edgeRings.add(er)\n }\n }\n return edgeRings\n }\n buildMaximalEdgeRings(dirEdges) {\n const maxEdgeRings = new ArrayList()\n for (let it = dirEdges.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() && de.getLabel().isArea()) \n if (de.getEdgeRing() === null) {\n const er = new MaximalEdgeRing(de, this._geometryFactory)\n maxEdgeRings.add(er)\n er.setInResult()\n }\n \n }\n return maxEdgeRings\n }\n placePolygonHoles(shell, minEdgeRings) {\n for (let it = minEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.isHole()) \n er.setShell(shell)\n \n }\n }\n getPolygons() {\n const resultPolyList = this.computePolygons(this._shellList)\n return resultPolyList\n }\n findShell(minEdgeRings) {\n let shellCount = 0\n let shell = null\n for (let it = minEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (!er.isHole()) {\n shell = er\n shellCount++\n }\n }\n Assert.isTrue(shellCount <= 1, 'found two shells in MinimalEdgeRing list')\n return shell\n }\n add() {\n if (arguments.length === 1) {\n const graph = arguments[0]\n this.add(graph.getEdgeEnds(), graph.getNodes())\n } else if (arguments.length === 2) {\n const dirEdges = arguments[0], nodes = arguments[1]\n PlanarGraph.linkResultDirectedEdges(nodes)\n const maxEdgeRings = this.buildMaximalEdgeRings(dirEdges)\n const freeHoleList = new ArrayList()\n const edgeRings = this.buildMinimalEdgeRings(maxEdgeRings, this._shellList, freeHoleList)\n this.sortShellsAndHoles(edgeRings, this._shellList, freeHoleList)\n this.placeFreeHoles(this._shellList, freeHoleList)\n }\n }\n}\n","import CoordinateList from '../../geom/CoordinateList'\nimport Orientation from '../../algorithm/Orientation'\nimport Distance from '../../algorithm/Distance'\nexport default class BufferInputLineSimplifier {\n constructor() {\n BufferInputLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputLine = null\n this._distanceTol = null\n this._isDeleted = null\n this._angleOrientation = Orientation.COUNTERCLOCKWISE\n const inputLine = arguments[0]\n this._inputLine = inputLine\n }\n static simplify(inputLine, distanceTol) {\n const simp = new BufferInputLineSimplifier(inputLine)\n return simp.simplify(distanceTol)\n }\n isDeletable(i0, i1, i2, distanceTol) {\n const p0 = this._inputLine[i0]\n const p1 = this._inputLine[i1]\n const p2 = this._inputLine[i2]\n if (!this.isConcave(p0, p1, p2)) return false\n if (!this.isShallow(p0, p1, p2, distanceTol)) return false\n return this.isShallowSampled(p0, p1, i0, i2, distanceTol)\n }\n deleteShallowConcavities() {\n let index = 1\n let midIndex = this.findNextNonDeletedIndex(index)\n let lastIndex = this.findNextNonDeletedIndex(midIndex)\n let isChanged = false\n while (lastIndex < this._inputLine.length) {\n let isMiddleVertexDeleted = false\n if (this.isDeletable(index, midIndex, lastIndex, this._distanceTol)) {\n this._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE\n isMiddleVertexDeleted = true\n isChanged = true\n }\n if (isMiddleVertexDeleted) index = lastIndex; else index = midIndex\n midIndex = this.findNextNonDeletedIndex(index)\n lastIndex = this.findNextNonDeletedIndex(midIndex)\n }\n return isChanged\n }\n isShallowConcavity(p0, p1, p2, distanceTol) {\n const orientation = Orientation.index(p0, p1, p2)\n const isAngleToSimplify = orientation === this._angleOrientation\n if (!isAngleToSimplify) return false\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n isShallowSampled(p0, p2, i0, i2, distanceTol) {\n let inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK)\n if (inc <= 0) inc = 1\n for (let i = i0; i < i2; i += inc) \n if (!this.isShallow(p0, p2, this._inputLine[i], distanceTol)) return false\n \n return true\n }\n isConcave(p0, p1, p2) {\n const orientation = Orientation.index(p0, p1, p2)\n const isConcave = orientation === this._angleOrientation\n return isConcave\n }\n simplify(distanceTol) {\n this._distanceTol = Math.abs(distanceTol)\n if (distanceTol < 0) this._angleOrientation = Orientation.CLOCKWISE\n this._isDeleted = new Array(this._inputLine.length).fill(null)\n let isChanged = false\n do \n isChanged = this.deleteShallowConcavities()\n while (isChanged)\n return this.collapseLine()\n }\n findNextNonDeletedIndex(index) {\n let next = index + 1\n while (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) next++\n return next\n }\n isShallow(p0, p1, p2, distanceTol) {\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n collapseLine() {\n const coordList = new CoordinateList()\n for (let i = 0; i < this._inputLine.length; i++) \n if (this._isDeleted[i] !== BufferInputLineSimplifier.DELETE) coordList.add(this._inputLine[i])\n \n return coordList.toCoordinateArray()\n }\n}\nBufferInputLineSimplifier.INIT = 0\nBufferInputLineSimplifier.DELETE = 1\nBufferInputLineSimplifier.KEEP = 1\nBufferInputLineSimplifier.NUM_PTS_TO_CHECK = 10\n","import GeometryFactory from '../../geom/GeometryFactory'\nimport Coordinate from '../../geom/Coordinate'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class OffsetSegmentString {\n constructor() {\n OffsetSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ptList = null\n this._precisionModel = null\n this._minimimVertexDistance = 0.0\n this._ptList = new ArrayList()\n }\n getCoordinates() {\n const coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE)\n return coord\n }\n setPrecisionModel(precisionModel) {\n this._precisionModel = precisionModel\n }\n addPt(pt) {\n const bufPt = new Coordinate(pt)\n this._precisionModel.makePrecise(bufPt)\n if (this.isRedundant(bufPt)) return null\n this._ptList.add(bufPt)\n }\n reverse() {}\n addPts(pt, isForward) {\n if (isForward) \n for (let i = 0; i < pt.length; i++) \n this.addPt(pt[i])\n \n else \n for (let i = pt.length - 1; i >= 0; i--) \n this.addPt(pt[i])\n \n \n }\n isRedundant(pt) {\n if (this._ptList.size() < 1) return false\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n const ptDist = pt.distance(lastPt)\n if (ptDist < this._minimimVertexDistance) return true\n return false\n }\n toString() {\n const fact = new GeometryFactory()\n const line = fact.createLineString(this.getCoordinates())\n return line.toString()\n }\n closeRing() {\n if (this._ptList.size() < 1) return null\n const startPt = new Coordinate(this._ptList.get(0))\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n if (startPt.equals(lastPt)) return null\n this._ptList.add(startPt)\n }\n setMinimumVertexDistance(minimimVertexDistance) {\n this._minimimVertexDistance = minimimVertexDistance\n }\n}\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null)\n","import BufferParameters from './BufferParameters'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport Orientation from '../../algorithm/Orientation'\nimport Intersection from '../../algorithm/Intersection'\nimport OffsetSegmentString from './OffsetSegmentString'\nimport LineSegment from '../../geom/LineSegment'\nimport Angle from '../../algorithm/Angle'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nexport default class OffsetSegmentGenerator {\n constructor() {\n OffsetSegmentGenerator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._maxCurveSegmentError = 0.0\n this._filletAngleQuantum = null\n this._closingSegLengthFactor = 1\n this._segList = null\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n this._li = null\n this._s0 = null\n this._s1 = null\n this._s2 = null\n this._seg0 = new LineSegment()\n this._seg1 = new LineSegment()\n this._offset0 = new LineSegment()\n this._offset1 = new LineSegment()\n this._side = 0\n this._hasNarrowConcaveAngle = false\n const precisionModel = arguments[0], bufParams = arguments[1], distance = arguments[2]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n this._li = new RobustLineIntersector()\n this._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments()\n if (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR\n this.init(distance)\n }\n addNextSegment(p, addStartPoint) {\n this._s0 = this._s1\n this._s1 = this._s2\n this._s2 = p\n this._seg0.setCoordinates(this._s0, this._s1)\n this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0)\n this._seg1.setCoordinates(this._s1, this._s2)\n this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1)\n if (this._s1.equals(this._s2)) return null\n const orientation = Orientation.index(this._s0, this._s1, this._s2)\n const outsideTurn = orientation === Orientation.CLOCKWISE && this._side === Position.LEFT || orientation === Orientation.COUNTERCLOCKWISE && this._side === Position.RIGHT\n if (orientation === 0) \n this.addCollinear(addStartPoint)\n else if (outsideTurn) \n this.addOutsideTurn(orientation, addStartPoint)\n else \n this.addInsideTurn(orientation, addStartPoint)\n \n }\n addLineEndCap(p0, p1) {\n const seg = new LineSegment(p0, p1)\n const offsetL = new LineSegment()\n this.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL)\n const offsetR = new LineSegment()\n this.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR)\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n const angle = Math.atan2(dy, dx)\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n this._segList.addPt(offsetL.p1)\n this.addDirectedFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, Orientation.CLOCKWISE, this._distance)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_FLAT:\n this._segList.addPt(offsetL.p1)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_SQUARE:\n const squareCapSideOffset = new Coordinate()\n squareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle)\n squareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle)\n const squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y)\n const squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y)\n this._segList.addPt(squareCapLOffset)\n this._segList.addPt(squareCapROffset)\n break\n }\n }\n getCoordinates() {\n const pts = this._segList.getCoordinates()\n return pts\n }\n addMitreJoin(p, offset0, offset1, distance) {\n const intPt = Intersection.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1)\n if (intPt !== null) {\n const mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance)\n if (mitreRatio <= this._bufParams.getMitreLimit()) {\n this._segList.addPt(intPt)\n return null\n }\n }\n this.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit())\n }\n addOutsideTurn(orientation, addStartPoint) {\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n return null\n }\n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance)\n } else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n this.addBevelJoin(this._offset0, this._offset1)\n } else {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance)\n this._segList.addPt(this._offset1.p0)\n }\n }\n createSquare(p) {\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance))\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance))\n this._segList.closeRing()\n }\n addSegments(pt, isForward) {\n this._segList.addPts(pt, isForward)\n }\n addFirstSegment() {\n this._segList.addPt(this._offset1.p0)\n }\n addCornerFillet(p, p0, p1, direction, radius) {\n const dx0 = p0.x - p.x\n const dy0 = p0.y - p.y\n let startAngle = Math.atan2(dy0, dx0)\n const dx1 = p1.x - p.x\n const dy1 = p1.y - p.y\n const endAngle = Math.atan2(dy1, dx1)\n if (direction === Orientation.CLOCKWISE) {\n if (startAngle <= endAngle) startAngle += 2.0 * Math.PI\n } else {\n if (startAngle >= endAngle) startAngle -= 2.0 * Math.PI\n }\n this._segList.addPt(p0)\n this.addDirectedFillet(p, startAngle, endAngle, direction, radius)\n this._segList.addPt(p1)\n }\n addLastSegment() {\n this._segList.addPt(this._offset1.p1)\n }\n initSideSegments(s1, s2, side) {\n this._s1 = s1\n this._s2 = s2\n this._side = side\n this._seg1.setCoordinates(s1, s2)\n this.computeOffsetSegment(this._seg1, side, this._distance, this._offset1)\n }\n addLimitedMitreJoin(offset0, offset1, distance, mitreLimit) {\n const basePt = this._seg0.p1\n const ang0 = Angle.angle(basePt, this._seg0.p0)\n const angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1)\n const angDiffHalf = angDiff / 2\n const midAng = Angle.normalize(ang0 + angDiffHalf)\n const mitreMidAng = Angle.normalize(midAng + Math.PI)\n const mitreDist = mitreLimit * distance\n const bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf))\n const bevelHalfLen = distance - bevelDelta\n const bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng)\n const bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng)\n const bevelMidPt = new Coordinate(bevelMidX, bevelMidY)\n const mitreMidLine = new LineSegment(basePt, bevelMidPt)\n const bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen)\n const bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen)\n if (this._side === Position.LEFT) {\n this._segList.addPt(bevelEndLeft)\n this._segList.addPt(bevelEndRight)\n } else {\n this._segList.addPt(bevelEndRight)\n this._segList.addPt(bevelEndLeft)\n }\n }\n addDirectedFillet(p, startAngle, endAngle, direction, radius) {\n const directionFactor = direction === Orientation.CLOCKWISE ? -1 : 1\n const totalAngle = Math.abs(startAngle - endAngle)\n const nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5)\n if (nSegs < 1) return null\n const angleInc = totalAngle / nSegs\n const pt = new Coordinate()\n for (let i = 0; i < nSegs; i++) {\n const angle = startAngle + directionFactor * i * angleInc\n pt.x = p.x + radius * Math.cos(angle)\n pt.y = p.y + radius * Math.sin(angle)\n this._segList.addPt(pt)\n }\n }\n computeOffsetSegment(seg, side, distance, offset) {\n const sideSign = side === Position.LEFT ? 1 : -1\n const dx = seg.p1.x - seg.p0.x\n const dy = seg.p1.y - seg.p0.y\n const len = Math.sqrt(dx * dx + dy * dy)\n const ux = sideSign * distance * dx / len\n const uy = sideSign * distance * dy / len\n offset.p0.x = seg.p0.x - uy\n offset.p0.y = seg.p0.y + ux\n offset.p1.x = seg.p1.x - uy\n offset.p1.y = seg.p1.y + ux\n }\n addInsideTurn(orientation, addStartPoint) {\n this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1)\n if (this._li.hasIntersection()) {\n this._segList.addPt(this._li.getIntersection(0))\n } else {\n this._hasNarrowConcaveAngle = true\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n } else {\n this._segList.addPt(this._offset0.p1)\n if (this._closingSegLengthFactor > 0) {\n const mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid0)\n const mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid1)\n } else {\n this._segList.addPt(this._s1)\n }\n this._segList.addPt(this._offset1.p0)\n }\n }\n }\n createCircle(p) {\n const pt = new Coordinate(p.x + this._distance, p.y)\n this._segList.addPt(pt)\n this.addDirectedFillet(p, 0.0, 2.0 * Math.PI, -1, this._distance)\n this._segList.closeRing()\n }\n addBevelJoin(offset0, offset1) {\n this._segList.addPt(offset0.p1)\n this._segList.addPt(offset1.p0)\n }\n init(distance) {\n this._distance = distance\n this._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0))\n this._segList = new OffsetSegmentString()\n this._segList.setPrecisionModel(this._precisionModel)\n this._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)\n }\n addCollinear(addStartPoint) {\n this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2)\n const numInt = this._li.getIntersectionNum()\n if (numInt >= 2) \n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this._segList.addPt(this._offset1.p0)\n } else {\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, Orientation.CLOCKWISE, this._distance)\n }\n \n }\n closeRing() {\n this._segList.closeRing()\n }\n hasNarrowConcaveAngle() {\n return this._hasNarrowConcaveAngle\n }\n}\nOffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3\nOffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3\nOffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6\nOffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR = 80\n","import BufferParameters from './BufferParameters'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport BufferInputLineSimplifier from './BufferInputLineSimplifier'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport OffsetSegmentGenerator from './OffsetSegmentGenerator'\nexport default class OffsetCurveBuilder {\n constructor() {\n OffsetCurveBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n const precisionModel = arguments[0], bufParams = arguments[1]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n }\n static copyCoordinates(pts) {\n const copy = new Array(pts.length).fill(null)\n for (let i = 0; i < copy.length; i++) \n copy[i] = new Coordinate(pts[i])\n \n return copy\n }\n getOffsetCurve(inputPts, distance) {\n this._distance = distance\n if (distance === 0.0) return null\n const isRightSide = distance < 0.0\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) \n this.computePointCurve(inputPts[0], segGen)\n else \n this.computeOffsetCurve(inputPts, isRightSide, segGen)\n \n const curvePts = segGen.getCoordinates()\n if (isRightSide) CoordinateArrays.reverse(curvePts)\n return curvePts\n }\n computeSingleSidedBufferCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n segGen.addSegments(inputPts, true)\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n segGen.addSegments(inputPts, false)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n segGen.closeRing()\n }\n computeRingBufferCurve(inputPts, side, segGen) {\n let distTol = this.simplifyTolerance(this._distance)\n if (side === Position.RIGHT) distTol = -distTol\n const simp = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n = simp.length - 1\n segGen.initSideSegments(simp[n - 1], simp[0], side)\n for (let i = 1; i <= n; i++) {\n const addStartPoint = i !== 1\n segGen.addNextSegment(simp[i], addStartPoint)\n }\n segGen.closeRing()\n }\n computeLineBufferCurve(inputPts, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp1[n1 - 1], simp1[n1])\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp2[1], simp2[0])\n segGen.closeRing()\n }\n computePointCurve(pt, segGen) {\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n segGen.createCircle(pt)\n break\n case BufferParameters.CAP_SQUARE:\n segGen.createSquare(pt)\n break\n }\n }\n getLineCurve(inputPts, distance) {\n this._distance = distance\n if (this.isLineOffsetEmpty(distance)) return null\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) {\n this.computePointCurve(inputPts[0], segGen)\n } else \n if (this._bufParams.isSingleSided()) {\n const isRightSide = distance < 0.0\n this.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen)\n } else {\n this.computeLineBufferCurve(inputPts, segGen)\n }\n \n const lineCoord = segGen.getCoordinates()\n return lineCoord\n }\n getBufferParameters() {\n return this._bufParams\n }\n simplifyTolerance(bufDistance) {\n return bufDistance * this._bufParams.getSimplifyFactor()\n }\n getRingCurve(inputPts, side, distance) {\n this._distance = distance\n if (inputPts.length <= 2) return this.getLineCurve(inputPts, distance)\n if (distance === 0.0) \n return OffsetCurveBuilder.copyCoordinates(inputPts)\n \n const segGen = this.getSegGen(distance)\n this.computeRingBufferCurve(inputPts, side, segGen)\n return segGen.getCoordinates()\n }\n computeOffsetCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n }\n isLineOffsetEmpty(distance) {\n if (distance === 0.0) return true\n if (distance < 0.0 && !this._bufParams.isSingleSided()) return true\n return false\n }\n getSegGen(distance) {\n return new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance)\n }\n}\n","import hasInterface from '../../../../../hasInterface'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport Orientation from '../../algorithm/Orientation'\nimport Collections from '../../../../../java/util/Collections'\nimport DirectedEdge from '../../geomgraph/DirectedEdge'\nimport LineSegment from '../../geom/LineSegment'\nimport Comparable from '../../../../../java/lang/Comparable'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport List from '../../../../../java/util/List'\nexport default class SubgraphDepthLocater {\n constructor() {\n SubgraphDepthLocater.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subgraphs = null\n this._seg = new LineSegment()\n const subgraphs = arguments[0]\n this._subgraphs = subgraphs\n }\n findStabbedSegments() {\n if (arguments.length === 1) {\n const stabbingRayLeftPt = arguments[0]\n const stabbedSegments = new ArrayList()\n for (let i = this._subgraphs.iterator(); i.hasNext(); ) {\n const bsg = i.next()\n const env = bsg.getEnvelope()\n if (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) continue\n this.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments)\n }\n return stabbedSegments\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n const stabbingRayLeftPt = arguments[0], dirEdge = arguments[1], stabbedSegments = arguments[2]\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) {\n this._seg.p0 = pts[i]\n this._seg.p1 = pts[i + 1]\n if (this._seg.p0.y > this._seg.p1.y) this._seg.reverse()\n const maxx = Math.max(this._seg.p0.x, this._seg.p1.x)\n if (maxx < stabbingRayLeftPt.x) continue\n if (this._seg.isHorizontal()) continue\n if (stabbingRayLeftPt.y < this._seg.p0.y || stabbingRayLeftPt.y > this._seg.p1.y) continue\n if (Orientation.index(this._seg.p0, this._seg.p1, stabbingRayLeftPt) === Orientation.RIGHT) continue\n let depth = dirEdge.getDepth(Position.LEFT)\n if (!this._seg.p0.equals(pts[i])) depth = dirEdge.getDepth(Position.RIGHT)\n const ds = new DepthSegment(this._seg, depth)\n stabbedSegments.add(ds)\n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n const stabbingRayLeftPt = arguments[0], dirEdges = arguments[1], stabbedSegments = arguments[2]\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.findStabbedSegments(stabbingRayLeftPt, de, stabbedSegments)\n }\n }\n }\n }\n getDepth(p) {\n const stabbedSegments = this.findStabbedSegments(p)\n if (stabbedSegments.size() === 0) return 0\n const ds = Collections.min(stabbedSegments)\n return ds._leftDepth\n }\n}\nclass DepthSegment {\n constructor() {\n DepthSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._upwardSeg = null\n this._leftDepth = null\n const seg = arguments[0], depth = arguments[1]\n this._upwardSeg = new LineSegment(seg)\n this._leftDepth = depth\n }\n compareTo(obj) {\n const other = obj\n if (this._upwardSeg.minX() >= other._upwardSeg.maxX()) return 1\n if (this._upwardSeg.maxX() <= other._upwardSeg.minX()) return -1\n let orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n orientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n return this._upwardSeg.compareTo(other._upwardSeg)\n }\n compareX(seg0, seg1) {\n const compare0 = seg0.p0.compareTo(seg1.p0)\n if (compare0 !== 0) return compare0\n return seg0.p1.compareTo(seg1.p1)\n }\n toString() {\n return this._upwardSeg.toString()\n }\n get interfaces_() {\n return [Comparable]\n }\n}\nSubgraphDepthLocater.DepthSegment = DepthSegment\n","import Location from '../../geom/Location'\nimport LineString from '../../geom/LineString'\nimport Position from '../../geomgraph/Position'\nimport Point from '../../geom/Point'\nimport NodedSegmentString from '../../noding/NodedSegmentString'\nimport Polygon from '../../geom/Polygon'\nimport MultiPoint from '../../geom/MultiPoint'\nimport LinearRing from '../../geom/LinearRing'\nimport Orientation from '../../algorithm/Orientation'\nimport MultiPolygon from '../../geom/MultiPolygon'\nimport Label from '../../geomgraph/Label'\nimport GeometryCollection from '../../geom/GeometryCollection'\nimport UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Distance from '../../algorithm/Distance'\nimport MultiLineString from '../../geom/MultiLineString'\nimport Triangle from '../../geom/Triangle'\nexport default class OffsetCurveSetBuilder {\n constructor() {\n OffsetCurveSetBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distance = null\n this._curveBuilder = null\n this._curveList = new ArrayList()\n const inputGeom = arguments[0], distance = arguments[1], curveBuilder = arguments[2]\n this._inputGeom = inputGeom\n this._distance = distance\n this._curveBuilder = curveBuilder\n }\n addRingSide(coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n if (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) return null\n let leftLoc = cwLeftLoc\n let rightLoc = cwRightLoc\n if (coord.length >= LinearRing.MINIMUM_VALID_SIZE && Orientation.isCCW(coord)) {\n leftLoc = cwRightLoc\n rightLoc = cwLeftLoc\n side = Position.opposite(side)\n }\n const curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance)\n this.addCurve(curve, leftLoc, rightLoc)\n }\n addRingBothSides(coord, distance) {\n this.addRingSide(coord, distance, Position.LEFT, Location.EXTERIOR, Location.INTERIOR)\n this.addRingSide(coord, distance, Position.RIGHT, Location.INTERIOR, Location.EXTERIOR)\n }\n addPoint(p) {\n if (this._distance <= 0.0) return null\n const coord = p.getCoordinates()\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n addPolygon(p) {\n let offsetDistance = this._distance\n let offsetSide = Position.LEFT\n if (this._distance < 0.0) {\n offsetDistance = -this._distance\n offsetSide = Position.RIGHT\n }\n const shell = p.getExteriorRing()\n const shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates())\n if (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) return null\n if (this._distance <= 0.0 && shellCoord.length < 3) return null\n this.addRingSide(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n const holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates())\n if (this._distance > 0.0 && this.isErodedCompletely(hole, -this._distance)) continue\n this.addRingSide(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR)\n }\n }\n isTriangleErodedCompletely(triangleCoord, bufferDistance) {\n const tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2])\n const inCentre = tri.inCentre()\n const distToCentre = Distance.pointToSegment(inCentre, tri.p0, tri.p1)\n return distToCentre < Math.abs(bufferDistance)\n }\n addLineString(line) {\n if (this._curveBuilder.isLineOffsetEmpty(this._distance)) return null\n const coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (CoordinateArrays.isRing(coord) && !this._curveBuilder.getBufferParameters().isSingleSided()) {\n this.addRingBothSides(coord, this._distance)\n } else {\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n }\n addCurve(coord, leftLoc, rightLoc) {\n if (coord === null || coord.length < 2) return null\n const e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc))\n this._curveList.add(e)\n }\n getCurves() {\n this.add(this._inputGeom)\n return this._curveList\n }\n add(g) {\n if (g.isEmpty()) return null\n if (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getGeometryType())\n }\n isErodedCompletely(ring, bufferDistance) {\n const ringCoord = ring.getCoordinates()\n if (ringCoord.length < 4) return bufferDistance < 0\n if (ringCoord.length === 4) return this.isTriangleErodedCompletely(ringCoord, bufferDistance)\n const env = ring.getEnvelopeInternal()\n const envMinDimension = Math.min(env.getHeight(), env.getWidth())\n if (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) return true\n return false\n }\n addCollection(gc) {\n for (let i = 0; i < gc.getNumGeometries(); i++) {\n const g = gc.getGeometryN(i)\n this.add(g)\n }\n }\n}\n","import StringBuffer from '../../../../java/lang/StringBuffer'\nimport Location from '../geom/Location'\nimport Position from './Position'\nimport TopologyException from '../geom/TopologyException'\nimport System from '../../../../java/lang/System'\nimport SimplePointInAreaLocator from '../algorithm/locate/SimplePointInAreaLocator'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Assert from '../util/Assert'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class EdgeEndStar {\n constructor() {\n EdgeEndStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeMap = new TreeMap()\n this._edgeList = null\n this._ptInAreaLocation = [Location.NONE, Location.NONE]\n }\n getNextCW(ee) {\n this.getEdges()\n const i = this._edgeList.indexOf(ee)\n let iNextCW = i - 1\n if (i === 0) iNextCW = this._edgeList.size() - 1\n return this._edgeList.get(iNextCW)\n }\n propagateSideLabels(geomIndex) {\n let startLoc = Location.NONE\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (label.isArea(geomIndex) && label.getLocation(geomIndex, Position.LEFT) !== Location.NONE) startLoc = label.getLocation(geomIndex, Position.LEFT)\n }\n if (startLoc === Location.NONE) return null\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (label.getLocation(geomIndex, Position.ON) === Location.NONE) label.setLocation(geomIndex, Position.ON, currLoc)\n if (label.isArea(geomIndex)) {\n const leftLoc = label.getLocation(geomIndex, Position.LEFT)\n const rightLoc = label.getLocation(geomIndex, Position.RIGHT)\n if (rightLoc !== Location.NONE) {\n if (rightLoc !== currLoc) throw new TopologyException('side location conflict', e.getCoordinate())\n if (leftLoc === Location.NONE) \n Assert.shouldNeverReachHere('found single null side (at ' + e.getCoordinate() + ')')\n \n currLoc = leftLoc\n } else {\n Assert.isTrue(label.getLocation(geomIndex, Position.LEFT) === Location.NONE, 'found single null side')\n label.setLocation(geomIndex, Position.RIGHT, currLoc)\n label.setLocation(geomIndex, Position.LEFT, currLoc)\n }\n }\n }\n }\n getCoordinate() {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\n print(out) {\n System.out.println('EdgeEndStar: ' + this.getCoordinate())\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n e.print(out)\n }\n }\n isAreaLabelsConsistent(geomGraph) {\n this.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule())\n return this.checkAreaLabelsConsistent(0)\n }\n checkAreaLabelsConsistent(geomIndex) {\n const edges = this.getEdges()\n if (edges.size() <= 0) return true\n const lastEdgeIndex = edges.size() - 1\n const startLabel = edges.get(lastEdgeIndex).getLabel()\n const startLoc = startLabel.getLocation(geomIndex, Position.LEFT)\n Assert.isTrue(startLoc !== Location.NONE, 'Found unlabelled area edge')\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n Assert.isTrue(label.isArea(geomIndex), 'Found non-area edge')\n const leftLoc = label.getLocation(geomIndex, Position.LEFT)\n const rightLoc = label.getLocation(geomIndex, Position.RIGHT)\n if (leftLoc === rightLoc) \n return false\n \n if (rightLoc !== currLoc) \n return false\n \n currLoc = leftLoc\n }\n return true\n }\n findIndex(eSearch) {\n this.iterator()\n for (let i = 0; i < this._edgeList.size(); i++) {\n const e = this._edgeList.get(i)\n if (e === eSearch) return i\n }\n return -1\n }\n iterator() {\n return this.getEdges().iterator()\n }\n getEdges() {\n if (this._edgeList === null) \n this._edgeList = new ArrayList(this._edgeMap.values())\n \n return this._edgeList\n }\n getLocation(geomIndex, p, geom) {\n if (this._ptInAreaLocation[geomIndex] === Location.NONE) \n this._ptInAreaLocation[geomIndex] = SimplePointInAreaLocator.locate(p, geom[geomIndex].getGeometry())\n \n return this._ptInAreaLocation[geomIndex]\n }\n toString() {\n const buf = new StringBuffer()\n buf.append('EdgeEndStar: ' + this.getCoordinate())\n buf.append('\\n')\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n buf.append(e)\n buf.append('\\n')\n }\n return buf.toString()\n }\n computeEdgeEndLabels(boundaryNodeRule) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n ee.computeLabel(boundaryNodeRule)\n }\n }\n computeLabelling(geomGraph) {\n this.computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule())\n this.propagateSideLabels(0)\n this.propagateSideLabels(1)\n const hasDimensionalCollapseEdge = [false, false]\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n for (let geomi = 0; geomi < 2; geomi++) \n if (label.isLine(geomi) && label.getLocation(geomi) === Location.BOUNDARY) hasDimensionalCollapseEdge[geomi] = true\n \n }\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n for (let geomi = 0; geomi < 2; geomi++) \n if (label.isAnyNull(geomi)) {\n let loc = Location.NONE\n if (hasDimensionalCollapseEdge[geomi]) {\n loc = Location.EXTERIOR\n } else {\n const p = e.getCoordinate()\n loc = this.getLocation(geomi, p, geomGraph)\n }\n label.setAllLocationsIfNull(geomi, loc)\n }\n \n }\n }\n getDegree() {\n return this._edgeMap.size()\n }\n insertEdgeEnd(e, obj) {\n this._edgeMap.put(e, obj)\n this._edgeList = null\n }\n}\n","import Location from '../geom/Location'\nimport Position from './Position'\nimport TopologyException from '../geom/TopologyException'\nimport EdgeEndStar from './EdgeEndStar'\nimport System from '../../../../java/lang/System'\nimport Label from './Label'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Quadrant from './Quadrant'\nimport Assert from '../util/Assert'\nexport default class DirectedEdgeStar extends EdgeEndStar {\n constructor() {\n super()\n DirectedEdgeStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._resultAreaEdgeList = null\n this._label = null\n this._SCANNING_FOR_INCOMING = 1\n this._LINKING_TO_OUTGOING = 2\n }\n linkResultDirectedEdges() {\n this.getResultAreaEdges()\n let firstOut = null\n let incoming = null\n let state = this._SCANNING_FOR_INCOMING\n for (let i = 0; i < this._resultAreaEdgeList.size(); i++) {\n const nextOut = this._resultAreaEdgeList.get(i)\n const nextIn = nextOut.getSym()\n if (!nextOut.getLabel().isArea()) continue\n if (firstOut === null && nextOut.isInResult()) firstOut = nextOut\n switch (state) {\n case this._SCANNING_FOR_INCOMING:\n if (!nextIn.isInResult()) continue\n incoming = nextIn\n state = this._LINKING_TO_OUTGOING\n break\n case this._LINKING_TO_OUTGOING:\n if (!nextOut.isInResult()) continue\n incoming.setNext(nextOut)\n state = this._SCANNING_FOR_INCOMING\n break\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n if (firstOut === null) throw new TopologyException('no outgoing dirEdge found', this.getCoordinate())\n Assert.isTrue(firstOut.isInResult(), 'unable to link last incoming dirEdge')\n incoming.setNext(firstOut)\n }\n }\n insert(ee) {\n const de = ee\n this.insertEdgeEnd(de, de)\n }\n getRightmostEdge() {\n const edges = this.getEdges()\n const size = edges.size()\n if (size < 1) return null\n const de0 = edges.get(0)\n if (size === 1) return de0\n const deLast = edges.get(size - 1)\n const quad0 = de0.getQuadrant()\n const quad1 = deLast.getQuadrant()\n if (Quadrant.isNorthern(quad0) && Quadrant.isNorthern(quad1)) {\n return de0\n } else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) {\n return deLast\n } else {\n const nonHorizontalEdge = null\n if (de0.getDy() !== 0) return de0; else if (deLast.getDy() !== 0) return deLast\n }\n Assert.shouldNeverReachHere('found two horizontal edges incident on node')\n return null\n }\n print(out) {\n System.out.println('DirectedEdgeStar: ' + this.getCoordinate())\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n out.print('out ')\n de.print(out)\n out.println()\n out.print('in ')\n de.getSym().print(out)\n out.println()\n }\n }\n getResultAreaEdges() {\n if (this._resultAreaEdgeList !== null) return this._resultAreaEdgeList\n this._resultAreaEdgeList = new ArrayList()\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() || de.getSym().isInResult()) this._resultAreaEdgeList.add(de)\n }\n return this._resultAreaEdgeList\n }\n updateLabelling(nodeLabel) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n label.setAllLocationsIfNull(0, nodeLabel.getLocation(0))\n label.setAllLocationsIfNull(1, nodeLabel.getLocation(1))\n }\n }\n linkAllDirectedEdges() {\n this.getEdges()\n let prevOut = null\n let firstIn = null\n for (let i = this._edgeList.size() - 1; i >= 0; i--) {\n const nextOut = this._edgeList.get(i)\n const nextIn = nextOut.getSym()\n if (firstIn === null) firstIn = nextIn\n if (prevOut !== null) nextIn.setNext(prevOut)\n prevOut = nextOut\n }\n firstIn.setNext(prevOut)\n }\n computeDepths() {\n if (arguments.length === 1) {\n const de = arguments[0]\n const edgeIndex = this.findIndex(de)\n const startDepth = de.getDepth(Position.LEFT)\n const targetLastDepth = de.getDepth(Position.RIGHT)\n const nextDepth = this.computeDepths(edgeIndex + 1, this._edgeList.size(), startDepth)\n const lastDepth = this.computeDepths(0, edgeIndex, nextDepth)\n if (lastDepth !== targetLastDepth) throw new TopologyException('depth mismatch at ' + de.getCoordinate())\n } else if (arguments.length === 3) {\n const startIndex = arguments[0], endIndex = arguments[1], startDepth = arguments[2]\n let currDepth = startDepth\n for (let i = startIndex; i < endIndex; i++) {\n const nextDe = this._edgeList.get(i)\n nextDe.setEdgeDepths(Position.RIGHT, currDepth)\n currDepth = nextDe.getDepth(Position.LEFT)\n }\n return currDepth\n }\n }\n mergeSymLabels() {\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n label.merge(de.getSym().getLabel())\n }\n }\n linkMinimalDirectedEdges(er) {\n let firstOut = null\n let incoming = null\n let state = this._SCANNING_FOR_INCOMING\n for (let i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {\n const nextOut = this._resultAreaEdgeList.get(i)\n const nextIn = nextOut.getSym()\n if (firstOut === null && nextOut.getEdgeRing() === er) firstOut = nextOut\n switch (state) {\n case this._SCANNING_FOR_INCOMING:\n if (nextIn.getEdgeRing() !== er) continue\n incoming = nextIn\n state = this._LINKING_TO_OUTGOING\n break\n case this._LINKING_TO_OUTGOING:\n if (nextOut.getEdgeRing() !== er) continue\n incoming.setNextMin(nextOut)\n state = this._SCANNING_FOR_INCOMING\n break\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n Assert.isTrue(firstOut !== null, 'found null for first outgoing dirEdge')\n Assert.isTrue(firstOut.getEdgeRing() === er, 'unable to link last incoming dirEdge')\n incoming.setNextMin(firstOut)\n }\n }\n getOutgoingDegree() {\n if (arguments.length === 0) {\n let degree = 0\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult()) degree++\n }\n return degree\n } else if (arguments.length === 1) {\n const er = arguments[0]\n let degree = 0\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getEdgeRing() === er) degree++\n }\n return degree\n }\n }\n getLabel() {\n return this._label\n }\n findCoveredLineEdges() {\n let startLoc = Location.NONE\n for (let it = this.iterator(); it.hasNext(); ) {\n const nextOut = it.next()\n const nextIn = nextOut.getSym()\n if (!nextOut.isLineEdge()) {\n if (nextOut.isInResult()) {\n startLoc = Location.INTERIOR\n break\n }\n if (nextIn.isInResult()) {\n startLoc = Location.EXTERIOR\n break\n }\n }\n }\n if (startLoc === Location.NONE) return null\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const nextOut = it.next()\n const nextIn = nextOut.getSym()\n if (nextOut.isLineEdge()) {\n nextOut.getEdge().setCovered(currLoc === Location.INTERIOR)\n } else {\n if (nextOut.isInResult()) currLoc = Location.EXTERIOR\n if (nextIn.isInResult()) currLoc = Location.INTERIOR\n }\n }\n }\n computeLabelling(geom) {\n super.computeLabelling.call(this, geom)\n this._label = new Label(Location.NONE)\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n const e = ee.getEdge()\n const eLabel = e.getLabel()\n for (let i = 0; i < 2; i++) {\n const eLoc = eLabel.getLocation(i)\n if (eLoc === Location.INTERIOR || eLoc === Location.BOUNDARY) this._label.setLocation(i, Location.INTERIOR)\n }\n }\n }\n}\n","import DirectedEdgeStar from '../../geomgraph/DirectedEdgeStar'\nimport Node from '../../geomgraph/Node'\nimport NodeFactory from '../../geomgraph/NodeFactory'\nexport default class OverlayNodeFactory extends NodeFactory {\n constructor() {\n super()\n }\n createNode(coord) {\n return new Node(coord, new DirectedEdgeStar())\n }\n}\n","import Comparable from '../../../../java/lang/Comparable'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nexport default class OrientedCoordinateArray {\n constructor() {\n OrientedCoordinateArray.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._orientation = null\n const pts = arguments[0]\n this._pts = pts\n this._orientation = OrientedCoordinateArray.orientation(pts)\n }\n static orientation(pts) {\n return CoordinateArrays.increasingDirection(pts) === 1\n }\n static compareOriented(pts1, orientation1, pts2, orientation2) {\n const dir1 = orientation1 ? 1 : -1\n const dir2 = orientation2 ? 1 : -1\n const limit1 = orientation1 ? pts1.length : -1\n const limit2 = orientation2 ? pts2.length : -1\n let i1 = orientation1 ? 0 : pts1.length - 1\n let i2 = orientation2 ? 0 : pts2.length - 1\n while (true) {\n const compPt = pts1[i1].compareTo(pts2[i2])\n if (compPt !== 0) return compPt\n i1 += dir1\n i2 += dir2\n const done1 = i1 === limit1\n const done2 = i2 === limit2\n if (done1 && !done2) return -1\n if (!done1 && done2) return 1\n if (done1 && done2) return 0\n }\n }\n compareTo(o1) {\n const oca = o1\n const comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation)\n return comp\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import OrientedCoordinateArray from '../noding/OrientedCoordinateArray'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class EdgeList {\n constructor() {\n EdgeList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new ArrayList()\n this._ocaMap = new TreeMap()\n }\n print(out) {\n out.print('MULTILINESTRING ( ')\n for (let j = 0; j < this._edges.size(); j++) {\n const e = this._edges.get(j)\n if (j > 0) out.print(',')\n out.print('(')\n const pts = e.getCoordinates()\n for (let i = 0; i < pts.length; i++) {\n if (i > 0) out.print(',')\n out.print(pts[i].x + ' ' + pts[i].y)\n }\n out.println(')')\n }\n out.print(') ')\n }\n addAll(edgeColl) {\n for (let i = edgeColl.iterator(); i.hasNext(); ) \n this.add(i.next())\n \n }\n findEdgeIndex(e) {\n for (let i = 0; i < this._edges.size(); i++) \n if (this._edges.get(i).equals(e)) return i\n \n return -1\n }\n iterator() {\n return this._edges.iterator()\n }\n getEdges() {\n return this._edges\n }\n get(i) {\n return this._edges.get(i)\n }\n findEqualEdge(e) {\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n const matchEdge = this._ocaMap.get(oca)\n return matchEdge\n }\n add(e) {\n this._edges.add(e)\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n this._ocaMap.put(oca, e)\n }\n}\n","export default class SegmentIntersector {\n processIntersections(e0, segIndex0, e1, segIndex1) {}\n isDone() {}\n}\n","import SegmentIntersector from './SegmentIntersector'\nexport default class IntersectionAdder {\n constructor() {\n IntersectionAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hasIntersection = false\n this._hasProper = false\n this._hasProperInterior = false\n this._hasInterior = false\n this._properIntersectionPoint = null\n this._li = null\n this._isSelfIntersection = null\n this.numIntersections = 0\n this.numInteriorIntersections = 0\n this.numProperIntersections = 0\n this.numTests = 0\n const li = arguments[0]\n this._li = li\n }\n static isAdjacentSegments(i1, i2) {\n return Math.abs(i1 - i2) === 1\n }\n isTrivialIntersection(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1) \n if (this._li.getIntersectionNum() === 1) {\n if (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) return true\n if (e0.isClosed()) {\n const maxSegIndex = e0.size() - 1\n if (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) \n return true\n \n }\n }\n \n return false\n }\n getProperIntersectionPoint() {\n return this._properIntersectionPoint\n }\n hasProperInteriorIntersection() {\n return this._hasProperInterior\n }\n getLineIntersector() {\n return this._li\n }\n hasProperIntersection() {\n return this._hasProper\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n this.numTests++\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) {\n this.numIntersections++\n if (this._li.isInteriorIntersection()) {\n this.numInteriorIntersections++\n this._hasInterior = true\n }\n if (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n this._hasIntersection = true\n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n if (this._li.isProper()) {\n this.numProperIntersections++\n this._hasProper = true\n this._hasProperInterior = true\n }\n }\n }\n }\n hasIntersection() {\n return this._hasIntersection\n }\n isDone() {\n return false\n }\n hasInteriorIntersection() {\n return this._hasInterior\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import Location from '../../geom/Location'\nimport BufferSubgraph from './BufferSubgraph'\nimport PolygonBuilder from '../overlay/PolygonBuilder'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Position from '../../geomgraph/Position'\nimport MCIndexNoder from '../../noding/MCIndexNoder'\nimport OffsetCurveBuilder from './OffsetCurveBuilder'\nimport Collections from '../../../../../java/util/Collections'\nimport SubgraphDepthLocater from './SubgraphDepthLocater'\nimport OffsetCurveSetBuilder from './OffsetCurveSetBuilder'\nimport Label from '../../geomgraph/Label'\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory'\nimport EdgeList from '../../geomgraph/EdgeList'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport IntersectionAdder from '../../noding/IntersectionAdder'\nimport Edge from '../../geomgraph/Edge'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class BufferBuilder {\n constructor() {\n BufferBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._bufParams = null\n this._workingPrecisionModel = null\n this._workingNoder = null\n this._geomFact = null\n this._graph = null\n this._edgeList = new EdgeList()\n const bufParams = arguments[0]\n this._bufParams = bufParams\n }\n static depthDelta(label) {\n const lLoc = label.getLocation(0, Position.LEFT)\n const rLoc = label.getLocation(0, Position.RIGHT)\n if (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) return 1; else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) return -1\n return 0\n }\n static convertSegStrings(it) {\n const fact = new GeometryFactory()\n const lines = new ArrayList()\n while (it.hasNext()) {\n const ss = it.next()\n const line = fact.createLineString(ss.getCoordinates())\n lines.add(line)\n }\n return fact.buildGeometry(lines)\n }\n setWorkingPrecisionModel(pm) {\n this._workingPrecisionModel = pm\n }\n insertUniqueEdge(e) {\n const existingEdge = this._edgeList.findEqualEdge(e)\n if (existingEdge !== null) {\n const existingLabel = existingEdge.getLabel()\n let labelToMerge = e.getLabel()\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel())\n labelToMerge.flip()\n }\n existingLabel.merge(labelToMerge)\n const mergeDelta = BufferBuilder.depthDelta(labelToMerge)\n const existingDelta = existingEdge.getDepthDelta()\n const newDelta = existingDelta + mergeDelta\n existingEdge.setDepthDelta(newDelta)\n } else {\n this._edgeList.add(e)\n e.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()))\n }\n }\n buildSubgraphs(subgraphList, polyBuilder) {\n const processedGraphs = new ArrayList()\n for (let i = subgraphList.iterator(); i.hasNext(); ) {\n const subgraph = i.next()\n const p = subgraph.getRightmostCoordinate()\n const locater = new SubgraphDepthLocater(processedGraphs)\n const outsideDepth = locater.getDepth(p)\n subgraph.computeDepth(outsideDepth)\n subgraph.findResultEdges()\n processedGraphs.add(subgraph)\n polyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes())\n }\n }\n createSubgraphs(graph) {\n const subgraphList = new ArrayList()\n for (let i = graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (!node.isVisited()) {\n const subgraph = new BufferSubgraph()\n subgraph.create(node)\n subgraphList.add(subgraph)\n }\n }\n Collections.sort(subgraphList, Collections.reverseOrder())\n return subgraphList\n }\n createEmptyResultGeometry() {\n const emptyGeom = this._geomFact.createPolygon()\n return emptyGeom\n }\n getNoder(precisionModel) {\n if (this._workingNoder !== null) return this._workingNoder\n const noder = new MCIndexNoder()\n const li = new RobustLineIntersector()\n li.setPrecisionModel(precisionModel)\n noder.setSegmentIntersector(new IntersectionAdder(li))\n return noder\n }\n buffer(g, distance) {\n let precisionModel = this._workingPrecisionModel\n if (precisionModel === null) precisionModel = g.getPrecisionModel()\n this._geomFact = g.getFactory()\n const curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams)\n const curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder)\n const bufferSegStrList = curveSetBuilder.getCurves()\n if (bufferSegStrList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n this.computeNodedEdges(bufferSegStrList, precisionModel)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._graph.addEdges(this._edgeList.getEdges())\n const subgraphList = this.createSubgraphs(this._graph)\n const polyBuilder = new PolygonBuilder(this._geomFact)\n this.buildSubgraphs(subgraphList, polyBuilder)\n const resultPolyList = polyBuilder.getPolygons()\n if (resultPolyList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n const resultGeom = this._geomFact.buildGeometry(resultPolyList)\n return resultGeom\n }\n computeNodedEdges(bufferSegStrList, precisionModel) {\n const noder = this.getNoder(precisionModel)\n noder.computeNodes(bufferSegStrList)\n const nodedSegStrings = noder.getNodedSubstrings()\n for (let i = nodedSegStrings.iterator(); i.hasNext(); ) {\n const segStr = i.next()\n const pts = segStr.getCoordinates()\n if (pts.length === 2 && pts[0].equals2D(pts[1])) continue\n const oldLabel = segStr.getData()\n const edge = new Edge(segStr.getCoordinates(), new Label(oldLabel))\n this.insertUniqueEdge(edge)\n }\n }\n setNoder(noder) {\n this._workingNoder = noder\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nexport default class NodingValidator {\n constructor() {\n NodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n const segStrings = arguments[0]\n this._segStrings = segStrings\n }\n checkEndPtVertexIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n this.checkEndPtVertexIntersections(pts[0], this._segStrings)\n this.checkEndPtVertexIntersections(pts[pts.length - 1], this._segStrings)\n }\n } else if (arguments.length === 2) {\n const testPt = arguments[0], segStrings = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n for (let j = 1; j < pts.length - 1; j++) \n if (pts[j].equals(testPt)) throw new RuntimeException('found endpt/interior pt intersection at index ' + j + ' :pt ' + testPt)\n \n }\n }\n }\n checkInteriorIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss0 = i.next()\n for (let j = this._segStrings.iterator(); j.hasNext(); ) {\n const ss1 = j.next()\n this.checkInteriorIntersections(ss0, ss1)\n }\n }\n } else if (arguments.length === 2) {\n const ss0 = arguments[0], ss1 = arguments[1]\n const pts0 = ss0.getCoordinates()\n const pts1 = ss1.getCoordinates()\n for (let i0 = 0; i0 < pts0.length - 1; i0++) \n for (let i1 = 0; i1 < pts1.length - 1; i1++) \n this.checkInteriorIntersections(ss0, i0, ss1, i1)\n \n \n } else if (arguments.length === 4) {\n const e0 = arguments[0], segIndex0 = arguments[1], e1 = arguments[2], segIndex1 = arguments[3]\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) \n throw new RuntimeException('found non-noded intersection at ' + p00 + '-' + p01 + ' and ' + p10 + '-' + p11)\n \n \n }\n }\n checkValid() {\n this.checkEndPtVertexIntersections()\n this.checkInteriorIntersections()\n this.checkCollapses()\n }\n checkCollapses() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.checkCollapses(ss)\n }\n } else if (arguments.length === 1) {\n const ss = arguments[0]\n const pts = ss.getCoordinates()\n for (let i = 0; i < pts.length - 2; i++) \n this.checkCollapse(pts[i], pts[i + 1], pts[i + 2])\n \n }\n }\n hasInteriorIntersection(li, p0, p1) {\n for (let i = 0; i < li.getIntersectionNum(); i++) {\n const intPt = li.getIntersection(i)\n if (!(intPt.equals(p0) || intPt.equals(p1))) return true\n }\n return false\n }\n checkCollapse(p0, p1, p2) {\n if (p0.equals(p2)) throw new RuntimeException('found non-noded collapse at ' + NodingValidator.fact.createLineString([p0, p1, p2]))\n }\n}\nNodingValidator.fact = new GeometryFactory()\n","import Coordinate from '../../geom/Coordinate'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Envelope from '../../geom/Envelope'\nimport Assert from '../../util/Assert'\nexport default class HotPixel {\n constructor() {\n HotPixel.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._pt = null\n this._originalPt = null\n this._ptScaled = null\n this._p0Scaled = null\n this._p1Scaled = null\n this._scaleFactor = null\n this._minx = null\n this._maxx = null\n this._miny = null\n this._maxy = null\n this._corner = new Array(4).fill(null)\n this._safeEnv = null\n const pt = arguments[0], scaleFactor = arguments[1], li = arguments[2]\n this._originalPt = pt\n this._pt = pt\n this._scaleFactor = scaleFactor\n this._li = li\n if (scaleFactor <= 0) throw new IllegalArgumentException('Scale factor must be non-zero')\n if (scaleFactor !== 1.0) {\n this._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y))\n this._p0Scaled = new Coordinate()\n this._p1Scaled = new Coordinate()\n }\n this.initCorners(this._pt)\n }\n intersectsScaled(p0, p1) {\n const segMinx = Math.min(p0.x, p1.x)\n const segMaxx = Math.max(p0.x, p1.x)\n const segMiny = Math.min(p0.y, p1.y)\n const segMaxy = Math.max(p0.y, p1.y)\n const isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy\n if (isOutsidePixelEnv) return false\n const intersects = this.intersectsToleranceSquare(p0, p1)\n Assert.isTrue(!(isOutsidePixelEnv && intersects), 'Found bad envelope test')\n return intersects\n }\n initCorners(pt) {\n const tolerance = 0.5\n this._minx = pt.x - tolerance\n this._maxx = pt.x + tolerance\n this._miny = pt.y - tolerance\n this._maxy = pt.y + tolerance\n this._corner[0] = new Coordinate(this._maxx, this._maxy)\n this._corner[1] = new Coordinate(this._minx, this._maxy)\n this._corner[2] = new Coordinate(this._minx, this._miny)\n this._corner[3] = new Coordinate(this._maxx, this._miny)\n }\n intersects(p0, p1) {\n if (this._scaleFactor === 1.0) return this.intersectsScaled(p0, p1)\n this.copyScaled(p0, this._p0Scaled)\n this.copyScaled(p1, this._p1Scaled)\n return this.intersectsScaled(this._p0Scaled, this._p1Scaled)\n }\n scale(val) {\n return Math.round(val * this._scaleFactor)\n }\n getCoordinate() {\n return this._originalPt\n }\n copyScaled(p, pScaled) {\n pScaled.x = this.scale(p.x)\n pScaled.y = this.scale(p.y)\n }\n getSafeEnvelope() {\n if (this._safeEnv === null) {\n const safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor\n this._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance)\n }\n return this._safeEnv\n }\n intersectsPixelClosure(p0, p1) {\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.hasIntersection()) return true\n return false\n }\n intersectsToleranceSquare(p0, p1) {\n let intersectsLeft = false\n let intersectsBottom = false\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.isProper()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsLeft = true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsBottom = true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.isProper()) return true\n if (intersectsLeft && intersectsBottom) return true\n if (p0.equals(this._pt)) return true\n if (p1.equals(this._pt)) return true\n return false\n }\n addSnappedNode(segStr, segIndex) {\n const p0 = segStr.getCoordinate(segIndex)\n const p1 = segStr.getCoordinate(segIndex + 1)\n if (this.intersects(p0, p1)) {\n segStr.addIntersection(this.getCoordinate(), segIndex)\n return true\n }\n return false\n }\n}\nHotPixel.SAFE_ENV_EXPANSION_FACTOR = 0.75\n","import LineSegment from '../../geom/LineSegment'\nexport default class MonotoneChainSelectAction {\n constructor() {\n MonotoneChainSelectAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.selectedSegment = new LineSegment()\n }\n select() {\n if (arguments.length === 1) {\n const seg = arguments[0]\n } else if (arguments.length === 2) {\n const mc = arguments[0], startIndex = arguments[1]\n mc.getLineSegment(startIndex, this.selectedSegment)\n this.select(this.selectedSegment)\n }\n }\n}\n","import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction'\nimport MonotoneChain from '../../index/chain/MonotoneChain'\nimport ItemVisitor from '../../index/ItemVisitor'\nexport default class MCIndexPointSnapper {\n constructor() {\n MCIndexPointSnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._index = null\n const index = arguments[0]\n this._index = index\n }\n snap() {\n if (arguments.length === 1) {\n const hotPixel = arguments[0]\n return this.snap(hotPixel, null, -1)\n } else if (arguments.length === 3) {\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n const pixelEnv = hotPixel.getSafeEnvelope()\n const hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex)\n this._index.query(pixelEnv, new (class {\n get interfaces_() {\n return [ItemVisitor]\n }\n visitItem(item) {\n const testChain = item\n testChain.select(pixelEnv, hotPixelSnapAction)\n }\n })())\n return hotPixelSnapAction.isNodeAdded()\n }\n }\n}\nclass HotPixelSnapAction extends MonotoneChainSelectAction {\n constructor() {\n super()\n HotPixelSnapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hotPixel = null\n this._parentEdge = null\n this._hotPixelVertexIndex = null\n this._isNodeAdded = false\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n this._hotPixel = hotPixel\n this._parentEdge = parentEdge\n this._hotPixelVertexIndex = hotPixelVertexIndex\n }\n isNodeAdded() {\n return this._isNodeAdded\n }\n select() {\n if (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n const mc = arguments[0], startIndex = arguments[1]\n const ss = mc.getContext()\n if (this._parentEdge === ss) \n if (startIndex === this._hotPixelVertexIndex || startIndex + 1 === this._hotPixelVertexIndex) return null\n \n this._isNodeAdded |= this._hotPixel.addSnappedNode(ss, startIndex)\n } else {\n return super.select.apply(this, arguments)\n }\n }\n}\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction\n","import SegmentIntersector from './SegmentIntersector'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class InteriorIntersectionFinderAdder {\n constructor() {\n InteriorIntersectionFinderAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._interiorIntersections = null\n const li = arguments[0]\n this._li = li\n this._interiorIntersections = new ArrayList()\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isInteriorIntersection()) {\n for (let intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) \n this._interiorIntersections.add(this._li.getIntersection(intIndex))\n \n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n }\n \n }\n isDone() {\n return false\n }\n getInteriorIntersections() {\n return this._interiorIntersections\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import NodingValidator from '../NodingValidator'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport Noder from '../Noder'\nimport MCIndexNoder from '../MCIndexNoder'\nimport NodedSegmentString from '../NodedSegmentString'\nimport HotPixel from './HotPixel'\nimport Exception from '../../../../../java/lang/Exception'\nimport MCIndexPointSnapper from './MCIndexPointSnapper'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport InteriorIntersectionFinderAdder from '../InteriorIntersectionFinderAdder'\nexport default class MCIndexSnapRounder {\n constructor() {\n MCIndexSnapRounder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pm = null\n this._li = null\n this._scaleFactor = null\n this._noder = null\n this._pointSnapper = null\n this._nodedSegStrings = null\n const pm = arguments[0]\n this._pm = pm\n this._li = new RobustLineIntersector()\n this._li.setPrecisionModel(pm)\n this._scaleFactor = pm.getScale()\n }\n checkCorrectness(inputSegmentStrings) {\n const resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings)\n const nv = new NodingValidator(resultSegStrings)\n try {\n nv.checkValid()\n } catch (ex) {\n if (ex instanceof Exception) \n ex.printStackTrace()\n else throw ex\n } finally {}\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n snapRound(segStrings, li) {\n const intersections = this.findInteriorIntersections(segStrings, li)\n this.computeIntersectionSnaps(intersections)\n this.computeVertexSnaps(segStrings)\n }\n findInteriorIntersections(segStrings, li) {\n const intFinderAdder = new InteriorIntersectionFinderAdder(li)\n this._noder.setSegmentIntersector(intFinderAdder)\n this._noder.computeNodes(segStrings)\n return intFinderAdder.getInteriorIntersections()\n }\n computeVertexSnaps() {\n if (hasInterface(arguments[0], Collection)) {\n const edges = arguments[0]\n for (let i0 = edges.iterator(); i0.hasNext(); ) {\n const edge0 = i0.next()\n this.computeVertexSnaps(edge0)\n }\n } else if (arguments[0] instanceof NodedSegmentString) {\n const e = arguments[0]\n const pts0 = e.getCoordinates()\n for (let i = 0; i < pts0.length; i++) {\n const hotPixel = new HotPixel(pts0[i], this._scaleFactor, this._li)\n const isNodeAdded = this._pointSnapper.snap(hotPixel, e, i)\n if (isNodeAdded) \n e.addIntersection(pts0[i], i)\n \n }\n }\n }\n computeNodes(inputSegmentStrings) {\n this._nodedSegStrings = inputSegmentStrings\n this._noder = new MCIndexNoder()\n this._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex())\n this.snapRound(inputSegmentStrings, this._li)\n }\n computeIntersectionSnaps(snapPts) {\n for (let it = snapPts.iterator(); it.hasNext(); ) {\n const snapPt = it.next()\n const hotPixel = new HotPixel(snapPt, this._scaleFactor, this._li)\n this._pointSnapper.snap(hotPixel)\n }\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import BufferParameters from './BufferParameters'\nimport Geometry from '../../geom/Geometry'\nimport BufferBuilder from './BufferBuilder'\nimport ScaledNoder from '../../noding/ScaledNoder'\nimport TopologyException from '../../geom/TopologyException'\nimport MathUtil from '../../math/MathUtil'\nimport PrecisionModel from '../../geom/PrecisionModel'\nimport RuntimeException from '../../../../../java/lang/RuntimeException'\nimport MCIndexSnapRounder from '../../noding/snapround/MCIndexSnapRounder'\nexport default class BufferOp {\n constructor() {\n BufferOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._argGeom = null\n this._distance = null\n this._bufParams = new BufferParameters()\n this._resultGeometry = null\n this._saveException = null\n if (arguments.length === 1) {\n const g = arguments[0]\n this._argGeom = g\n } else if (arguments.length === 2) {\n const g = arguments[0], bufParams = arguments[1]\n this._argGeom = g\n this._bufParams = bufParams\n }\n }\n static bufferOp() {\n if (arguments.length === 2) {\n const g = arguments[0], distance = arguments[1]\n const gBuf = new BufferOp(g)\n const geomBuf = gBuf.getResultGeometry(distance)\n return geomBuf\n } else if (arguments.length === 3) {\n if (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n } else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], params = arguments[2]\n const bufOp = new BufferOp(g, params)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n } else if (arguments.length === 4) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2], endCapStyle = arguments[3]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n bufOp.setEndCapStyle(endCapStyle)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n }\n static precisionScaleFactor(g, distance, maxPrecisionDigits) {\n const env = g.getEnvelopeInternal()\n const envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()))\n const expandByDistance = distance > 0.0 ? distance : 0.0\n const bufEnvMax = envMax + 2 * expandByDistance\n const bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0)\n const minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits\n const scaleFactor = Math.pow(10.0, minUnitLog10)\n return scaleFactor\n }\n bufferFixedPrecision(fixedPM) {\n const noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale())\n const bufBuilder = new BufferBuilder(this._bufParams)\n bufBuilder.setWorkingPrecisionModel(fixedPM)\n bufBuilder.setNoder(noder)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n }\n bufferReducedPrecision() {\n if (arguments.length === 0) {\n for (let precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n try {\n this.bufferReducedPrecision(precDigits)\n } catch (ex) {\n if (ex instanceof TopologyException) \n this._saveException = ex\n else throw ex\n } finally {}\n if (this._resultGeometry !== null) return null\n }\n throw this._saveException\n } else if (arguments.length === 1) {\n const precisionDigits = arguments[0]\n const sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits)\n const fixedPM = new PrecisionModel(sizeBasedScaleFactor)\n this.bufferFixedPrecision(fixedPM)\n }\n }\n computeGeometry() {\n this.bufferOriginalPrecision()\n if (this._resultGeometry !== null) return null\n const argPM = this._argGeom.getFactory().getPrecisionModel()\n if (argPM.getType() === PrecisionModel.FIXED) this.bufferFixedPrecision(argPM); else this.bufferReducedPrecision()\n }\n setQuadrantSegments(quadrantSegments) {\n this._bufParams.setQuadrantSegments(quadrantSegments)\n }\n bufferOriginalPrecision() {\n try {\n const bufBuilder = new BufferBuilder(this._bufParams)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n } catch (ex) {\n if (ex instanceof RuntimeException) \n this._saveException = ex\n else throw ex\n } finally {}\n }\n getResultGeometry(distance) {\n this._distance = distance\n this.computeGeometry()\n return this._resultGeometry\n }\n setEndCapStyle(endCapStyle) {\n this._bufParams.setEndCapStyle(endCapStyle)\n }\n}\nBufferOp.CAP_ROUND = BufferParameters.CAP_ROUND\nBufferOp.CAP_BUTT = BufferParameters.CAP_FLAT\nBufferOp.CAP_FLAT = BufferParameters.CAP_FLAT\nBufferOp.CAP_SQUARE = BufferParameters.CAP_SQUARE\nBufferOp.MAX_PRECISION_DIGITS = 12\n","import WKTWriter from '../../io/WKTWriter'\nexport default class GeometryLocation {\n constructor() {\n GeometryLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._component = null\n this._segIndex = null\n this._pt = null\n if (arguments.length === 2) {\n const component = arguments[0], pt = arguments[1]\n GeometryLocation.constructor_.call(this, component, GeometryLocation.INSIDE_AREA, pt)\n } else if (arguments.length === 3) {\n const component = arguments[0], segIndex = arguments[1], pt = arguments[2]\n this._component = component\n this._segIndex = segIndex\n this._pt = pt\n }\n }\n getSegmentIndex() {\n return this._segIndex\n }\n getCoordinate() {\n return this._pt\n }\n isInsideArea() {\n return this._segIndex === GeometryLocation.INSIDE_AREA\n }\n toString() {\n return this._component.getGeometryType() + '[' + this._segIndex + ']' + '-' + WKTWriter.toPoint(this._pt)\n }\n getGeometryComponent() {\n return this._component\n }\n}\nGeometryLocation.INSIDE_AREA = -1\n","import LineString from '../../geom/LineString'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport GeometryLocation from './GeometryLocation'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GeometryFilter from '../../geom/GeometryFilter'\nexport default class ConnectedElementLocationFilter {\n constructor() {\n ConnectedElementLocationFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._locations = null\n const locations = arguments[0]\n this._locations = locations\n }\n static getLocations(geom) {\n const locations = new ArrayList()\n geom.apply(new ConnectedElementLocationFilter(locations))\n return locations\n }\n filter(geom) {\n if (geom.isEmpty()) return null\n if (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate()))\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import PointLocator from '../../algorithm/PointLocator'\nimport PolygonExtracter from '../../geom/util/PolygonExtracter'\nimport Location from '../../geom/Location'\nimport LineString from '../../geom/LineString'\nimport hasInterface from '../../../../../hasInterface'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport GeometryLocation from './GeometryLocation'\nimport Double from '../../../../../java/lang/Double'\nimport PointExtracter from '../../geom/util/PointExtracter'\nimport ConnectedElementLocationFilter from './ConnectedElementLocationFilter'\nimport LineSegment from '../../geom/LineSegment'\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter'\nimport Envelope from '../../geom/Envelope'\nimport List from '../../../../../java/util/List'\nimport Distance from '../../algorithm/Distance'\nexport default class DistanceOp {\n constructor() {\n DistanceOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._terminateDistance = 0.0\n this._ptLocator = new PointLocator()\n this._minDistanceLocation = null\n this._minDistance = Double.MAX_VALUE\n if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n DistanceOp.constructor_.call(this, g0, g1, 0.0)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], terminateDistance = arguments[2]\n this._geom = new Array(2).fill(null)\n this._geom[0] = g0\n this._geom[1] = g1\n this._terminateDistance = terminateDistance\n }\n }\n static distance(g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.distance()\n }\n static isWithinDistance(g0, g1, distance) {\n const envDist = g0.getEnvelopeInternal().distance(g1.getEnvelopeInternal())\n if (envDist > distance) return false\n const distOp = new DistanceOp(g0, g1, distance)\n return distOp.distance() <= distance\n }\n static nearestPoints(g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.nearestPoints()\n }\n computeContainmentDistance() {\n if (arguments.length === 0) {\n const locPtPoly = new Array(2).fill(null)\n this.computeContainmentDistance(0, locPtPoly)\n if (this._minDistance <= this._terminateDistance) return null\n this.computeContainmentDistance(1, locPtPoly)\n } else if (arguments.length === 2) {\n const polyGeomIndex = arguments[0], locPtPoly = arguments[1]\n const polyGeom = this._geom[polyGeomIndex]\n if (polyGeom.getDimension() < 2) return null\n const locationsIndex = 1 - polyGeomIndex\n const polys = PolygonExtracter.getPolygons(polyGeom)\n if (polys.size() > 0) {\n const insideLocs = ConnectedElementLocationFilter.getLocations(this._geom[locationsIndex])\n this.computeContainmentDistance(insideLocs, polys, locPtPoly)\n if (this._minDistance <= this._terminateDistance) {\n this._minDistanceLocation[locationsIndex] = locPtPoly[0]\n this._minDistanceLocation[polyGeomIndex] = locPtPoly[1]\n return null\n }\n }\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n const locs = arguments[0], polys = arguments[1], locPtPoly = arguments[2]\n for (let i = 0; i < locs.size(); i++) {\n const loc = locs.get(i)\n for (let j = 0; j < polys.size(); j++) {\n this.computeContainmentDistance(loc, polys.get(j), locPtPoly)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof GeometryLocation && arguments[1] instanceof Polygon)) {\n const ptLoc = arguments[0], poly = arguments[1], locPtPoly = arguments[2]\n const pt = ptLoc.getCoordinate()\n if (Location.EXTERIOR !== this._ptLocator.locate(pt, poly)) {\n this._minDistance = 0.0\n locPtPoly[0] = ptLoc\n locPtPoly[1] = new GeometryLocation(poly, pt)\n \n return null\n }\n }\n }\n }\n computeMinDistanceLinesPoints(lines, points, locGeom) {\n for (let i = 0; i < lines.size(); i++) {\n const line = lines.get(i)\n for (let j = 0; j < points.size(); j++) {\n const pt = points.get(j)\n this.computeMinDistance(line, pt, locGeom)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n computeFacetDistance() {\n const locGeom = new Array(2).fill(null)\n const lines0 = LinearComponentExtracter.getLines(this._geom[0])\n const lines1 = LinearComponentExtracter.getLines(this._geom[1])\n const pts0 = PointExtracter.getPoints(this._geom[0])\n const pts1 = PointExtracter.getPoints(this._geom[1])\n this.computeMinDistanceLines(lines0, lines1, locGeom)\n this.updateMinDistance(locGeom, false)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistanceLinesPoints(lines0, pts1, locGeom)\n this.updateMinDistance(locGeom, false)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistanceLinesPoints(lines1, pts0, locGeom)\n this.updateMinDistance(locGeom, true)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistancePoints(pts0, pts1, locGeom)\n this.updateMinDistance(locGeom, false)\n }\n nearestLocations() {\n this.computeMinDistance()\n return this._minDistanceLocation\n }\n updateMinDistance(locGeom, flip) {\n if (locGeom[0] === null) return null\n if (flip) {\n this._minDistanceLocation[0] = locGeom[1]\n this._minDistanceLocation[1] = locGeom[0]\n } else {\n this._minDistanceLocation[0] = locGeom[0]\n this._minDistanceLocation[1] = locGeom[1]\n }\n }\n nearestPoints() {\n this.computeMinDistance()\n const nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()]\n return nearestPts\n }\n computeMinDistance() {\n if (arguments.length === 0) {\n if (this._minDistanceLocation !== null) return null\n this._minDistanceLocation = new Array(2).fill(null)\n this.computeContainmentDistance()\n if (this._minDistance <= this._terminateDistance) return null\n this.computeFacetDistance()\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof Point)) {\n const line = arguments[0], pt = arguments[1], locGeom = arguments[2]\n if (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > this._minDistance) return null\n const coord0 = line.getCoordinates()\n const coord = pt.getCoordinate()\n for (let i = 0; i < coord0.length - 1; i++) {\n const dist = Distance.pointToSegment(coord, coord0[i], coord0[i + 1])\n if (dist < this._minDistance) {\n this._minDistance = dist\n const seg = new LineSegment(coord0[i], coord0[i + 1])\n const segClosestPoint = seg.closestPoint(coord)\n locGeom[0] = new GeometryLocation(line, i, segClosestPoint)\n locGeom[1] = new GeometryLocation(pt, 0, coord)\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof LineString)) {\n const line0 = arguments[0], line1 = arguments[1], locGeom = arguments[2]\n if (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) > this._minDistance) return null\n const coord0 = line0.getCoordinates()\n const coord1 = line1.getCoordinates()\n for (let i = 0; i < coord0.length - 1; i++) {\n const segEnv0 = new Envelope(coord0[i], coord0[i + 1])\n if (segEnv0.distance(line1.getEnvelopeInternal()) > this._minDistance) continue\n for (let j = 0; j < coord1.length - 1; j++) {\n const segEnv1 = new Envelope(coord1[j], coord1[j + 1])\n if (segEnv0.distance(segEnv1) > this._minDistance) continue\n const dist = Distance.segmentToSegment(coord0[i], coord0[i + 1], coord1[j], coord1[j + 1])\n if (dist < this._minDistance) {\n this._minDistance = dist\n const seg0 = new LineSegment(coord0[i], coord0[i + 1])\n const seg1 = new LineSegment(coord1[j], coord1[j + 1])\n const closestPt = seg0.closestPoints(seg1)\n locGeom[0] = new GeometryLocation(line0, i, closestPt[0])\n locGeom[1] = new GeometryLocation(line1, j, closestPt[1])\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n }\n }\n computeMinDistancePoints(points0, points1, locGeom) {\n for (let i = 0; i < points0.size(); i++) {\n const pt0 = points0.get(i)\n for (let j = 0; j < points1.size(); j++) {\n const pt1 = points1.get(j)\n const dist = pt0.getCoordinate().distance(pt1.getCoordinate())\n if (dist < this._minDistance) {\n this._minDistance = dist\n locGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate())\n locGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate())\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n distance() {\n if (this._geom[0] === null || this._geom[1] === null) throw new IllegalArgumentException('null geometries are not supported')\n if (this._geom[0].isEmpty() || this._geom[1].isEmpty()) return 0.0\n this.computeMinDistance()\n return this._minDistance\n }\n computeMinDistanceLines(lines0, lines1, locGeom) {\n for (let i = 0; i < lines0.size(); i++) {\n const line0 = lines0.get(i)\n for (let j = 0; j < lines1.size(); j++) {\n const line1 = lines1.get(j)\n this.computeMinDistance(line0, line1, locGeom)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n}\n","import CoordinateList from '../../geom/CoordinateList'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class EdgeString {\n constructor() {\n EdgeString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n this._directedEdges = new ArrayList()\n this._coordinates = null\n const factory = arguments[0]\n this._factory = factory\n }\n getCoordinates() {\n if (this._coordinates === null) {\n let forwardDirectedEdges = 0\n let reverseDirectedEdges = 0\n const coordinateList = new CoordinateList()\n for (let i = this._directedEdges.iterator(); i.hasNext(); ) {\n const directedEdge = i.next()\n if (directedEdge.getEdgeDirection()) \n forwardDirectedEdges++\n else \n reverseDirectedEdges++\n \n coordinateList.add(directedEdge.getEdge().getLine().getCoordinates(), false, directedEdge.getEdgeDirection())\n }\n this._coordinates = coordinateList.toCoordinateArray()\n if (reverseDirectedEdges > forwardDirectedEdges) \n CoordinateArrays.reverse(this._coordinates)\n \n }\n return this._coordinates\n }\n toLineString() {\n return this._factory.createLineString(this.getCoordinates())\n }\n add(directedEdge) {\n this._directedEdges.add(directedEdge)\n }\n}\n","export default class GraphComponent {\n constructor() {\n GraphComponent.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isMarked = false\n this._isVisited = false\n this._data = null\n }\n static getComponentWithVisitedState(i, visitedState) {\n while (i.hasNext()) {\n const comp = i.next()\n if (comp.isVisited() === visitedState) return comp\n }\n return null\n }\n static setVisited(i, visited) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setVisited(visited)\n }\n }\n static setMarked(i, marked) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setMarked(marked)\n }\n }\n setVisited(isVisited) {\n this._isVisited = isVisited\n }\n isMarked() {\n return this._isMarked\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n setMarked(isMarked) {\n this._isMarked = isMarked\n }\n getContext() {\n return this._data\n }\n isVisited() {\n return this._isVisited\n }\n setContext(data) {\n this._data = data\n }\n}\n","import Orientation from '../algorithm/Orientation'\nimport Comparable from '../../../../java/lang/Comparable'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Quadrant from '../geomgraph/Quadrant'\nimport GraphComponent from './GraphComponent'\nexport default class DirectedEdge extends GraphComponent {\n constructor() {\n super()\n DirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentEdge = null\n this._from = null\n this._to = null\n this._p0 = null\n this._p1 = null\n this._sym = null\n this._edgeDirection = null\n this._quadrant = null\n this._angle = null\n if (arguments.length === 0) {} else if (arguments.length === 4) {\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n this._from = from\n this._to = to\n this._edgeDirection = edgeDirection\n this._p0 = from.getCoordinate()\n this._p1 = directionPt\n const dx = this._p1.x - this._p0.x\n const dy = this._p1.y - this._p0.y\n this._quadrant = Quadrant.quadrant(dx, dy)\n this._angle = Math.atan2(dy, dx)\n }\n }\n static toEdges(dirEdges) {\n const edges = new ArrayList()\n for (let i = dirEdges.iterator(); i.hasNext(); ) \n edges.add(i.next()._parentEdge)\n \n return edges\n }\n isRemoved() {\n return this._parentEdge === null\n }\n compareDirection(e) {\n if (this._quadrant > e._quadrant) return 1\n if (this._quadrant < e._quadrant) return -1\n return Orientation.index(e._p0, e._p1, this._p1)\n }\n getCoordinate() {\n return this._from.getCoordinate()\n }\n print(out) {\n const className = this.getClass().getName()\n const lastDotPos = className.lastIndexOf('.')\n const name = className.substring(lastDotPos + 1)\n out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + this._angle)\n }\n getDirectionPt() {\n return this._p1\n }\n getAngle() {\n return this._angle\n }\n compareTo(obj) {\n const de = obj\n return this.compareDirection(de)\n }\n getFromNode() {\n return this._from\n }\n getSym() {\n return this._sym\n }\n setEdge(parentEdge) {\n this._parentEdge = parentEdge\n }\n remove() {\n this._sym = null\n this._parentEdge = null\n }\n getEdge() {\n return this._parentEdge\n }\n getQuadrant() {\n return this._quadrant\n }\n setSym(sym) {\n this._sym = sym\n }\n getToNode() {\n return this._to\n }\n getEdgeDirection() {\n return this._edgeDirection\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import DirectedEdge from '../../planargraph/DirectedEdge'\nimport Assert from '../../util/Assert'\nexport default class LineMergeDirectedEdge extends DirectedEdge {\n constructor() {\n super()\n LineMergeDirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\n }\n getNext() {\n if (this.getToNode().getDegree() !== 2) \n return null\n \n if (this.getToNode().getOutEdges().getEdges().get(0) === this.getSym()) \n return this.getToNode().getOutEdges().getEdges().get(1)\n \n Assert.isTrue(this.getToNode().getOutEdges().getEdges().get(1) === this.getSym())\n return this.getToNode().getOutEdges().getEdges().get(0)\n }\n}\n","import Node from './Node'\nimport GraphComponent from './GraphComponent'\nexport default class Edge extends GraphComponent {\n constructor() {\n super()\n Edge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._dirEdge = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const de0 = arguments[0], de1 = arguments[1]\n this.setDirectedEdges(de0, de1)\n }\n }\n isRemoved() {\n return this._dirEdge === null\n }\n setDirectedEdges(de0, de1) {\n this._dirEdge = [de0, de1]\n de0.setEdge(this)\n de1.setEdge(this)\n de0.setSym(de1)\n de1.setSym(de0)\n de0.getFromNode().addOutEdge(de0)\n de1.getFromNode().addOutEdge(de1)\n }\n getDirEdge() {\n if (Number.isInteger(arguments[0])) {\n const i = arguments[0]\n return this._dirEdge[i]\n } else if (arguments[0] instanceof Node) {\n const fromNode = arguments[0]\n if (this._dirEdge[0].getFromNode() === fromNode) return this._dirEdge[0]\n if (this._dirEdge[1].getFromNode() === fromNode) return this._dirEdge[1]\n return null\n }\n }\n remove() {\n this._dirEdge = null\n }\n getOppositeNode(node) {\n if (this._dirEdge[0].getFromNode() === node) return this._dirEdge[0].getToNode()\n if (this._dirEdge[1].getFromNode() === node) return this._dirEdge[1].getToNode()\n return null\n }\n}\n","import Collections from '../../../../java/util/Collections'\nimport DirectedEdge from './DirectedEdge'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Edge from './Edge'\nexport default class DirectedEdgeStar {\n constructor() {\n DirectedEdgeStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._outEdges = new ArrayList()\n this._sorted = false\n }\n getNextEdge(dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i + 1))\n }\n getCoordinate() {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\n iterator() {\n this.sortEdges()\n return this._outEdges.iterator()\n }\n sortEdges() {\n if (!this._sorted) {\n Collections.sort(this._outEdges)\n this._sorted = true\n }\n }\n remove(de) {\n this._outEdges.remove(de)\n }\n getEdges() {\n this.sortEdges()\n return this._outEdges\n }\n getNextCWEdge(dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i - 1))\n }\n getIndex() {\n if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this.sortEdges()\n for (let i = 0; i < this._outEdges.size(); i++) {\n const de = this._outEdges.get(i)\n if (de.getEdge() === edge) return i\n }\n return -1\n } else if (arguments[0] instanceof DirectedEdge) {\n const dirEdge = arguments[0]\n this.sortEdges()\n for (let i = 0; i < this._outEdges.size(); i++) {\n const de = this._outEdges.get(i)\n if (de === dirEdge) return i\n }\n return -1\n } else if (Number.isInteger(arguments[0])) {\n const i = arguments[0]\n let modi = i % this._outEdges.size()\n if (modi < 0) modi += this._outEdges.size()\n return modi\n }\n }\n add(de) {\n this._outEdges.add(de)\n this._sorted = false\n }\n getDegree() {\n return this._outEdges.size()\n }\n}\n","import DirectedEdgeStar from './DirectedEdgeStar'\nimport HashSet from '../../../../java/util/HashSet'\nimport DirectedEdge from './DirectedEdge'\nimport GraphComponent from './GraphComponent'\nexport default class Node extends GraphComponent {\n constructor() {\n super()\n Node.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n this._deStar = null\n if (arguments.length === 1) {\n const pt = arguments[0]\n Node.constructor_.call(this, pt, new DirectedEdgeStar())\n } else if (arguments.length === 2) {\n const pt = arguments[0], deStar = arguments[1]\n this._pt = pt\n this._deStar = deStar\n }\n }\n static getEdgesBetween(node0, node1) {\n const edges0 = DirectedEdge.toEdges(node0.getOutEdges().getEdges())\n const commonEdges = new HashSet(edges0)\n const edges1 = DirectedEdge.toEdges(node1.getOutEdges().getEdges())\n commonEdges.retainAll(edges1)\n return commonEdges\n }\n isRemoved() {\n return this._pt === null\n }\n addOutEdge(de) {\n this._deStar.add(de)\n }\n getCoordinate() {\n return this._pt\n }\n getOutEdges() {\n return this._deStar\n }\n remove() {\n if (arguments.length === 0) {\n this._pt = null\n } else if (arguments.length === 1) {\n const de = arguments[0]\n this._deStar.remove(de)\n }\n }\n getIndex(edge) {\n return this._deStar.getIndex(edge)\n }\n getDegree() {\n return this._deStar.getDegree()\n }\n}\n","import Edge from '../../planargraph/Edge'\nexport default class LineMergeEdge extends Edge {\n constructor() {\n super()\n LineMergeEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n getLine() {\n return this._line\n }\n}\n","import TreeMap from '../../../../java/util/TreeMap'\nexport default class NodeMap {\n constructor() {\n NodeMap.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n }\n find(coord) {\n return this._nodeMap.get(coord)\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n remove(pt) {\n return this._nodeMap.remove(pt)\n }\n values() {\n return this._nodeMap.values()\n }\n add(n) {\n this._nodeMap.put(n.getCoordinate(), n)\n return n\n }\n}\n","import HashSet from '../../../../java/util/HashSet'\nimport Node from './Node'\nimport NodeMap from './NodeMap'\nimport DirectedEdge from './DirectedEdge'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Edge from './Edge'\nexport default class PlanarGraph {\n constructor() {\n PlanarGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new HashSet()\n this._dirEdges = new HashSet()\n this._nodeMap = new NodeMap()\n }\n findNodesOfDegree(degree) {\n const nodesFound = new ArrayList()\n for (let i = this.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() === degree) nodesFound.add(node)\n }\n return nodesFound\n }\n dirEdgeIterator() {\n return this._dirEdges.iterator()\n }\n edgeIterator() {\n return this._edges.iterator()\n }\n remove() {\n if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this.remove(edge.getDirEdge(0))\n this.remove(edge.getDirEdge(1))\n this._edges.remove(edge)\n edge.remove()\n } else if (arguments[0] instanceof DirectedEdge) {\n const de = arguments[0]\n const sym = de.getSym()\n if (sym !== null) sym.setSym(null)\n de.getFromNode().remove(de)\n de.remove()\n this._dirEdges.remove(de)\n } else if (arguments[0] instanceof Node) {\n const node = arguments[0]\n const outEdges = node.getOutEdges().getEdges()\n for (let i = outEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym !== null) this.remove(sym)\n this._dirEdges.remove(de)\n const edge = de.getEdge()\n if (edge !== null) \n this._edges.remove(edge)\n \n }\n this._nodeMap.remove(node.getCoordinate())\n node.remove()\n }\n }\n findNode(pt) {\n return this._nodeMap.find(pt)\n }\n getEdges() {\n return this._edges\n }\n nodeIterator() {\n return this._nodeMap.iterator()\n }\n contains() {\n if (arguments[0] instanceof Edge) {\n const e = arguments[0]\n return this._edges.contains(e)\n } else if (arguments[0] instanceof DirectedEdge) {\n const de = arguments[0]\n return this._dirEdges.contains(de)\n }\n }\n add() {\n if (arguments[0] instanceof Node) {\n const node = arguments[0]\n this._nodeMap.add(node)\n } else if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this._edges.add(edge)\n this.add(edge.getDirEdge(0))\n this.add(edge.getDirEdge(1))\n } else if (arguments[0] instanceof DirectedEdge) {\n const dirEdge = arguments[0]\n this._dirEdges.add(dirEdge)\n }\n }\n getNodes() {\n return this._nodeMap.values()\n }\n}\n","import LineMergeDirectedEdge from './LineMergeDirectedEdge'\nimport Node from '../../planargraph/Node'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport LineMergeEdge from './LineMergeEdge'\nimport PlanarGraph from '../../planargraph/PlanarGraph'\nexport default class LineMergeGraph extends PlanarGraph {\n constructor() {\n super()\n }\n addEdge(lineString) {\n if (lineString.isEmpty()) \n return null\n \n const coordinates = CoordinateArrays.removeRepeatedPoints(lineString.getCoordinates())\n if (coordinates.length <= 1) return null\n const startCoordinate = coordinates[0]\n const endCoordinate = coordinates[coordinates.length - 1]\n const startNode = this.getNode(startCoordinate)\n const endNode = this.getNode(endCoordinate)\n const directedEdge0 = new LineMergeDirectedEdge(startNode, endNode, coordinates[1], true)\n const directedEdge1 = new LineMergeDirectedEdge(endNode, startNode, coordinates[coordinates.length - 2], false)\n const edge = new LineMergeEdge(lineString)\n edge.setDirectedEdges(directedEdge0, directedEdge1)\n this.add(edge)\n }\n getNode(coordinate) {\n let node = this.findNode(coordinate)\n if (node === null) {\n node = new Node(coordinate)\n this.add(node)\n }\n return node\n }\n}\n","import LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport EdgeString from './EdgeString'\nimport LineMergeGraph from './LineMergeGraph'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport GraphComponent from '../../planargraph/GraphComponent'\nexport default class LineMerger {\n constructor() {\n LineMerger.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = new LineMergeGraph()\n this._mergedLineStrings = null\n this._factory = null\n this._edgeStrings = null\n }\n buildEdgeStringsForUnprocessedNodes() {\n for (let i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (!node.isMarked()) {\n Assert.isTrue(node.getDegree() === 2)\n this.buildEdgeStringsStartingAt(node)\n node.setMarked(true)\n }\n }\n }\n buildEdgeStringsForNonDegree2Nodes() {\n for (let i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() !== 2) {\n this.buildEdgeStringsStartingAt(node)\n node.setMarked(true)\n }\n }\n }\n buildEdgeStringsForObviousStartNodes() {\n this.buildEdgeStringsForNonDegree2Nodes()\n }\n getMergedLineStrings() {\n this.merge()\n return this._mergedLineStrings\n }\n buildEdgeStringsStartingAt(node) {\n for (let i = node.getOutEdges().iterator(); i.hasNext(); ) {\n const directedEdge = i.next()\n if (directedEdge.getEdge().isMarked()) \n continue\n \n this._edgeStrings.add(this.buildEdgeStringStartingWith(directedEdge))\n }\n }\n merge() {\n if (this._mergedLineStrings !== null) \n return null\n \n GraphComponent.setMarked(this._graph.nodeIterator(), false)\n GraphComponent.setMarked(this._graph.edgeIterator(), false)\n this._edgeStrings = new ArrayList()\n this.buildEdgeStringsForObviousStartNodes()\n this.buildEdgeStringsForIsolatedLoops()\n this._mergedLineStrings = new ArrayList()\n for (let i = this._edgeStrings.iterator(); i.hasNext(); ) {\n const edgeString = i.next()\n this._mergedLineStrings.add(edgeString.toLineString())\n }\n }\n addLineString(lineString) {\n if (this._factory === null) \n this._factory = lineString.getFactory()\n \n this._graph.addEdge(lineString)\n }\n buildEdgeStringStartingWith(start) {\n const edgeString = new EdgeString(this._factory)\n let current = start\n do {\n edgeString.add(current)\n current.getEdge().setMarked(true)\n current = current.getNext()\n } while (current !== null && current !== start)\n return edgeString\n }\n add() {\n if (arguments[0] instanceof Geometry) {\n const geometry = arguments[0]\n for (let i = 0; i < geometry.getNumGeometries(); i++) {\n const component = geometry.getGeometryN(i)\n if (component instanceof LineString) \n this.addLineString(component)\n \n }\n \n } else if (hasInterface(arguments[0], Collection)) {\n const geometries = arguments[0]\n this._mergedLineStrings = null\n for (let i = geometries.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n }\n }\n buildEdgeStringsForIsolatedLoops() {\n this.buildEdgeStringsForUnprocessedNodes()\n }\n}\n","import HashSet from '../../../../java/util/HashSet'\nimport NodeMap from './NodeMap'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class Subgraph {\n constructor() {\n Subgraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentGraph = null\n this._edges = new HashSet()\n this._dirEdges = new ArrayList()\n this._nodeMap = new NodeMap()\n const parentGraph = arguments[0]\n this._parentGraph = parentGraph\n }\n dirEdgeIterator() {\n return this._dirEdges.iterator()\n }\n edgeIterator() {\n return this._edges.iterator()\n }\n getParent() {\n return this._parentGraph\n }\n nodeIterator() {\n return this._nodeMap.iterator()\n }\n contains(e) {\n return this._edges.contains(e)\n }\n add(e) {\n if (this._edges.contains(e)) return null\n this._edges.add(e)\n this._dirEdges.add(e.getDirEdge(0))\n this._dirEdges.add(e.getDirEdge(1))\n this._nodeMap.add(e.getDirEdge(0).getFromNode())\n this._nodeMap.add(e.getDirEdge(1).getFromNode())\n }\n}\n","import Stack from '../../../../../java/util/Stack'\nimport Subgraph from '../Subgraph'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GraphComponent from '../GraphComponent'\nexport default class ConnectedSubgraphFinder {\n constructor() {\n ConnectedSubgraphFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = null\n const graph = arguments[0]\n this._graph = graph\n }\n addReachable(startNode, subgraph) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.addEdges(node, nodeStack, subgraph)\n }\n }\n findSubgraph(node) {\n const subgraph = new Subgraph(this._graph)\n this.addReachable(node, subgraph)\n return subgraph\n }\n getConnectedSubgraphs() {\n const subgraphs = new ArrayList()\n GraphComponent.setVisited(this._graph.nodeIterator(), false)\n for (let i = this._graph.edgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const node = e.getDirEdge(0).getFromNode()\n if (!node.isVisited()) \n subgraphs.add(this.findSubgraph(node))\n \n }\n return subgraphs\n }\n addEdges(node, nodeStack, subgraph) {\n node.setVisited(true)\n for (let i = node.getOutEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n subgraph.add(de.getEdge())\n const toNode = de.getToNode()\n if (!toNode.isVisited()) nodeStack.push(toNode)\n }\n }\n}\n","import TreeSet from '../../../../../java/util/TreeSet'\nimport LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Collection from '../../../../../java/util/Collection'\nimport Coordinate from '../../geom/Coordinate'\nimport Integer from '../../../../../java/lang/Integer'\nimport LineMergeGraph from './LineMergeGraph'\nimport LinkedList from '../../../../../java/util/LinkedList'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport ConnectedSubgraphFinder from '../../planargraph/algorithm/ConnectedSubgraphFinder'\nimport Assert from '../../util/Assert'\nimport MultiLineString from '../../geom/MultiLineString'\nimport GraphComponent from '../../planargraph/GraphComponent'\nexport default class LineSequencer {\n constructor() {\n LineSequencer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = new LineMergeGraph()\n this._factory = new GeometryFactory()\n this._lineCount = 0\n this._isRun = false\n this._sequencedGeometry = null\n this._isSequenceable = false\n }\n static findUnvisitedBestOrientedDE(node) {\n let wellOrientedDE = null\n let unvisitedDE = null\n for (let i = node.getOutEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.getEdge().isVisited()) {\n unvisitedDE = de\n if (de.getEdgeDirection()) wellOrientedDE = de\n }\n }\n if (wellOrientedDE !== null) return wellOrientedDE\n return unvisitedDE\n }\n static findLowestDegreeNode(graph) {\n let minDegree = Integer.MAX_VALUE\n let minDegreeNode = null\n for (let i = graph.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (minDegreeNode === null || node.getDegree() < minDegree) {\n minDegree = node.getDegree()\n minDegreeNode = node\n }\n }\n return minDegreeNode\n }\n static isSequenced(geom) {\n if (!(geom instanceof MultiLineString)) \n return true\n \n const mls = geom\n const prevSubgraphNodes = new TreeSet()\n let lastNode = null\n const currNodes = new ArrayList()\n for (let i = 0; i < mls.getNumGeometries(); i++) {\n const line = mls.getGeometryN(i)\n const startNode = line.getCoordinateN(0)\n const endNode = line.getCoordinateN(line.getNumPoints() - 1)\n if (prevSubgraphNodes.contains(startNode)) return false\n if (prevSubgraphNodes.contains(endNode)) return false\n if (lastNode !== null) \n if (!startNode.equals(lastNode)) {\n prevSubgraphNodes.addAll(currNodes)\n currNodes.clear()\n }\n \n currNodes.add(startNode)\n currNodes.add(endNode)\n lastNode = endNode\n }\n return true\n }\n static reverse(line) {\n const pts = line.getCoordinates()\n const revPts = new Array(pts.length).fill(null)\n const len = pts.length\n for (let i = 0; i < len; i++) \n revPts[len - 1 - i] = new Coordinate(pts[i])\n \n return line.getFactory().createLineString(revPts)\n }\n static sequence(geom) {\n const sequencer = new LineSequencer()\n sequencer.add(geom)\n return sequencer.getSequencedLineStrings()\n }\n addLine(lineString) {\n if (this._factory === null) \n this._factory = lineString.getFactory()\n \n this._graph.addEdge(lineString)\n this._lineCount++\n }\n hasSequence(graph) {\n let oddDegreeCount = 0\n for (let i = graph.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() % 2 === 1) oddDegreeCount++\n }\n return oddDegreeCount <= 2\n }\n computeSequence() {\n if (this._isRun) \n return null\n \n this._isRun = true\n const sequences = this.findSequences()\n if (sequences === null) return null\n this._sequencedGeometry = this.buildSequencedGeometry(sequences)\n this._isSequenceable = true\n const finalLineCount = this._sequencedGeometry.getNumGeometries()\n Assert.isTrue(this._lineCount === finalLineCount, 'Lines were missing from result')\n Assert.isTrue(this._sequencedGeometry instanceof LineString || this._sequencedGeometry instanceof MultiLineString, 'Result is not lineal')\n }\n findSequences() {\n const sequences = new ArrayList()\n const csFinder = new ConnectedSubgraphFinder(this._graph)\n const subgraphs = csFinder.getConnectedSubgraphs()\n for (let i = subgraphs.iterator(); i.hasNext(); ) {\n const subgraph = i.next()\n if (this.hasSequence(subgraph)) {\n const seq = this.findSequence(subgraph)\n sequences.add(seq)\n } else {\n return null\n }\n }\n return sequences\n }\n addReverseSubpath(de, lit, expectedClosed) {\n const endNode = de.getToNode()\n let fromNode = null\n while (true) {\n lit.add(de.getSym())\n de.getEdge().setVisited(true)\n fromNode = de.getFromNode()\n const unvisitedOutDE = LineSequencer.findUnvisitedBestOrientedDE(fromNode)\n if (unvisitedOutDE === null) break\n de = unvisitedOutDE.getSym()\n }\n if (expectedClosed) \n Assert.isTrue(fromNode === endNode, 'path not contiguous')\n \n }\n findSequence(graph) {\n GraphComponent.setVisited(graph.edgeIterator(), false)\n const startNode = LineSequencer.findLowestDegreeNode(graph)\n const startDE = startNode.getOutEdges().iterator().next()\n const startDESym = startDE.getSym()\n const seq = new LinkedList()\n const lit = seq.listIterator()\n this.addReverseSubpath(startDESym, lit, false)\n while (lit.hasPrevious()) {\n const prev = lit.previous()\n const unvisitedOutDE = LineSequencer.findUnvisitedBestOrientedDE(prev.getFromNode())\n if (unvisitedOutDE !== null) this.addReverseSubpath(unvisitedOutDE.getSym(), lit, true)\n }\n const orientedSeq = this.orient(seq)\n return orientedSeq\n }\n reverse(seq) {\n const newSeq = new LinkedList()\n for (let i = seq.iterator(); i.hasNext(); ) {\n const de = i.next()\n newSeq.addFirst(de.getSym())\n }\n return newSeq\n }\n orient(seq) {\n const startEdge = seq.get(0)\n const endEdge = seq.get(seq.size() - 1)\n const startNode = startEdge.getFromNode()\n const endNode = endEdge.getToNode()\n let flipSeq = false\n const hasDegree1Node = startNode.getDegree() === 1 || endNode.getDegree() === 1\n if (hasDegree1Node) {\n let hasObviousStartNode = false\n if (endEdge.getToNode().getDegree() === 1 && endEdge.getEdgeDirection() === false) {\n hasObviousStartNode = true\n flipSeq = true\n }\n if (startEdge.getFromNode().getDegree() === 1 && startEdge.getEdgeDirection() === true) {\n hasObviousStartNode = true\n flipSeq = false\n }\n if (!hasObviousStartNode) \n if (startEdge.getFromNode().getDegree() === 1) flipSeq = true\n \n }\n if (flipSeq) return this.reverse(seq)\n return seq\n }\n buildSequencedGeometry(sequences) {\n const lines = new ArrayList()\n for (let i1 = sequences.iterator(); i1.hasNext(); ) {\n const seq = i1.next()\n for (let i2 = seq.iterator(); i2.hasNext(); ) {\n const de = i2.next()\n const e = de.getEdge()\n const line = e.getLine()\n let lineToAdd = line\n if (!de.getEdgeDirection() && !line.isClosed()) lineToAdd = LineSequencer.reverse(line)\n lines.add(lineToAdd)\n }\n }\n if (lines.size() === 0) return this._factory.createMultiLineString(new Array(0).fill(null))\n return this._factory.buildGeometry(lines)\n }\n getSequencedLineStrings() {\n this.computeSequence()\n return this._sequencedGeometry\n }\n isSequenceable() {\n this.computeSequence()\n return this._isSequenceable\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geometries = arguments[0]\n for (let i = geometries.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n } else if (arguments[0] instanceof Geometry) {\n const geometry = arguments[0]\n geometry.apply(new (class {\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n filter(component) {\n if (component instanceof LineString) \n this.addLine(component)\n \n }\n })())\n }\n }\n}\n","import LineString from '../../../geom/LineString'\nimport CoordinateList from '../../../geom/CoordinateList'\nimport Coordinate from '../../../geom/Coordinate'\nimport Double from '../../../../../../java/lang/Double'\nimport LineSegment from '../../../geom/LineSegment'\nexport default class LineStringSnapper {\n constructor() {\n LineStringSnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._snapTolerance = 0.0\n this._srcPts = null\n this._seg = new LineSegment()\n this._allowSnappingToSourceVertices = false\n this._isClosed = false\n if (arguments[0] instanceof LineString && typeof arguments[1] === 'number') {\n const srcLine = arguments[0], snapTolerance = arguments[1]\n LineStringSnapper.constructor_.call(this, srcLine.getCoordinates(), snapTolerance)\n } else if (arguments[0] instanceof Array && typeof arguments[1] === 'number') {\n const srcPts = arguments[0], snapTolerance = arguments[1]\n this._srcPts = srcPts\n this._isClosed = LineStringSnapper.isClosed(srcPts)\n this._snapTolerance = snapTolerance\n }\n }\n static isClosed(pts) {\n if (pts.length <= 1) return false\n return pts[0].equals2D(pts[pts.length - 1])\n }\n snapVertices(srcCoords, snapPts) {\n const end = this._isClosed ? srcCoords.size() - 1 : srcCoords.size()\n for (let i = 0; i < end; i++) {\n const srcPt = srcCoords.get(i)\n const snapVert = this.findSnapForVertex(srcPt, snapPts)\n if (snapVert !== null) {\n srcCoords.set(i, new Coordinate(snapVert))\n if (i === 0 && this._isClosed) srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert))\n }\n }\n }\n findSnapForVertex(pt, snapPts) {\n for (let i = 0; i < snapPts.length; i++) {\n if (pt.equals2D(snapPts[i])) return null\n if (pt.distance(snapPts[i]) < this._snapTolerance) return snapPts[i]\n }\n return null\n }\n snapTo(snapPts) {\n const coordList = new CoordinateList(this._srcPts)\n this.snapVertices(coordList, snapPts)\n this.snapSegments(coordList, snapPts)\n const newPts = coordList.toCoordinateArray()\n return newPts\n }\n snapSegments(srcCoords, snapPts) {\n if (snapPts.length === 0) return null\n let distinctPtCount = snapPts.length\n if (snapPts[0].equals2D(snapPts[snapPts.length - 1])) distinctPtCount = snapPts.length - 1\n for (let i = 0; i < distinctPtCount; i++) {\n const snapPt = snapPts[i]\n const index = this.findSegmentIndexToSnap(snapPt, srcCoords)\n if (index >= 0) \n srcCoords.add(index + 1, new Coordinate(snapPt), false)\n \n }\n }\n findSegmentIndexToSnap(snapPt, srcCoords) {\n let minDist = Double.MAX_VALUE\n let snapIndex = -1\n for (let i = 0; i < srcCoords.size() - 1; i++) {\n this._seg.p0 = srcCoords.get(i)\n this._seg.p1 = srcCoords.get(i + 1)\n if (this._seg.p0.equals2D(snapPt) || this._seg.p1.equals2D(snapPt)) \n if (this._allowSnappingToSourceVertices) continue; else return -1\n \n const dist = this._seg.distance(snapPt)\n if (dist < this._snapTolerance && dist < minDist) {\n minDist = dist\n snapIndex = i\n }\n }\n return snapIndex\n }\n setAllowSnappingToSourceVertices(allowSnappingToSourceVertices) {\n this._allowSnappingToSourceVertices = allowSnappingToSourceVertices\n }\n}\n","import TreeSet from '../../../../../../java/util/TreeSet'\nimport GeometryTransformer from '../../../geom/util/GeometryTransformer'\nimport hasInterface from '../../../../../../hasInterface'\nimport Double from '../../../../../../java/lang/Double'\nimport LineStringSnapper from './LineStringSnapper'\nimport PrecisionModel from '../../../geom/PrecisionModel'\nimport Polygonal from '../../../geom/Polygonal'\nexport default class GeometrySnapper {\n constructor() {\n GeometrySnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._srcGeom = null\n const srcGeom = arguments[0]\n this._srcGeom = srcGeom\n }\n static snap(g0, g1, snapTolerance) {\n const snapGeom = new Array(2).fill(null)\n const snapper0 = new GeometrySnapper(g0)\n snapGeom[0] = snapper0.snapTo(g1, snapTolerance)\n const snapper1 = new GeometrySnapper(g1)\n snapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance)\n return snapGeom\n }\n static computeOverlaySnapTolerance() {\n if (arguments.length === 1) {\n const g = arguments[0]\n let snapTolerance = GeometrySnapper.computeSizeBasedSnapTolerance(g)\n const pm = g.getPrecisionModel()\n if (pm.getType() === PrecisionModel.FIXED) {\n const fixedSnapTol = 1 / pm.getScale() * 2 / 1.415\n if (fixedSnapTol > snapTolerance) snapTolerance = fixedSnapTol\n }\n return snapTolerance\n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n return Math.min(GeometrySnapper.computeOverlaySnapTolerance(g0), GeometrySnapper.computeOverlaySnapTolerance(g1))\n }\n }\n static computeSizeBasedSnapTolerance(g) {\n const env = g.getEnvelopeInternal()\n const minDimension = Math.min(env.getHeight(), env.getWidth())\n const snapTol = minDimension * GeometrySnapper.SNAP_PRECISION_FACTOR\n return snapTol\n }\n static snapToSelf(geom, snapTolerance, cleanResult) {\n const snapper0 = new GeometrySnapper(geom)\n return snapper0.snapToSelf(snapTolerance, cleanResult)\n }\n snapTo(snapGeom, snapTolerance) {\n const snapPts = this.extractTargetCoordinates(snapGeom)\n const snapTrans = new SnapTransformer(snapTolerance, snapPts)\n return snapTrans.transform(this._srcGeom)\n }\n snapToSelf(snapTolerance, cleanResult) {\n const snapPts = this.extractTargetCoordinates(this._srcGeom)\n const snapTrans = new SnapTransformer(snapTolerance, snapPts, true)\n const snappedGeom = snapTrans.transform(this._srcGeom)\n let result = snappedGeom\n if (cleanResult && hasInterface(result, Polygonal)) \n result = snappedGeom.buffer(0)\n \n return result\n }\n computeSnapTolerance(ringPts) {\n const minSegLen = this.computeMinimumSegmentLength(ringPts)\n const snapTol = minSegLen / 10\n return snapTol\n }\n extractTargetCoordinates(g) {\n const ptSet = new TreeSet()\n const pts = g.getCoordinates()\n for (let i = 0; i < pts.length; i++) \n ptSet.add(pts[i])\n \n return ptSet.toArray(new Array(0).fill(null))\n }\n computeMinimumSegmentLength(pts) {\n let minSegLen = Double.MAX_VALUE\n for (let i = 0; i < pts.length - 1; i++) {\n const segLen = pts[i].distance(pts[i + 1])\n if (segLen < minSegLen) minSegLen = segLen\n }\n return minSegLen\n }\n}\nGeometrySnapper.SNAP_PRECISION_FACTOR = 1e-9\nclass SnapTransformer extends GeometryTransformer {\n constructor() {\n super()\n SnapTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._snapTolerance = null\n this._snapPts = null\n this._isSelfSnap = false\n if (arguments.length === 2) {\n const snapTolerance = arguments[0], snapPts = arguments[1]\n this._snapTolerance = snapTolerance\n this._snapPts = snapPts\n } else if (arguments.length === 3) {\n const snapTolerance = arguments[0], snapPts = arguments[1], isSelfSnap = arguments[2]\n this._snapTolerance = snapTolerance\n this._snapPts = snapPts\n this._isSelfSnap = isSelfSnap\n }\n }\n snapLine(srcPts, snapPts) {\n const snapper = new LineStringSnapper(srcPts, this._snapTolerance)\n snapper.setAllowSnappingToSourceVertices(this._isSelfSnap)\n return snapper.snapTo(snapPts)\n }\n transformCoordinates(coords, parent) {\n const srcPts = coords.toCoordinateArray()\n const newPts = this.snapLine(srcPts, this._snapPts)\n return this._factory.getCoordinateSequenceFactory().create(newPts)\n }\n}\n","import WKTWriter from '../io/WKTWriter'\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence'\nimport Octant from './Octant'\nimport SegmentString from './SegmentString'\nexport default class BasicSegmentString {\n constructor() {\n BasicSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._data = null\n const pts = arguments[0], data = arguments[1]\n this._pts = pts\n this._data = data\n }\n getCoordinates() {\n return this._pts\n }\n size() {\n return this._pts.length\n }\n getCoordinate(i) {\n return this._pts[i]\n }\n isClosed() {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\n getSegmentOctant(index) {\n if (index === this._pts.length - 1) return -1\n return Octant.octant(this.getCoordinate(index), this.getCoordinate(index + 1))\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n get interfaces_() {\n return [SegmentString]\n }\n}\n","import SegmentIntersector from './SegmentIntersector'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class NodingIntersectionFinder {\n constructor() {\n NodingIntersectionFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._findAllIntersections = false\n this._isCheckEndSegmentsOnly = false\n this._keepIntersections = true\n this._isInteriorIntersectionsOnly = false\n this._li = null\n this._interiorIntersection = null\n this._intSegments = null\n this._intersections = new ArrayList()\n this._intersectionCount = 0\n const li = arguments[0]\n this._li = li\n this._interiorIntersection = null\n }\n static createAllIntersectionsFinder(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n return finder\n }\n static isInteriorVertexIntersection() {\n if (arguments.length === 4) {\n const p0 = arguments[0], p1 = arguments[1], isEnd0 = arguments[2], isEnd1 = arguments[3]\n if (isEnd0 && isEnd1) return false\n if (p0.equals2D(p1)) \n return true\n \n return false\n } else if (arguments.length === 8) {\n const p00 = arguments[0], p01 = arguments[1], p10 = arguments[2], p11 = arguments[3], isEnd00 = arguments[4], isEnd01 = arguments[5], isEnd10 = arguments[6], isEnd11 = arguments[7]\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p00, p10, isEnd00, isEnd10)) return true\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p00, p11, isEnd00, isEnd11)) return true\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p01, p10, isEnd01, isEnd10)) return true\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p01, p11, isEnd01, isEnd11)) return true\n return false\n }\n }\n static createInteriorIntersectionCounter(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setInteriorIntersectionsOnly(true)\n finder.setFindAllIntersections(true)\n finder.setKeepIntersections(false)\n return finder\n }\n static createIntersectionCounter(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n finder.setKeepIntersections(false)\n return finder\n }\n static isEndSegment(segStr, index) {\n if (index === 0) return true\n if (index >= segStr.size() - 2) return true\n return false\n }\n static createAnyIntersectionFinder(li) {\n return new NodingIntersectionFinder(li)\n }\n static createInteriorIntersectionsFinder(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n finder.setInteriorIntersectionsOnly(true)\n return finder\n }\n setCheckEndSegmentsOnly(isCheckEndSegmentsOnly) {\n this._isCheckEndSegmentsOnly = isCheckEndSegmentsOnly\n }\n getIntersectionSegments() {\n return this._intSegments\n }\n count() {\n return this._intersectionCount\n }\n getIntersections() {\n return this._intersections\n }\n setFindAllIntersections(findAllIntersections) {\n this._findAllIntersections = findAllIntersections\n }\n setKeepIntersections(keepIntersections) {\n this._keepIntersections = keepIntersections\n }\n getIntersection() {\n return this._interiorIntersection\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (!this._findAllIntersections && this.hasIntersection()) return null\n const isSameSegString = e0 === e1\n const isSameSegment = isSameSegString && segIndex0 === segIndex1\n if (isSameSegment) return null\n if (this._isCheckEndSegmentsOnly) {\n const isEndSegPresent = NodingIntersectionFinder.isEndSegment(e0, segIndex0) || NodingIntersectionFinder.isEndSegment(e1, segIndex1)\n if (!isEndSegPresent) return null\n }\n const p00 = e0.getCoordinate(segIndex0)\n const p01 = e0.getCoordinate(segIndex0 + 1)\n const p10 = e1.getCoordinate(segIndex1)\n const p11 = e1.getCoordinate(segIndex1 + 1)\n const isEnd00 = segIndex0 === 0\n const isEnd01 = segIndex0 + 2 === e0.size()\n const isEnd10 = segIndex1 === 0\n const isEnd11 = segIndex1 + 2 === e1.size()\n this._li.computeIntersection(p00, p01, p10, p11)\n const isInteriorInt = this._li.hasIntersection() && this._li.isInteriorIntersection()\n let isInteriorVertexInt = false\n if (!this._isInteriorIntersectionsOnly) {\n const isAdjacentSegment = isSameSegString && Math.abs(segIndex1 - segIndex0) <= 1\n isInteriorVertexInt = !isAdjacentSegment && NodingIntersectionFinder.isInteriorVertexIntersection(p00, p01, p10, p11, isEnd00, isEnd01, isEnd10, isEnd11)\n }\n if (isInteriorInt || isInteriorVertexInt) {\n this._intSegments = new Array(4).fill(null)\n this._intSegments[0] = p00\n this._intSegments[1] = p01\n this._intSegments[2] = p10\n this._intSegments[3] = p11\n this._interiorIntersection = this._li.getIntersection(0)\n if (this._keepIntersections) this._intersections.add(this._interiorIntersection)\n this._intersectionCount++\n }\n }\n hasIntersection() {\n return this._interiorIntersection !== null\n }\n isDone() {\n if (this._findAllIntersections) return false\n return this._interiorIntersection !== null\n }\n setInteriorIntersectionsOnly(isInteriorIntersectionsOnly) {\n this._isInteriorIntersectionsOnly = isInteriorIntersectionsOnly\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import WKTWriter from '../io/WKTWriter'\nimport MCIndexNoder from './MCIndexNoder'\nimport TopologyException from '../geom/TopologyException'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport NodingIntersectionFinder from './NodingIntersectionFinder'\nexport default class FastNodingValidator {\n constructor() {\n FastNodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n this._findAllIntersections = false\n this._segInt = null\n this._isValid = true\n const segStrings = arguments[0]\n this._segStrings = segStrings\n }\n static computeIntersections(segStrings) {\n const nv = new FastNodingValidator(segStrings)\n nv.setFindAllIntersections(true)\n nv.isValid()\n return nv.getIntersections()\n }\n execute() {\n if (this._segInt !== null) return null\n this.checkInteriorIntersections()\n }\n getIntersections() {\n return this._segInt.getIntersections()\n }\n isValid() {\n this.execute()\n return this._isValid\n }\n setFindAllIntersections(findAllIntersections) {\n this._findAllIntersections = findAllIntersections\n }\n checkInteriorIntersections() {\n this._isValid = true\n this._segInt = new NodingIntersectionFinder(this._li)\n this._segInt.setFindAllIntersections(this._findAllIntersections)\n const noder = new MCIndexNoder()\n noder.setSegmentIntersector(this._segInt)\n noder.computeNodes(this._segStrings)\n if (this._segInt.hasIntersection()) {\n this._isValid = false\n return null\n }\n }\n checkValid() {\n this.execute()\n if (!this._isValid) throw new TopologyException(this.getErrorMessage(), this._segInt.getIntersection())\n }\n getErrorMessage() {\n if (this._isValid) return 'no intersections found'\n const intSegs = this._segInt.getIntersectionSegments()\n return 'found non-noded intersection between ' + WKTWriter.toLineString(intSegs[0], intSegs[1]) + ' and ' + WKTWriter.toLineString(intSegs[2], intSegs[3])\n }\n}\n","import BasicSegmentString from '../noding/BasicSegmentString'\nimport FastNodingValidator from '../noding/FastNodingValidator'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class EdgeNodingValidator {\n constructor() {\n EdgeNodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nv = null\n const edges = arguments[0]\n this._nv = new FastNodingValidator(EdgeNodingValidator.toSegmentStrings(edges))\n }\n static toSegmentStrings(edges) {\n const segStrings = new ArrayList()\n for (let i = edges.iterator(); i.hasNext(); ) {\n const e = i.next()\n segStrings.add(new BasicSegmentString(e.getCoordinates(), e))\n }\n return segStrings\n }\n static checkValid(edges) {\n const validator = new EdgeNodingValidator(edges)\n validator.checkValid()\n }\n checkValid() {\n this._nv.checkValid()\n }\n}\n","import ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport OverlayOp from './OverlayOp'\nexport default class LineBuilder {\n constructor() {\n LineBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._op = null\n this._geometryFactory = null\n this._ptLocator = null\n this._lineEdgesList = new ArrayList()\n this._resultLineList = new ArrayList()\n const op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2]\n this._op = op\n this._geometryFactory = geometryFactory\n this._ptLocator = ptLocator\n }\n collectLines(opCode) {\n for (let it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n this.collectLineEdge(de, opCode, this._lineEdgesList)\n this.collectBoundaryTouchEdge(de, opCode, this._lineEdgesList)\n }\n }\n labelIsolatedLine(e, targetIndex) {\n const loc = this._ptLocator.locate(e.getCoordinate(), this._op.getArgGeometry(targetIndex))\n e.getLabel().setLocation(targetIndex, loc)\n }\n build(opCode) {\n this.findCoveredLineEdges()\n this.collectLines(opCode)\n this.buildLines(opCode)\n return this._resultLineList\n }\n collectLineEdge(de, opCode, edges) {\n const label = de.getLabel()\n const e = de.getEdge()\n if (de.isLineEdge()) \n if (!de.isVisited() && OverlayOp.isResultOfOp(label, opCode) && !e.isCovered()) {\n edges.add(e)\n de.setVisitedEdge(true)\n }\n \n }\n findCoveredLineEdges() {\n for (let nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().findCoveredLineEdges()\n }\n for (let it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n const e = de.getEdge()\n if (de.isLineEdge() && !e.isCoveredSet()) {\n const isCovered = this._op.isCoveredByA(de.getCoordinate())\n e.setCovered(isCovered)\n }\n }\n }\n labelIsolatedLines(edgesList) {\n for (let it = edgesList.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (e.isIsolated()) \n if (label.isNull(0)) this.labelIsolatedLine(e, 0); else this.labelIsolatedLine(e, 1)\n \n }\n }\n buildLines(opCode) {\n for (let it = this._lineEdgesList.iterator(); it.hasNext(); ) {\n const e = it.next()\n const line = this._geometryFactory.createLineString(e.getCoordinates())\n this._resultLineList.add(line)\n e.setInResult(true)\n }\n }\n collectBoundaryTouchEdge(de, opCode, edges) {\n const label = de.getLabel()\n if (de.isLineEdge()) return null\n if (de.isVisited()) return null\n if (de.isInteriorAreaEdge()) return null\n if (de.getEdge().isInResult()) return null\n Assert.isTrue(!(de.isInResult() || de.getSym().isInResult()) || !de.getEdge().isInResult())\n if (OverlayOp.isResultOfOp(label, opCode) && opCode === OverlayOp.INTERSECTION) {\n edges.add(de.getEdge())\n de.setVisitedEdge(true)\n }\n }\n}\n","import ArrayList from '../../../../../java/util/ArrayList'\nimport OverlayOp from './OverlayOp'\nexport default class PointBuilder {\n constructor() {\n PointBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._op = null\n this._geometryFactory = null\n this._resultPointList = new ArrayList()\n const op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2]\n this._op = op\n this._geometryFactory = geometryFactory\n }\n filterCoveredNodeToPoint(n) {\n const coord = n.getCoordinate()\n if (!this._op.isCoveredByLA(coord)) {\n const pt = this._geometryFactory.createPoint(coord)\n this._resultPointList.add(pt)\n }\n }\n extractNonCoveredResultNodes(opCode) {\n for (let nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n const n = nodeit.next()\n if (n.isInResult()) continue\n if (n.isIncidentEdgeInResult()) continue\n if (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {\n const label = n.getLabel()\n if (OverlayOp.isResultOfOp(label, opCode)) \n this.filterCoveredNodeToPoint(n)\n \n }\n }\n }\n build(opCode) {\n this.extractNonCoveredResultNodes(opCode)\n return this._resultPointList\n }\n}\n","import Double from '../../../../java/lang/Double'\nimport Long from '../../../../java/lang/Long'\nexport default class CommonBits {\n constructor() {\n this._isFirst = true\n this._commonMantissaBitsCount = 53\n this._commonBits = new Long()\n this._commonSignExp = null\n }\n\n getCommon() {\n return Double.longBitsToDouble(this._commonBits)\n }\n\n add(num) {\n const numBits = Double.doubleToLongBits(num)\n if (this._isFirst) {\n this._commonBits = numBits\n this._commonSignExp = CommonBits.signExpBits(this._commonBits)\n this._isFirst = false\n return null\n }\n const numSignExp = CommonBits.signExpBits(numBits)\n if (numSignExp !== this._commonSignExp) {\n this._commonBits.high = 0 | 0\n this._commonBits.low = 0 | 0\n return null\n }\n this._commonMantissaBitsCount = CommonBits.numCommonMostSigMantissaBits(this._commonBits, numBits)\n this._commonBits = CommonBits.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount))\n }\n\n toString() {\n if (arguments.length === 1) {\n const bits = arguments[0]\n const x = Double.longBitsToDouble(bits)\n const numStr = Long.toBinaryString(bits)\n const padStr = '0000000000000000000000000000000000000000000000000000000000000000' + numStr\n const bitStr = padStr.substring(padStr.length - 64)\n const str = bitStr.substring(0, 1) + ' ' + bitStr.substring(1, 12) + '(exp) ' + bitStr.substring(12) + ' [ ' + x + ' ]'\n return str\n }\n }\n\n getClass() {\n return CommonBits\n }\n\n get interfaces_() {\n return []\n }\n\n static getBit(bits, i) {\n const mask = (1 << (i % 32))\n if (i < 32) return (bits.low & mask) !== 0 ? 1 : 0\n\n return (bits.high & mask) !== 0 ? 1 : 0\n }\n\n static signExpBits(num) {\n return num.high >>> 20\n }\n\n static zeroLowerBits(bits, nBits) {\n let prop = 'low'\n if (nBits > 32) {\n bits.low = 0 | 0\n nBits %= 32\n prop = 'high'\n }\n if (nBits > 0) {\n const mask = (nBits < 32) ? (~((1 << nBits) - 1)) : 0\n bits[prop] &= mask\n }\n return bits\n }\n\n static numCommonMostSigMantissaBits(num1, num2) {\n let count = 0\n for (let i = 52; i >= 0; i--) {\n if (CommonBits.getBit(num1, i) !== CommonBits.getBit(num2, i)) return count\n count++\n }\n return 52\n }\n}\n","import CommonBits from './CommonBits'\nimport CoordinateFilter from '../geom/CoordinateFilter'\nimport Coordinate from '../geom/Coordinate'\nimport CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter'\nexport default class CommonBitsRemover {\n constructor() {\n CommonBitsRemover.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._commonCoord = null\n this._ccFilter = new CommonCoordinateFilter()\n }\n addCommonBits(geom) {\n const trans = new Translater(this._commonCoord)\n geom.apply(trans)\n geom.geometryChanged()\n }\n removeCommonBits(geom) {\n if (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) return geom\n const invCoord = new Coordinate(this._commonCoord)\n invCoord.x = -invCoord.x\n invCoord.y = -invCoord.y\n const trans = new Translater(invCoord)\n geom.apply(trans)\n geom.geometryChanged()\n return geom\n }\n getCommonCoordinate() {\n return this._commonCoord\n }\n add(geom) {\n geom.apply(this._ccFilter)\n this._commonCoord = this._ccFilter.getCommonCoordinate()\n }\n}\nclass CommonCoordinateFilter {\n constructor() {\n CommonCoordinateFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._commonBitsX = new CommonBits()\n this._commonBitsY = new CommonBits()\n }\n filter(coord) {\n this._commonBitsX.add(coord.x)\n this._commonBitsY.add(coord.y)\n }\n getCommonCoordinate() {\n return new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\nclass Translater {\n constructor() {\n Translater.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.trans = null\n const trans = arguments[0]\n this.trans = trans\n }\n filter(seq, i) {\n const xp = seq.getOrdinate(i, 0) + this.trans.x\n const yp = seq.getOrdinate(i, 1) + this.trans.y\n seq.setOrdinate(i, 0, xp)\n seq.setOrdinate(i, 1, yp)\n }\n isDone() {\n return false\n }\n isGeometryChanged() {\n return true\n }\n get interfaces_() {\n return [CoordinateSequenceFilter]\n }\n}\nCommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter\nCommonBitsRemover.Translater = Translater\n","import GeometrySnapper from './GeometrySnapper'\nimport System from '../../../../../../java/lang/System'\nimport CommonBitsRemover from '../../../precision/CommonBitsRemover'\nimport OverlayOp from '../OverlayOp'\nexport default class SnapOverlayOp {\n constructor() {\n SnapOverlayOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = new Array(2).fill(null)\n this._snapTolerance = null\n this._cbr = null\n const g1 = arguments[0], g2 = arguments[1]\n this._geom[0] = g1\n this._geom[1] = g2\n this.computeSnapTolerance()\n }\n static overlayOp(g0, g1, opCode) {\n const op = new SnapOverlayOp(g0, g1)\n return op.getResultGeometry(opCode)\n }\n static union(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n }\n static intersection(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n }\n static symDifference(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n }\n static difference(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n }\n selfSnap(geom) {\n const snapper0 = new GeometrySnapper(geom)\n const snapGeom = snapper0.snapTo(geom, this._snapTolerance)\n return snapGeom\n }\n removeCommonBits(geom) {\n this._cbr = new CommonBitsRemover()\n this._cbr.add(geom[0])\n this._cbr.add(geom[1])\n const remGeom = new Array(2).fill(null)\n remGeom[0] = this._cbr.removeCommonBits(geom[0].copy())\n remGeom[1] = this._cbr.removeCommonBits(geom[1].copy())\n return remGeom\n }\n prepareResult(geom) {\n this._cbr.addCommonBits(geom)\n return geom\n }\n getResultGeometry(opCode) {\n const prepGeom = this.snap(this._geom)\n const result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode)\n return this.prepareResult(result)\n }\n checkValid(g) {\n if (!g.isValid()) \n System.out.println('Snapped geometry is invalid')\n \n }\n computeSnapTolerance() {\n this._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1])\n }\n snap(geom) {\n const remGeom = this.removeCommonBits(geom)\n const snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], this._snapTolerance)\n return snapGeom\n }\n}\n","import SnapOverlayOp from './SnapOverlayOp'\nimport RuntimeException from '../../../../../../java/lang/RuntimeException'\nimport OverlayOp from '../OverlayOp'\nexport default class SnapIfNeededOverlayOp {\n constructor() {\n SnapIfNeededOverlayOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = new Array(2).fill(null)\n const g1 = arguments[0], g2 = arguments[1]\n this._geom[0] = g1\n this._geom[1] = g2\n }\n static overlayOp(g0, g1, opCode) {\n const op = new SnapIfNeededOverlayOp(g0, g1)\n return op.getResultGeometry(opCode)\n }\n static union(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n }\n static intersection(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n }\n static symDifference(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n }\n static difference(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n }\n getResultGeometry(opCode) {\n let result = null\n let isSuccess = false\n let savedException = null\n try {\n result = OverlayOp.overlayOp(this._geom[0], this._geom[1], opCode)\n const isValid = true\n if (isValid) isSuccess = true\n } catch (ex) {\n if (ex instanceof RuntimeException) \n savedException = ex\n else throw ex\n } finally {}\n if (!isSuccess) \n try {\n result = SnapOverlayOp.overlayOp(this._geom[0], this._geom[1], opCode)\n } catch (ex) {\n if (ex instanceof RuntimeException) \n throw savedException\n else throw ex\n } finally {}\n \n return result\n }\n}\n","import BoundaryNodeRule from '../algorithm/BoundaryNodeRule'\nimport GeometryGraph from '../geomgraph/GeometryGraph'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nexport default class GeometryGraphOperation {\n constructor() {\n GeometryGraphOperation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._resultPrecisionModel = null\n this._arg = null\n if (arguments.length === 1) {\n const g0 = arguments[0]\n this.setComputationPrecision(g0.getPrecisionModel())\n this._arg = new Array(1).fill(null)\n this._arg[0] = new GeometryGraph(0, g0)\n \n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1, BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2]\n if (g0.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0) this.setComputationPrecision(g0.getPrecisionModel()); else this.setComputationPrecision(g1.getPrecisionModel())\n this._arg = new Array(2).fill(null)\n this._arg[0] = new GeometryGraph(0, g0, boundaryNodeRule)\n this._arg[1] = new GeometryGraph(1, g1, boundaryNodeRule)\n }\n }\n getArgGeometry(i) {\n return this._arg[i].getGeometry()\n }\n setComputationPrecision(pm) {\n this._resultPrecisionModel = pm\n this._li.setPrecisionModel(this._resultPrecisionModel)\n }\n}\n","import PointLocator from '../../algorithm/PointLocator'\nimport Location from '../../geom/Location'\nimport EdgeNodingValidator from '../../geomgraph/EdgeNodingValidator'\nimport GeometryCollectionMapper from '../../geom/util/GeometryCollectionMapper'\nimport PolygonBuilder from './PolygonBuilder'\nimport Position from '../../geomgraph/Position'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport LineBuilder from './LineBuilder'\nimport PointBuilder from './PointBuilder'\nimport SnapIfNeededOverlayOp from './snap/SnapIfNeededOverlayOp'\nimport Label from '../../geomgraph/Label'\nimport OverlayNodeFactory from './OverlayNodeFactory'\nimport GeometryGraphOperation from '../GeometryGraphOperation'\nimport EdgeList from '../../geomgraph/EdgeList'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class OverlayOp extends GeometryGraphOperation {\n constructor() {\n super()\n OverlayOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ptLocator = new PointLocator()\n this._geomFact = null\n this._resultGeom = null\n this._graph = null\n this._edgeList = new EdgeList()\n this._resultPolyList = new ArrayList()\n this._resultLineList = new ArrayList()\n this._resultPointList = new ArrayList()\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._geomFact = g0.getFactory()\n }\n static overlayOp(geom0, geom1, opCode) {\n const gov = new OverlayOp(geom0, geom1)\n const geomOv = gov.getResultGeometry(opCode)\n return geomOv\n }\n static union(geom, other) {\n if (geom.isEmpty() || other.isEmpty()) {\n if (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, geom, other, geom.getFactory())\n if (geom.isEmpty()) return other.copy()\n if (other.isEmpty()) return geom.copy()\n }\n if (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.UNION)\n }\n static intersection(geom, other) {\n if (geom.isEmpty() || other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, geom, other, geom.getFactory())\n if (geom.isGeometryCollection()) {\n const g2 = other\n return GeometryCollectionMapper.map(geom, new (class {\n get interfaces_() {\n return [MapOp]\n }\n map(g) {\n return OverlayOp.intersection(g, g2)\n }\n })())\n }\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.INTERSECTION)\n }\n static symDifference(geom, other) {\n if (geom.isEmpty() || other.isEmpty()) {\n if (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, geom, other, geom.getFactory())\n if (geom.isEmpty()) return other.copy()\n if (other.isEmpty()) return geom.copy()\n }\n if (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.SYMDIFFERENCE)\n }\n static resultDimension(opCode, g0, g1) {\n const dim0 = g0.getDimension()\n const dim1 = g1.getDimension()\n let resultDimension = -1\n switch (opCode) {\n case OverlayOp.INTERSECTION:\n resultDimension = Math.min(dim0, dim1)\n break\n case OverlayOp.UNION:\n resultDimension = Math.max(dim0, dim1)\n break\n case OverlayOp.DIFFERENCE:\n resultDimension = dim0\n break\n case OverlayOp.SYMDIFFERENCE:\n resultDimension = Math.max(dim0, dim1)\n break\n }\n return resultDimension\n }\n static createEmptyResult(overlayOpCode, a, b, geomFact) {\n let result = null\n const resultDim = OverlayOp.resultDimension(overlayOpCode, a, b)\n return result = geomFact.createEmpty(resultDim)\n }\n static difference(geom, other) {\n if (geom.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, geom, other, geom.getFactory())\n if (other.isEmpty()) return geom.copy()\n if (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.DIFFERENCE)\n }\n static isResultOfOp() {\n if (arguments.length === 2) {\n const label = arguments[0], opCode = arguments[1]\n const loc0 = label.getLocation(0)\n const loc1 = label.getLocation(1)\n return OverlayOp.isResultOfOp(loc0, loc1, opCode)\n } else if (arguments.length === 3) {\n let loc0 = arguments[0], loc1 = arguments[1], overlayOpCode = arguments[2]\n if (loc0 === Location.BOUNDARY) loc0 = Location.INTERIOR\n if (loc1 === Location.BOUNDARY) loc1 = Location.INTERIOR\n switch (overlayOpCode) {\n case OverlayOp.INTERSECTION:\n return loc0 === Location.INTERIOR && loc1 === Location.INTERIOR\n case OverlayOp.UNION:\n return loc0 === Location.INTERIOR || loc1 === Location.INTERIOR\n case OverlayOp.DIFFERENCE:\n return loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR\n case OverlayOp.SYMDIFFERENCE:\n return loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR || loc0 !== Location.INTERIOR && loc1 === Location.INTERIOR\n }\n return false\n }\n }\n insertUniqueEdge(e) {\n const existingEdge = this._edgeList.findEqualEdge(e)\n if (existingEdge !== null) {\n const existingLabel = existingEdge.getLabel()\n let labelToMerge = e.getLabel()\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel())\n labelToMerge.flip()\n }\n const depth = existingEdge.getDepth()\n if (depth.isNull()) \n depth.add(existingLabel)\n \n depth.add(labelToMerge)\n existingLabel.merge(labelToMerge)\n } else {\n this._edgeList.add(e)\n }\n }\n getGraph() {\n return this._graph\n }\n cancelDuplicateResultEdges() {\n for (let it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n const sym = de.getSym()\n if (de.isInResult() && sym.isInResult()) {\n de.setInResult(false)\n sym.setInResult(false)\n }\n }\n }\n isCoveredByLA(coord) {\n if (this.isCovered(coord, this._resultLineList)) return true\n if (this.isCovered(coord, this._resultPolyList)) return true\n return false\n }\n computeGeometry(resultPointList, resultLineList, resultPolyList, opcode) {\n const geomList = new ArrayList()\n geomList.addAll(resultPointList)\n geomList.addAll(resultLineList)\n geomList.addAll(resultPolyList)\n if (geomList.isEmpty()) return OverlayOp.createEmptyResult(opcode, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact)\n return this._geomFact.buildGeometry(geomList)\n }\n mergeSymLabels() {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().mergeSymLabels()\n }\n }\n isCovered(coord, geomList) {\n for (let it = geomList.iterator(); it.hasNext(); ) {\n const geom = it.next()\n const loc = this._ptLocator.locate(coord, geom)\n if (loc !== Location.EXTERIOR) return true\n }\n return false\n }\n replaceCollapsedEdges() {\n const newEdges = new ArrayList()\n for (let it = this._edgeList.iterator(); it.hasNext(); ) {\n const e = it.next()\n if (e.isCollapsed()) {\n it.remove()\n newEdges.add(e.getCollapsedEdge())\n }\n }\n this._edgeList.addAll(newEdges)\n }\n updateNodeLabelling() {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n const lbl = node.getEdges().getLabel()\n node.getLabel().merge(lbl)\n }\n }\n getResultGeometry(overlayOpCode) {\n this.computeOverlay(overlayOpCode)\n return this._resultGeom\n }\n insertUniqueEdges(edges) {\n for (let i = edges.iterator(); i.hasNext(); ) {\n const e = i.next()\n this.insertUniqueEdge(e)\n }\n }\n computeOverlay(opCode) {\n this.copyPoints(0)\n this.copyPoints(1)\n this._arg[0].computeSelfNodes(this._li, false)\n this._arg[1].computeSelfNodes(this._li, false)\n this._arg[0].computeEdgeIntersections(this._arg[1], this._li, true)\n const baseSplitEdges = new ArrayList()\n this._arg[0].computeSplitEdges(baseSplitEdges)\n this._arg[1].computeSplitEdges(baseSplitEdges)\n const splitEdges = baseSplitEdges\n this.insertUniqueEdges(baseSplitEdges)\n this.computeLabelsFromDepths()\n this.replaceCollapsedEdges()\n EdgeNodingValidator.checkValid(this._edgeList.getEdges())\n this._graph.addEdges(this._edgeList.getEdges())\n this.computeLabelling()\n this.labelIncompleteNodes()\n this.findResultAreaEdges(opCode)\n this.cancelDuplicateResultEdges()\n const polyBuilder = new PolygonBuilder(this._geomFact)\n polyBuilder.add(this._graph)\n this._resultPolyList = polyBuilder.getPolygons()\n const lineBuilder = new LineBuilder(this, this._geomFact, this._ptLocator)\n this._resultLineList = lineBuilder.build(opCode)\n const pointBuilder = new PointBuilder(this, this._geomFact, this._ptLocator)\n this._resultPointList = pointBuilder.build(opCode)\n this._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, opCode)\n }\n labelIncompleteNode(n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setLocation(targetIndex, loc)\n }\n copyPoints(argIndex) {\n for (let i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n const graphNode = i.next()\n const newNode = this._graph.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n findResultAreaEdges(opCode) {\n for (let it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n if (label.isArea() && !de.isInteriorAreaEdge() && OverlayOp.isResultOfOp(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), opCode)) \n de.setInResult(true)\n \n }\n }\n computeLabelsFromDepths() {\n for (let it = this._edgeList.iterator(); it.hasNext(); ) {\n const e = it.next()\n const lbl = e.getLabel()\n const depth = e.getDepth()\n if (!depth.isNull()) {\n depth.normalize()\n for (let i = 0; i < 2; i++) \n if (!lbl.isNull(i) && lbl.isArea() && !depth.isNull(i)) \n if (depth.getDelta(i) === 0) {\n lbl.toLine(i)\n } else {\n Assert.isTrue(!depth.isNull(i, Position.LEFT), 'depth of LEFT side has not been initialized')\n lbl.setLocation(i, Position.LEFT, depth.getLocation(i, Position.LEFT))\n Assert.isTrue(!depth.isNull(i, Position.RIGHT), 'depth of RIGHT side has not been initialized')\n lbl.setLocation(i, Position.RIGHT, depth.getLocation(i, Position.RIGHT))\n }\n \n \n }\n }\n }\n computeLabelling() {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().computeLabelling(this._arg)\n }\n this.mergeSymLabels()\n this.updateNodeLabelling()\n }\n labelIncompleteNodes() {\n for (let ni = this._graph.getNodes().iterator(); ni.hasNext(); ) {\n const n = ni.next()\n const label = n.getLabel()\n if (n.isIsolated()) \n if (label.isNull(0)) this.labelIncompleteNode(n, 0); else this.labelIncompleteNode(n, 1)\n \n n.getEdges().updateLabelling(label)\n }\n }\n isCoveredByA(coord) {\n if (this.isCovered(coord, this._resultPolyList)) return true\n return false\n }\n}\nOverlayOp.INTERSECTION = 1\nOverlayOp.UNION = 2\nOverlayOp.DIFFERENCE = 3\nOverlayOp.SYMDIFFERENCE = 4\n","import DirectedEdge from '../../planargraph/DirectedEdge'\nexport default class PolygonizeDirectedEdge extends DirectedEdge {\n constructor() {\n super()\n PolygonizeDirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeRing = null\n this._next = null\n this._label = -1\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\n }\n getNext() {\n return this._next\n }\n isInRing() {\n return this._edgeRing !== null\n }\n setRing(edgeRing) {\n this._edgeRing = edgeRing\n }\n setLabel(label) {\n this._label = label\n }\n getLabel() {\n return this._label\n }\n setNext(next) {\n this._next = next\n }\n getRing() {\n return this._edgeRing\n }\n}\n","import Edge from '../../planargraph/Edge'\nexport default class PolygonizeEdge extends Edge {\n constructor() {\n super()\n PolygonizeEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n getLine() {\n return this._line\n }\n}\n","import Location from '../../geom/Location'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Position from '../../geomgraph/Position'\nimport Polygon from '../../geom/Polygon'\nimport MultiPolygon from '../../geom/MultiPolygon'\nimport MaximalEdgeRing from '../overlay/MaximalEdgeRing'\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class ConnectedInteriorTester {\n constructor() {\n ConnectedInteriorTester.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geometryFactory = new GeometryFactory()\n this._geomGraph = null\n this._disconnectedRingcoord = null\n const geomGraph = arguments[0]\n this._geomGraph = geomGraph\n }\n static findDifferentPoint(coord, pt) {\n for (let i = 0; i < coord.length; i++) \n if (!coord[i].equals(pt)) return coord[i]\n \n return null\n }\n visitInteriorRing(ring, graph) {\n if (ring.isEmpty()) return null\n const pts = ring.getCoordinates()\n const pt0 = pts[0]\n const pt1 = ConnectedInteriorTester.findDifferentPoint(pts, pt0)\n const e = graph.findEdgeInSameDirection(pt0, pt1)\n const de = graph.findEdgeEnd(e)\n let intDe = null\n if (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) \n intDe = de\n else if (de.getSym().getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) \n intDe = de.getSym()\n \n Assert.isTrue(intDe !== null, 'unable to find dirEdge with Interior on RHS')\n this.visitLinkedDirectedEdges(intDe)\n }\n visitShellInteriors(g, graph) {\n if (g instanceof Polygon) {\n const p = g\n this.visitInteriorRing(p.getExteriorRing(), graph)\n }\n if (g instanceof MultiPolygon) {\n const mp = g\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const p = mp.getGeometryN(i)\n this.visitInteriorRing(p.getExteriorRing(), graph)\n }\n }\n }\n getCoordinate() {\n return this._disconnectedRingcoord\n }\n setInteriorEdgesInResult(graph) {\n for (let it = graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) \n de.setInResult(true)\n \n }\n }\n visitLinkedDirectedEdges(start) {\n const startDe = start\n let de = start\n do {\n Assert.isTrue(de !== null, 'found null Directed Edge')\n de.setVisited(true)\n de = de.getNext()\n } while (de !== startDe)\n }\n buildEdgeRings(dirEdges) {\n const edgeRings = new ArrayList()\n for (let it = dirEdges.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() && de.getEdgeRing() === null) {\n const er = new MaximalEdgeRing(de, this._geometryFactory)\n er.linkDirectedEdgesForMinimalEdgeRings()\n const minEdgeRings = er.buildMinimalRings()\n edgeRings.addAll(minEdgeRings)\n }\n }\n return edgeRings\n }\n hasUnvisitedShellEdge(edgeRings) {\n for (let i = 0; i < edgeRings.size(); i++) {\n const er = edgeRings.get(i)\n if (er.isHole()) continue\n const edges = er.getEdges()\n let de = edges.get(0)\n if (de.getLabel().getLocation(0, Position.RIGHT) !== Location.INTERIOR) continue\n for (let j = 0; j < edges.size(); j++) {\n de = edges.get(j)\n if (!de.isVisited()) {\n this._disconnectedRingcoord = de.getCoordinate()\n return true\n }\n }\n }\n return false\n }\n isInteriorsConnected() {\n const splitEdges = new ArrayList()\n this._geomGraph.computeSplitEdges(splitEdges)\n const graph = new PlanarGraph(new OverlayNodeFactory())\n graph.addEdges(splitEdges)\n this.setInteriorEdgesInResult(graph)\n graph.linkResultDirectedEdges()\n const edgeRings = this.buildEdgeRings(graph.getEdgeEnds())\n this.visitShellInteriors(this._geomGraph.getGeometry(), graph)\n return !this.hasUnvisitedShellEdge(edgeRings)\n }\n}\n","import EdgeEnd from '../../geomgraph/EdgeEnd'\nimport Label from '../../geomgraph/Label'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class EdgeEndBuilder {\n createEdgeEndForNext(edge, l, eiCurr, eiNext) {\n const iNext = eiCurr.segmentIndex + 1\n if (iNext >= edge.getNumPoints() && eiNext === null) return null\n let pNext = edge.getCoordinate(iNext)\n if (eiNext !== null && eiNext.segmentIndex === eiCurr.segmentIndex) pNext = eiNext.coord\n const e = new EdgeEnd(edge, eiCurr.coord, pNext, new Label(edge.getLabel()))\n l.add(e)\n }\n createEdgeEndForPrev(edge, l, eiCurr, eiPrev) {\n let iPrev = eiCurr.segmentIndex\n if (eiCurr.dist === 0.0) {\n if (iPrev === 0) return null\n iPrev--\n }\n let pPrev = edge.getCoordinate(iPrev)\n if (eiPrev !== null && eiPrev.segmentIndex >= iPrev) pPrev = eiPrev.coord\n const label = new Label(edge.getLabel())\n label.flip()\n const e = new EdgeEnd(edge, eiCurr.coord, pPrev, label)\n l.add(e)\n }\n computeEdgeEnds() {\n if (arguments.length === 1) {\n const edges = arguments[0]\n const l = new ArrayList()\n for (let i = edges; i.hasNext(); ) {\n const e = i.next()\n this.computeEdgeEnds(e, l)\n }\n return l\n } else if (arguments.length === 2) {\n const edge = arguments[0], l = arguments[1]\n const eiList = edge.getEdgeIntersectionList()\n eiList.addEndpoints()\n const it = eiList.iterator()\n let eiPrev = null\n let eiCurr = null\n if (!it.hasNext()) return null\n let eiNext = it.next()\n do {\n eiPrev = eiCurr\n eiCurr = eiNext\n eiNext = null\n if (it.hasNext()) eiNext = it.next()\n if (eiCurr !== null) {\n this.createEdgeEndForPrev(edge, l, eiCurr, eiPrev)\n this.createEdgeEndForNext(edge, l, eiCurr, eiNext)\n }\n } while (eiCurr !== null)\n }\n }\n}\n","import Location from '../../geom/Location'\nimport EdgeEnd from '../../geomgraph/EdgeEnd'\nimport Position from '../../geomgraph/Position'\nimport GeometryGraph from '../../geomgraph/GeometryGraph'\nimport Label from '../../geomgraph/Label'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Edge from '../../geomgraph/Edge'\nexport default class EdgeEndBundle extends EdgeEnd {\n constructor() {\n super()\n EdgeEndBundle.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeEnds = new ArrayList()\n if (arguments.length === 1) {\n const e = arguments[0]\n EdgeEndBundle.constructor_.call(this, null, e)\n } else if (arguments.length === 2) {\n const boundaryNodeRule = arguments[0], e = arguments[1]\n EdgeEnd.constructor_.call(this, e.getEdge(), e.getCoordinate(), e.getDirectedCoordinate(), new Label(e.getLabel()))\n this.insert(e)\n }\n }\n insert(e) {\n this._edgeEnds.add(e)\n }\n print(out) {\n out.println('EdgeEndBundle--> Label: ' + this._label)\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n ee.print(out)\n out.println()\n }\n }\n iterator() {\n return this._edgeEnds.iterator()\n }\n getEdgeEnds() {\n return this._edgeEnds\n }\n computeLabelOn(geomIndex, boundaryNodeRule) {\n let boundaryCount = 0\n let foundInterior = false\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const loc = e.getLabel().getLocation(geomIndex)\n if (loc === Location.BOUNDARY) boundaryCount++\n if (loc === Location.INTERIOR) foundInterior = true\n }\n let loc = Location.NONE\n if (foundInterior) loc = Location.INTERIOR\n if (boundaryCount > 0) \n loc = GeometryGraph.determineBoundary(boundaryNodeRule, boundaryCount)\n \n this._label.setLocation(geomIndex, loc)\n }\n computeLabelSide(geomIndex, side) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n if (e.getLabel().isArea()) {\n const loc = e.getLabel().getLocation(geomIndex, side)\n if (loc === Location.INTERIOR) {\n this._label.setLocation(geomIndex, side, Location.INTERIOR)\n return null\n } else if (loc === Location.EXTERIOR) {\n this._label.setLocation(geomIndex, side, Location.EXTERIOR)\n }\n }\n }\n }\n getLabel() {\n return this._label\n }\n computeLabelSides(geomIndex) {\n this.computeLabelSide(geomIndex, Position.LEFT)\n this.computeLabelSide(geomIndex, Position.RIGHT)\n }\n updateIM(im) {\n Edge.updateIM(this._label, im)\n }\n computeLabel(boundaryNodeRule) {\n let isArea = false\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n if (e.getLabel().isArea()) isArea = true\n }\n if (isArea) this._label = new Label(Location.NONE, Location.NONE, Location.NONE); else this._label = new Label(Location.NONE)\n for (let i = 0; i < 2; i++) {\n this.computeLabelOn(i, boundaryNodeRule)\n if (isArea) this.computeLabelSides(i)\n }\n }\n}\n","import EdgeEndStar from '../../geomgraph/EdgeEndStar'\nimport EdgeEndBundle from './EdgeEndBundle'\nexport default class EdgeEndBundleStar extends EdgeEndStar {\n constructor() {\n super()\n }\n updateIM(im) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const esb = it.next()\n esb.updateIM(im)\n }\n }\n insert(e) {\n let eb = this._edgeMap.get(e)\n if (eb === null) {\n eb = new EdgeEndBundle(e)\n this.insertEdgeEnd(e, eb)\n } else {\n eb.insert(e)\n }\n }\n}\n","import Node from '../../geomgraph/Node'\nexport default class RelateNode extends Node {\n constructor() {\n super()\n RelateNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const coord = arguments[0], edges = arguments[1]\n Node.constructor_.call(this, coord, edges)\n }\n updateIMFromEdges(im) {\n this._edges.updateIM(im)\n }\n computeIM(im) {\n im.setAtLeastIfValid(this._label.getLocation(0), this._label.getLocation(1), 0)\n }\n}\n","import EdgeEndBundleStar from './EdgeEndBundleStar'\nimport RelateNode from './RelateNode'\nimport NodeFactory from '../../geomgraph/NodeFactory'\nexport default class RelateNodeFactory extends NodeFactory {\n constructor() {\n super()\n }\n createNode(coord) {\n return new RelateNode(coord, new EdgeEndBundleStar())\n }\n}\n","import Location from '../../geom/Location'\nimport EdgeEndBuilder from './EdgeEndBuilder'\nimport NodeMap from '../../geomgraph/NodeMap'\nimport RelateNodeFactory from './RelateNodeFactory'\nexport default class RelateNodeGraph {\n constructor() {\n RelateNodeGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodes = new NodeMap(new RelateNodeFactory())\n }\n insertEdgeEnds(ee) {\n for (let i = ee.iterator(); i.hasNext(); ) {\n const e = i.next()\n this._nodes.add(e)\n }\n }\n getNodeIterator() {\n return this._nodes.iterator()\n }\n copyNodesAndLabels(geomGraph, argIndex) {\n for (let nodeIt = geomGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n const graphNode = nodeIt.next()\n const newNode = this._nodes.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n build(geomGraph) {\n this.computeIntersectionNodes(geomGraph, 0)\n this.copyNodesAndLabels(geomGraph, 0)\n const eeBuilder = new EdgeEndBuilder()\n const eeList = eeBuilder.computeEdgeEnds(geomGraph.getEdgeIterator())\n this.insertEdgeEnds(eeList)\n }\n computeIntersectionNodes(geomGraph, argIndex) {\n for (let edgeIt = geomGraph.getEdgeIterator(); edgeIt.hasNext(); ) {\n const e = edgeIt.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.addNode(ei.coord)\n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else \n if (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n}\n","import RelateNodeGraph from '../relate/RelateNodeGraph'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nexport default class ConsistentAreaTester {\n constructor() {\n ConsistentAreaTester.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._geomGraph = null\n this._nodeGraph = new RelateNodeGraph()\n this._invalidPoint = null\n const geomGraph = arguments[0]\n this._geomGraph = geomGraph\n }\n isNodeEdgeAreaLabelsConsistent() {\n for (let nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n const node = nodeIt.next()\n if (!node.getEdges().isAreaLabelsConsistent(this._geomGraph)) {\n this._invalidPoint = node.getCoordinate().copy()\n return false\n }\n }\n return true\n }\n getInvalidPoint() {\n return this._invalidPoint\n }\n hasDuplicateRings() {\n for (let nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n const node = nodeIt.next()\n for (let i = node.getEdges().iterator(); i.hasNext(); ) {\n const eeb = i.next()\n if (eeb.getEdgeEnds().size() > 1) {\n this._invalidPoint = eeb.getEdge().getCoordinate(0)\n return true\n }\n }\n }\n return false\n }\n isNodeConsistentArea() {\n const intersector = this._geomGraph.computeSelfNodes(this._li, true, true)\n if (intersector.hasProperIntersection()) {\n this._invalidPoint = intersector.getProperIntersectionPoint()\n return false\n }\n this._nodeGraph.build(this._geomGraph)\n return this.isNodeEdgeAreaLabelsConsistent()\n }\n}\n","import STRtree from '../../index/strtree/STRtree'\nimport IsValidOp from './IsValidOp'\nimport PointLocation from '../../algorithm/PointLocation'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nexport default class IndexedNestedRingTester {\n constructor() {\n IndexedNestedRingTester.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = null\n this._rings = new ArrayList()\n this._totalEnv = new Envelope()\n this._index = null\n this._nestedPt = null\n const graph = arguments[0]\n this._graph = graph\n }\n buildIndex() {\n this._index = new STRtree()\n for (let i = 0; i < this._rings.size(); i++) {\n const ring = this._rings.get(i)\n const env = ring.getEnvelopeInternal()\n this._index.insert(env, ring)\n }\n }\n getNestedPoint() {\n return this._nestedPt\n }\n isNonNested() {\n this.buildIndex()\n for (let i = 0; i < this._rings.size(); i++) {\n const innerRing = this._rings.get(i)\n const innerRingPts = innerRing.getCoordinates()\n const results = this._index.query(innerRing.getEnvelopeInternal())\n for (let j = 0; j < results.size(); j++) {\n const searchRing = results.get(j)\n const searchRingPts = searchRing.getCoordinates()\n if (innerRing === searchRing) continue\n if (!innerRing.getEnvelopeInternal().intersects(searchRing.getEnvelopeInternal())) continue\n const innerRingPt = IsValidOp.findPtNotNode(innerRingPts, searchRing, this._graph)\n if (innerRingPt === null) continue\n const isInside = PointLocation.isInRing(innerRingPt, searchRingPts)\n if (isInside) {\n this._nestedPt = innerRingPt\n return false\n }\n }\n }\n return true\n }\n add(ring) {\n this._rings.add(ring)\n this._totalEnv.expandToInclude(ring.getEnvelopeInternal())\n }\n}\n","export default class TopologyValidationError {\n constructor() {\n TopologyValidationError.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._errorType = null\n this._pt = null\n if (arguments.length === 1) {\n const errorType = arguments[0]\n TopologyValidationError.constructor_.call(this, errorType, null)\n } else if (arguments.length === 2) {\n const errorType = arguments[0], pt = arguments[1]\n this._errorType = errorType\n if (pt !== null) this._pt = pt.copy()\n }\n }\n getErrorType() {\n return this._errorType\n }\n getMessage() {\n return TopologyValidationError.errMsg[this._errorType]\n }\n getCoordinate() {\n return this._pt\n }\n toString() {\n let locStr = ''\n if (this._pt !== null) locStr = ' at or near point ' + this._pt\n return this.getMessage() + locStr\n }\n}\nTopologyValidationError.ERROR = 0\nTopologyValidationError.REPEATED_POINT = 1\nTopologyValidationError.HOLE_OUTSIDE_SHELL = 2\nTopologyValidationError.NESTED_HOLES = 3\nTopologyValidationError.DISCONNECTED_INTERIOR = 4\nTopologyValidationError.SELF_INTERSECTION = 5\nTopologyValidationError.RING_SELF_INTERSECTION = 6\nTopologyValidationError.NESTED_SHELLS = 7\nTopologyValidationError.DUPLICATE_RINGS = 8\nTopologyValidationError.TOO_FEW_POINTS = 9\nTopologyValidationError.INVALID_COORDINATE = 10\nTopologyValidationError.RING_NOT_CLOSED = 11\nTopologyValidationError.errMsg = ['Topology Validation Error', 'Repeated Point', 'Hole lies outside shell', 'Holes are nested', 'Interior is disconnected', 'Self-intersection', 'Ring Self-intersection', 'Nested shells', 'Duplicate Rings', 'Too few distinct points in geometry component', 'Invalid Coordinate', 'Ring is not closed']\n","import Location from '../../geom/Location'\nimport TreeSet from '../../../../../java/util/TreeSet'\nimport LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport ConnectedInteriorTester from './ConnectedInteriorTester'\nimport Coordinate from '../../geom/Coordinate'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport MultiPoint from '../../geom/MultiPoint'\nimport PointLocation from '../../algorithm/PointLocation'\nimport LinearRing from '../../geom/LinearRing'\nimport Double from '../../../../../java/lang/Double'\nimport GeometryGraph from '../../geomgraph/GeometryGraph'\nimport MultiPolygon from '../../geom/MultiPolygon'\nimport ConsistentAreaTester from './ConsistentAreaTester'\nimport GeometryCollection from '../../geom/GeometryCollection'\nimport UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException'\nimport IndexedNestedRingTester from './IndexedNestedRingTester'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport TopologyValidationError from './TopologyValidationError'\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator'\nimport Assert from '../../util/Assert'\nexport default class IsValidOp {\n constructor() {\n IsValidOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentGeometry = null\n this._isSelfTouchingRingFormingHoleValid = false\n this._validErr = null\n const parentGeometry = arguments[0]\n this._parentGeometry = parentGeometry\n }\n static findPtNotNode(testCoords, searchRing, graph) {\n const searchEdge = graph.findEdge(searchRing)\n const eiList = searchEdge.getEdgeIntersectionList()\n for (let i = 0; i < testCoords.length; i++) {\n const pt = testCoords[i]\n if (!eiList.isIntersection(pt)) return pt\n }\n return null\n }\n static isValid() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const isValidOp = new IsValidOp(geom)\n return isValidOp.isValid()\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n if (Double.isNaN(coord.x)) return false\n if (Double.isInfinite(coord.x)) return false\n if (Double.isNaN(coord.y)) return false\n if (Double.isInfinite(coord.y)) return false\n return true\n }\n }\n checkInvalidCoordinates() {\n if (arguments[0] instanceof Array) {\n const coords = arguments[0]\n for (let i = 0; i < coords.length; i++) \n if (!IsValidOp.isValid(coords[i])) {\n this._validErr = new TopologyValidationError(TopologyValidationError.INVALID_COORDINATE, coords[i])\n return null\n }\n \n } else if (arguments[0] instanceof Polygon) {\n const poly = arguments[0]\n this.checkInvalidCoordinates(poly.getExteriorRing().getCoordinates())\n if (this._validErr !== null) return null\n for (let i = 0; i < poly.getNumInteriorRing(); i++) {\n this.checkInvalidCoordinates(poly.getInteriorRingN(i).getCoordinates())\n if (this._validErr !== null) return null\n }\n }\n }\n checkHolesNotNested(p, graph) {\n if (p.getNumInteriorRing() <= 0) return null\n const nestedTester = new IndexedNestedRingTester(graph)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const innerHole = p.getInteriorRingN(i)\n if (innerHole.isEmpty()) continue\n nestedTester.add(innerHole)\n }\n const isNonNested = nestedTester.isNonNested()\n if (!isNonNested) \n this._validErr = new TopologyValidationError(TopologyValidationError.NESTED_HOLES, nestedTester.getNestedPoint())\n \n }\n checkConsistentArea(graph) {\n const cat = new ConsistentAreaTester(graph)\n const isValidArea = cat.isNodeConsistentArea()\n if (!isValidArea) {\n this._validErr = new TopologyValidationError(TopologyValidationError.SELF_INTERSECTION, cat.getInvalidPoint())\n return null\n }\n if (cat.hasDuplicateRings()) \n this._validErr = new TopologyValidationError(TopologyValidationError.DUPLICATE_RINGS, cat.getInvalidPoint())\n \n }\n isValid() {\n this.checkValid(this._parentGeometry)\n return this._validErr === null\n }\n checkShellInsideHole(shell, hole, graph) {\n const shellPts = shell.getCoordinates()\n const holePts = hole.getCoordinates()\n const shellPt = IsValidOp.findPtNotNode(shellPts, hole, graph)\n if (shellPt !== null) {\n const insideHole = PointLocation.isInRing(shellPt, holePts)\n if (!insideHole) \n return shellPt\n \n }\n const holePt = IsValidOp.findPtNotNode(holePts, shell, graph)\n if (holePt !== null) {\n const insideShell = PointLocation.isInRing(holePt, shellPts)\n if (insideShell) \n return holePt\n \n return null\n }\n Assert.shouldNeverReachHere('points in shell and hole appear to be equal')\n return null\n }\n checkNoSelfIntersectingRings(graph) {\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n this.checkNoSelfIntersectingRing(e.getEdgeIntersectionList())\n if (this._validErr !== null) return null\n }\n }\n checkConnectedInteriors(graph) {\n const cit = new ConnectedInteriorTester(graph)\n if (!cit.isInteriorsConnected()) this._validErr = new TopologyValidationError(TopologyValidationError.DISCONNECTED_INTERIOR, cit.getCoordinate())\n }\n checkNoSelfIntersectingRing(eiList) {\n const nodeSet = new TreeSet()\n let isFirst = true\n for (let i = eiList.iterator(); i.hasNext(); ) {\n const ei = i.next()\n if (isFirst) {\n isFirst = false\n continue\n }\n if (nodeSet.contains(ei.coord)) {\n this._validErr = new TopologyValidationError(TopologyValidationError.RING_SELF_INTERSECTION, ei.coord)\n return null\n } else {\n nodeSet.add(ei.coord)\n }\n }\n }\n checkHolesInShell(p, graph) {\n if (p.getNumInteriorRing() <= 0) return null\n const shell = p.getExteriorRing()\n const isShellEmpty = shell.isEmpty()\n const pir = new IndexedPointInAreaLocator(shell)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n let holePt = null\n if (hole.isEmpty()) continue\n holePt = IsValidOp.findPtNotNode(hole.getCoordinates(), shell, graph)\n if (holePt === null) return null\n const outside = isShellEmpty || Location.EXTERIOR === pir.locate(holePt)\n if (outside) {\n this._validErr = new TopologyValidationError(TopologyValidationError.HOLE_OUTSIDE_SHELL, holePt)\n return null\n }\n }\n }\n checkTooFewPoints(graph) {\n if (graph.hasTooFewPoints()) {\n this._validErr = new TopologyValidationError(TopologyValidationError.TOO_FEW_POINTS, graph.getInvalidPoint())\n return null\n }\n }\n getValidationError() {\n this.checkValid(this._parentGeometry)\n return this._validErr\n }\n checkValid() {\n if (arguments[0] instanceof Point) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n } else if (arguments[0] instanceof MultiPoint) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n } else if (arguments[0] instanceof LinearRing) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n if (this._validErr !== null) return null\n this.checkClosedRing(g)\n if (this._validErr !== null) return null\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n if (this._validErr !== null) return null\n const li = new RobustLineIntersector()\n graph.computeSelfNodes(li, true, true)\n this.checkNoSelfIntersectingRings(graph)\n } else if (arguments[0] instanceof LineString) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n if (this._validErr !== null) return null\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n } else if (arguments[0] instanceof Polygon) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g)\n if (this._validErr !== null) return null\n this.checkClosedRings(g)\n if (this._validErr !== null) return null\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n if (this._validErr !== null) return null\n this.checkConsistentArea(graph)\n if (this._validErr !== null) return null\n if (!this._isSelfTouchingRingFormingHoleValid) {\n this.checkNoSelfIntersectingRings(graph)\n if (this._validErr !== null) return null\n }\n this.checkHolesInShell(g, graph)\n if (this._validErr !== null) return null\n this.checkHolesNotNested(g, graph)\n if (this._validErr !== null) return null\n this.checkConnectedInteriors(graph)\n } else if (arguments[0] instanceof MultiPolygon) {\n const g = arguments[0]\n for (let i = 0; i < g.getNumGeometries(); i++) {\n const p = g.getGeometryN(i)\n this.checkInvalidCoordinates(p)\n if (this._validErr !== null) return null\n this.checkClosedRings(p)\n if (this._validErr !== null) return null\n }\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n if (this._validErr !== null) return null\n this.checkConsistentArea(graph)\n if (this._validErr !== null) return null\n if (!this._isSelfTouchingRingFormingHoleValid) {\n this.checkNoSelfIntersectingRings(graph)\n if (this._validErr !== null) return null\n }\n for (let i = 0; i < g.getNumGeometries(); i++) {\n const p = g.getGeometryN(i)\n this.checkHolesInShell(p, graph)\n if (this._validErr !== null) return null\n }\n for (let i = 0; i < g.getNumGeometries(); i++) {\n const p = g.getGeometryN(i)\n this.checkHolesNotNested(p, graph)\n if (this._validErr !== null) return null\n }\n this.checkShellsNotNested(g, graph)\n if (this._validErr !== null) return null\n this.checkConnectedInteriors(graph)\n } else if (arguments[0] instanceof GeometryCollection) {\n const gc = arguments[0]\n for (let i = 0; i < gc.getNumGeometries(); i++) {\n const g = gc.getGeometryN(i)\n this.checkValid(g)\n if (this._validErr !== null) return null\n }\n } else if (arguments[0] instanceof Geometry) {\n const g = arguments[0]\n this._validErr = null\n if (g.isEmpty()) return null\n if (g instanceof Point) this.checkValid(g); else if (g instanceof MultiPoint) this.checkValid(g); else if (g instanceof LinearRing) this.checkValid(g); else if (g instanceof LineString) this.checkValid(g); else if (g instanceof Polygon) this.checkValid(g); else if (g instanceof MultiPolygon) this.checkValid(g); else if (g instanceof GeometryCollection) this.checkValid(g); else throw new UnsupportedOperationException(g.getGeometryType())\n }\n }\n setSelfTouchingRingFormingHoleValid(isValid) {\n this._isSelfTouchingRingFormingHoleValid = isValid\n }\n checkShellNotNested(shell, p, graph) {\n const shellPts = shell.getCoordinates()\n const polyShell = p.getExteriorRing()\n if (polyShell.isEmpty()) return null\n const polyPts = polyShell.getCoordinates()\n const shellPt = IsValidOp.findPtNotNode(shellPts, polyShell, graph)\n if (shellPt === null) return null\n const insidePolyShell = PointLocation.isInRing(shellPt, polyPts)\n if (!insidePolyShell) return null\n if (p.getNumInteriorRing() <= 0) {\n this._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, shellPt)\n return null\n }\n let badNestedPt = null\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n badNestedPt = this.checkShellInsideHole(shell, hole, graph)\n if (badNestedPt === null) return null\n }\n this._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, badNestedPt)\n }\n checkClosedRings(poly) {\n this.checkClosedRing(poly.getExteriorRing())\n if (this._validErr !== null) return null\n for (let i = 0; i < poly.getNumInteriorRing(); i++) {\n this.checkClosedRing(poly.getInteriorRingN(i))\n if (this._validErr !== null) return null\n }\n }\n checkClosedRing(ring) {\n if (ring.isEmpty()) return null\n if (!ring.isClosed()) {\n let pt = null\n if (ring.getNumPoints() >= 1) pt = ring.getCoordinateN(0)\n this._validErr = new TopologyValidationError(TopologyValidationError.RING_NOT_CLOSED, pt)\n }\n }\n checkShellsNotNested(mp, graph) {\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const p = mp.getGeometryN(i)\n const shell = p.getExteriorRing()\n for (let j = 0; j < mp.getNumGeometries(); j++) {\n if (i === j) continue\n const p2 = mp.getGeometryN(j)\n this.checkShellNotNested(shell, p2, graph)\n if (this._validErr !== null) return null\n }\n }\n }\n}\n","import Location from '../../geom/Location'\nimport CoordinateList from '../../geom/CoordinateList'\nimport WKTWriter from '../../io/WKTWriter'\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence'\nimport IsValidOp from '../valid/IsValidOp'\nimport LinearRing from '../../geom/LinearRing'\nimport Exception from '../../../../../java/lang/Exception'\nimport Orientation from '../../algorithm/Orientation'\nimport System from '../../../../../java/lang/System'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Comparator from '../../../../../java/util/Comparator'\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator'\nimport Assert from '../../util/Assert'\nexport default class EdgeRing {\n constructor() {\n EdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n this._deList = new ArrayList()\n this._lowestEdge = null\n this._ring = null\n this._locator = null\n this._ringPts = null\n this._holes = null\n this._shell = null\n this._isHole = null\n this._isProcessed = false\n this._isIncludedSet = false\n this._isIncluded = false\n const factory = arguments[0]\n this._factory = factory\n }\n static findDirEdgesInRing(startDE) {\n let de = startDE\n const edges = new ArrayList()\n do {\n edges.add(de)\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n return edges\n }\n static addEdge(coords, isForward, coordList) {\n if (isForward) \n for (let i = 0; i < coords.length; i++) \n coordList.add(coords[i], false)\n \n else \n for (let i = coords.length - 1; i >= 0; i--) \n coordList.add(coords[i], false)\n \n \n }\n static findEdgeRingContaining(testEr, erList) {\n const testRing = testEr.getRing()\n const testEnv = testRing.getEnvelopeInternal()\n let testPt = testRing.getCoordinateN(0)\n let minRing = null\n let minRingEnv = null\n for (let it = erList.iterator(); it.hasNext(); ) {\n const tryEdgeRing = it.next()\n const tryRing = tryEdgeRing.getRing()\n const tryShellEnv = tryRing.getEnvelopeInternal()\n if (tryShellEnv.equals(testEnv)) continue\n if (!tryShellEnv.contains(testEnv)) continue\n testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryEdgeRing.getCoordinates())\n const isContained = tryEdgeRing.isInRing(testPt)\n if (isContained) \n if (minRing === null || minRingEnv.contains(tryShellEnv)) {\n minRing = tryEdgeRing\n minRingEnv = minRing.getRing().getEnvelopeInternal()\n }\n \n }\n return minRing\n }\n isIncluded() {\n return this._isIncluded\n }\n getCoordinates() {\n if (this._ringPts === null) {\n const coordList = new CoordinateList()\n for (let i = this._deList.iterator(); i.hasNext(); ) {\n const de = i.next()\n const edge = de.getEdge()\n EdgeRing.addEdge(edge.getLine().getCoordinates(), de.getEdgeDirection(), coordList)\n }\n this._ringPts = coordList.toCoordinateArray()\n }\n return this._ringPts\n }\n isIncludedSet() {\n return this._isIncludedSet\n }\n isValid() {\n this.getCoordinates()\n if (this._ringPts.length <= 3) return false\n this.getRing()\n return IsValidOp.isValid(this._ring)\n }\n build(startDE) {\n let de = startDE\n do {\n this.add(de)\n de.setRing(this)\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n }\n isInRing(pt) {\n return Location.EXTERIOR !== this.getLocator().locate(pt)\n }\n isOuterHole() {\n if (!this._isHole) return false\n return !this.hasShell()\n }\n getPolygon() {\n let holeLR = null\n if (this._holes !== null) {\n holeLR = new Array(this._holes.size()).fill(null)\n for (let i = 0; i < this._holes.size(); i++) \n holeLR[i] = this._holes.get(i)\n \n }\n const poly = this._factory.createPolygon(this._ring, holeLR)\n return poly\n }\n isHole() {\n return this._isHole\n }\n isProcessed() {\n return this._isProcessed\n }\n addHole() {\n if (arguments[0] instanceof LinearRing) {\n const hole = arguments[0]\n if (this._holes === null) this._holes = new ArrayList()\n this._holes.add(hole)\n } else if (arguments[0] instanceof EdgeRing) {\n const holeER = arguments[0]\n holeER.setShell(this)\n const hole = holeER.getRing()\n if (this._holes === null) this._holes = new ArrayList()\n this._holes.add(hole)\n }\n }\n setIncluded(isIncluded) {\n this._isIncluded = isIncluded\n this._isIncludedSet = true\n }\n getOuterHole() {\n if (this.isHole()) return null\n for (let i = 0; i < this._deList.size(); i++) {\n const de = this._deList.get(i)\n const adjRing = de.getSym().getRing()\n if (adjRing.isOuterHole()) return adjRing\n }\n return null\n }\n computeHole() {\n const ring = this.getRing()\n this._isHole = Orientation.isCCW(ring.getCoordinates())\n }\n hasShell() {\n return this._shell !== null\n }\n isOuterShell() {\n return this.getOuterHole() !== null\n }\n getLineString() {\n this.getCoordinates()\n return this._factory.createLineString(this._ringPts)\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this.getCoordinates()))\n }\n getLocator() {\n if (this._locator === null) \n this._locator = new IndexedPointInAreaLocator(this.getRing())\n \n return this._locator\n }\n getShell() {\n if (this.isHole()) return this._shell\n return this\n }\n add(de) {\n this._deList.add(de)\n }\n getRing() {\n if (this._ring !== null) return this._ring\n this.getCoordinates()\n if (this._ringPts.length < 3) System.out.println(this._ringPts)\n try {\n this._ring = this._factory.createLinearRing(this._ringPts)\n } catch (ex) {\n if (ex instanceof Exception) \n System.out.println(this._ringPts)\n else throw ex\n } finally {}\n return this._ring\n }\n updateIncluded() {\n if (this.isHole()) return null\n for (let i = 0; i < this._deList.size(); i++) {\n const de = this._deList.get(i)\n const adjShell = de.getSym().getRing().getShell()\n if (adjShell !== null && adjShell.isIncludedSet()) {\n this.setIncluded(!adjShell.isIncluded())\n return null\n }\n }\n }\n setShell(shell) {\n this._shell = shell\n }\n setProcessed(isProcessed) {\n this._isProcessed = isProcessed\n }\n}\nclass EnvelopeComparator {\n compare(obj0, obj1) {\n const r0 = obj0\n const r1 = obj1\n return r0.getRing().getEnvelope().compareTo(r1.getRing().getEnvelope())\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nEdgeRing.EnvelopeComparator = EnvelopeComparator\n","import PolygonizeDirectedEdge from './PolygonizeDirectedEdge'\nimport HashSet from '../../../../../java/util/HashSet'\nimport Stack from '../../../../../java/util/Stack'\nimport Node from '../../planargraph/Node'\nimport PolygonizeEdge from './PolygonizeEdge'\nimport EdgeRing from './EdgeRing'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../planargraph/PlanarGraph'\nexport default class PolygonizeGraph extends PlanarGraph {\n constructor() {\n super()\n PolygonizeGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n const factory = arguments[0]\n this._factory = factory\n }\n static findLabeledEdgeRings(dirEdges) {\n const edgeRingStarts = new ArrayList()\n let currLabel = 1\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n if (de.getLabel() >= 0) continue\n edgeRingStarts.add(de)\n const edges = EdgeRing.findDirEdgesInRing(de)\n PolygonizeGraph.label(edges, currLabel)\n currLabel++\n }\n return edgeRingStarts\n }\n static getDegreeNonDeleted(node) {\n const edges = node.getOutEdges().getEdges()\n let degree = 0\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isMarked()) degree++\n }\n return degree\n }\n static deleteAllEdges(node) {\n const edges = node.getOutEdges().getEdges()\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setMarked(true)\n const sym = de.getSym()\n if (sym !== null) sym.setMarked(true)\n }\n }\n static label(dirEdges, label) {\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setLabel(label)\n }\n }\n static computeNextCWEdges(node) {\n const deStar = node.getOutEdges()\n let startDE = null\n let prevDE = null\n for (let i = deStar.getEdges().iterator(); i.hasNext(); ) {\n const outDE = i.next()\n if (outDE.isMarked()) continue\n if (startDE === null) startDE = outDE\n if (prevDE !== null) {\n const sym = prevDE.getSym()\n sym.setNext(outDE)\n }\n prevDE = outDE\n }\n if (prevDE !== null) {\n const sym = prevDE.getSym()\n sym.setNext(startDE)\n }\n }\n static computeNextCCWEdges(node, label) {\n const deStar = node.getOutEdges()\n let firstOutDE = null\n let prevInDE = null\n const edges = deStar.getEdges()\n for (let i = edges.size() - 1; i >= 0; i--) {\n const de = edges.get(i)\n const sym = de.getSym()\n let outDE = null\n if (de.getLabel() === label) outDE = de\n let inDE = null\n if (sym.getLabel() === label) inDE = sym\n if (outDE === null && inDE === null) continue\n if (inDE !== null) \n prevInDE = inDE\n \n if (outDE !== null) {\n if (prevInDE !== null) {\n prevInDE.setNext(outDE)\n prevInDE = null\n }\n if (firstOutDE === null) firstOutDE = outDE\n }\n }\n if (prevInDE !== null) {\n Assert.isTrue(firstOutDE !== null)\n prevInDE.setNext(firstOutDE)\n }\n }\n static getDegree(node, label) {\n const edges = node.getOutEdges().getEdges()\n let degree = 0\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.getLabel() === label) degree++\n }\n return degree\n }\n static findIntersectionNodes(startDE, label) {\n let de = startDE\n let intNodes = null\n do {\n const node = de.getFromNode()\n if (PolygonizeGraph.getDegree(node, label) > 1) {\n if (intNodes === null) intNodes = new ArrayList()\n intNodes.add(node)\n }\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n return intNodes\n }\n findEdgeRing(startDE) {\n const er = new EdgeRing(this._factory)\n er.build(startDE)\n return er\n }\n computeDepthParity() {\n if (arguments.length === 0) {\n while (true) {\n const de = null\n if (de === null) return null\n this.computeDepthParity(de)\n }\n } else if (arguments.length === 1) {\n const de = arguments[0]\n }\n }\n computeNextCWEdges() {\n for (let iNode = this.nodeIterator(); iNode.hasNext(); ) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCWEdges(node)\n }\n }\n addEdge(line) {\n if (line.isEmpty()) \n return null\n \n const linePts = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (linePts.length < 2) \n return null\n \n const startPt = linePts[0]\n const endPt = linePts[linePts.length - 1]\n const nStart = this.getNode(startPt)\n const nEnd = this.getNode(endPt)\n const de0 = new PolygonizeDirectedEdge(nStart, nEnd, linePts[1], true)\n const de1 = new PolygonizeDirectedEdge(nEnd, nStart, linePts[linePts.length - 2], false)\n const edge = new PolygonizeEdge(line)\n edge.setDirectedEdges(de0, de1)\n this.add(edge)\n }\n deleteCutEdges() {\n this.computeNextCWEdges()\n PolygonizeGraph.findLabeledEdgeRings(this._dirEdges)\n const cutLines = new ArrayList()\n for (let i = this._dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n const sym = de.getSym()\n if (de.getLabel() === sym.getLabel()) {\n de.setMarked(true)\n sym.setMarked(true)\n const e = de.getEdge()\n cutLines.add(e.getLine())\n }\n }\n return cutLines\n }\n getEdgeRings() {\n this.computeNextCWEdges()\n PolygonizeGraph.label(this._dirEdges, -1)\n const maximalRings = PolygonizeGraph.findLabeledEdgeRings(this._dirEdges)\n this.convertMaximalToMinimalEdgeRings(maximalRings)\n const edgeRingList = new ArrayList()\n for (let i = this._dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n if (de.isInRing()) continue\n const er = this.findEdgeRing(de)\n edgeRingList.add(er)\n }\n return edgeRingList\n }\n getNode(pt) {\n let node = this.findNode(pt)\n if (node === null) {\n node = new Node(pt)\n this.add(node)\n }\n return node\n }\n convertMaximalToMinimalEdgeRings(ringEdges) {\n for (let i = ringEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n const label = de.getLabel()\n const intNodes = PolygonizeGraph.findIntersectionNodes(de, label)\n if (intNodes === null) continue\n for (let iNode = intNodes.iterator(); iNode.hasNext(); ) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCCWEdges(node, label)\n }\n }\n }\n deleteDangles() {\n const nodesToRemove = this.findNodesOfDegree(1)\n const dangleLines = new HashSet()\n const nodeStack = new Stack()\n for (let i = nodesToRemove.iterator(); i.hasNext(); ) \n nodeStack.push(i.next())\n \n while (!nodeStack.isEmpty()) {\n const node = nodeStack.pop()\n PolygonizeGraph.deleteAllEdges(node)\n const nodeOutEdges = node.getOutEdges().getEdges()\n for (let i = nodeOutEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setMarked(true)\n const sym = de.getSym()\n if (sym !== null) sym.setMarked(true)\n const e = de.getEdge()\n dangleLines.add(e.getLine())\n const toNode = de.getToNode()\n if (PolygonizeGraph.getDegreeNonDeleted(toNode) === 1) nodeStack.push(toNode)\n }\n }\n return dangleLines\n }\n}\n","import STRtree from '../../index/strtree/STRtree'\nimport EdgeRing from './EdgeRing'\nexport default class HoleAssigner {\n constructor() {\n HoleAssigner.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._shells = null\n this._shellIndex = null\n const shells = arguments[0]\n this._shells = shells\n this.buildIndex()\n }\n static assignHolesToShells(holes, shells) {\n const assigner = new HoleAssigner(shells)\n assigner.assignHolesToShells(holes)\n }\n assignHolesToShells(holeList) {\n for (let i = holeList.iterator(); i.hasNext(); ) {\n const holeER = i.next()\n this.assignHoleToShell(holeER)\n }\n }\n buildIndex() {\n this._shellIndex = new STRtree()\n for (const shell of this._shells) \n this._shellIndex.insert(shell.getRing().getEnvelopeInternal(), shell)\n \n }\n queryOverlappingShells(ringEnv) {\n return this._shellIndex.query(ringEnv)\n }\n findShellContaining(testEr) {\n const testEnv = testEr.getRing().getEnvelopeInternal()\n const candidateShells = this.queryOverlappingShells(testEnv)\n return EdgeRing.findEdgeRingContaining(testEr, candidateShells)\n }\n assignHoleToShell(holeER) {\n const shell = this.findShellContaining(holeER)\n if (shell !== null) \n shell.addHole(holeER)\n \n }\n}\n","import LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport PolygonizeGraph from './PolygonizeGraph'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Collection from '../../../../../java/util/Collection'\nimport Collections from '../../../../../java/util/Collections'\nimport EdgeRing from './EdgeRing'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport HoleAssigner from './HoleAssigner'\nexport default class Polygonizer {\n constructor() {\n Polygonizer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._lineStringAdder = new LineStringAdder(this)\n this._graph = null\n this._dangles = new ArrayList()\n this._cutEdges = new ArrayList()\n this._invalidRingLines = new ArrayList()\n this._holeList = null\n this._shellList = null\n this._polyList = null\n this._isCheckingRingsValid = true\n this._extractOnlyPolygonal = null\n this._geomFactory = null\n if (arguments.length === 0) {\n Polygonizer.constructor_.call(this, false)\n } else if (arguments.length === 1) {\n const extractOnlyPolygonal = arguments[0]\n this._extractOnlyPolygonal = extractOnlyPolygonal\n }\n }\n static extractPolygons(shellList, includeAll) {\n const polyList = new ArrayList()\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (includeAll || er.isIncluded()) \n polyList.add(er.getPolygon())\n \n }\n return polyList\n }\n static findOuterShells(shellList) {\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n const outerHoleER = er.getOuterHole()\n if (outerHoleER !== null && !outerHoleER.isProcessed()) {\n er.setIncluded(true)\n outerHoleER.setProcessed(true)\n }\n }\n }\n static findDisjointShells(shellList) {\n Polygonizer.findOuterShells(shellList)\n let isMoreToScan = null\n do {\n isMoreToScan = false\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (er.isIncludedSet()) continue\n er.updateIncluded()\n if (!er.isIncludedSet()) \n isMoreToScan = true\n \n }\n } while (isMoreToScan)\n }\n getGeometry() {\n if (this._geomFactory === null) this._geomFactory = new GeometryFactory()\n this.polygonize()\n if (this._extractOnlyPolygonal) \n return this._geomFactory.buildGeometry(this._polyList)\n \n return this._geomFactory.createGeometryCollection(GeometryFactory.toGeometryArray(this._polyList))\n }\n getInvalidRingLines() {\n this.polygonize()\n return this._invalidRingLines\n }\n findValidRings(edgeRingList, validEdgeRingList, invalidRingList) {\n for (let i = edgeRingList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (er.isValid()) validEdgeRingList.add(er); else invalidRingList.add(er.getLineString())\n }\n }\n polygonize() {\n if (this._polyList !== null) return null\n this._polyList = new ArrayList()\n if (this._graph === null) return null\n this._dangles = this._graph.deleteDangles()\n this._cutEdges = this._graph.deleteCutEdges()\n const edgeRingList = this._graph.getEdgeRings()\n let validEdgeRingList = new ArrayList()\n this._invalidRingLines = new ArrayList()\n if (this._isCheckingRingsValid) \n this.findValidRings(edgeRingList, validEdgeRingList, this._invalidRingLines)\n else \n validEdgeRingList = edgeRingList\n \n this.findShellsAndHoles(validEdgeRingList)\n HoleAssigner.assignHolesToShells(this._holeList, this._shellList)\n Collections.sort(this._shellList, new EdgeRing.EnvelopeComparator())\n let includeAll = true\n if (this._extractOnlyPolygonal) {\n Polygonizer.findDisjointShells(this._shellList)\n includeAll = false\n }\n this._polyList = Polygonizer.extractPolygons(this._shellList, includeAll)\n }\n getDangles() {\n this.polygonize()\n return this._dangles\n }\n getCutEdges() {\n this.polygonize()\n return this._cutEdges\n }\n getPolygons() {\n this.polygonize()\n return this._polyList\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geomList = arguments[0]\n for (let i = geomList.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n } else if (arguments[0] instanceof LineString) {\n const line = arguments[0]\n this._geomFactory = line.getFactory()\n if (this._graph === null) this._graph = new PolygonizeGraph(this._geomFactory)\n this._graph.addEdge(line)\n } else if (arguments[0] instanceof Geometry) {\n const g = arguments[0]\n g.apply(this._lineStringAdder)\n }\n }\n setCheckRingsValid(isCheckingRingsValid) {\n this._isCheckingRingsValid = isCheckingRingsValid\n }\n findShellsAndHoles(edgeRingList) {\n this._holeList = new ArrayList()\n this._shellList = new ArrayList()\n for (let i = edgeRingList.iterator(); i.hasNext(); ) {\n const er = i.next()\n er.computeHole()\n if (er.isHole()) this._holeList.add(er); else this._shellList.add(er)\n }\n }\n}\nclass LineStringAdder {\n constructor() {\n LineStringAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.p = null\n const p = arguments[0]\n this.p = p\n }\n filter(g) {\n if (g instanceof LineString) this.p.add(g)\n }\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n}\nPolygonizer.LineStringAdder = LineStringAdder\n","import PointLocator from '../../algorithm/PointLocator'\nimport Location from '../../geom/Location'\nimport IntersectionMatrix from '../../geom/IntersectionMatrix'\nimport EdgeEndBuilder from './EdgeEndBuilder'\nimport NodeMap from '../../geomgraph/NodeMap'\nimport RelateNodeFactory from './RelateNodeFactory'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport Assert from '../../util/Assert'\nexport default class RelateComputer {\n constructor() {\n RelateComputer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._ptLocator = new PointLocator()\n this._arg = null\n this._nodes = new NodeMap(new RelateNodeFactory())\n this._im = null\n this._isolatedEdges = new ArrayList()\n this._invalidPoint = null\n const arg = arguments[0]\n this._arg = arg\n }\n insertEdgeEnds(ee) {\n for (let i = ee.iterator(); i.hasNext(); ) {\n const e = i.next()\n this._nodes.add(e)\n }\n }\n computeProperIntersectionIM(intersector, im) {\n const dimA = this._arg[0].getGeometry().getDimension()\n const dimB = this._arg[1].getGeometry().getDimension()\n const hasProper = intersector.hasProperIntersection()\n const hasProperInterior = intersector.hasProperInteriorIntersection()\n if (dimA === 2 && dimB === 2) {\n if (hasProper) im.setAtLeast('212101212')\n } else if (dimA === 2 && dimB === 1) {\n if (hasProper) im.setAtLeast('FFF0FFFF2')\n if (hasProperInterior) im.setAtLeast('1FFFFF1FF')\n } else if (dimA === 1 && dimB === 2) {\n if (hasProper) im.setAtLeast('F0FFFFFF2')\n if (hasProperInterior) im.setAtLeast('1F1FFFFFF')\n } else if (dimA === 1 && dimB === 1) {\n if (hasProperInterior) im.setAtLeast('0FFFFFFFF')\n }\n }\n labelIsolatedEdges(thisIndex, targetIndex) {\n for (let ei = this._arg[thisIndex].getEdgeIterator(); ei.hasNext(); ) {\n const e = ei.next()\n if (e.isIsolated()) {\n this.labelIsolatedEdge(e, targetIndex, this._arg[targetIndex].getGeometry())\n this._isolatedEdges.add(e)\n }\n }\n }\n labelIsolatedEdge(e, targetIndex, target) {\n if (target.getDimension() > 0) {\n const loc = this._ptLocator.locate(e.getCoordinate(), target)\n e.getLabel().setAllLocations(targetIndex, loc)\n } else {\n e.getLabel().setAllLocations(targetIndex, Location.EXTERIOR)\n }\n }\n computeIM() {\n const im = new IntersectionMatrix()\n im.set(Location.EXTERIOR, Location.EXTERIOR, 2)\n if (!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal())) {\n this.computeDisjointIM(im)\n return im\n }\n this._arg[0].computeSelfNodes(this._li, false)\n this._arg[1].computeSelfNodes(this._li, false)\n const intersector = this._arg[0].computeEdgeIntersections(this._arg[1], this._li, false)\n this.computeIntersectionNodes(0)\n this.computeIntersectionNodes(1)\n this.copyNodesAndLabels(0)\n this.copyNodesAndLabels(1)\n this.labelIsolatedNodes()\n this.computeProperIntersectionIM(intersector, im)\n const eeBuilder = new EdgeEndBuilder()\n const ee0 = eeBuilder.computeEdgeEnds(this._arg[0].getEdgeIterator())\n this.insertEdgeEnds(ee0)\n const ee1 = eeBuilder.computeEdgeEnds(this._arg[1].getEdgeIterator())\n this.insertEdgeEnds(ee1)\n this.labelNodeEdges()\n this.labelIsolatedEdges(0, 1)\n this.labelIsolatedEdges(1, 0)\n this.updateIM(im)\n return im\n }\n labelNodeEdges() {\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const node = ni.next()\n node.getEdges().computeLabelling(this._arg)\n }\n }\n copyNodesAndLabels(argIndex) {\n for (let i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n const graphNode = i.next()\n const newNode = this._nodes.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n labelIntersectionNodes(argIndex) {\n for (let i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.find(ei.coord)\n if (n.getLabel().isNull(argIndex)) \n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n labelIsolatedNode(n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setAllLocations(targetIndex, loc)\n }\n computeIntersectionNodes(argIndex) {\n for (let i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.addNode(ei.coord)\n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else \n if (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n labelIsolatedNodes() {\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const n = ni.next()\n const label = n.getLabel()\n Assert.isTrue(label.getGeometryCount() > 0, 'node with empty label found')\n if (n.isIsolated()) \n if (label.isNull(0)) this.labelIsolatedNode(n, 0); else this.labelIsolatedNode(n, 1)\n \n }\n }\n updateIM(im) {\n for (let ei = this._isolatedEdges.iterator(); ei.hasNext(); ) {\n const e = ei.next()\n e.updateIM(im)\n }\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const node = ni.next()\n node.updateIM(im)\n node.updateIMFromEdges(im)\n }\n }\n computeDisjointIM(im) {\n const ga = this._arg[0].getGeometry()\n if (!ga.isEmpty()) {\n im.set(Location.INTERIOR, Location.EXTERIOR, ga.getDimension())\n im.set(Location.BOUNDARY, Location.EXTERIOR, ga.getBoundaryDimension())\n }\n const gb = this._arg[1].getGeometry()\n if (!gb.isEmpty()) {\n im.set(Location.EXTERIOR, Location.INTERIOR, gb.getDimension())\n im.set(Location.EXTERIOR, Location.BOUNDARY, gb.getBoundaryDimension())\n }\n }\n}\n","import LineString from '../../geom/LineString'\nimport Coordinate from '../../geom/Coordinate'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nexport default class RectangleContains {\n constructor() {\n RectangleContains.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n static contains(rectangle, b) {\n const rc = new RectangleContains(rectangle)\n return rc.contains(b)\n }\n isContainedInBoundary(geom) {\n if (geom instanceof Polygon) return false\n if (geom instanceof Point) return this.isPointContainedInBoundary(geom)\n if (geom instanceof LineString) return this.isLineStringContainedInBoundary(geom)\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const comp = geom.getGeometryN(i)\n if (!this.isContainedInBoundary(comp)) return false\n }\n return true\n }\n isLineSegmentContainedInBoundary(p0, p1) {\n if (p0.equals(p1)) return this.isPointContainedInBoundary(p0)\n if (p0.x === p1.x) {\n if (p0.x === this._rectEnv.getMinX() || p0.x === this._rectEnv.getMaxX()) return true\n } else if (p0.y === p1.y) {\n if (p0.y === this._rectEnv.getMinY() || p0.y === this._rectEnv.getMaxY()) return true\n }\n return false\n }\n isLineStringContainedInBoundary(line) {\n const seq = line.getCoordinateSequence()\n const p0 = new Coordinate()\n const p1 = new Coordinate()\n for (let i = 0; i < seq.size() - 1; i++) {\n seq.getCoordinate(i, p0)\n seq.getCoordinate(i + 1, p1)\n if (!this.isLineSegmentContainedInBoundary(p0, p1)) return false\n }\n return true\n }\n isPointContainedInBoundary() {\n if (arguments[0] instanceof Point) {\n const point = arguments[0]\n return this.isPointContainedInBoundary(point.getCoordinate())\n } else if (arguments[0] instanceof Coordinate) {\n const pt = arguments[0]\n return pt.x === this._rectEnv.getMinX() || pt.x === this._rectEnv.getMaxX() || pt.y === this._rectEnv.getMinY() || pt.y === this._rectEnv.getMaxY()\n }\n }\n contains(geom) {\n if (!this._rectEnv.contains(geom.getEnvelopeInternal())) return false\n if (this.isContainedInBoundary(geom)) return false\n return true\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport RobustLineIntersector from './RobustLineIntersector'\nimport Envelope from '../geom/Envelope'\nexport default class RectangleLineIntersector {\n constructor() {\n RectangleLineIntersector.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._rectEnv = null\n this._diagUp0 = null\n this._diagUp1 = null\n this._diagDown0 = null\n this._diagDown1 = null\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n this._diagUp0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMinY())\n this._diagUp1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMaxY())\n this._diagDown0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMaxY())\n this._diagDown1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMinY())\n }\n intersects(p0, p1) {\n const segEnv = new Envelope(p0, p1)\n if (!this._rectEnv.intersects(segEnv)) return false\n if (this._rectEnv.intersects(p0)) return true\n if (this._rectEnv.intersects(p1)) return true\n if (p0.compareTo(p1) > 0) {\n const tmp = p0\n p0 = p1\n p1 = tmp\n }\n let isSegUpwards = false\n if (p1.y > p0.y) isSegUpwards = true\n if (isSegUpwards) \n this._li.computeIntersection(p0, p1, this._diagDown0, this._diagDown1)\n else \n this._li.computeIntersection(p0, p1, this._diagUp0, this._diagUp1)\n \n if (this._li.hasIntersection()) return true\n return false\n }\n}\n","import Coordinate from '../../geom/Coordinate'\nimport Polygon from '../../geom/Polygon'\nimport RectangleLineIntersector from '../../algorithm/RectangleLineIntersector'\nimport ShortCircuitedGeometryVisitor from '../../geom/util/ShortCircuitedGeometryVisitor'\nimport SimplePointInAreaLocator from '../../algorithm/locate/SimplePointInAreaLocator'\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter'\nexport default class RectangleIntersects {\n constructor() {\n RectangleIntersects.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectangle = null\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectangle = rectangle\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n static intersects(rectangle, b) {\n const rp = new RectangleIntersects(rectangle)\n return rp.intersects(b)\n }\n intersects(geom) {\n if (!this._rectEnv.intersects(geom.getEnvelopeInternal())) return false\n const visitor = new EnvelopeIntersectsVisitor(this._rectEnv)\n visitor.applyTo(geom)\n if (visitor.intersects()) return true\n const ecpVisitor = new GeometryContainsPointVisitor(this._rectangle)\n ecpVisitor.applyTo(geom)\n if (ecpVisitor.containsPoint()) return true\n const riVisitor = new RectangleIntersectsSegmentVisitor(this._rectangle)\n riVisitor.applyTo(geom)\n if (riVisitor.intersects()) return true\n return false\n }\n}\nclass EnvelopeIntersectsVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n EnvelopeIntersectsVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n this._intersects = false\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n }\n isDone() {\n return this._intersects === true\n }\n visit(element) {\n const elementEnv = element.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) \n return null\n \n if (this._rectEnv.contains(elementEnv)) {\n this._intersects = true\n return null\n }\n if (elementEnv.getMinX() >= this._rectEnv.getMinX() && elementEnv.getMaxX() <= this._rectEnv.getMaxX()) {\n this._intersects = true\n return null\n }\n if (elementEnv.getMinY() >= this._rectEnv.getMinY() && elementEnv.getMaxY() <= this._rectEnv.getMaxY()) {\n this._intersects = true\n return null\n }\n }\n intersects() {\n return this._intersects\n }\n}\nclass GeometryContainsPointVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n GeometryContainsPointVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectSeq = null\n this._rectEnv = null\n this._containsPoint = false\n const rectangle = arguments[0]\n this._rectSeq = rectangle.getExteriorRing().getCoordinateSequence()\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n isDone() {\n return this._containsPoint === true\n }\n visit(geom) {\n if (!(geom instanceof Polygon)) return null\n const elementEnv = geom.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) return null\n const rectPt = new Coordinate()\n for (let i = 0; i < 4; i++) {\n this._rectSeq.getCoordinate(i, rectPt)\n if (!elementEnv.contains(rectPt)) continue\n if (SimplePointInAreaLocator.containsPointInPolygon(rectPt, geom)) {\n this._containsPoint = true\n return null\n }\n }\n }\n containsPoint() {\n return this._containsPoint\n }\n}\nclass RectangleIntersectsSegmentVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n RectangleIntersectsSegmentVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n this._rectIntersector = null\n this._hasIntersection = false\n this._p0 = new Coordinate()\n this._p1 = new Coordinate()\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\n this._rectIntersector = new RectangleLineIntersector(this._rectEnv)\n }\n intersects() {\n return this._hasIntersection\n }\n isDone() {\n return this._hasIntersection === true\n }\n visit(geom) {\n const elementEnv = geom.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) return null\n const lines = LinearComponentExtracter.getLines(geom)\n this.checkIntersectionWithLineStrings(lines)\n }\n checkIntersectionWithLineStrings(lines) {\n for (let i = lines.iterator(); i.hasNext(); ) {\n const testLine = i.next()\n this.checkIntersectionWithSegments(testLine)\n if (this._hasIntersection) return null\n }\n }\n checkIntersectionWithSegments(testLine) {\n const seq1 = testLine.getCoordinateSequence()\n for (let j = 1; j < seq1.size(); j++) {\n seq1.getCoordinate(j - 1, this._p0)\n seq1.getCoordinate(j, this._p1)\n if (this._rectIntersector.intersects(this._p0, this._p1)) {\n this._hasIntersection = true\n return null\n }\n }\n }\n}\n","import RelateComputer from './RelateComputer'\nimport GeometryGraphOperation from '../GeometryGraphOperation'\nimport RectangleContains from '../predicate/RectangleContains'\nimport RectangleIntersects from '../predicate/RectangleIntersects'\nexport default class RelateOp extends GeometryGraphOperation {\n constructor() {\n super()\n RelateOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._relate = null\n if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1)\n this._relate = new RelateComputer(this._arg)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2]\n GeometryGraphOperation.constructor_.call(this, g0, g1, boundaryNodeRule)\n this._relate = new RelateComputer(this._arg)\n }\n }\n static covers(g1, g2) {\n if (g2.getDimension() === 2 && g1.getDimension() < 2) \n return false\n \n if (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) \n return false\n \n if (!g1.getEnvelopeInternal().covers(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return true\n \n return new RelateOp(g1, g2).getIntersectionMatrix().isCovers()\n }\n static intersects(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return RectangleIntersects.intersects(g1, g2)\n \n if (g2.isRectangle()) \n return RectangleIntersects.intersects(g2, g1)\n \n if (g1.isGeometryCollection() || g2.isGeometryCollection()) {\n const r = false\n for (let i = 0; i < g1.getNumGeometries(); i++) \n for (let j = 0; j < g2.getNumGeometries(); j++) \n if (g1.getGeometryN(i).intersects(g2.getGeometryN(j))) \n return true\n \n \n \n return false\n }\n return new RelateOp(g1, g2).getIntersectionMatrix().isIntersects()\n }\n static touches(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isTouches(g1.getDimension(), g2.getDimension())\n }\n static equalsTopo(g1, g2) {\n if (!g1.getEnvelopeInternal().equals(g2.getEnvelopeInternal())) return false\n return RelateOp.relate(g1, g2).isEquals(g1.getDimension(), g2.getDimension())\n }\n static relate() {\n if (arguments.length === 2) {\n const a = arguments[0], b = arguments[1]\n const relOp = new RelateOp(a, b)\n const im = relOp.getIntersectionMatrix()\n return im\n } else if (arguments.length === 3) {\n const a = arguments[0], b = arguments[1], boundaryNodeRule = arguments[2]\n const relOp = new RelateOp(a, b, boundaryNodeRule)\n const im = relOp.getIntersectionMatrix()\n return im\n }\n }\n static overlaps(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isOverlaps(g1.getDimension(), g2.getDimension())\n }\n static crosses(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isCrosses(g1.getDimension(), g2.getDimension())\n }\n static contains(g1, g2) {\n if (g2.getDimension() === 2 && g1.getDimension() < 2) \n return false\n \n if (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) \n return false\n \n if (!g1.getEnvelopeInternal().contains(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return RectangleContains.contains(g1, g2)\n \n return new RelateOp(g1, g2).getIntersectionMatrix().isContains()\n }\n getIntersectionMatrix() {\n return this._relate.computeIM()\n }\n}\n","import PointLocator from '../../algorithm/PointLocator'\nimport Location from '../../geom/Location'\nimport TreeSet from '../../../../../java/util/TreeSet'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nexport default class PointGeometryUnion {\n constructor() {\n PointGeometryUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pointGeom = null\n this._otherGeom = null\n this._geomFact = null\n const pointGeom = arguments[0], otherGeom = arguments[1]\n this._pointGeom = pointGeom\n this._otherGeom = otherGeom\n this._geomFact = otherGeom.getFactory()\n }\n static union(pointGeom, otherGeom) {\n const unioner = new PointGeometryUnion(pointGeom, otherGeom)\n return unioner.union()\n }\n union() {\n const locater = new PointLocator()\n const exteriorCoords = new TreeSet()\n for (let i = 0; i < this._pointGeom.getNumGeometries(); i++) {\n const point = this._pointGeom.getGeometryN(i)\n const coord = point.getCoordinate()\n const loc = locater.locate(coord, this._otherGeom)\n if (loc === Location.EXTERIOR) exteriorCoords.add(coord)\n }\n if (exteriorCoords.size() === 0) return this._otherGeom\n let ptComp = null\n const coords = CoordinateArrays.toCoordinateArray(exteriorCoords)\n if (coords.length === 1) \n ptComp = this._geomFact.createPoint(coords[0])\n else \n ptComp = this._geomFact.createMultiPointFromCoords(coords)\n \n return GeometryCombiner.combine(ptComp, this._otherGeom)\n }\n}\n","import LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport GeometryCollection from '../../geom/GeometryCollection'\nimport Dimension from '../../geom/Dimension'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GeometryFilter from '../../geom/GeometryFilter'\nimport Assert from '../../util/Assert'\nexport default class InputExtracter {\n constructor() {\n InputExtracter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._polygons = new ArrayList()\n this._lines = new ArrayList()\n this._points = new ArrayList()\n this._dimension = Dimension.FALSE\n }\n static extract() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n const extracter = new InputExtracter()\n extracter.add(geoms)\n return extracter\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const extracter = new InputExtracter()\n extracter.add(geom)\n return extracter\n }\n }\n getFactory() {\n return this._geomFactory\n }\n recordDimension(dim) {\n if (dim > this._dimension) this._dimension = dim\n }\n getDimension() {\n return this._dimension\n }\n filter(geom) {\n this.recordDimension(geom.getDimension())\n if (geom instanceof GeometryCollection) \n return null\n \n if (geom.isEmpty()) return null\n if (geom instanceof Polygon) {\n this._polygons.add(geom)\n return null\n } else if (geom instanceof LineString) {\n this._lines.add(geom)\n return null\n } else if (geom instanceof Point) {\n this._points.add(geom)\n return null\n }\n Assert.shouldNeverReachHere('Unhandled geometry type: ' + geom.getGeometryType())\n }\n getExtract(dim) {\n switch (dim) {\n case 0:\n return this._points\n case 1:\n return this._lines\n case 2:\n return this._polygons\n }\n Assert.shouldNeverReachHere('Invalid dimension: ' + dim)\n return null\n }\n isEmpty() {\n return this._polygons.isEmpty() && this._lines.isEmpty() && this._points.isEmpty()\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n for (const geom of geoms) \n this.add(geom)\n \n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (this._geomFactory === null) this._geomFactory = geom.getFactory()\n geom.apply(this)\n }\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import HashSet from '../../../../../java/util/HashSet'\nimport TopologyException from '../../geom/TopologyException'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner'\nimport LineSegment from '../../geom/LineSegment'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport CoordinateSequenceFilter from '../../geom/CoordinateSequenceFilter'\nexport default class OverlapUnion {\n constructor() {\n OverlapUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._g0 = null\n this._g1 = null\n this._isUnionSafe = null\n const g0 = arguments[0], g1 = arguments[1]\n this._g0 = g0\n this._g1 = g1\n this._geomFactory = g0.getFactory()\n }\n static containsProperly() {\n if (arguments.length === 2) {\n const env = arguments[0], p = arguments[1]\n if (env.isNull()) return false\n return p.getX() > env.getMinX() && p.getX() < env.getMaxX() && p.getY() > env.getMinY() && p.getY() < env.getMaxY()\n } else if (arguments.length === 3) {\n const env = arguments[0], p0 = arguments[1], p1 = arguments[2]\n return OverlapUnion.containsProperly(env, p0) && OverlapUnion.containsProperly(env, p1)\n }\n }\n static union(g0, g1) {\n const union = new OverlapUnion(g0, g1)\n return union.union()\n }\n static intersects(env, p0, p1) {\n return env.intersects(p0) || env.intersects(p1)\n }\n static overlapEnvelope(g0, g1) {\n const g0Env = g0.getEnvelopeInternal()\n const g1Env = g1.getEnvelopeInternal()\n const overlapEnv = g0Env.intersection(g1Env)\n return overlapEnv\n }\n static extractBorderSegments(geom, env, segs) {\n geom.apply(new (class {\n get interfaces_() {\n return [CoordinateSequenceFilter]\n }\n filter(seq, i) {\n if (i <= 0) return null\n const p0 = seq.getCoordinate(i - 1)\n const p1 = seq.getCoordinate(i)\n const isBorder = OverlapUnion.intersects(env, p0, p1) && !OverlapUnion.containsProperly(env, p0, p1)\n if (isBorder) {\n const seg = new LineSegment(p0, p1)\n segs.add(seg)\n }\n }\n isDone() {\n return false\n }\n isGeometryChanged() {\n return false\n }\n })())\n }\n static unionBuffer(g0, g1) {\n const factory = g0.getFactory()\n const gColl = factory.createGeometryCollection([g0, g1])\n const union = gColl.buffer(0.0)\n return union\n }\n isBorderSegmentsSame(result, env) {\n const segsBefore = this.extractBorderSegments(this._g0, this._g1, env)\n const segsAfter = new ArrayList()\n OverlapUnion.extractBorderSegments(result, env, segsAfter)\n return this.isEqual(segsBefore, segsAfter)\n }\n extractByEnvelope(env, geom, disjointGeoms) {\n const intersectingGeoms = new ArrayList()\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const elem = geom.getGeometryN(i)\n if (elem.getEnvelopeInternal().intersects(env)) {\n intersectingGeoms.add(elem)\n } else {\n const copy = elem.copy()\n disjointGeoms.add(copy)\n }\n }\n return this._geomFactory.buildGeometry(intersectingGeoms)\n }\n isEqual(segs0, segs1) {\n if (segs0.size() !== segs1.size()) return false\n const segIndex = new HashSet(segs0)\n for (const seg of segs1) \n if (!segIndex.contains(seg)) \n return false\n \n \n return true\n }\n union() {\n const overlapEnv = OverlapUnion.overlapEnvelope(this._g0, this._g1)\n if (overlapEnv.isNull()) {\n const g0Copy = this._g0.copy()\n const g1Copy = this._g1.copy()\n return GeometryCombiner.combine(g0Copy, g1Copy)\n }\n const disjointPolys = new ArrayList()\n const g0Overlap = this.extractByEnvelope(overlapEnv, this._g0, disjointPolys)\n const g1Overlap = this.extractByEnvelope(overlapEnv, this._g1, disjointPolys)\n const unionGeom = this.unionFull(g0Overlap, g1Overlap)\n let result = null\n this._isUnionSafe = this.isBorderSegmentsSame(unionGeom, overlapEnv)\n if (!this._isUnionSafe) \n result = this.unionFull(this._g0, this._g1)\n else \n result = this.combine(unionGeom, disjointPolys)\n \n return result\n }\n combine(unionGeom, disjointPolys) {\n if (disjointPolys.size() <= 0) return unionGeom\n disjointPolys.add(unionGeom)\n const result = GeometryCombiner.combine(disjointPolys)\n return result\n }\n unionFull(geom0, geom1) {\n try {\n return geom0.union(geom1)\n } catch (ex) {\n if (ex instanceof TopologyException) \n return OverlapUnion.unionBuffer(geom0, geom1)\n else throw ex\n } finally {}\n }\n extractBorderSegments(geom0, geom1, env) {\n const segs = new ArrayList()\n OverlapUnion.extractBorderSegments(geom0, env, segs)\n if (geom1 !== null) OverlapUnion.extractBorderSegments(geom1, env, segs)\n return segs\n }\n isUnionOptimized() {\n return this._isUnionSafe\n }\n}\n","import PolygonExtracter from '../../geom/util/PolygonExtracter'\nimport OverlapUnion from './OverlapUnion'\nimport STRtree from '../../index/strtree/STRtree'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Polygonal from '../../geom/Polygonal'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport List from '../../../../../java/util/List'\nexport default class CascadedPolygonUnion {\n constructor() {\n CascadedPolygonUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputPolys = null\n this._geomFactory = null\n const polys = arguments[0]\n this._inputPolys = polys\n if (this._inputPolys === null) this._inputPolys = new ArrayList()\n }\n static restrictToPolygons(g) {\n if (hasInterface(g, Polygonal)) \n return g\n \n const polygons = PolygonExtracter.getPolygons(g)\n if (polygons.size() === 1) return polygons.get(0)\n return g.getFactory().createMultiPolygon(GeometryFactory.toPolygonArray(polygons))\n }\n static getGeometry(list, index) {\n if (index >= list.size()) return null\n return list.get(index)\n }\n static union(polys) {\n const op = new CascadedPolygonUnion(polys)\n return op.union()\n }\n reduceToGeometries(geomTree) {\n const geoms = new ArrayList()\n for (let i = geomTree.iterator(); i.hasNext(); ) {\n const o = i.next()\n let geom = null\n if (hasInterface(o, List)) \n geom = this.unionTree(o)\n else if (o instanceof Geometry) \n geom = o\n \n geoms.add(geom)\n }\n return geoms\n }\n union() {\n if (this._inputPolys === null) throw new IllegalStateException('union() method cannot be called twice')\n if (this._inputPolys.isEmpty()) return null\n this._geomFactory = this._inputPolys.iterator().next().getFactory()\n const index = new STRtree(CascadedPolygonUnion.STRTREE_NODE_CAPACITY)\n for (let i = this._inputPolys.iterator(); i.hasNext(); ) {\n const item = i.next()\n index.insert(item.getEnvelopeInternal(), item)\n }\n this._inputPolys = null\n const itemTree = index.itemsTree()\n const unionAll = this.unionTree(itemTree)\n return unionAll\n }\n binaryUnion() {\n if (arguments.length === 1) {\n const geoms = arguments[0]\n return this.binaryUnion(geoms, 0, geoms.size())\n } else if (arguments.length === 3) {\n const geoms = arguments[0], start = arguments[1], end = arguments[2]\n if (end - start <= 1) {\n const g0 = CascadedPolygonUnion.getGeometry(geoms, start)\n return this.unionSafe(g0, null)\n } else if (end - start === 2) {\n return this.unionSafe(CascadedPolygonUnion.getGeometry(geoms, start), CascadedPolygonUnion.getGeometry(geoms, start + 1))\n } else {\n const mid = Math.trunc((end + start) / 2)\n const g0 = this.binaryUnion(geoms, start, mid)\n const g1 = this.binaryUnion(geoms, mid, end)\n return this.unionSafe(g0, g1)\n }\n }\n }\n repeatedUnion(geoms) {\n let union = null\n for (let i = geoms.iterator(); i.hasNext(); ) {\n const g = i.next()\n if (union === null) union = g.copy(); else union = union.union(g)\n }\n return union\n }\n unionSafe(g0, g1) {\n if (g0 === null && g1 === null) return null\n if (g0 === null) return g1.copy()\n if (g1 === null) return g0.copy()\n return this.unionActual(g0, g1)\n }\n unionActual(g0, g1) {\n const union = OverlapUnion.union(g0, g1)\n \n return CascadedPolygonUnion.restrictToPolygons(union)\n }\n unionTree(geomTree) {\n const geoms = this.reduceToGeometries(geomTree)\n const union = this.binaryUnion(geoms)\n return union\n }\n bufferUnion() {\n if (arguments.length === 1) {\n const geoms = arguments[0]\n const factory = geoms.get(0).getFactory()\n const gColl = factory.buildGeometry(geoms)\n const unionAll = gColl.buffer(0.0)\n return unionAll\n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n const factory = g0.getFactory()\n const gColl = factory.createGeometryCollection([g0, g1])\n const unionAll = gColl.buffer(0.0)\n return unionAll\n }\n }\n}\nCascadedPolygonUnion.STRTREE_NODE_CAPACITY = 4\n","import Geometry from '../../geom/Geometry'\nimport PointGeometryUnion from './PointGeometryUnion'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp'\nimport InputExtracter from './InputExtracter'\nimport OverlayOp from '../overlay/OverlayOp'\nimport CascadedPolygonUnion from './CascadedPolygonUnion'\nexport default class UnaryUnionOp {\n constructor() {\n UnaryUnionOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFact = null\n this._extracter = null\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n this.extract(geoms)\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this.extract(geom)\n }\n } else if (arguments.length === 2) {\n const geoms = arguments[0], geomFact = arguments[1]\n this._geomFact = geomFact\n this.extract(geoms)\n }\n }\n static union() {\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n const op = new UnaryUnionOp(geoms)\n return op.union()\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const op = new UnaryUnionOp(geom)\n return op.union()\n }\n } else if (arguments.length === 2) {\n const geoms = arguments[0], geomFact = arguments[1]\n const op = new UnaryUnionOp(geoms, geomFact)\n return op.union()\n }\n }\n unionNoOpt(g0) {\n const empty = this._geomFact.createPoint()\n return SnapIfNeededOverlayOp.overlayOp(g0, empty, OverlayOp.UNION)\n }\n unionWithNull(g0, g1) {\n if (g0 === null && g1 === null) return null\n if (g1 === null) return g0\n if (g0 === null) return g1\n return g0.union(g1)\n }\n extract() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n this._extracter = InputExtracter.extract(geoms)\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._extracter = InputExtracter.extract(geom)\n }\n }\n union() {\n if (this._geomFact === null) this._geomFact = this._extracter.getFactory()\n if (this._geomFact === null) \n return null\n \n if (this._extracter.isEmpty()) \n return this._geomFact.createEmpty(this._extracter.getDimension())\n \n const points = this._extracter.getExtract(0)\n const lines = this._extracter.getExtract(1)\n const polygons = this._extracter.getExtract(2)\n let unionPoints = null\n if (points.size() > 0) {\n const ptGeom = this._geomFact.buildGeometry(points)\n unionPoints = this.unionNoOpt(ptGeom)\n }\n let unionLines = null\n if (lines.size() > 0) {\n const lineGeom = this._geomFact.buildGeometry(lines)\n unionLines = this.unionNoOpt(lineGeom)\n }\n let unionPolygons = null\n if (polygons.size() > 0) \n unionPolygons = CascadedPolygonUnion.union(polygons)\n \n const unionLA = this.unionWithNull(unionLines, unionPolygons)\n let union = null\n if (unionPoints === null) union = unionLA; else if (unionLA === null) union = unionPoints; else union = PointGeometryUnion.union(unionPoints, unionLA)\n if (union === null) return this._geomFact.createGeometryCollection()\n return union\n }\n}\n","import LineString from '../geom/LineString'\nimport CoordinateList from '../geom/CoordinateList'\nimport Geometry from '../geom/Geometry'\nimport Coordinate from '../geom/Coordinate'\nimport GeometryEditor from '../geom/util/GeometryEditor'\nimport LinearRing from '../geom/LinearRing'\nexport default class PrecisionReducerCoordinateOperation extends GeometryEditor.CoordinateOperation {\n constructor() {\n super()\n PrecisionReducerCoordinateOperation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._targetPM = null\n this._removeCollapsed = true\n const targetPM = arguments[0], removeCollapsed = arguments[1]\n this._targetPM = targetPM\n this._removeCollapsed = removeCollapsed\n }\n edit() {\n if (arguments.length === 2 && (arguments[1] instanceof Geometry && arguments[0] instanceof Array)) {\n const coordinates = arguments[0], geom = arguments[1]\n if (coordinates.length === 0) return null\n const reducedCoords = new Array(coordinates.length).fill(null)\n for (let i = 0; i < coordinates.length; i++) {\n const coord = new Coordinate(coordinates[i])\n this._targetPM.makePrecise(coord)\n reducedCoords[i] = coord\n }\n const noRepeatedCoordList = new CoordinateList(reducedCoords, false)\n const noRepeatedCoords = noRepeatedCoordList.toCoordinateArray()\n let minLength = 0\n if (geom instanceof LineString) minLength = 2\n if (geom instanceof LinearRing) minLength = 4\n let collapsedCoords = reducedCoords\n if (this._removeCollapsed) collapsedCoords = null\n if (noRepeatedCoords.length < minLength) \n return collapsedCoords\n \n return noRepeatedCoords\n } else {\n return super.edit.apply(this, arguments)\n }\n }\n}\n","import hasInterface from '../../../../hasInterface'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport IsValidOp from '../operation/valid/IsValidOp'\nimport GeometryEditor from '../geom/util/GeometryEditor'\nimport BufferOp from '../operation/buffer/BufferOp'\nimport Polygonal from '../geom/Polygonal'\nimport PrecisionReducerCoordinateOperation from './PrecisionReducerCoordinateOperation'\nexport default class GeometryPrecisionReducer {\n constructor() {\n GeometryPrecisionReducer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._targetPM = null\n this._removeCollapsed = true\n this._changePrecisionModel = false\n this._isPointwise = false\n const pm = arguments[0]\n this._targetPM = pm\n }\n static reduce(g, precModel) {\n const reducer = new GeometryPrecisionReducer(precModel)\n return reducer.reduce(g)\n }\n static reducePointwise(g, precModel) {\n const reducer = new GeometryPrecisionReducer(precModel)\n reducer.setPointwise(true)\n return reducer.reduce(g)\n }\n fixPolygonalTopology(geom) {\n let geomToBuffer = geom\n if (!this._changePrecisionModel) \n geomToBuffer = this.changePM(geom, this._targetPM)\n \n const bufGeom = BufferOp.bufferOp(geomToBuffer, 0)\n return bufGeom\n }\n reducePointwise(geom) {\n let geomEdit = null\n if (this._changePrecisionModel) {\n const newFactory = this.createFactory(geom.getFactory(), this._targetPM)\n geomEdit = new GeometryEditor(newFactory)\n } else {\n geomEdit = new GeometryEditor()\n }\n let finalRemoveCollapsed = this._removeCollapsed\n if (geom.getDimension() >= 2) finalRemoveCollapsed = true\n const reduceGeom = geomEdit.edit(geom, new PrecisionReducerCoordinateOperation(this._targetPM, finalRemoveCollapsed))\n return reduceGeom\n }\n changePM(geom, newPM) {\n const geomEditor = this.createEditor(geom.getFactory(), newPM)\n return geomEditor.edit(geom, new GeometryEditor.NoOpGeometryOperation())\n }\n setRemoveCollapsedComponents(removeCollapsed) {\n this._removeCollapsed = removeCollapsed\n }\n createFactory(inputFactory, pm) {\n const newFactory = new GeometryFactory(pm, inputFactory.getSRID(), inputFactory.getCoordinateSequenceFactory())\n return newFactory\n }\n setChangePrecisionModel(changePrecisionModel) {\n this._changePrecisionModel = changePrecisionModel\n }\n reduce(geom) {\n const reducePW = this.reducePointwise(geom)\n if (this._isPointwise) return reducePW\n if (!hasInterface(reducePW, Polygonal)) return reducePW\n if (IsValidOp.isValid(reducePW)) return reducePW\n return this.fixPolygonalTopology(reducePW)\n }\n setPointwise(isPointwise) {\n this._isPointwise = isPointwise\n }\n createEditor(geomFactory, newPM) {\n if (geomFactory.getPrecisionModel() === newPM) return new GeometryEditor()\n const newFactory = this.createFactory(geomFactory, newPM)\n const geomEdit = new GeometryEditor(newFactory)\n return geomEdit\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport Coordinate from '../geom/Coordinate'\nimport LineSegment from '../geom/LineSegment'\nexport default class DouglasPeuckerLineSimplifier {\n constructor() {\n DouglasPeuckerLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._usePt = null\n this._distanceTolerance = null\n this._seg = new LineSegment()\n const pts = arguments[0]\n this._pts = pts\n }\n static simplify(pts, distanceTolerance) {\n const simp = new DouglasPeuckerLineSimplifier(pts)\n simp.setDistanceTolerance(distanceTolerance)\n return simp.simplify()\n }\n simplifySection(i, j) {\n if (i + 1 === j) \n return null\n \n this._seg.p0 = this._pts[i]\n this._seg.p1 = this._pts[j]\n let maxDistance = -1.0\n let maxIndex = i\n for (let k = i + 1; k < j; k++) {\n const distance = this._seg.distance(this._pts[k])\n if (distance > maxDistance) {\n maxDistance = distance\n maxIndex = k\n }\n }\n if (maxDistance <= this._distanceTolerance) {\n for (let k = i + 1; k < j; k++) \n this._usePt[k] = false\n \n } else {\n this.simplifySection(i, maxIndex)\n this.simplifySection(maxIndex, j)\n }\n }\n setDistanceTolerance(distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\n simplify() {\n this._usePt = new Array(this._pts.length).fill(null)\n for (let i = 0; i < this._pts.length; i++) \n this._usePt[i] = true\n \n this.simplifySection(0, this._pts.length - 1)\n const coordList = new CoordinateList()\n for (let i = 0; i < this._pts.length; i++) \n if (this._usePt[i]) coordList.add(new Coordinate(this._pts[i]))\n \n return coordList.toCoordinateArray()\n }\n}\n","import DouglasPeuckerLineSimplifier from './DouglasPeuckerLineSimplifier'\nimport GeometryTransformer from '../geom/util/GeometryTransformer'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Polygon from '../geom/Polygon'\nimport LinearRing from '../geom/LinearRing'\nimport MultiPolygon from '../geom/MultiPolygon'\nexport default class DouglasPeuckerSimplifier {\n constructor() {\n DouglasPeuckerSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distanceTolerance = null\n this._isEnsureValidTopology = true\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n }\n static simplify(geom, distanceTolerance) {\n const tss = new DouglasPeuckerSimplifier(geom)\n tss.setDistanceTolerance(distanceTolerance)\n return tss.getResultGeometry()\n }\n setEnsureValid(isEnsureValidTopology) {\n this._isEnsureValidTopology = isEnsureValidTopology\n }\n getResultGeometry() {\n if (this._inputGeom.isEmpty()) return this._inputGeom.copy()\n return new DPTransformer(this._isEnsureValidTopology, this._distanceTolerance).transform(this._inputGeom)\n }\n setDistanceTolerance(distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._distanceTolerance = distanceTolerance\n }\n}\nclass DPTransformer extends GeometryTransformer {\n constructor() {\n super()\n DPTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isEnsureValidTopology = true\n this._distanceTolerance = null\n const isEnsureValidTopology = arguments[0], distanceTolerance = arguments[1]\n this._isEnsureValidTopology = isEnsureValidTopology\n this._distanceTolerance = distanceTolerance\n }\n transformPolygon(geom, parent) {\n if (geom.isEmpty()) return null\n const rawGeom = super.transformPolygon.call(this, geom, parent)\n if (parent instanceof MultiPolygon) \n return rawGeom\n \n return this.createValidArea(rawGeom)\n }\n createValidArea(rawAreaGeom) {\n if (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0)\n return rawAreaGeom\n }\n transformCoordinates(coords, parent) {\n const inputPts = coords.toCoordinateArray()\n let newPts = null\n if (inputPts.length === 0) \n newPts = new Array(0).fill(null)\n else \n newPts = DouglasPeuckerLineSimplifier.simplify(inputPts, this._distanceTolerance)\n \n return this._factory.getCoordinateSequenceFactory().create(newPts)\n }\n transformMultiPolygon(geom, parent) {\n const rawGeom = super.transformMultiPolygon.call(this, geom, parent)\n return this.createValidArea(rawGeom)\n }\n transformLinearRing(geom, parent) {\n const removeDegenerateRings = parent instanceof Polygon\n const simpResult = super.transformLinearRing.call(this, geom, parent)\n if (removeDegenerateRings && !(simpResult instanceof LinearRing)) return null\n \n return simpResult\n }\n}\nDouglasPeuckerSimplifier.DPTransformer = DPTransformer\n","import LineSegment from '../geom/LineSegment'\nexport default class TaggedLineSegment extends LineSegment {\n constructor() {\n super()\n TaggedLineSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parent = null\n this._index = null\n if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n TaggedLineSegment.constructor_.call(this, p0, p1, null, -1)\n } else if (arguments.length === 4) {\n const p0 = arguments[0], p1 = arguments[1], parent = arguments[2], index = arguments[3]\n LineSegment.constructor_.call(this, p0, p1)\n this._parent = parent\n this._index = index\n }\n }\n getIndex() {\n return this._index\n }\n getParent() {\n return this._parent\n }\n}\n","import TaggedLineSegment from './TaggedLineSegment'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class TaggedLineString {\n constructor() {\n TaggedLineString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentLine = null\n this._segs = null\n this._resultSegs = new ArrayList()\n this._minimumSize = null\n if (arguments.length === 1) {\n const parentLine = arguments[0]\n TaggedLineString.constructor_.call(this, parentLine, 2)\n } else if (arguments.length === 2) {\n const parentLine = arguments[0], minimumSize = arguments[1]\n this._parentLine = parentLine\n this._minimumSize = minimumSize\n this.init()\n }\n }\n static extractCoordinates(segs) {\n const pts = new Array(segs.size() + 1).fill(null)\n let seg = null\n for (let i = 0; i < segs.size(); i++) {\n seg = segs.get(i)\n pts[i] = seg.p0\n }\n pts[pts.length - 1] = seg.p1\n return pts\n }\n addToResult(seg) {\n this._resultSegs.add(seg)\n }\n asLineString() {\n return this._parentLine.getFactory().createLineString(TaggedLineString.extractCoordinates(this._resultSegs))\n }\n getResultSize() {\n const resultSegsSize = this._resultSegs.size()\n return resultSegsSize === 0 ? 0 : resultSegsSize + 1\n }\n getParent() {\n return this._parentLine\n }\n getSegment(i) {\n return this._segs[i]\n }\n getParentCoordinates() {\n return this._parentLine.getCoordinates()\n }\n getMinimumSize() {\n return this._minimumSize\n }\n asLinearRing() {\n return this._parentLine.getFactory().createLinearRing(TaggedLineString.extractCoordinates(this._resultSegs))\n }\n getSegments() {\n return this._segs\n }\n init() {\n const pts = this._parentLine.getCoordinates()\n this._segs = new Array(pts.length - 1).fill(null)\n for (let i = 0; i < pts.length - 1; i++) {\n const seg = new TaggedLineSegment(pts[i], pts[i + 1], this._parentLine, i)\n this._segs[i] = seg\n }\n }\n getResultCoordinates() {\n return TaggedLineString.extractCoordinates(this._resultSegs)\n }\n}\n","import Quadtree from '../index/quadtree/Quadtree'\nimport ItemVisitor from '../index/ItemVisitor'\nimport LineSegment from '../geom/LineSegment'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Envelope from '../geom/Envelope'\nimport TaggedLineString from './TaggedLineString'\nexport default class LineSegmentIndex {\n constructor() {\n LineSegmentIndex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._index = new Quadtree()\n }\n remove(seg) {\n this._index.remove(new Envelope(seg.p0, seg.p1), seg)\n }\n add() {\n if (arguments[0] instanceof TaggedLineString) {\n const line = arguments[0]\n const segs = line.getSegments()\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n this.add(seg)\n }\n } else if (arguments[0] instanceof LineSegment) {\n const seg = arguments[0]\n this._index.insert(new Envelope(seg.p0, seg.p1), seg)\n }\n }\n query(querySeg) {\n const env = new Envelope(querySeg.p0, querySeg.p1)\n const visitor = new LineSegmentVisitor(querySeg)\n this._index.query(env, visitor)\n const itemsFound = visitor.getItems()\n return itemsFound\n }\n}\nclass LineSegmentVisitor {\n constructor() {\n LineSegmentVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._querySeg = null\n this._items = new ArrayList()\n const querySeg = arguments[0]\n this._querySeg = querySeg\n }\n visitItem(item) {\n const seg = item\n if (Envelope.intersects(seg.p0, seg.p1, this._querySeg.p0, this._querySeg.p1)) this._items.add(item)\n }\n getItems() {\n return this._items\n }\n get interfaces_() {\n return [ItemVisitor]\n }\n}\n","import LineSegment from '../geom/LineSegment'\nimport LineSegmentIndex from './LineSegmentIndex'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nexport default class TaggedLineStringSimplifier {\n constructor() {\n TaggedLineStringSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._inputIndex = new LineSegmentIndex()\n this._outputIndex = new LineSegmentIndex()\n this._line = null\n this._linePts = null\n this._distanceTolerance = 0.0\n const inputIndex = arguments[0], outputIndex = arguments[1]\n this._inputIndex = inputIndex\n this._outputIndex = outputIndex\n }\n static isInLineSection(line, sectionIndex, seg) {\n if (seg.getParent() !== line.getParent()) return false\n const segIndex = seg.getIndex()\n if (segIndex >= sectionIndex[0] && segIndex < sectionIndex[1]) return true\n return false\n }\n flatten(start, end) {\n const p0 = this._linePts[start]\n const p1 = this._linePts[end]\n const newSeg = new LineSegment(p0, p1)\n this.remove(this._line, start, end)\n this._outputIndex.add(newSeg)\n return newSeg\n }\n hasBadIntersection(parentLine, sectionIndex, candidateSeg) {\n if (this.hasBadOutputIntersection(candidateSeg)) return true\n if (this.hasBadInputIntersection(parentLine, sectionIndex, candidateSeg)) return true\n return false\n }\n setDistanceTolerance(distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\n simplifySection(i, j, depth) {\n depth += 1\n const sectionIndex = new Array(2).fill(null)\n if (i + 1 === j) {\n const newSeg = this._line.getSegment(i)\n this._line.addToResult(newSeg)\n return null\n }\n let isValidToSimplify = true\n if (this._line.getResultSize() < this._line.getMinimumSize()) {\n const worstCaseSize = depth + 1\n if (worstCaseSize < this._line.getMinimumSize()) isValidToSimplify = false\n }\n const distance = new Array(1).fill(null)\n const furthestPtIndex = this.findFurthestPoint(this._linePts, i, j, distance)\n if (distance[0] > this._distanceTolerance) isValidToSimplify = false\n const candidateSeg = new LineSegment()\n candidateSeg.p0 = this._linePts[i]\n candidateSeg.p1 = this._linePts[j]\n sectionIndex[0] = i\n sectionIndex[1] = j\n if (this.hasBadIntersection(this._line, sectionIndex, candidateSeg)) isValidToSimplify = false\n if (isValidToSimplify) {\n const newSeg = this.flatten(i, j)\n this._line.addToResult(newSeg)\n return null\n }\n this.simplifySection(i, furthestPtIndex, depth)\n this.simplifySection(furthestPtIndex, j, depth)\n }\n hasBadOutputIntersection(candidateSeg) {\n const querySegs = this._outputIndex.query(candidateSeg)\n for (let i = querySegs.iterator(); i.hasNext(); ) {\n const querySeg = i.next()\n if (this.hasInteriorIntersection(querySeg, candidateSeg)) \n return true\n \n }\n return false\n }\n findFurthestPoint(pts, i, j, maxDistance) {\n const seg = new LineSegment()\n seg.p0 = pts[i]\n seg.p1 = pts[j]\n let maxDist = -1.0\n let maxIndex = i\n for (let k = i + 1; k < j; k++) {\n const midPt = pts[k]\n const distance = seg.distance(midPt)\n if (distance > maxDist) {\n maxDist = distance\n maxIndex = k\n }\n }\n maxDistance[0] = maxDist\n return maxIndex\n }\n simplify(line) {\n this._line = line\n this._linePts = line.getParentCoordinates()\n this.simplifySection(0, this._linePts.length - 1, 0)\n }\n remove(line, start, end) {\n for (let i = start; i < end; i++) {\n const seg = line.getSegment(i)\n this._inputIndex.remove(seg)\n }\n }\n hasInteriorIntersection(seg0, seg1) {\n this._li.computeIntersection(seg0.p0, seg0.p1, seg1.p0, seg1.p1)\n return this._li.isInteriorIntersection()\n }\n hasBadInputIntersection(parentLine, sectionIndex, candidateSeg) {\n const querySegs = this._inputIndex.query(candidateSeg)\n for (let i = querySegs.iterator(); i.hasNext(); ) {\n const querySeg = i.next()\n if (this.hasInteriorIntersection(querySeg, candidateSeg)) {\n if (TaggedLineStringSimplifier.isInLineSection(parentLine, sectionIndex, querySeg)) continue\n return true\n }\n }\n return false\n }\n}\n","import TaggedLineStringSimplifier from './TaggedLineStringSimplifier'\nimport LineSegmentIndex from './LineSegmentIndex'\nexport default class TaggedLinesSimplifier {\n constructor() {\n TaggedLinesSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputIndex = new LineSegmentIndex()\n this._outputIndex = new LineSegmentIndex()\n this._distanceTolerance = 0.0\n }\n setDistanceTolerance(distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\n simplify(taggedLines) {\n for (let i = taggedLines.iterator(); i.hasNext(); ) \n this._inputIndex.add(i.next())\n \n for (let i = taggedLines.iterator(); i.hasNext(); ) {\n const tlss = new TaggedLineStringSimplifier(this._inputIndex, this._outputIndex)\n tlss.setDistanceTolerance(this._distanceTolerance)\n tlss.simplify(i.next())\n }\n }\n}\n","import LineString from '../geom/LineString'\nimport HashMap from '../../../../java/util/HashMap'\nimport GeometryTransformer from '../geom/util/GeometryTransformer'\nimport TaggedLinesSimplifier from './TaggedLinesSimplifier'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport GeometryComponentFilter from '../geom/GeometryComponentFilter'\nimport TaggedLineString from './TaggedLineString'\nexport default class TopologyPreservingSimplifier {\n constructor() {\n TopologyPreservingSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._lineSimplifier = new TaggedLinesSimplifier()\n this._linestringMap = null\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n }\n static simplify(geom, distanceTolerance) {\n const tss = new TopologyPreservingSimplifier(geom)\n tss.setDistanceTolerance(distanceTolerance)\n return tss.getResultGeometry()\n }\n getResultGeometry() {\n if (this._inputGeom.isEmpty()) return this._inputGeom.copy()\n this._linestringMap = new HashMap()\n this._inputGeom.apply(new LineStringMapBuilderFilter(this))\n this._lineSimplifier.simplify(this._linestringMap.values())\n const result = new LineStringTransformer(this._linestringMap).transform(this._inputGeom)\n return result\n }\n setDistanceTolerance(distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._lineSimplifier.setDistanceTolerance(distanceTolerance)\n }\n}\nclass LineStringTransformer extends GeometryTransformer {\n constructor() {\n super()\n LineStringTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linestringMap = null\n const linestringMap = arguments[0]\n this._linestringMap = linestringMap\n }\n transformCoordinates(coords, parent) {\n if (coords.size() === 0) return null\n if (parent instanceof LineString) {\n const taggedLine = this._linestringMap.get(parent)\n return this.createCoordinateSequence(taggedLine.getResultCoordinates())\n }\n return super.transformCoordinates.call(this, coords, parent)\n }\n}\nclass LineStringMapBuilderFilter {\n constructor() {\n LineStringMapBuilderFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.tps = null\n const tps = arguments[0]\n this.tps = tps\n }\n filter(geom) {\n if (geom instanceof LineString) {\n const line = geom\n if (line.isEmpty()) return null\n const minSize = line.isClosed() ? 4 : 2\n const taggedLine = new TaggedLineString(line, minSize)\n this.tps._linestringMap.put(line, taggedLine)\n }\n }\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n}\nTopologyPreservingSimplifier.LineStringTransformer = LineStringTransformer\nTopologyPreservingSimplifier.LineStringMapBuilderFilter = LineStringMapBuilderFilter\n","import CoordinateList from '../geom/CoordinateList'\nimport Coordinate from '../geom/Coordinate'\nimport Double from '../../../../java/lang/Double'\nimport Triangle from '../geom/Triangle'\nexport default class VWLineSimplifier {\n constructor() {\n VWLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._tolerance = null\n const pts = arguments[0], distanceTolerance = arguments[1]\n this._pts = pts\n this._tolerance = distanceTolerance * distanceTolerance\n }\n static simplify(pts, distanceTolerance) {\n const simp = new VWLineSimplifier(pts, distanceTolerance)\n return simp.simplify()\n }\n simplifyVertex(vwLine) {\n let curr = vwLine\n let minArea = curr.getArea()\n let minVertex = null\n while (curr !== null) {\n const area = curr.getArea()\n if (area < minArea) {\n minArea = area\n minVertex = curr\n }\n curr = curr._next\n }\n if (minVertex !== null && minArea < this._tolerance) \n minVertex.remove()\n \n if (!vwLine.isLive()) return -1\n return minArea\n }\n simplify() {\n const vwLine = VWVertex.buildLine(this._pts)\n let minArea = this._tolerance\n do \n minArea = this.simplifyVertex(vwLine)\n while (minArea < this._tolerance)\n const simp = vwLine.getCoordinates()\n if (simp.length < 2) \n return [simp[0], new Coordinate(simp[0])]\n \n return simp\n }\n}\nclass VWVertex {\n constructor() {\n VWVertex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n this._prev = null\n this._next = null\n this._area = VWVertex.MAX_AREA\n this._isLive = true\n const pt = arguments[0]\n this._pt = pt\n }\n static buildLine(pts) {\n let first = null\n let prev = null\n for (let i = 0; i < pts.length; i++) {\n const v = new VWVertex(pts[i])\n if (first === null) first = v\n v.setPrev(prev)\n if (prev !== null) {\n prev.setNext(v)\n prev.updateArea()\n }\n prev = v\n }\n return first\n }\n getCoordinates() {\n const coords = new CoordinateList()\n let curr = this\n do {\n coords.add(curr._pt, false)\n curr = curr._next\n } while (curr !== null)\n return coords.toCoordinateArray()\n }\n getArea() {\n return this._area\n }\n updateArea() {\n if (this._prev === null || this._next === null) {\n this._area = VWVertex.MAX_AREA\n return null\n }\n this._area = Math.abs(Triangle.area(this._prev._pt, this._pt, this._next._pt))\n }\n remove() {\n const tmpPrev = this._prev\n const tmpNext = this._next\n let result = null\n if (this._prev !== null) {\n this._prev.setNext(tmpNext)\n this._prev.updateArea()\n result = this._prev\n }\n if (this._next !== null) {\n this._next.setPrev(tmpPrev)\n this._next.updateArea()\n if (result === null) result = this._next\n }\n this._isLive = false\n return result\n }\n isLive() {\n return this._isLive\n }\n setPrev(prev) {\n this._prev = prev\n }\n setNext(next) {\n this._next = next\n }\n}\nVWVertex.MAX_AREA = Double.MAX_VALUE\nVWLineSimplifier.VWVertex = VWVertex\n","import GeometryTransformer from '../geom/util/GeometryTransformer'\nimport VWLineSimplifier from './VWLineSimplifier'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Polygon from '../geom/Polygon'\nimport LinearRing from '../geom/LinearRing'\nimport MultiPolygon from '../geom/MultiPolygon'\nexport default class VWSimplifier {\n constructor() {\n VWSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distanceTolerance = null\n this._isEnsureValidTopology = true\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n }\n static simplify(geom, distanceTolerance) {\n const simp = new VWSimplifier(geom)\n simp.setDistanceTolerance(distanceTolerance)\n return simp.getResultGeometry()\n }\n setEnsureValid(isEnsureValidTopology) {\n this._isEnsureValidTopology = isEnsureValidTopology\n }\n getResultGeometry() {\n if (this._inputGeom.isEmpty()) return this._inputGeom.copy()\n return new VWTransformer(this._isEnsureValidTopology, this._distanceTolerance).transform(this._inputGeom)\n }\n setDistanceTolerance(distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._distanceTolerance = distanceTolerance\n }\n}\nclass VWTransformer extends GeometryTransformer {\n constructor() {\n super()\n VWTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isEnsureValidTopology = true\n this._distanceTolerance = null\n const isEnsureValidTopology = arguments[0], distanceTolerance = arguments[1]\n this._isEnsureValidTopology = isEnsureValidTopology\n this._distanceTolerance = distanceTolerance\n }\n transformPolygon(geom, parent) {\n if (geom.isEmpty()) return null\n const rawGeom = super.transformPolygon.call(this, geom, parent)\n if (parent instanceof MultiPolygon) \n return rawGeom\n \n return this.createValidArea(rawGeom)\n }\n createValidArea(rawAreaGeom) {\n if (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0)\n return rawAreaGeom\n }\n transformCoordinates(coords, parent) {\n const inputPts = coords.toCoordinateArray()\n let newPts = null\n if (inputPts.length === 0) \n newPts = new Array(0).fill(null)\n else \n newPts = VWLineSimplifier.simplify(inputPts, this._distanceTolerance)\n \n return this._factory.getCoordinateSequenceFactory().create(newPts)\n }\n transformMultiPolygon(geom, parent) {\n const rawGeom = super.transformMultiPolygon.call(this, geom, parent)\n return this.createValidArea(rawGeom)\n }\n transformLinearRing(geom, parent) {\n const removeDegenerateRings = parent instanceof Polygon\n const simpResult = super.transformLinearRing.call(this, geom, parent)\n if (removeDegenerateRings && !(simpResult instanceof LinearRing)) return null\n \n return simpResult\n }\n}\nVWSimplifier.VWTransformer = VWTransformer\n","import Coordinate from '../geom/Coordinate'\nexport default class SplitSegment {\n constructor() {\n SplitSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._seg = null\n this._segLen = null\n this._splitPt = null\n this._minimumLen = 0.0\n const seg = arguments[0]\n this._seg = seg\n this._segLen = seg.getLength()\n }\n static pointAlongReverse(seg, segmentLengthFraction) {\n const coord = new Coordinate()\n coord.x = seg.p1.x - segmentLengthFraction * (seg.p1.x - seg.p0.x)\n coord.y = seg.p1.y - segmentLengthFraction * (seg.p1.y - seg.p0.y)\n return coord\n }\n splitAt() {\n if (arguments.length === 1) {\n const pt = arguments[0]\n const minFrac = this._minimumLen / this._segLen\n if (pt.distance(this._seg.p0) < this._minimumLen) {\n this._splitPt = this._seg.pointAlong(minFrac)\n return null\n }\n if (pt.distance(this._seg.p1) < this._minimumLen) {\n this._splitPt = SplitSegment.pointAlongReverse(this._seg, minFrac)\n return null\n }\n this._splitPt = pt\n } else if (arguments.length === 2) {\n const length = arguments[0], endPt = arguments[1]\n const actualLen = this.getConstrainedLength(length)\n const frac = actualLen / this._segLen\n if (endPt.equals2D(this._seg.p0)) this._splitPt = this._seg.pointAlong(frac); else this._splitPt = SplitSegment.pointAlongReverse(this._seg, frac)\n }\n }\n setMinimumLength(minLen) {\n this._minimumLen = minLen\n }\n getConstrainedLength(len) {\n if (len < this._minimumLen) return this._minimumLen\n return len\n }\n getSplitPoint() {\n return this._splitPt\n }\n}\n","export default class ConstraintSplitPointFinder {\n findSplitPoint(seg, encroachPt) {}\n}\n","import SplitSegment from './SplitSegment'\nimport ConstraintSplitPointFinder from './ConstraintSplitPointFinder'\nexport default class NonEncroachingSplitPointFinder {\n static projectedSplitPoint(seg, encroachPt) {\n const lineSeg = seg.getLineSegment()\n const projPt = lineSeg.project(encroachPt)\n return projPt\n }\n findSplitPoint(seg, encroachPt) {\n const lineSeg = seg.getLineSegment()\n const segLen = lineSeg.getLength()\n const midPtLen = segLen / 2\n const splitSeg = new SplitSegment(lineSeg)\n const projPt = NonEncroachingSplitPointFinder.projectedSplitPoint(seg, encroachPt)\n const nonEncroachDiam = projPt.distance(encroachPt) * 2 * 0.8\n let maxSplitLen = nonEncroachDiam\n if (maxSplitLen > midPtLen) \n maxSplitLen = midPtLen\n \n splitSeg.setMinimumLength(maxSplitLen)\n splitSeg.splitAt(projPt)\n return splitSeg.getSplitPoint()\n }\n get interfaces_() {\n return [ConstraintSplitPointFinder]\n }\n}\n","import WKTWriter from '../../io/WKTWriter'\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence'\nimport DD from '../../math/DD'\nimport System from '../../../../../java/lang/System'\nimport Triangle from '../../geom/Triangle'\nexport default class TrianglePredicate {\n static triArea(a, b, c) {\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)\n }\n static isInCircleDDNormalized(a, b, c, p) {\n const adx = DD.valueOf(a.x).selfSubtract(p.x)\n const ady = DD.valueOf(a.y).selfSubtract(p.y)\n const bdx = DD.valueOf(b.x).selfSubtract(p.x)\n const bdy = DD.valueOf(b.y).selfSubtract(p.y)\n const cdx = DD.valueOf(c.x).selfSubtract(p.x)\n const cdy = DD.valueOf(c.y).selfSubtract(p.y)\n const abdet = adx.multiply(bdy).selfSubtract(bdx.multiply(ady))\n const bcdet = bdx.multiply(cdy).selfSubtract(cdx.multiply(bdy))\n const cadet = cdx.multiply(ady).selfSubtract(adx.multiply(cdy))\n const alift = adx.multiply(adx).selfAdd(ady.multiply(ady))\n const blift = bdx.multiply(bdx).selfAdd(bdy.multiply(bdy))\n const clift = cdx.multiply(cdx).selfAdd(cdy.multiply(cdy))\n const sum = alift.selfMultiply(bcdet).selfAdd(blift.selfMultiply(cadet)).selfAdd(clift.selfMultiply(abdet))\n const isInCircle = sum.doubleValue() > 0\n return isInCircle\n }\n static checkRobustInCircle(a, b, c, p) {\n const nonRobustInCircle = TrianglePredicate.isInCircleNonRobust(a, b, c, p)\n const isInCircleDD = TrianglePredicate.isInCircleDDSlow(a, b, c, p)\n const isInCircleCC = TrianglePredicate.isInCircleCC(a, b, c, p)\n const circumCentre = Triangle.circumcentre(a, b, c)\n System.out.println('p radius diff a = ' + Math.abs(p.distance(circumCentre) - a.distance(circumCentre)) / a.distance(circumCentre))\n if (nonRobustInCircle !== isInCircleDD || nonRobustInCircle !== isInCircleCC) {\n System.out.println('inCircle robustness failure (double result = ' + nonRobustInCircle + ', DD result = ' + isInCircleDD + ', CC result = ' + isInCircleCC + ')')\n System.out.println(WKTWriter.toLineString(new CoordinateArraySequence([a, b, c, p])))\n System.out.println('Circumcentre = ' + WKTWriter.toPoint(circumCentre) + ' radius = ' + a.distance(circumCentre))\n System.out.println('p radius diff a = ' + Math.abs(p.distance(circumCentre) / a.distance(circumCentre) - 1))\n System.out.println('p radius diff b = ' + Math.abs(p.distance(circumCentre) / b.distance(circumCentre) - 1))\n System.out.println('p radius diff c = ' + Math.abs(p.distance(circumCentre) / c.distance(circumCentre) - 1))\n System.out.println()\n }\n }\n static isInCircleDDFast(a, b, c, p) {\n const aTerm = DD.sqr(a.x).selfAdd(DD.sqr(a.y)).selfMultiply(TrianglePredicate.triAreaDDFast(b, c, p))\n const bTerm = DD.sqr(b.x).selfAdd(DD.sqr(b.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, c, p))\n const cTerm = DD.sqr(c.x).selfAdd(DD.sqr(c.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, p))\n const pTerm = DD.sqr(p.x).selfAdd(DD.sqr(p.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, c))\n const sum = aTerm.selfSubtract(bTerm).selfAdd(cTerm).selfSubtract(pTerm)\n const isInCircle = sum.doubleValue() > 0\n return isInCircle\n }\n static isInCircleCC(a, b, c, p) {\n const cc = Triangle.circumcentre(a, b, c)\n const ccRadius = a.distance(cc)\n const pRadiusDiff = p.distance(cc) - ccRadius\n return pRadiusDiff <= 0\n }\n static isInCircleNormalized(a, b, c, p) {\n const adx = a.x - p.x\n const ady = a.y - p.y\n const bdx = b.x - p.x\n const bdy = b.y - p.y\n const cdx = c.x - p.x\n const cdy = c.y - p.y\n const abdet = adx * bdy - bdx * ady\n const bcdet = bdx * cdy - cdx * bdy\n const cadet = cdx * ady - adx * cdy\n const alift = adx * adx + ady * ady\n const blift = bdx * bdx + bdy * bdy\n const clift = cdx * cdx + cdy * cdy\n const disc = alift * bcdet + blift * cadet + clift * abdet\n return disc > 0\n }\n static isInCircleDDSlow(a, b, c, p) {\n const px = DD.valueOf(p.x)\n const py = DD.valueOf(p.y)\n const ax = DD.valueOf(a.x)\n const ay = DD.valueOf(a.y)\n const bx = DD.valueOf(b.x)\n const by = DD.valueOf(b.y)\n const cx = DD.valueOf(c.x)\n const cy = DD.valueOf(c.y)\n const aTerm = ax.multiply(ax).add(ay.multiply(ay)).multiply(TrianglePredicate.triAreaDDSlow(bx, by, cx, cy, px, py))\n const bTerm = bx.multiply(bx).add(by.multiply(by)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, cx, cy, px, py))\n const cTerm = cx.multiply(cx).add(cy.multiply(cy)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, px, py))\n const pTerm = px.multiply(px).add(py.multiply(py)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, cx, cy))\n const sum = aTerm.subtract(bTerm).add(cTerm).subtract(pTerm)\n const isInCircle = sum.doubleValue() > 0\n return isInCircle\n }\n static isInCircleNonRobust(a, b, c, p) {\n const isInCircle = (a.x * a.x + a.y * a.y) * TrianglePredicate.triArea(b, c, p) - (b.x * b.x + b.y * b.y) * TrianglePredicate.triArea(a, c, p) + (c.x * c.x + c.y * c.y) * TrianglePredicate.triArea(a, b, p) - (p.x * p.x + p.y * p.y) * TrianglePredicate.triArea(a, b, c) > 0\n return isInCircle\n }\n static isInCircleRobust(a, b, c, p) {\n return TrianglePredicate.isInCircleNormalized(a, b, c, p)\n }\n static triAreaDDSlow(ax, ay, bx, by, cx, cy) {\n return bx.subtract(ax).multiply(cy.subtract(ay)).subtract(by.subtract(ay).multiply(cx.subtract(ax)))\n }\n static triAreaDDFast(a, b, c) {\n const t1 = DD.valueOf(b.x).selfSubtract(a.x).selfMultiply(DD.valueOf(c.y).selfSubtract(a.y))\n const t2 = DD.valueOf(b.y).selfSubtract(a.y).selfMultiply(DD.valueOf(c.x).selfSubtract(a.x))\n return t1.selfSubtract(t2)\n }\n}\n","import NotRepresentableException from '../../algorithm/NotRepresentableException'\nimport Coordinate from '../../geom/Coordinate'\nimport TrianglePredicate from './TrianglePredicate'\nimport System from '../../../../../java/lang/System'\nimport HCoordinate from '../../algorithm/HCoordinate'\nexport default class Vertex {\n constructor() {\n Vertex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._p = null\n if (arguments.length === 1) {\n const _p = arguments[0]\n this._p = new Coordinate(_p)\n } else if (arguments.length === 2) {\n const _x = arguments[0], _y = arguments[1]\n this._p = new Coordinate(_x, _y)\n } else if (arguments.length === 3) {\n const _x = arguments[0], _y = arguments[1], _z = arguments[2]\n this._p = new Coordinate(_x, _y, _z)\n }\n }\n static interpolateZ() {\n if (arguments.length === 3) {\n const p = arguments[0], p0 = arguments[1], p1 = arguments[2]\n const segLen = p0.distance(p1)\n const ptLen = p.distance(p0)\n const dz = p1.getZ() - p0.getZ()\n const pz = p0.getZ() + dz * (ptLen / segLen)\n return pz\n } else if (arguments.length === 4) {\n const p = arguments[0], v0 = arguments[1], v1 = arguments[2], v2 = arguments[3]\n const x0 = v0.x\n const y0 = v0.y\n const a = v1.x - x0\n const b = v2.x - x0\n const c = v1.y - y0\n const d = v2.y - y0\n const det = a * d - b * c\n const dx = p.x - x0\n const dy = p.y - y0\n const t = (d * dx - b * dy) / det\n const u = (-c * dx + a * dy) / det\n const z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ())\n return z\n }\n }\n circleCenter(b, c) {\n const a = new Vertex(this.getX(), this.getY())\n const cab = this.bisector(a, b)\n const cbc = this.bisector(b, c)\n const hcc = new HCoordinate(cab, cbc)\n let cc = null\n try {\n cc = new Vertex(hcc.getX(), hcc.getY())\n } catch (nre) {\n if (nre instanceof NotRepresentableException) {\n System.err.println('a: ' + a + ' b: ' + b + ' c: ' + c)\n System.err.println(nre)\n } else {\n throw nre\n }\n } finally {}\n return cc\n }\n dot(v) {\n return this._p.x * v.getX() + this._p.y * v.getY()\n }\n magn() {\n return Math.sqrt(this._p.x * this._p.x + this._p.y * this._p.y)\n }\n getZ() {\n return this._p.getZ()\n }\n bisector(a, b) {\n const dx = b.getX() - a.getX()\n const dy = b.getY() - a.getY()\n const l1 = new HCoordinate(a.getX() + dx / 2.0, a.getY() + dy / 2.0, 1.0)\n const l2 = new HCoordinate(a.getX() - dy + dx / 2.0, a.getY() + dx + dy / 2.0, 1.0)\n return new HCoordinate(l1, l2)\n }\n equals() {\n if (arguments.length === 1) {\n const _x = arguments[0]\n if (this._p.x === _x.getX() && this._p.y === _x.getY()) \n return true\n else \n return false\n \n } else if (arguments.length === 2) {\n const _x = arguments[0], tolerance = arguments[1]\n if (this._p.distance(_x.getCoordinate()) < tolerance) \n return true\n else \n return false\n \n }\n }\n getCoordinate() {\n return this._p\n }\n isInCircle(a, b, c) {\n return TrianglePredicate.isInCircleRobust(a._p, b._p, c._p, this._p)\n }\n interpolateZValue(v0, v1, v2) {\n const x0 = v0.getX()\n const y0 = v0.getY()\n const a = v1.getX() - x0\n const b = v2.getX() - x0\n const c = v1.getY() - y0\n const d = v2.getY() - y0\n const det = a * d - b * c\n const dx = this.getX() - x0\n const dy = this.getY() - y0\n const t = (d * dx - b * dy) / det\n const u = (-c * dx + a * dy) / det\n const z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ())\n return z\n }\n midPoint(a) {\n const xm = (this._p.x + a.getX()) / 2.0\n const ym = (this._p.y + a.getY()) / 2.0\n const zm = (this._p.getZ() + a.getZ()) / 2.0\n return new Vertex(xm, ym, zm)\n }\n rightOf(e) {\n return this.isCCW(e.dest(), e.orig())\n }\n isCCW(b, c) {\n return (b._p.x - this._p.x) * (c._p.y - this._p.y) - (b._p.y - this._p.y) * (c._p.x - this._p.x) > 0\n }\n getX() {\n return this._p.x\n }\n crossProduct(v) {\n return this._p.x * v.getY() - this._p.y * v.getX()\n }\n setZ(_z) {\n this._p.setZ(_z)\n }\n times(c) {\n return new Vertex(c * this._p.x, c * this._p.y)\n }\n cross() {\n return new Vertex(this._p.y, -this._p.x)\n }\n leftOf(e) {\n return this.isCCW(e.orig(), e.dest())\n }\n toString() {\n return 'POINT (' + this._p.x + ' ' + this._p.y + ')'\n }\n sub(v) {\n return new Vertex(this._p.x - v.getX(), this._p.y - v.getY())\n }\n getY() {\n return this._p.y\n }\n classify(p0, p1) {\n const p2 = this\n const a = p1.sub(p0)\n const b = p2.sub(p0)\n const sa = a.crossProduct(b)\n if (sa > 0.0) return Vertex.LEFT\n if (sa < 0.0) return Vertex.RIGHT\n if (a.getX() * b.getX() < 0.0 || a.getY() * b.getY() < 0.0) return Vertex.BEHIND\n if (a.magn() < b.magn()) return Vertex.BEYOND\n if (p0.equals(p2)) return Vertex.ORIGIN\n if (p1.equals(p2)) return Vertex.DESTINATION\n return Vertex.BETWEEN\n }\n sum(v) {\n return new Vertex(this._p.x + v.getX(), this._p.y + v.getY())\n }\n distance(v1, v2) {\n return Math.sqrt(Math.pow(v2.getX() - v1.getX(), 2.0) + Math.pow(v2.getY() - v1.getY(), 2.0))\n }\n circumRadiusRatio(b, c) {\n const x = this.circleCenter(b, c)\n const radius = this.distance(x, b)\n let edgeLength = this.distance(this, b)\n let el = this.distance(b, c)\n if (el < edgeLength) \n edgeLength = el\n \n el = this.distance(c, this)\n if (el < edgeLength) \n edgeLength = el\n \n return radius / edgeLength\n }\n}\nVertex.LEFT = 0\nVertex.RIGHT = 1\nVertex.BEYOND = 2\nVertex.BEHIND = 3\nVertex.BETWEEN = 4\nVertex.ORIGIN = 5\nVertex.DESTINATION = 6\n","import Vertex from './quadedge/Vertex'\nexport default class ConstraintVertex extends Vertex {\n constructor() {\n super()\n ConstraintVertex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isOnConstraint = null\n this._constraint = null\n const p = arguments[0]\n Vertex.constructor_.call(this, p)\n }\n getConstraint() {\n return this._constraint\n }\n setOnConstraint(isOnConstraint) {\n this._isOnConstraint = isOnConstraint\n }\n merge(other) {\n if (other._isOnConstraint) {\n this._isOnConstraint = true\n this._constraint = other._constraint\n }\n }\n isOnConstraint() {\n return this._isOnConstraint\n }\n setConstraint(constraint) {\n this._isOnConstraint = true\n this._constraint = constraint\n }\n}\n","import WKTWriter from '../../io/WKTWriter'\nimport LineSegment from '../../geom/LineSegment'\nexport default class QuadEdge {\n constructor() {\n QuadEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rot = null\n this._vertex = null\n this._next = null\n this._data = null\n }\n static makeEdge(o, d) {\n const q0 = new QuadEdge()\n const q1 = new QuadEdge()\n const q2 = new QuadEdge()\n const q3 = new QuadEdge()\n q0._rot = q1\n q1._rot = q2\n q2._rot = q3\n q3._rot = q0\n q0.setNext(q0)\n q1.setNext(q3)\n q2.setNext(q2)\n q3.setNext(q1)\n const base = q0\n base.setOrig(o)\n base.setDest(d)\n return base\n }\n static swap(e) {\n const a = e.oPrev()\n const b = e.sym().oPrev()\n QuadEdge.splice(e, a)\n QuadEdge.splice(e.sym(), b)\n QuadEdge.splice(e, a.lNext())\n QuadEdge.splice(e.sym(), b.lNext())\n e.setOrig(a.dest())\n e.setDest(b.dest())\n }\n static splice(a, b) {\n const alpha = a.oNext().rot()\n const beta = b.oNext().rot()\n const t1 = b.oNext()\n const t2 = a.oNext()\n const t3 = beta.oNext()\n const t4 = alpha.oNext()\n a.setNext(t1)\n b.setNext(t2)\n alpha.setNext(t3)\n beta.setNext(t4)\n }\n static connect(a, b) {\n const e = QuadEdge.makeEdge(a.dest(), b.orig())\n QuadEdge.splice(e, a.lNext())\n QuadEdge.splice(e.sym(), b)\n return e\n }\n equalsNonOriented(qe) {\n if (this.equalsOriented(qe)) return true\n if (this.equalsOriented(qe.sym())) return true\n return false\n }\n toLineSegment() {\n return new LineSegment(this._vertex.getCoordinate(), this.dest().getCoordinate())\n }\n dest() {\n return this.sym().orig()\n }\n oNext() {\n return this._next\n }\n equalsOriented(qe) {\n if (this.orig().getCoordinate().equals2D(qe.orig().getCoordinate()) && this.dest().getCoordinate().equals2D(qe.dest().getCoordinate())) return true\n return false\n }\n dNext() {\n return this.sym().oNext().sym()\n }\n lPrev() {\n return this._next.sym()\n }\n rPrev() {\n return this.sym().oNext()\n }\n rot() {\n return this._rot\n }\n oPrev() {\n return this._rot._next._rot\n }\n sym() {\n return this._rot._rot\n }\n setOrig(o) {\n this._vertex = o\n }\n lNext() {\n return this.invRot().oNext().rot()\n }\n getLength() {\n return this.orig().getCoordinate().distance(this.dest().getCoordinate())\n }\n invRot() {\n return this._rot.sym()\n }\n setDest(d) {\n this.sym().setOrig(d)\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n delete() {\n this._rot = null\n }\n orig() {\n return this._vertex\n }\n rNext() {\n return this._rot._next.invRot()\n }\n toString() {\n const p0 = this._vertex.getCoordinate()\n const p1 = this.dest().getCoordinate()\n return WKTWriter.toLineString(p0, p1)\n }\n isLive() {\n return this._rot !== null\n }\n getPrimary() {\n if (this.orig().getCoordinate().compareTo(this.dest().getCoordinate()) <= 0) return this; else return this.sym()\n }\n dPrev() {\n return this.invRot().oNext().invRot()\n }\n setNext(next) {\n this._next = next\n }\n}\n","import QuadEdge from './quadedge/QuadEdge'\nexport default class IncrementalDelaunayTriangulator {\n constructor() {\n IncrementalDelaunayTriangulator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subdiv = null\n this._isUsingTolerance = false\n const subdiv = arguments[0]\n this._subdiv = subdiv\n this._isUsingTolerance = subdiv.getTolerance() > 0.0\n }\n insertSite(v) {\n let e = this._subdiv.locate(v)\n if (this._subdiv.isVertexOfEdge(e, v)) {\n return e\n } else if (this._subdiv.isOnEdge(e, v.getCoordinate())) {\n e = e.oPrev()\n this._subdiv.delete(e.oNext())\n }\n let base = this._subdiv.makeEdge(e.orig(), v)\n QuadEdge.splice(base, e)\n const startEdge = base\n do {\n base = this._subdiv.connect(e, base.sym())\n e = base.oPrev()\n } while (e.lNext() !== startEdge)\n do {\n const t = e.oPrev()\n if (t.dest().rightOf(e) && v.isInCircle(e.orig(), t.dest(), e.dest())) {\n QuadEdge.swap(e)\n e = e.oPrev()\n } else if (e.oNext() === startEdge) {\n return base\n } else {\n e = e.oNext().lPrev()\n }\n } while (true)\n }\n insertSites(vertices) {\n for (let i = vertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n this.insertSite(v)\n }\n }\n}\n","export default class QuadEdgeLocator {\n locate(v) {}\n}\n","import QuadEdgeLocator from './QuadEdgeLocator'\nexport default class LastFoundQuadEdgeLocator {\n constructor() {\n LastFoundQuadEdgeLocator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subdiv = null\n this._lastEdge = null\n const subdiv = arguments[0]\n this._subdiv = subdiv\n this.init()\n }\n init() {\n this._lastEdge = this.findEdge()\n }\n locate(v) {\n if (!this._lastEdge.isLive()) \n this.init()\n \n const e = this._subdiv.locateFromEdge(v, this._lastEdge)\n this._lastEdge = e\n return e\n }\n findEdge() {\n const edges = this._subdiv.getEdges()\n return edges.iterator().next()\n }\n get interfaces_() {\n return [QuadEdgeLocator]\n }\n}\n","import LineSegment from '../../geom/LineSegment'\nimport RuntimeException from '../../../../../java/lang/RuntimeException'\nexport default class LocateFailureException extends RuntimeException {\n constructor() {\n super()\n LocateFailureException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._seg = null\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'string') {\n const msg = arguments[0]\n RuntimeException.constructor_.call(this, msg)\n } else if (arguments[0] instanceof LineSegment) {\n const seg = arguments[0]\n RuntimeException.constructor_.call(this, 'Locate failed to converge (at edge: ' + seg + '). Possible causes include invalid Subdivision topology or very close sites')\n this._seg = new LineSegment(seg)\n }\n } else if (arguments.length === 2) {\n const msg = arguments[0], seg = arguments[1]\n RuntimeException.constructor_.call(this, LocateFailureException.msgWithSpatial(msg, seg))\n this._seg = new LineSegment(seg)\n }\n }\n static msgWithSpatial(msg, seg) {\n if (seg !== null) return msg + ' [ ' + seg + ' ]'\n return msg\n }\n getSegment() {\n return this._seg\n }\n}\n","export default class TriangleVisitor {\n visit(triEdges) {}\n}\n","import QuadEdge from './QuadEdge'\nimport CoordinateList from '../../geom/CoordinateList'\nimport HashSet from '../../../../../java/util/HashSet'\nimport WKTWriter from '../../io/WKTWriter'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Coordinate from '../../geom/Coordinate'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Stack from '../../../../../java/util/Stack'\nimport LastFoundQuadEdgeLocator from './LastFoundQuadEdgeLocator'\nimport LocateFailureException from './LocateFailureException'\nimport Vertex from './Vertex'\nimport System from '../../../../../java/lang/System'\nimport LineSegment from '../../geom/LineSegment'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nimport Triangle from '../../geom/Triangle'\nimport TriangleVisitor from './TriangleVisitor'\nexport default class QuadEdgeSubdivision {\n constructor() {\n QuadEdgeSubdivision.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._visitedKey = 0\n this._quadEdges = new ArrayList()\n this._startingEdge = null\n this._tolerance = null\n this._edgeCoincidenceTolerance = null\n this._frameVertex = new Array(3).fill(null)\n this._frameEnv = null\n this._locator = null\n this._seg = new LineSegment()\n this._triEdges = new Array(3).fill(null)\n const env = arguments[0], tolerance = arguments[1]\n this._tolerance = tolerance\n this._edgeCoincidenceTolerance = tolerance / QuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR\n this.createFrame(env)\n this._startingEdge = this.initSubdiv()\n this._locator = new LastFoundQuadEdgeLocator(this)\n }\n static getTriangleEdges(startQE, triEdge) {\n triEdge[0] = startQE\n triEdge[1] = triEdge[0].lNext()\n triEdge[2] = triEdge[1].lNext()\n if (triEdge[2].lNext() !== triEdge[0]) throw new IllegalArgumentException('Edges do not form a triangle')\n }\n getTriangleVertices(includeFrame) {\n const visitor = new TriangleVertexListVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangleVertices()\n }\n isFrameVertex(v) {\n if (v.equals(this._frameVertex[0])) return true\n if (v.equals(this._frameVertex[1])) return true\n if (v.equals(this._frameVertex[2])) return true\n return false\n }\n isVertexOfEdge(e, v) {\n if (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) \n return true\n \n return false\n }\n connect(a, b) {\n const q = QuadEdge.connect(a, b)\n this._quadEdges.add(q)\n return q\n }\n getVoronoiCellPolygon(qe, geomFact) {\n const cellPts = new ArrayList()\n const startQE = qe\n do {\n const cc = qe.rot().orig().getCoordinate()\n cellPts.add(cc)\n qe = qe.oPrev()\n } while (qe !== startQE)\n const coordList = new CoordinateList()\n coordList.addAll(cellPts, false)\n coordList.closeRing()\n if (coordList.size() < 4) {\n System.out.println(coordList)\n coordList.add(coordList.get(coordList.size() - 1), true)\n }\n const pts = coordList.toCoordinateArray()\n const cellPoly = geomFact.createPolygon(geomFact.createLinearRing(pts))\n const v = startQE.orig()\n cellPoly.setUserData(v.getCoordinate())\n return cellPoly\n }\n setLocator(locator) {\n this._locator = locator\n }\n initSubdiv() {\n const ea = this.makeEdge(this._frameVertex[0], this._frameVertex[1])\n const eb = this.makeEdge(this._frameVertex[1], this._frameVertex[2])\n QuadEdge.splice(ea.sym(), eb)\n const ec = this.makeEdge(this._frameVertex[2], this._frameVertex[0])\n QuadEdge.splice(eb.sym(), ec)\n QuadEdge.splice(ec.sym(), ea)\n return ea\n }\n isFrameBorderEdge(e) {\n const leftTri = new Array(3).fill(null)\n QuadEdgeSubdivision.getTriangleEdges(e, leftTri)\n const rightTri = new Array(3).fill(null)\n QuadEdgeSubdivision.getTriangleEdges(e.sym(), rightTri)\n const vLeftTriOther = e.lNext().dest()\n if (this.isFrameVertex(vLeftTriOther)) return true\n const vRightTriOther = e.sym().lNext().dest()\n if (this.isFrameVertex(vRightTriOther)) return true\n return false\n }\n makeEdge(o, d) {\n const q = QuadEdge.makeEdge(o, d)\n this._quadEdges.add(q)\n return q\n }\n visitTriangles(triVisitor, includeFrame) {\n this._visitedKey++\n const edgeStack = new Stack()\n edgeStack.push(this._startingEdge)\n const visitedEdges = new HashSet()\n while (!edgeStack.empty()) {\n const edge = edgeStack.pop()\n if (!visitedEdges.contains(edge)) {\n const triEdges = this.fetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges)\n if (triEdges !== null) triVisitor.visit(triEdges)\n }\n }\n }\n isFrameEdge(e) {\n if (this.isFrameVertex(e.orig()) || this.isFrameVertex(e.dest())) return true\n return false\n }\n isOnEdge(e, p) {\n this._seg.setCoordinates(e.orig().getCoordinate(), e.dest().getCoordinate())\n const dist = this._seg.distance(p)\n return dist < this._edgeCoincidenceTolerance\n }\n getEnvelope() {\n return new Envelope(this._frameEnv)\n }\n createFrame(env) {\n const deltaX = env.getWidth()\n const deltaY = env.getHeight()\n let offset = 0.0\n if (deltaX > deltaY) \n offset = deltaX * 10.0\n else \n offset = deltaY * 10.0\n \n this._frameVertex[0] = new Vertex((env.getMaxX() + env.getMinX()) / 2.0, env.getMaxY() + offset)\n this._frameVertex[1] = new Vertex(env.getMinX() - offset, env.getMinY() - offset)\n this._frameVertex[2] = new Vertex(env.getMaxX() + offset, env.getMinY() - offset)\n this._frameEnv = new Envelope(this._frameVertex[0].getCoordinate(), this._frameVertex[1].getCoordinate())\n this._frameEnv.expandToInclude(this._frameVertex[2].getCoordinate())\n }\n getTriangleCoordinates(includeFrame) {\n const visitor = new TriangleCoordinatesVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangles()\n }\n getVertices(includeFrame) {\n const vertices = new HashSet()\n for (let i = this._quadEdges.iterator(); i.hasNext(); ) {\n const qe = i.next()\n const v = qe.orig()\n if (includeFrame || !this.isFrameVertex(v)) vertices.add(v)\n const vd = qe.dest()\n if (includeFrame || !this.isFrameVertex(vd)) vertices.add(vd)\n }\n return vertices\n }\n fetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges) {\n let curr = edge\n let edgeCount = 0\n let isFrame = false\n do {\n this._triEdges[edgeCount] = curr\n if (this.isFrameEdge(curr)) isFrame = true\n const sym = curr.sym()\n if (!visitedEdges.contains(sym)) edgeStack.push(sym)\n visitedEdges.add(curr)\n edgeCount++\n curr = curr.lNext()\n } while (curr !== edge)\n if (isFrame && !includeFrame) return null\n return this._triEdges\n }\n getEdges() {\n if (arguments.length === 0) {\n return this._quadEdges\n } else if (arguments.length === 1) {\n const geomFact = arguments[0]\n const quadEdges = this.getPrimaryEdges(false)\n const edges = new Array(quadEdges.size()).fill(null)\n let i = 0\n for (let it = quadEdges.iterator(); it.hasNext(); ) {\n const qe = it.next()\n edges[i++] = geomFact.createLineString([qe.orig().getCoordinate(), qe.dest().getCoordinate()])\n }\n return geomFact.createMultiLineString(edges)\n }\n }\n getVertexUniqueEdges(includeFrame) {\n const edges = new ArrayList()\n const visitedVertices = new HashSet()\n for (let i = this._quadEdges.iterator(); i.hasNext(); ) {\n const qe = i.next()\n const v = qe.orig()\n if (!visitedVertices.contains(v)) {\n visitedVertices.add(v)\n if (includeFrame || !this.isFrameVertex(v)) \n edges.add(qe)\n \n }\n const qd = qe.sym()\n const vd = qd.orig()\n if (!visitedVertices.contains(vd)) {\n visitedVertices.add(vd)\n if (includeFrame || !this.isFrameVertex(vd)) \n edges.add(qd)\n \n }\n }\n return edges\n }\n getTriangleEdges(includeFrame) {\n const visitor = new TriangleEdgesListVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangleEdges()\n }\n getPrimaryEdges(includeFrame) {\n this._visitedKey++\n const edges = new ArrayList()\n const edgeStack = new Stack()\n edgeStack.push(this._startingEdge)\n const visitedEdges = new HashSet()\n while (!edgeStack.empty()) {\n const edge = edgeStack.pop()\n if (!visitedEdges.contains(edge)) {\n const priQE = edge.getPrimary()\n if (includeFrame || !this.isFrameEdge(priQE)) edges.add(priQE)\n edgeStack.push(edge.oNext())\n edgeStack.push(edge.sym().oNext())\n visitedEdges.add(edge)\n visitedEdges.add(edge.sym())\n }\n }\n return edges\n }\n delete(e) {\n QuadEdge.splice(e, e.oPrev())\n QuadEdge.splice(e.sym(), e.sym().oPrev())\n const eSym = e.sym()\n const eRot = e.rot()\n const eRotSym = e.rot().sym()\n this._quadEdges.remove(e)\n this._quadEdges.remove(eSym)\n this._quadEdges.remove(eRot)\n this._quadEdges.remove(eRotSym)\n e.delete()\n eSym.delete()\n eRot.delete()\n eRotSym.delete()\n }\n locateFromEdge(v, startEdge) {\n let iter = 0\n const maxIter = this._quadEdges.size()\n let e = startEdge\n while (true) {\n iter++\n if (iter > maxIter) \n throw new LocateFailureException(e.toLineSegment())\n \n if (v.equals(e.orig()) || v.equals(e.dest())) \n break\n else if (v.rightOf(e)) \n e = e.sym()\n else if (!v.rightOf(e.oNext())) \n e = e.oNext()\n else if (!v.rightOf(e.dPrev())) \n e = e.dPrev()\n else \n break\n \n }\n return e\n }\n getTolerance() {\n return this._tolerance\n }\n getVoronoiCellPolygons(geomFact) {\n this.visitTriangles(new TriangleCircumcentreVisitor(), true)\n const cells = new ArrayList()\n const edges = this.getVertexUniqueEdges(false)\n for (let i = edges.iterator(); i.hasNext(); ) {\n const qe = i.next()\n cells.add(this.getVoronoiCellPolygon(qe, geomFact))\n }\n return cells\n }\n getVoronoiDiagram(geomFact) {\n const vorCells = this.getVoronoiCellPolygons(geomFact)\n return geomFact.createGeometryCollection(GeometryFactory.toGeometryArray(vorCells))\n }\n getTriangles(geomFact) {\n const triPtsList = this.getTriangleCoordinates(false)\n const tris = new Array(triPtsList.size()).fill(null)\n let i = 0\n for (let it = triPtsList.iterator(); it.hasNext(); ) {\n const triPt = it.next()\n tris[i++] = geomFact.createPolygon(geomFact.createLinearRing(triPt))\n }\n return geomFact.createGeometryCollection(tris)\n }\n insertSite(v) {\n let e = this.locate(v)\n if (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) \n return e\n \n let base = this.makeEdge(e.orig(), v)\n QuadEdge.splice(base, e)\n const startEdge = base\n do {\n base = this.connect(e, base.sym())\n e = base.oPrev()\n } while (e.lNext() !== startEdge)\n return startEdge\n }\n locate() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Vertex) {\n const v = arguments[0]\n return this._locator.locate(v)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this._locator.locate(new Vertex(p))\n }\n } else if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n const e = this._locator.locate(new Vertex(p0))\n if (e === null) return null\n let base = e\n if (e.dest().getCoordinate().equals2D(p0)) base = e.sym()\n let locEdge = base\n do {\n if (locEdge.dest().getCoordinate().equals2D(p1)) return locEdge\n locEdge = locEdge.oNext()\n } while (locEdge !== base)\n return null\n }\n }\n}\nclass TriangleCircumcentreVisitor {\n visit(triEdges) {\n const a = triEdges[0].orig().getCoordinate()\n const b = triEdges[1].orig().getCoordinate()\n const c = triEdges[2].orig().getCoordinate()\n const cc = Triangle.circumcentreDD(a, b, c)\n const ccVertex = new Vertex(cc)\n for (let i = 0; i < 3; i++) \n triEdges[i].rot().setOrig(ccVertex)\n \n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nclass TriangleEdgesListVisitor {\n constructor() {\n TriangleEdgesListVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._triList = new ArrayList()\n }\n getTriangleEdges() {\n return this._triList\n }\n visit(triEdges) {\n this._triList.add(triEdges)\n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nclass TriangleVertexListVisitor {\n constructor() {\n TriangleVertexListVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._triList = new ArrayList()\n }\n visit(triEdges) {\n this._triList.add([triEdges[0].orig(), triEdges[1].orig(), triEdges[2].orig()])\n }\n getTriangleVertices() {\n return this._triList\n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nclass TriangleCoordinatesVisitor {\n constructor() {\n TriangleCoordinatesVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._coordList = new CoordinateList()\n this._triCoords = new ArrayList()\n }\n checkTriangleSize(pts) {\n let loc = ''\n if (pts.length >= 2) loc = WKTWriter.toLineString(pts[0], pts[1]); else \n if (pts.length >= 1) loc = WKTWriter.toPoint(pts[0])\n \n }\n visit(triEdges) {\n this._coordList.clear()\n for (let i = 0; i < 3; i++) {\n const v = triEdges[i].orig()\n this._coordList.add(v.getCoordinate())\n }\n if (this._coordList.size() > 0) {\n this._coordList.closeRing()\n const pts = this._coordList.toCoordinateArray()\n if (pts.length !== 4) \n return null\n \n this._triCoords.add(pts)\n }\n }\n getTriangles() {\n return this._triCoords\n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nQuadEdgeSubdivision.TriangleCircumcentreVisitor = TriangleCircumcentreVisitor\nQuadEdgeSubdivision.TriangleEdgesListVisitor = TriangleEdgesListVisitor\nQuadEdgeSubdivision.TriangleVertexListVisitor = TriangleVertexListVisitor\nQuadEdgeSubdivision.TriangleCoordinatesVisitor = TriangleCoordinatesVisitor\nQuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR = 1000\n","import Coordinate from '../geom/Coordinate'\nimport LineSegment from '../geom/LineSegment'\nexport default class Segment {\n constructor() {\n Segment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ls = null\n this._data = null\n if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n this._ls = new LineSegment(p0, p1)\n } else if (arguments.length === 3) {\n const p0 = arguments[0], p1 = arguments[1], data = arguments[2]\n this._ls = new LineSegment(p0, p1)\n this._data = data\n } else if (arguments.length === 6) {\n const x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5]\n Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2))\n } else if (arguments.length === 7) {\n const x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5], data = arguments[6]\n Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data)\n }\n }\n getLineSegment() {\n return this._ls\n }\n getEndZ() {\n const p = this._ls.getCoordinate(1)\n return p.getZ()\n }\n getStartZ() {\n const p = this._ls.getCoordinate(0)\n return p.getZ()\n }\n intersection(s) {\n return this._ls.intersection(s.getLineSegment())\n }\n getStart() {\n return this._ls.getCoordinate(0)\n }\n getEnd() {\n return this._ls.getCoordinate(1)\n }\n getEndY() {\n const p = this._ls.getCoordinate(1)\n return p.y\n }\n getStartX() {\n const p = this._ls.getCoordinate(0)\n return p.x\n }\n equalsTopo(s) {\n return this._ls.equalsTopo(s.getLineSegment())\n }\n getStartY() {\n const p = this._ls.getCoordinate(0)\n return p.y\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n getEndX() {\n const p = this._ls.getCoordinate(1)\n return p.x\n }\n toString() {\n return this._ls.toString()\n }\n}\n","import WKTWriter from '../io/WKTWriter'\nimport Coordinate from '../geom/Coordinate'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nexport default class ConstraintEnforcementException extends RuntimeException {\n constructor() {\n super()\n ConstraintEnforcementException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n if (arguments.length === 1) {\n const msg = arguments[0]\n RuntimeException.constructor_.call(this, msg)\n } else if (arguments.length === 2) {\n const msg = arguments[0], pt = arguments[1]\n RuntimeException.constructor_.call(this, ConstraintEnforcementException.msgWithCoord(msg, pt))\n this._pt = new Coordinate(pt)\n }\n }\n static msgWithCoord(msg, pt) {\n if (pt !== null) return msg + ' [ ' + WKTWriter.toPoint(pt) + ' ]'\n return msg\n }\n getCoordinate() {\n return this._pt\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory'\nimport NonEncroachingSplitPointFinder from './NonEncroachingSplitPointFinder'\nimport ConstraintVertex from './ConstraintVertex'\nimport Coordinate from '../geom/Coordinate'\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator'\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision'\nimport Double from '../../../../java/lang/Double'\nimport LastFoundQuadEdgeLocator from './quadedge/LastFoundQuadEdgeLocator'\nimport Segment from './Segment'\nimport ConvexHull from '../algorithm/ConvexHull'\nimport KdTree from '../index/kdtree/KdTree'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport ConstraintEnforcementException from './ConstraintEnforcementException'\nimport Envelope from '../geom/Envelope'\nexport default class ConformingDelaunayTriangulator {\n constructor() {\n ConformingDelaunayTriangulator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._initialVertices = null\n this._segVertices = null\n this._segments = new ArrayList()\n this._subdiv = null\n this._incDel = null\n this._convexHull = null\n this._splitFinder = new NonEncroachingSplitPointFinder()\n this._kdt = null\n this._vertexFactory = null\n this._computeAreaEnv = null\n this._splitPt = null\n this._tolerance = null\n const initialVertices = arguments[0], tolerance = arguments[1]\n this._initialVertices = new ArrayList(initialVertices)\n this._tolerance = tolerance\n this._kdt = new KdTree(tolerance)\n }\n static computeVertexEnvelope(vertices) {\n const env = new Envelope()\n for (let i = vertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n env.expandToInclude(v.getCoordinate())\n }\n return env\n }\n getInitialVertices() {\n return this._initialVertices\n }\n getKDT() {\n return this._kdt\n }\n enforceConstraints() {\n this.addConstraintVertices()\n let count = 0\n let splits = 0\n do {\n splits = this.enforceGabriel(this._segments)\n count++\n } while (splits > 0 && count < ConformingDelaunayTriangulator.MAX_SPLIT_ITER)\n if (count === ConformingDelaunayTriangulator.MAX_SPLIT_ITER) \n throw new ConstraintEnforcementException('Too many splitting iterations while enforcing constraints. Last split point was at: ', this._splitPt)\n \n }\n insertSites(vertices) {\n for (let i = vertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n this.insertSite(v)\n }\n }\n getVertexFactory() {\n return this._vertexFactory\n }\n getPointArray() {\n const pts = new Array(this._initialVertices.size() + this._segVertices.size()).fill(null)\n let index = 0\n for (let i = this._initialVertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n pts[index++] = v.getCoordinate()\n }\n for (let i2 = this._segVertices.iterator(); i2.hasNext(); ) {\n const v = i2.next()\n pts[index++] = v.getCoordinate()\n }\n return pts\n }\n setConstraints(segments, segVertices) {\n this._segments = segments\n this._segVertices = segVertices\n }\n computeConvexHull() {\n const fact = new GeometryFactory()\n const coords = this.getPointArray()\n const hull = new ConvexHull(coords, fact)\n this._convexHull = hull.getConvexHull()\n }\n addConstraintVertices() {\n this.computeConvexHull()\n this.insertSites(this._segVertices)\n }\n findNonGabrielPoint(seg) {\n const p = seg.getStart()\n const q = seg.getEnd()\n const midPt = new Coordinate((p.x + q.x) / 2.0, (p.y + q.y) / 2.0)\n const segRadius = p.distance(midPt)\n const env = new Envelope(midPt)\n env.expandBy(segRadius)\n const result = this._kdt.query(env)\n let closestNonGabriel = null\n let minDist = Double.MAX_VALUE\n for (let i = result.iterator(); i.hasNext(); ) {\n const nextNode = i.next()\n const testPt = nextNode.getCoordinate()\n if (testPt.equals2D(p) || testPt.equals2D(q)) continue\n const testRadius = midPt.distance(testPt)\n if (testRadius < segRadius) {\n const testDist = testRadius\n if (closestNonGabriel === null || testDist < minDist) {\n closestNonGabriel = testPt\n minDist = testDist\n }\n }\n }\n return closestNonGabriel\n }\n getConstraintSegments() {\n return this._segments\n }\n setSplitPointFinder(splitFinder) {\n this._splitFinder = splitFinder\n }\n getConvexHull() {\n return this._convexHull\n }\n getTolerance() {\n return this._tolerance\n }\n enforceGabriel(segsToInsert) {\n const newSegments = new ArrayList()\n let splits = 0\n const segsToRemove = new ArrayList()\n for (let i = segsToInsert.iterator(); i.hasNext(); ) {\n const seg = i.next()\n const encroachPt = this.findNonGabrielPoint(seg)\n if (encroachPt === null) continue\n this._splitPt = this._splitFinder.findSplitPoint(seg, encroachPt)\n const splitVertex = this.createVertex(this._splitPt, seg)\n const insertedVertex = this.insertSite(splitVertex)\n if (!insertedVertex.getCoordinate().equals2D(this._splitPt)) {}\n const s1 = new Segment(seg.getStartX(), seg.getStartY(), seg.getStartZ(), splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getData())\n const s2 = new Segment(splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getEndX(), seg.getEndY(), seg.getEndZ(), seg.getData())\n newSegments.add(s1)\n newSegments.add(s2)\n segsToRemove.add(seg)\n splits = splits + 1\n }\n segsToInsert.removeAll(segsToRemove)\n segsToInsert.addAll(newSegments)\n return splits\n }\n createVertex() {\n if (arguments.length === 1) {\n const p = arguments[0]\n let v = null\n if (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, null); else v = new ConstraintVertex(p)\n return v\n } else if (arguments.length === 2) {\n const p = arguments[0], seg = arguments[1]\n let v = null\n if (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, seg); else v = new ConstraintVertex(p)\n v.setOnConstraint(true)\n return v\n }\n }\n getSubdivision() {\n return this._subdiv\n }\n computeBoundingBox() {\n const vertexEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._initialVertices)\n const segEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._segVertices)\n const allPointsEnv = new Envelope(vertexEnv)\n allPointsEnv.expandToInclude(segEnv)\n const deltaX = allPointsEnv.getWidth() * 0.2\n const deltaY = allPointsEnv.getHeight() * 0.2\n const delta = Math.max(deltaX, deltaY)\n this._computeAreaEnv = new Envelope(allPointsEnv)\n this._computeAreaEnv.expandBy(delta)\n }\n setVertexFactory(vertexFactory) {\n this._vertexFactory = vertexFactory\n }\n formInitialDelaunay() {\n this.computeBoundingBox()\n this._subdiv = new QuadEdgeSubdivision(this._computeAreaEnv, this._tolerance)\n this._subdiv.setLocator(new LastFoundQuadEdgeLocator(this._subdiv))\n this._incDel = new IncrementalDelaunayTriangulator(this._subdiv)\n this.insertSites(this._initialVertices)\n }\n insertSite() {\n if (arguments[0] instanceof ConstraintVertex) {\n const v = arguments[0]\n const kdnode = this._kdt.insert(v.getCoordinate(), v)\n if (!kdnode.isRepeated()) {\n this._incDel.insertSite(v)\n } else {\n const snappedV = kdnode.getData()\n snappedV.merge(v)\n return snappedV\n }\n return v\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.insertSite(this.createVertex(p))\n }\n }\n}\nConformingDelaunayTriangulator.MAX_SPLIT_ITER = 99\n","import CoordinateList from '../geom/CoordinateList'\nimport Geometry from '../geom/Geometry'\nimport Arrays from '../../../../java/util/Arrays'\nimport hasInterface from '../../../../hasInterface'\nimport Collection from '../../../../java/util/Collection'\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator'\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision'\nimport Vertex from './quadedge/Vertex'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Envelope from '../geom/Envelope'\nexport default class DelaunayTriangulationBuilder {\n constructor() {\n DelaunayTriangulationBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._siteCoords = null\n this._tolerance = 0.0\n this._subdiv = null\n }\n static extractUniqueCoordinates(geom) {\n if (geom === null) return new CoordinateList()\n const coords = geom.getCoordinates()\n return DelaunayTriangulationBuilder.unique(coords)\n }\n static envelope(coords) {\n const env = new Envelope()\n for (let i = coords.iterator(); i.hasNext(); ) {\n const coord = i.next()\n env.expandToInclude(coord)\n }\n return env\n }\n static unique(coords) {\n const coordsCopy = CoordinateArrays.copyDeep(coords)\n Arrays.sort(coordsCopy)\n const coordList = new CoordinateList(coordsCopy, false)\n return coordList\n }\n static toVertices(coords) {\n const verts = new ArrayList()\n for (let i = coords.iterator(); i.hasNext(); ) {\n const coord = i.next()\n verts.add(new Vertex(coord))\n }\n return verts\n }\n create() {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n const vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords)\n this._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance)\n const triangulator = new IncrementalDelaunayTriangulator(this._subdiv)\n triangulator.insertSites(vertices)\n }\n setTolerance(tolerance) {\n this._tolerance = tolerance\n }\n setSites() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n } else if (hasInterface(arguments[0], Collection)) {\n const coords = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords))\n }\n }\n getEdges(geomFact) {\n this.create()\n return this._subdiv.getEdges(geomFact)\n }\n getSubdivision() {\n this.create()\n return this._subdiv\n }\n getTriangles(geomFact) {\n this.create()\n return this._subdiv.getTriangles(geomFact)\n }\n}\n","import ConformingDelaunayTriangulator from './ConformingDelaunayTriangulator'\nimport ConstraintVertex from './ConstraintVertex'\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder'\nimport Segment from './Segment'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class ConformingDelaunayTriangulationBuilder {\n constructor() {\n ConformingDelaunayTriangulationBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._siteCoords = null\n this._constraintLines = null\n this._tolerance = 0.0\n this._subdiv = null\n this._constraintVertexMap = new TreeMap()\n }\n static createConstraintSegments() {\n if (arguments.length === 1) {\n const geom = arguments[0]\n const lines = LinearComponentExtracter.getLines(geom)\n const constraintSegs = new ArrayList()\n for (let i = lines.iterator(); i.hasNext(); ) {\n const line = i.next()\n ConformingDelaunayTriangulationBuilder.createConstraintSegments(line, constraintSegs)\n }\n return constraintSegs\n } else if (arguments.length === 2) {\n const line = arguments[0], constraintSegs = arguments[1]\n const coords = line.getCoordinates()\n for (let i = 1; i < coords.length; i++) \n constraintSegs.add(new Segment(coords[i - 1], coords[i]))\n \n }\n }\n createSiteVertices(coords) {\n const verts = new ArrayList()\n for (let i = coords.iterator(); i.hasNext(); ) {\n const coord = i.next()\n if (this._constraintVertexMap.containsKey(coord)) continue\n verts.add(new ConstraintVertex(coord))\n }\n return verts\n }\n create() {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n let segments = new ArrayList()\n if (this._constraintLines !== null) {\n siteEnv.expandToInclude(this._constraintLines.getEnvelopeInternal())\n this.createVertices(this._constraintLines)\n segments = ConformingDelaunayTriangulationBuilder.createConstraintSegments(this._constraintLines)\n }\n const sites = this.createSiteVertices(this._siteCoords)\n const cdt = new ConformingDelaunayTriangulator(sites, this._tolerance)\n cdt.setConstraints(segments, new ArrayList(this._constraintVertexMap.values()))\n cdt.formInitialDelaunay()\n cdt.enforceConstraints()\n this._subdiv = cdt.getSubdivision()\n }\n setTolerance(tolerance) {\n this._tolerance = tolerance\n }\n setConstraints(constraintLines) {\n this._constraintLines = constraintLines\n }\n setSites(geom) {\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n }\n getEdges(geomFact) {\n this.create()\n return this._subdiv.getEdges(geomFact)\n }\n getSubdivision() {\n this.create()\n return this._subdiv\n }\n getTriangles(geomFact) {\n this.create()\n return this._subdiv.getTriangles(geomFact)\n }\n createVertices(geom) {\n const coords = geom.getCoordinates()\n for (let i = 0; i < coords.length; i++) {\n const v = new ConstraintVertex(coords[i])\n this._constraintVertexMap.put(coords[i], v)\n }\n }\n}\n","import Geometry from '../geom/Geometry'\nimport hasInterface from '../../../../hasInterface'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport Collection from '../../../../java/util/Collection'\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator'\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision'\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport OverlayOp from '../operation/overlay/OverlayOp'\nexport default class VoronoiDiagramBuilder {\n constructor() {\n VoronoiDiagramBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._siteCoords = null\n this._tolerance = 0.0\n this._subdiv = null\n this._clipEnv = null\n this._diagramEnv = null\n }\n static clipGeometryCollection(geom, clipEnv) {\n const clipPoly = geom.getFactory().toGeometry(clipEnv)\n const clipped = new ArrayList()\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const g = geom.getGeometryN(i)\n let result = null\n if (clipEnv.contains(g.getEnvelopeInternal())) {\n result = g\n } else if (clipEnv.intersects(g.getEnvelopeInternal())) {\n result = OverlayOp.intersection(clipPoly, g)\n result.setUserData(g.getUserData())\n }\n if (result !== null && !result.isEmpty()) \n clipped.add(result)\n \n }\n return geom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(clipped))\n }\n create() {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n this._diagramEnv = this._clipEnv\n if (this._diagramEnv === null) {\n this._diagramEnv = siteEnv\n const expandBy = this._diagramEnv.getDiameter()\n this._diagramEnv.expandBy(expandBy)\n }\n const vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords)\n this._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance)\n const triangulator = new IncrementalDelaunayTriangulator(this._subdiv)\n triangulator.insertSites(vertices)\n }\n getDiagram(geomFact) {\n this.create()\n const polys = this._subdiv.getVoronoiDiagram(geomFact)\n return VoronoiDiagramBuilder.clipGeometryCollection(polys, this._diagramEnv)\n }\n setTolerance(tolerance) {\n this._tolerance = tolerance\n }\n setSites() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n } else if (hasInterface(arguments[0], Collection)) {\n const coords = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords))\n }\n }\n setClipEnvelope(clipEnv) {\n this._clipEnv = clipEnv\n }\n getSubdivision() {\n this.create()\n return this._subdiv\n }\n}\n","import hasInterface from '../../../../hasInterface'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Lineal from '../geom/Lineal'\nexport default class LinearIterator {\n constructor() {\n LinearIterator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n this._numLines = null\n this._currentLine = null\n this._componentIndex = 0\n this._vertexIndex = 0\n if (arguments.length === 1) {\n const linear = arguments[0]\n LinearIterator.constructor_.call(this, linear, 0, 0)\n } else if (arguments.length === 2) {\n const linear = arguments[0], start = arguments[1]\n LinearIterator.constructor_.call(this, linear, start.getComponentIndex(), LinearIterator.segmentEndVertexIndex(start))\n } else if (arguments.length === 3) {\n const linearGeom = arguments[0], componentIndex = arguments[1], vertexIndex = arguments[2]\n if (!hasInterface(linearGeom, Lineal)) throw new IllegalArgumentException('Lineal geometry is required')\n this._linearGeom = linearGeom\n this._numLines = linearGeom.getNumGeometries()\n this._componentIndex = componentIndex\n this._vertexIndex = vertexIndex\n this.loadCurrentLine()\n }\n }\n static segmentEndVertexIndex(loc) {\n if (loc.getSegmentFraction() > 0.0) return loc.getSegmentIndex() + 1\n return loc.getSegmentIndex()\n }\n getComponentIndex() {\n return this._componentIndex\n }\n getLine() {\n return this._currentLine\n }\n getVertexIndex() {\n return this._vertexIndex\n }\n getSegmentEnd() {\n if (this._vertexIndex < this.getLine().getNumPoints() - 1) return this._currentLine.getCoordinateN(this._vertexIndex + 1)\n return null\n }\n next() {\n if (!this.hasNext()) return null\n this._vertexIndex++\n if (this._vertexIndex >= this._currentLine.getNumPoints()) {\n this._componentIndex++\n this.loadCurrentLine()\n this._vertexIndex = 0\n }\n }\n loadCurrentLine() {\n if (this._componentIndex >= this._numLines) {\n this._currentLine = null\n return null\n }\n this._currentLine = this._linearGeom.getGeometryN(this._componentIndex)\n }\n getSegmentStart() {\n return this._currentLine.getCoordinateN(this._vertexIndex)\n }\n isEndOfLine() {\n if (this._componentIndex >= this._numLines) return false\n if (this._vertexIndex < this._currentLine.getNumPoints() - 1) return false\n return true\n }\n hasNext() {\n if (this._componentIndex >= this._numLines) return false\n if (this._componentIndex === this._numLines - 1 && this._vertexIndex >= this._currentLine.getNumPoints()) return false\n return true\n }\n}\n","import LinearIterator from './LinearIterator'\nimport Double from '../../../../java/lang/Double'\nimport LineSegment from '../geom/LineSegment'\nimport Assert from '../util/Assert'\nexport default class LengthIndexOfPoint {\n constructor() {\n LengthIndexOfPoint.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static indexOf(linearGeom, inputPt) {\n const locater = new LengthIndexOfPoint(linearGeom)\n return locater.indexOf(inputPt)\n }\n static indexOfAfter(linearGeom, inputPt, minIndex) {\n const locater = new LengthIndexOfPoint(linearGeom)\n return locater.indexOfAfter(inputPt, minIndex)\n }\n indexOf(inputPt) {\n return this.indexOfFromStart(inputPt, -1.0)\n }\n indexOfFromStart(inputPt, minIndex) {\n let minDistance = Double.MAX_VALUE\n let ptMeasure = minIndex\n let segmentStartMeasure = 0.0\n const seg = new LineSegment()\n const it = new LinearIterator(this._linearGeom)\n while (it.hasNext()) {\n if (!it.isEndOfLine()) {\n seg.p0 = it.getSegmentStart()\n seg.p1 = it.getSegmentEnd()\n const segDistance = seg.distance(inputPt)\n const segMeasureToPt = this.segmentNearestMeasure(seg, inputPt, segmentStartMeasure)\n if (segDistance < minDistance && segMeasureToPt > minIndex) {\n ptMeasure = segMeasureToPt\n minDistance = segDistance\n }\n segmentStartMeasure += seg.getLength()\n }\n it.next()\n }\n return ptMeasure\n }\n indexOfAfter(inputPt, minIndex) {\n if (minIndex < 0.0) return this.indexOf(inputPt)\n const endIndex = this._linearGeom.getLength()\n if (endIndex < minIndex) return endIndex\n const closestAfter = this.indexOfFromStart(inputPt, minIndex)\n Assert.isTrue(closestAfter >= minIndex, 'computed index is before specified minimum index')\n return closestAfter\n }\n segmentNearestMeasure(seg, inputPt, segmentStartMeasure) {\n const projFactor = seg.projectionFactor(inputPt)\n if (projFactor <= 0.0) return segmentStartMeasure\n if (projFactor <= 1.0) return segmentStartMeasure + projFactor * seg.getLength()\n return segmentStartMeasure + seg.getLength()\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport LineSegment from '../geom/LineSegment'\nimport Comparable from '../../../../java/lang/Comparable'\nexport default class LinearLocation {\n constructor() {\n LinearLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._componentIndex = 0\n this._segmentIndex = 0\n this._segmentFraction = 0.0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const loc = arguments[0]\n this._componentIndex = loc._componentIndex\n this._segmentIndex = loc._segmentIndex\n this._segmentFraction = loc._segmentFraction\n } else if (arguments.length === 2) {\n const segmentIndex = arguments[0], segmentFraction = arguments[1]\n LinearLocation.constructor_.call(this, 0, segmentIndex, segmentFraction)\n } else if (arguments.length === 3) {\n const componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2]\n this._componentIndex = componentIndex\n this._segmentIndex = segmentIndex\n this._segmentFraction = segmentFraction\n this.normalize()\n } else if (arguments.length === 4) {\n const componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2], doNormalize = arguments[3]\n this._componentIndex = componentIndex\n this._segmentIndex = segmentIndex\n this._segmentFraction = segmentFraction\n if (doNormalize) this.normalize()\n }\n }\n static getEndLocation(linear) {\n const loc = new LinearLocation()\n loc.setToEnd(linear)\n return loc\n }\n static pointAlongSegmentByFraction(p0, p1, frac) {\n if (frac <= 0.0) return p0\n if (frac >= 1.0) return p1\n const x = (p1.x - p0.x) * frac + p0.x\n const y = (p1.y - p0.y) * frac + p0.y\n const z = (p1.getZ() - p0.getZ()) * frac + p0.getZ()\n return new Coordinate(x, y, z)\n }\n static compareLocationValues(componentIndex0, segmentIndex0, segmentFraction0, componentIndex1, segmentIndex1, segmentFraction1) {\n if (componentIndex0 < componentIndex1) return -1\n if (componentIndex0 > componentIndex1) return 1\n if (segmentIndex0 < segmentIndex1) return -1\n if (segmentIndex0 > segmentIndex1) return 1\n if (segmentFraction0 < segmentFraction1) return -1\n if (segmentFraction0 > segmentFraction1) return 1\n return 0\n }\n static numSegments(line) {\n const npts = line.getNumPoints()\n if (npts <= 1) return 0\n return npts - 1\n }\n getSegmentIndex() {\n return this._segmentIndex\n }\n getComponentIndex() {\n return this._componentIndex\n }\n isEndpoint(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const nseg = LinearLocation.numSegments(lineComp)\n return this._segmentIndex >= nseg || this._segmentIndex === nseg - 1 && this._segmentFraction >= 1.0\n }\n isValid(linearGeom) {\n if (this._componentIndex < 0 || this._componentIndex >= linearGeom.getNumGeometries()) return false\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n if (this._segmentIndex < 0 || this._segmentIndex > lineComp.getNumPoints()) return false\n if (this._segmentIndex === lineComp.getNumPoints() && this._segmentFraction !== 0.0) return false\n if (this._segmentFraction < 0.0 || this._segmentFraction > 1.0) return false\n return true\n }\n normalize() {\n if (this._segmentFraction < 0.0) \n this._segmentFraction = 0.0\n \n if (this._segmentFraction > 1.0) \n this._segmentFraction = 1.0\n \n if (this._componentIndex < 0) {\n this._componentIndex = 0\n this._segmentIndex = 0\n this._segmentFraction = 0.0\n }\n if (this._segmentIndex < 0) {\n this._segmentIndex = 0\n this._segmentFraction = 0.0\n }\n if (this._segmentFraction === 1.0) {\n this._segmentFraction = 0.0\n this._segmentIndex += 1\n }\n }\n toLowest(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const nseg = LinearLocation.numSegments(lineComp)\n if (this._segmentIndex < nseg) return this\n return new LinearLocation(this._componentIndex, nseg - 1, 1.0, false)\n }\n getCoordinate(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const p0 = lineComp.getCoordinateN(this._segmentIndex)\n if (this._segmentIndex >= LinearLocation.numSegments(lineComp)) return p0\n const p1 = lineComp.getCoordinateN(this._segmentIndex + 1)\n return LinearLocation.pointAlongSegmentByFraction(p0, p1, this._segmentFraction)\n }\n getSegmentFraction() {\n return this._segmentFraction\n }\n getSegment(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const p0 = lineComp.getCoordinateN(this._segmentIndex)\n if (this._segmentIndex >= LinearLocation.numSegments(lineComp)) {\n const prev = lineComp.getCoordinateN(lineComp.getNumPoints() - 2)\n return new LineSegment(prev, p0)\n }\n const p1 = lineComp.getCoordinateN(this._segmentIndex + 1)\n return new LineSegment(p0, p1)\n }\n clamp(linear) {\n if (this._componentIndex >= linear.getNumGeometries()) {\n this.setToEnd(linear)\n return null\n }\n if (this._segmentIndex >= linear.getNumPoints()) {\n const line = linear.getGeometryN(this._componentIndex)\n this._segmentIndex = LinearLocation.numSegments(line)\n this._segmentFraction = 1.0\n }\n }\n setToEnd(linear) {\n this._componentIndex = linear.getNumGeometries() - 1\n const lastLine = linear.getGeometryN(this._componentIndex)\n this._segmentIndex = LinearLocation.numSegments(lastLine)\n this._segmentFraction = 0.0\n }\n compareTo(o) {\n const other = o\n if (this._componentIndex < other._componentIndex) return -1\n if (this._componentIndex > other._componentIndex) return 1\n if (this._segmentIndex < other._segmentIndex) return -1\n if (this._segmentIndex > other._segmentIndex) return 1\n if (this._segmentFraction < other._segmentFraction) return -1\n if (this._segmentFraction > other._segmentFraction) return 1\n return 0\n }\n copy() {\n return new LinearLocation(this._componentIndex, this._segmentIndex, this._segmentFraction)\n }\n toString() {\n return 'LinearLoc[' + this._componentIndex + ', ' + this._segmentIndex + ', ' + this._segmentFraction + ']'\n }\n isOnSameSegment(loc) {\n if (this._componentIndex !== loc._componentIndex) return false\n if (this._segmentIndex === loc._segmentIndex) return true\n if (loc._segmentIndex - this._segmentIndex === 1 && loc._segmentFraction === 0.0) return true\n if (this._segmentIndex - loc._segmentIndex === 1 && this._segmentFraction === 0.0) return true\n return false\n }\n snapToVertex(linearGeom, minDistance) {\n if (this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0) return null\n const segLen = this.getSegmentLength(linearGeom)\n const lenToStart = this._segmentFraction * segLen\n const lenToEnd = segLen - lenToStart\n if (lenToStart <= lenToEnd && lenToStart < minDistance) \n this._segmentFraction = 0.0\n else if (lenToEnd <= lenToStart && lenToEnd < minDistance) \n this._segmentFraction = 1.0\n \n }\n compareLocationValues(componentIndex1, segmentIndex1, segmentFraction1) {\n if (this._componentIndex < componentIndex1) return -1\n if (this._componentIndex > componentIndex1) return 1\n if (this._segmentIndex < segmentIndex1) return -1\n if (this._segmentIndex > segmentIndex1) return 1\n if (this._segmentFraction < segmentFraction1) return -1\n if (this._segmentFraction > segmentFraction1) return 1\n return 0\n }\n getSegmentLength(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n let segIndex = this._segmentIndex\n if (this._segmentIndex >= LinearLocation.numSegments(lineComp)) segIndex = lineComp.getNumPoints() - 2\n const p0 = lineComp.getCoordinateN(segIndex)\n const p1 = lineComp.getCoordinateN(segIndex + 1)\n return p0.distance(p1)\n }\n isVertex() {\n return this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import LinearIterator from './LinearIterator'\nimport LinearLocation from './LinearLocation'\nimport Double from '../../../../java/lang/Double'\nimport LineSegment from '../geom/LineSegment'\nimport Assert from '../util/Assert'\nexport default class LocationIndexOfPoint {\n constructor() {\n LocationIndexOfPoint.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static indexOf(linearGeom, inputPt) {\n const locater = new LocationIndexOfPoint(linearGeom)\n return locater.indexOf(inputPt)\n }\n static indexOfAfter(linearGeom, inputPt, minIndex) {\n const locater = new LocationIndexOfPoint(linearGeom)\n return locater.indexOfAfter(inputPt, minIndex)\n }\n indexOf(inputPt) {\n return this.indexOfFromStart(inputPt, null)\n }\n indexOfFromStart(inputPt, minIndex) {\n let minDistance = Double.MAX_VALUE\n let minComponentIndex = 0\n let minSegmentIndex = 0\n let minFrac = -1.0\n const seg = new LineSegment()\n for (let it = new LinearIterator(this._linearGeom); it.hasNext(); it.next()) \n if (!it.isEndOfLine()) {\n seg.p0 = it.getSegmentStart()\n seg.p1 = it.getSegmentEnd()\n const segDistance = seg.distance(inputPt)\n const segFrac = seg.segmentFraction(inputPt)\n const candidateComponentIndex = it.getComponentIndex()\n const candidateSegmentIndex = it.getVertexIndex()\n if (segDistance < minDistance) \n if (minIndex === null || minIndex.compareLocationValues(candidateComponentIndex, candidateSegmentIndex, segFrac) < 0) {\n minComponentIndex = candidateComponentIndex\n minSegmentIndex = candidateSegmentIndex\n minFrac = segFrac\n minDistance = segDistance\n }\n \n }\n \n if (minDistance === Double.MAX_VALUE) \n return new LinearLocation(minIndex)\n \n const loc = new LinearLocation(minComponentIndex, minSegmentIndex, minFrac)\n return loc\n }\n indexOfAfter(inputPt, minIndex) {\n if (minIndex === null) return this.indexOf(inputPt)\n const endLoc = LinearLocation.getEndLocation(this._linearGeom)\n if (endLoc.compareTo(minIndex) <= 0) return endLoc\n const closestAfter = this.indexOfFromStart(inputPt, minIndex)\n Assert.isTrue(closestAfter.compareTo(minIndex) >= 0, 'computed location is before specified minimum location')\n return closestAfter\n }\n}\n","import LocationIndexOfPoint from './LocationIndexOfPoint'\nexport default class LocationIndexOfLine {\n constructor() {\n LocationIndexOfLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static indicesOf(linearGeom, subLine) {\n const locater = new LocationIndexOfLine(linearGeom)\n return locater.indicesOf(subLine)\n }\n indicesOf(subLine) {\n const startPt = subLine.getGeometryN(0).getCoordinateN(0)\n const lastLine = subLine.getGeometryN(subLine.getNumGeometries() - 1)\n const endPt = lastLine.getCoordinateN(lastLine.getNumPoints() - 1)\n const locPt = new LocationIndexOfPoint(this._linearGeom)\n const subLineLoc = new Array(2).fill(null)\n subLineLoc[0] = locPt.indexOf(startPt)\n if (subLine.getLength() === 0.0) \n subLineLoc[1] = subLineLoc[0].copy()\n else \n subLineLoc[1] = locPt.indexOfAfter(endPt, subLineLoc[0])\n \n return subLineLoc\n }\n}\n","import LinearIterator from './LinearIterator'\nimport LinearLocation from './LinearLocation'\nexport default class LengthLocationMap {\n constructor() {\n LengthLocationMap.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static getLength(linearGeom, loc) {\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLength(loc)\n }\n static getLocation() {\n if (arguments.length === 2) {\n const linearGeom = arguments[0], length = arguments[1]\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLocation(length)\n } else if (arguments.length === 3) {\n const linearGeom = arguments[0], length = arguments[1], resolveLower = arguments[2]\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLocation(length, resolveLower)\n }\n }\n getLength(loc) {\n let totalLength = 0.0\n const it = new LinearIterator(this._linearGeom)\n while (it.hasNext()) {\n if (!it.isEndOfLine()) {\n const p0 = it.getSegmentStart()\n const p1 = it.getSegmentEnd()\n const segLen = p1.distance(p0)\n if (loc.getComponentIndex() === it.getComponentIndex() && loc.getSegmentIndex() === it.getVertexIndex()) \n return totalLength + segLen * loc.getSegmentFraction()\n \n totalLength += segLen\n }\n it.next()\n }\n return totalLength\n }\n resolveHigher(loc) {\n if (!loc.isEndpoint(this._linearGeom)) return loc\n let compIndex = loc.getComponentIndex()\n if (compIndex >= this._linearGeom.getNumGeometries() - 1) return loc\n do \n compIndex++\n while (compIndex < this._linearGeom.getNumGeometries() - 1 && this._linearGeom.getGeometryN(compIndex).getLength() === 0)\n return new LinearLocation(compIndex, 0, 0.0)\n }\n getLocation() {\n if (arguments.length === 1) {\n const length = arguments[0]\n return this.getLocation(length, true)\n } else if (arguments.length === 2) {\n const length = arguments[0], resolveLower = arguments[1]\n let forwardLength = length\n if (length < 0.0) {\n const lineLen = this._linearGeom.getLength()\n forwardLength = lineLen + length\n }\n const loc = this.getLocationForward(forwardLength)\n if (resolveLower) \n return loc\n \n return this.resolveHigher(loc)\n }\n }\n getLocationForward(length) {\n if (length <= 0.0) return new LinearLocation()\n let totalLength = 0.0\n const it = new LinearIterator(this._linearGeom)\n while (it.hasNext()) {\n if (it.isEndOfLine()) {\n if (totalLength === length) {\n const compIndex = it.getComponentIndex()\n const segIndex = it.getVertexIndex()\n return new LinearLocation(compIndex, segIndex, 0.0)\n }\n } else {\n const p0 = it.getSegmentStart()\n const p1 = it.getSegmentEnd()\n const segLen = p1.distance(p0)\n if (totalLength + segLen > length) {\n const frac = (length - totalLength) / segLen\n const compIndex = it.getComponentIndex()\n const segIndex = it.getVertexIndex()\n return new LinearLocation(compIndex, segIndex, frac)\n }\n totalLength += segLen\n }\n it.next()\n }\n return LinearLocation.getEndLocation(this._linearGeom)\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class LinearGeometryBuilder {\n constructor() {\n LinearGeometryBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFact = null\n this._lines = new ArrayList()\n this._coordList = null\n this._ignoreInvalidLines = false\n this._fixInvalidLines = false\n this._lastPt = null\n const geomFact = arguments[0]\n this._geomFact = geomFact\n }\n getGeometry() {\n this.endLine()\n return this._geomFact.buildGeometry(this._lines)\n }\n getLastCoordinate() {\n return this._lastPt\n }\n endLine() {\n if (this._coordList === null) \n return null\n \n if (this._ignoreInvalidLines && this._coordList.size() < 2) {\n this._coordList = null\n return null\n }\n const rawPts = this._coordList.toCoordinateArray()\n let pts = rawPts\n if (this._fixInvalidLines) pts = this.validCoordinateSequence(rawPts)\n this._coordList = null\n let line = null\n try {\n line = this._geomFact.createLineString(pts)\n } catch (ex) {\n if (ex instanceof IllegalArgumentException) {\n if (!this._ignoreInvalidLines) throw ex\n } else {\n throw ex\n }\n } finally {}\n if (line !== null) this._lines.add(line)\n }\n setFixInvalidLines(fixInvalidLines) {\n this._fixInvalidLines = fixInvalidLines\n }\n add() {\n if (arguments.length === 1) {\n const pt = arguments[0]\n this.add(pt, true)\n } else if (arguments.length === 2) {\n const pt = arguments[0], allowRepeatedPoints = arguments[1]\n if (this._coordList === null) this._coordList = new CoordinateList()\n this._coordList.add(pt, allowRepeatedPoints)\n this._lastPt = pt\n }\n }\n setIgnoreInvalidLines(ignoreInvalidLines) {\n this._ignoreInvalidLines = ignoreInvalidLines\n }\n validCoordinateSequence(pts) {\n if (pts.length >= 2) return pts\n const validPts = [pts[0], pts[0]]\n return validPts\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport hasInterface from '../../../../hasInterface'\nimport LinearIterator from './LinearIterator'\nimport Lineal from '../geom/Lineal'\nimport Assert from '../util/Assert'\nimport LinearGeometryBuilder from './LinearGeometryBuilder'\nexport default class ExtractLineByLocation {\n constructor() {\n ExtractLineByLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n static extract(line, start, end) {\n const ls = new ExtractLineByLocation(line)\n return ls.extract(start, end)\n }\n computeLinear(start, end) {\n const builder = new LinearGeometryBuilder(this._line.getFactory())\n builder.setFixInvalidLines(true)\n if (!start.isVertex()) builder.add(start.getCoordinate(this._line))\n for (let it = new LinearIterator(this._line, start); it.hasNext(); it.next()) {\n if (end.compareLocationValues(it.getComponentIndex(), it.getVertexIndex(), 0.0) < 0) break\n const pt = it.getSegmentStart()\n builder.add(pt)\n if (it.isEndOfLine()) builder.endLine()\n }\n if (!end.isVertex()) builder.add(end.getCoordinate(this._line))\n return builder.getGeometry()\n }\n computeLine(start, end) {\n const coordinates = this._line.getCoordinates()\n const newCoordinates = new CoordinateList()\n let startSegmentIndex = start.getSegmentIndex()\n if (start.getSegmentFraction() > 0.0) startSegmentIndex += 1\n let lastSegmentIndex = end.getSegmentIndex()\n if (end.getSegmentFraction() === 1.0) lastSegmentIndex += 1\n if (lastSegmentIndex >= coordinates.length) lastSegmentIndex = coordinates.length - 1\n if (!start.isVertex()) newCoordinates.add(start.getCoordinate(this._line))\n for (let i = startSegmentIndex; i <= lastSegmentIndex; i++) \n newCoordinates.add(coordinates[i])\n \n if (!end.isVertex()) newCoordinates.add(end.getCoordinate(this._line))\n if (newCoordinates.size() <= 0) newCoordinates.add(start.getCoordinate(this._line))\n let newCoordinateArray = newCoordinates.toCoordinateArray()\n if (newCoordinateArray.length <= 1) \n newCoordinateArray = [newCoordinateArray[0], newCoordinateArray[0]]\n \n return this._line.getFactory().createLineString(newCoordinateArray)\n }\n extract(start, end) {\n if (end.compareTo(start) < 0) \n return this.reverse(this.computeLinear(end, start))\n \n return this.computeLinear(start, end)\n }\n reverse(linear) {\n if (hasInterface(linear, Lineal)) return linear.reverse()\n Assert.shouldNeverReachHere('non-linear geometry encountered')\n return null\n }\n}\n","import LengthIndexOfPoint from './LengthIndexOfPoint'\nimport LocationIndexOfLine from './LocationIndexOfLine'\nimport LengthLocationMap from './LengthLocationMap'\nimport ExtractLineByLocation from './ExtractLineByLocation'\nexport default class LengthIndexedLine {\n constructor() {\n LengthIndexedLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n clampIndex(index) {\n const posIndex = this.positiveIndex(index)\n const startIndex = this.getStartIndex()\n if (posIndex < startIndex) return startIndex\n const endIndex = this.getEndIndex()\n if (posIndex > endIndex) return endIndex\n return posIndex\n }\n locationOf() {\n if (arguments.length === 1) {\n const index = arguments[0]\n return LengthLocationMap.getLocation(this._linearGeom, index)\n } else if (arguments.length === 2) {\n const index = arguments[0], resolveLower = arguments[1]\n return LengthLocationMap.getLocation(this._linearGeom, index, resolveLower)\n }\n }\n project(pt) {\n return LengthIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n positiveIndex(index) {\n if (index >= 0.0) return index\n return this._linearGeom.getLength() + index\n }\n extractPoint() {\n if (arguments.length === 1) {\n const index = arguments[0]\n const loc = LengthLocationMap.getLocation(this._linearGeom, index)\n return loc.getCoordinate(this._linearGeom)\n } else if (arguments.length === 2) {\n const index = arguments[0], offsetDistance = arguments[1]\n const loc = LengthLocationMap.getLocation(this._linearGeom, index)\n const locLow = loc.toLowest(this._linearGeom)\n return locLow.getSegment(this._linearGeom).pointAlongOffset(locLow.getSegmentFraction(), offsetDistance)\n }\n }\n isValidIndex(index) {\n return index >= this.getStartIndex() && index <= this.getEndIndex()\n }\n getEndIndex() {\n return this._linearGeom.getLength()\n }\n getStartIndex() {\n return 0.0\n }\n indexOfAfter(pt, minIndex) {\n return LengthIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex)\n }\n extractLine(startIndex, endIndex) {\n const startIndex2 = this.clampIndex(startIndex)\n const endIndex2 = this.clampIndex(endIndex)\n const resolveStartLower = startIndex2 === endIndex2\n const startLoc = this.locationOf(startIndex2, resolveStartLower)\n const endLoc = this.locationOf(endIndex2)\n return ExtractLineByLocation.extract(this._linearGeom, startLoc, endLoc)\n }\n indexOf(pt) {\n return LengthIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n indicesOf(subLine) {\n const locIndex = LocationIndexOfLine.indicesOf(this._linearGeom, subLine)\n const index = [LengthLocationMap.getLength(this._linearGeom, locIndex[0]), LengthLocationMap.getLength(this._linearGeom, locIndex[1])]\n return index\n }\n}\n","import LineString from '../geom/LineString'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport LinearLocation from './LinearLocation'\nimport LocationIndexOfPoint from './LocationIndexOfPoint'\nimport LocationIndexOfLine from './LocationIndexOfLine'\nimport ExtractLineByLocation from './ExtractLineByLocation'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class LocationIndexedLine {\n constructor() {\n LocationIndexedLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n this.checkGeometryType()\n }\n clampIndex(index) {\n const loc = index.copy()\n loc.clamp(this._linearGeom)\n return loc\n }\n project(pt) {\n return LocationIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n checkGeometryType() {\n if (!(this._linearGeom instanceof LineString || this._linearGeom instanceof MultiLineString)) throw new IllegalArgumentException('Input geometry must be linear')\n }\n extractPoint() {\n if (arguments.length === 1) {\n const index = arguments[0]\n return index.getCoordinate(this._linearGeom)\n } else if (arguments.length === 2) {\n const index = arguments[0], offsetDistance = arguments[1]\n const indexLow = index.toLowest(this._linearGeom)\n return indexLow.getSegment(this._linearGeom).pointAlongOffset(indexLow.getSegmentFraction(), offsetDistance)\n }\n }\n isValidIndex(index) {\n return index.isValid(this._linearGeom)\n }\n getEndIndex() {\n return LinearLocation.getEndLocation(this._linearGeom)\n }\n getStartIndex() {\n return new LinearLocation()\n }\n indexOfAfter(pt, minIndex) {\n return LocationIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex)\n }\n extractLine(startIndex, endIndex) {\n return ExtractLineByLocation.extract(this._linearGeom, startIndex, endIndex)\n }\n indexOf(pt) {\n return LocationIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n indicesOf(subLine) {\n return LocationIndexOfLine.indicesOf(this._linearGeom, subLine)\n }\n}\n","import ArrayList from '../../../../java/util/ArrayList'\nexport default class CollectionUtil {\n static transform(coll, func) {\n const result = new ArrayList()\n for (let i = coll.iterator(); i.hasNext(); ) \n result.add(func.execute(i.next()))\n \n return result\n }\n static select(collection, func) {\n const result = new ArrayList()\n for (let i = collection.iterator(); i.hasNext(); ) {\n const item = i.next()\n if (Boolean.TRUE.equals(func.execute(item))) \n result.add(item)\n \n }\n return result\n }\n static apply(coll, func) {\n for (let i = coll.iterator(); i.hasNext(); ) \n func.execute(i.next())\n \n }\n}\nfunction Function() {}\nCollectionUtil.Function = Function\n","import CoordinateFilter from '../geom/CoordinateFilter'\nexport default class CoordinateArrayFilter {\n constructor() {\n CoordinateArrayFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.pts = null\n this.n = 0\n const size = arguments[0]\n this.pts = new Array(size).fill(null)\n }\n filter(coord) {\n this.pts[this.n++] = coord\n }\n getCoordinates() {\n return this.pts\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\n","import CoordinateFilter from '../geom/CoordinateFilter'\nexport default class CoordinateCountFilter {\n constructor() {\n CoordinateCountFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._n = 0\n }\n filter(coord) {\n this._n++\n }\n getCount() {\n return this._n\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\n","import HashMap from '../../../../java/util/HashMap'\nexport default class ObjectCounter {\n constructor() {\n ObjectCounter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._counts = new HashMap()\n }\n count(o) {\n const counter = this._counts.get(o)\n if (counter === null) return 0; else return counter.count()\n }\n add(o) {\n const counter = this._counts.get(o)\n if (counter === null) this._counts.put(o, new Counter(1)); else counter.increment()\n }\n}\nclass Counter {\n constructor() {\n Counter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.count = 0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const count = arguments[0]\n this.count = count\n }\n }\n count() {\n return this.count\n }\n increment() {\n this.count++\n }\n}\nObjectCounter.Counter = Counter\n","export default function PrintStream() {}\n","export default function StringReader() {}\n","export default function ByteArrayOutputStream() {}\n","import Exception from '../lang/Exception'\n\nexport default class IOException extends Exception { }","export default function LineNumberReader() {}\n","import PrintStream from '../../../../java/io/PrintStream'\nimport StringReader from '../../../../java/io/StringReader'\nimport System from '../../../../java/lang/System'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport ByteArrayOutputStream from '../../../../java/io/ByteArrayOutputStream'\nimport Assert from './Assert'\nimport IOException from '../../../../java/io/IOException'\nimport LineNumberReader from '../../../../java/io/LineNumberReader'\nexport default class StringUtil {\n static chars(c, n) {\n const ch = new Array(n).fill(null)\n for (let i = 0; i < n; i++) \n ch[i] = c\n \n return new String(ch)\n }\n static getStackTrace() {\n if (arguments.length === 1) {\n const t = arguments[0]\n const os = new ByteArrayOutputStream()\n const ps = new PrintStream(os)\n t.printStackTrace(ps)\n return os.toString()\n } else if (arguments.length === 2) {\n const t = arguments[0], depth = arguments[1]\n let stackTrace = ''\n const stringReader = new StringReader(StringUtil.getStackTrace(t))\n const lineNumberReader = new LineNumberReader(stringReader)\n for (let i = 0; i < depth; i++) \n try {\n stackTrace += lineNumberReader.readLine() + StringUtil.NEWLINE\n } catch (e) {\n if (e instanceof IOException) \n Assert.shouldNeverReachHere()\n else throw e\n } finally {}\n \n return stackTrace\n }\n }\n static spaces(n) {\n return StringUtil.chars(' ', n)\n }\n static split(s, separator) {\n const separatorlen = separator.length\n const tokenList = new ArrayList()\n let tmpString = '' + s\n let pos = tmpString.indexOf(separator)\n while (pos >= 0) {\n const token = tmpString.substring(0, pos)\n tokenList.add(token)\n tmpString = tmpString.substring(pos + separatorlen)\n pos = tmpString.indexOf(separator)\n }\n if (tmpString.length > 0) tokenList.add(tmpString)\n const res = new Array(tokenList.size()).fill(null)\n for (let i = 0; i < res.length; i++) \n res[i] = tokenList.get(i)\n \n return res\n }\n}\nStringUtil.NEWLINE = System.getProperty('line.separator')\n","import SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp'\nimport OverlayOp from '../overlay/OverlayOp'\nexport default class UnionOp {\n get interfaces_() {\n return []\n }\n\n getClass() {\n return UnionOp\n }\n\n static union(g, other) {\n if (g.isEmpty() || other.isEmpty()) {\n if (g.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, g, other, g.getFactory())\n if (g.isEmpty()) return other.copy()\n if (other.isEmpty()) return g.copy()\n }\n g.checkNotGeometryCollection(g)\n g.checkNotGeometryCollection(other)\n return SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.UNION)\n }\n}\n","import WKTWriter from './io/WKTWriter'\nimport IsValidOp from './operation/valid/IsValidOp'\nimport InteriorPointArea from './algorithm/InteriorPointArea'\nimport UnaryUnionOp from './operation/union/UnaryUnionOp'\nimport UnionOp from './operation/union/UnionOp'\nimport InteriorPointLine from './algorithm/InteriorPointLine'\nimport IsSimpleOp from './operation/IsSimpleOp'\nimport BufferOp from './operation/buffer/BufferOp'\nimport ConvexHull from './algorithm/ConvexHull'\nimport Centroid from './algorithm/Centroid'\nimport RelateOp from './operation/relate/RelateOp'\nimport InteriorPointPoint from './algorithm/InteriorPointPoint'\nimport DistanceOp from './operation/distance/DistanceOp'\nimport OverlayOp from './operation/overlay/OverlayOp'\nimport BoundaryOp from './operation/BoundaryOp'\nimport Geometry from './geom/Geometry'\nimport LineString from './geom/LineString'\nimport MultiLineString from './geom/MultiLineString'\n\nLineString.prototype.getBoundary = function() {\n return BoundaryOp.getBoundary(this)\n}\n\nMultiLineString.prototype.getBoundary = function() {\n return BoundaryOp.getBoundary(this)\n}\n\nGeometry.prototype.equalsTopo = function(g) {\n return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.equals = function(g) {\n if (g === null) return false\n return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.union = function() {\n if (arguments.length === 0) {\n return UnaryUnionOp.union(this)\n } else if (arguments.length === 1) {\n const other = arguments[0]\n return UnionOp.union(this, other)\n }\n}\nGeometry.prototype.isValid = function() {\n return IsValidOp.isValid(this)\n}\nGeometry.prototype.intersection = function(other) {\n return OverlayOp.intersection(this, other)\n}\nGeometry.prototype.covers = function(g) {\n return RelateOp.covers(this, g)\n}\nGeometry.prototype.coveredBy = function(g) {\n return RelateOp.covers(g, this)\n}\nGeometry.prototype.touches = function(g) {\n return RelateOp.touches(this, g)\n}\nGeometry.prototype.intersects = function(g) {\n return RelateOp.intersects(this, g)\n}\nGeometry.prototype.within = function(g) {\n return RelateOp.contains(g, this)\n}\nGeometry.prototype.overlaps = function(g) {\n return RelateOp.overlaps(this, g)\n}\nGeometry.prototype.disjoint = function(g) {\n return RelateOp.disjoint(this, g)\n}\nGeometry.prototype.crosses = function(g) {\n return RelateOp.crosses(this, g)\n}\nGeometry.prototype.buffer = function() {\n if (arguments.length === 1) {\n const distance = arguments[0]\n return BufferOp.bufferOp(this, distance)\n } else if (arguments.length === 2) {\n const distance = arguments[0]; const quadrantSegments = arguments[1]\n return BufferOp.bufferOp(this, distance, quadrantSegments)\n } else if (arguments.length === 3) {\n const distance = arguments[0]; const quadrantSegments = arguments[1]; const endCapStyle = arguments[2]\n return BufferOp.bufferOp(this, distance, quadrantSegments, endCapStyle)\n }\n}\nGeometry.prototype.convexHull = function() {\n return new ConvexHull(this).getConvexHull()\n}\nGeometry.prototype.relate = function() {\n if (arguments.length === 1) {\n const geometry = arguments[0]\n return RelateOp.relate(this, geometry)\n } else if (arguments.length === 2) {\n const geometry = arguments[0]; const intersectionPattern = arguments[1]\n return RelateOp.relate(this, geometry).matches(intersectionPattern)\n }\n}\nGeometry.prototype.getCentroid = function() {\n if (this.isEmpty()) return this._factory.createPoint()\n const centPt = Centroid.getCentroid(this)\n return this.createPointFromInternalCoord(centPt, this)\n}\nGeometry.prototype.getInteriorPoint = function() {\n if (this.isEmpty()) return this._factory.createPoint()\n let intPt = null\n const dim = this.getDimension()\n if (dim === 0)\n intPt = new InteriorPointPoint(this)\n else if (dim === 1)\n intPt = new InteriorPointLine(this)\n else intPt = new InteriorPointArea(this)\n\n const interiorPt = intPt.getInteriorPoint()\n return this.createPointFromInternalCoord(interiorPt, this)\n}\nGeometry.prototype.symDifference = function(other) {\n return OverlayOp.symDifference(this, other)\n}\nGeometry.prototype.createPointFromInternalCoord = function(coord, exemplar) {\n exemplar.getPrecisionModel().makePrecise(coord)\n return exemplar.getFactory().createPoint(coord)\n}\nGeometry.prototype.toText = function() {\n const writer = new WKTWriter()\n return writer.write(this)\n}\nGeometry.prototype.toString = function() {\n this.toText()\n}\nGeometry.prototype.contains = function(g) {\n return RelateOp.contains(this, g)\n}\nGeometry.prototype.difference = function(other) {\n return OverlayOp.difference(this, other)\n}\nGeometry.prototype.isSimple = function() {\n const op = new IsSimpleOp(this)\n return op.isSimple()\n}\nGeometry.prototype.isWithinDistance = function(geom, distance) {\n const envDist = this.getEnvelopeInternal().distance(geom.getEnvelopeInternal())\n if (envDist > distance) return false\n return DistanceOp.isWithinDistance(this, geom, distance)\n}\nGeometry.prototype.distance = function(g) {\n return DistanceOp.distance(this, g)\n}\n","import * as geom from './org/locationtech/jts/geom'\nimport * as algorithm from './org/locationtech/jts/algorithm'\nimport * as densify from './org/locationtech/jts/densify'\nimport * as dissolve from './org/locationtech/jts/dissolve'\nimport * as geomgraph from './org/locationtech/jts/geomgraph'\nimport * as index from './org/locationtech/jts/index'\nimport * as io from './org/locationtech/jts/io'\nimport * as noding from './org/locationtech/jts/noding'\nimport * as operation from './org/locationtech/jts/operation'\nimport * as precision from './org/locationtech/jts/precision'\nimport * as simplify from './org/locationtech/jts/simplify'\nimport * as triangulate from './org/locationtech/jts/triangulate'\nimport * as linearref from './org/locationtech/jts/linearref'\nimport * as util from './org/locationtech/jts/util'\n\nimport './org/locationtech/jts/monkey'\n\nconst version = 'npm_package_version (git_hash)'\nexport {\n version,\n algorithm,\n densify,\n dissolve,\n geom,\n geomgraph,\n index,\n io,\n noding,\n operation,\n precision,\n simplify,\n triangulate,\n linearref,\n util\n}\n"],"names":["NumberUtil","equalsWithTolerance","x1","x2","tolerance","Math","abs","Exception","constructor","message","toString","IllegalArgumentException","Long","high","low","toBinaryString","i","mask","result","Double","NaN","isNaN","n","Number","isInfinite","isFinite","MAX_VALUE","Float64Array","Int32Array","EXP_BIT_MASK","SIGNIF_BIT_MASK","f64buf","i32buf","buffer","doubleToLongBits","value","longBitsToDouble","bits","BIAS","log2","floor","pow","MAX_REL_BITS_INTEGER","x","y","f","skip","sign","exp","NEGATIVE_INFINITY","Infinity","fract","Comparable","Clonable","Comparator","Serializable","RuntimeException","AssertionFailedException","constructor_","apply","arguments","length","call","Assert","shouldNeverReachHere","isTrue","assertion","equals","expectedValue","actualValue","kBuf","ArrayBuffer","kBufAsF64","kBufAsI32","Coordinate","z","c","getZ","NULL_ORDINATE","hashCode","getM","setOrdinate","ordinateIndex","X","Y","Z","setZ","equals2D","other","setM","m","M","getOrdinate","equals3D","equalInZ","setX","compareTo","o","getX","clone","coord","e","CloneNotSupportedException","copy","distance3D","dx","dy","dz","sqrt","getY","setY","distance","setCoordinate","interfaces_","Cloneable","DimensionalComparator","_dimensionsToTest","dimensionsToTest","compare","a","b","c1","c2","compX","compY","compZ","indexOf","Collection","add","addAll","isEmpty","iterator","size","toArray","remove","IndexOutOfBoundsException","List","get","set","NoSuchElementException","ArrayList","array","ensureCapacity","push","splice","clear","index","element","oldElement","Iterator","sort","comparator","slice","len","Symbol","values","arrayList","position","next","hasNext","CoordinateList","allowRepeated","getCoordinate","hasInterface","coll","isChanged","toCoordinateArray","coordArrayType","isForward","pts","Array","fill","last","Object","obj","direction","isInteger","prev","start","end","inc","closeRing","duplicate","CoordinateSequenceFilter","filter","seq","isDone","isGeometryChanged","Envelope","_minx","_maxx","_miny","_maxy","init","p","env","p1","p2","y1","y2","intersects","q","q1","q2","minq","min","maxq","max","minp","maxp","getArea","getWidth","getHeight","otherEnvelope","isNull","getMaxX","getMaxY","getMinX","getMinY","intersection","intMinX","intMinY","intMaxX","intMaxY","covers","envminx","envmaxx","envminy","envmaxy","getDiameter","w","h","expandToInclude","minExtent","translate","transX","transY","setToNull","disjoint","maxExtent","expandBy","deltaX","deltaY","contains","centre","StringBuffer","str","append","setCharAt","substr","Integer","intValue","isNan","valueOf","Character","isWhitespace","toUpperCase","DD","_hi","_lo","dd","parse","hi","lo","determinant","det","multiply","selfSubtract","sqr","selfMultiply","strlen","charAt","isNegative","signCh","val","numDigits","numBeforeDec","hasDecimalChar","ch","isDigit","d","TEN","selfAdd","expStr","substring","parseInt","ex","NumberFormatException","val2","numDecPlaces","scale","divide","negate","createNaN","magnitude","xAbs","xLog10","log","xMag","trunc","xApprox","stringOfChar","buf","le","extractSignificantDigits","insertDecimalPoint","mag","gt","lt","ONE","decimalPointPos","MAX_PRINT_DIGITS","digit","rebiasBy10","digitChar","subtract","continueExtractingDigits","remMag","doubleValue","isZero","getSpecialNumberString","selfDivide","yhi","ylo","hc","tc","hy","ty","C","U","u","SPLIT","dump","zhi","zlo","ge","r","s","reciprocal","ceil","fhi","flo","rint","plus5","setValue","ax","axdd","diffSq","d2","H","S","T","t","hx","tx","selfSqr","toStandardNotation","toSciNotation","specialStr","sigDigits","num","numZeroes","zeroes","SCI_NOT_ZERO","digits","SCI_NOT_EXPONENT_CHAR","IllegalStateException","trailingDigits","digitsWithDecimal","isPositive","signum","PI","TWO_PI","PI_2","E","EPS","CGAlgorithmsDD","orientationIndex","orientationIndexFilter","dx1","dy1","dx2","dy2","signOfDet2x2","px","py","pw","qx","qy","qw","xInt","yInt","pa","pb","pc","detsum","detleft","detright","errbound","DP_SAFE_EPSILON","CoordinateSequence","hasM","mIndex","getDimension","getMeasures","hasZ","getCoordinateCopy","createCoordinate","expandEnvelope","Orientation","isCCW","ring","nPts","hiPt","hiIndex","iPrev","iNext","disc","CLOCKWISE","RIGHT","COUNTERCLOCKWISE","LEFT","COLLINEAR","STRAIGHT","Intersection","minX0","minY0","maxX0","maxY0","minX1","minY1","maxX1","maxY1","midx","midy","p1x","p1y","p2x","p2y","q1x","q1y","q2x","q2y","System","arraycopy","src","srcPos","dest","destPos","getProperty","name","MathUtil","log10","ln","LOG_10","v1","v2","v3","v4","clamp","wrap","average","Distance","segmentToSegment","A","B","D","pointToSegment","noIntersection","denom","r_num","s_num","len2","pointToLinePerpendicular","pointToSegmentString","line","minDistance","dist","CoordinateSequenceFactory","create","dimension","GeometryComponentFilter","geom","Geometry","isGeometryCollection","getTypeCode","TYPECODE_GEOMETRYCOLLECTION","getFactory","_factory","getGeometryN","isRectangle","equalsExact","geometryChanged","geometryChangedFilter","geometryChangedAction","_envelope","equalsNorm","g","norm","getLength","getNumGeometries","compareToSameClass","comp","getUserData","_userData","getSRID","_SRID","getEnvelope","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","equal","normalize","reverse","res","reverseInternal","envelope","setSRID","copyInternal","getPrecisionModel","computeEnvelopeInternal","SRID","setUserData","userData","j","aElement","bElement","comparison","isEquivalentClass","getClass","isGeometryCollectionOrDerived","TYPECODE_MULTIPOINT","TYPECODE_MULTILINESTRING","TYPECODE_MULTIPOLYGON","hasNonEmptyElements","geometries","hasNullElements","factory","TYPECODE_POINT","TYPECODE_LINESTRING","TYPECODE_LINEARRING","TYPECODE_POLYGON","TYPENAME_POINT","TYPENAME_MULTIPOINT","TYPENAME_LINESTRING","TYPENAME_LINEARRING","TYPENAME_MULTILINESTRING","TYPENAME_POLYGON","TYPENAME_MULTIPOLYGON","TYPENAME_GEOMETRYCOLLECTION","CoordinateFilter","Length","ofLine","x0","y0","Lineal","CoordinateSequences","copyCoord","minDim","dim","isRing","scroll","indexOfFirstCoordinate","firstCoordinate","ensureRing","k","isEqual","cs1","cs2","cs1Size","cs2Size","minCoordinateIndex","from","to","minCoordIndex","minCoord","testCoord","extend","fact","newseq","mid","swap","tmp","ensureValidRing","createClosedRing","isClosed","coordinate","minCoordinate","UnsupportedOperationException","Dimension","toDimensionSymbol","dimensionValue","FALSE","SYM_FALSE","TRUE","SYM_TRUE","DONTCARE","SYM_DONTCARE","P","SYM_P","L","SYM_L","SYM_A","toDimensionValue","dimensionSymbol","GeometryFilter","LineString","_points","points","isSimple","getCoordinates","otherLineString","getBoundaryDimension","getCoordinateN","getNumPoints","createLineString","getEndPoint","getPointN","getBoundary","getGeometryType","getCoordinateSequence","getCoordinateSequenceFactory","isCoordinate","pt","getStartPoint","createPoint","Puntal","Point","_coordinates","coordinates","point","createGeometryCollection","Area","ofRing","ofRingSigned","sum","p0","Arrays","concat","asList","copyOf","original","newLength","Polygonal","Polygon","_shell","_holes","shell","holes","createLinearRing","shellCoordinates","childCoordinates","area","shellCopy","holeCopies","getNumInteriorRing","prevX","prevY","xChanged","yChanged","otherPolygon","thisShell","otherPolygonShell","normalized","clockwise","getExteriorRing","getInteriorRingN","createPolygon","numPoints","convexHull","otherShell","poly","shellComp","nHole1","nHole2","thisHole","otherHole","holeComp","createMultiLineString","rings","Set","SortedSet","TreeSet","GeometryCollection","_geometries","otherCollection","numGeometries","reversed","buildGeometry","theseElements","otherElements","gc","n1","n2","thisGeom","otherGeom","MultiPoint","isValid","LinearRing","validateConstruction","MINIMUM_VALID_SIZE","CoordinateXY","CoordinateXYM","_m","CoordinateXYZM","Coordinates","measures","CoordinateArrays","ptNotInList","testPts","testPt","newCoordinates","coord1","coord2","coordinateComparator","coordList","hasRepeatedPoints","removeRepeatedPoints","removeNull","nonNull","newCoord","copyDeep","srcStart","destStart","isEqualReversed","pts1","pts2","atLeastNCoordinatesOrNothing","increasingDirection","extract","npts","extractPts","iPts","ForwardComparator","o1","o2","BidirectionalComparator","forwardComp","isEqualRev","OLDcompare","dir1","dir2","i1","i2","comparePt","StringBuilder","CoordinateArraySequence","_dimension","_measures","coordSeq","cloneCoordinates","strBuilder","CoordinateArraySequenceFactory","instance","instanceObject","readResolve","spatial","MultiPolygon","polygons","allRings","polygon","allRingsArray","Map","put","entrySet","HashSet","map","has","done","current","HashMap","MapInterface","key","it","hashSet","entries","forEach","entry","PrecisionModel","_modelType","_scale","FLOATING","Type","modelType","FIXED","setScale","pm","mostPrecise","pm1","pm2","otherPrecisionModel","getMaximumSignificantDigits","otherSigDigits","getScale","isFloating","FLOATING_SINGLE","getType","description","makePrecise","floatSingleVal","round","maxSigDigits","_name","nameToTypeMap","maximumPreciseValue","MultiLineString","lineStrings","GeometryFactory","_precisionModel","_coordinateSequenceFactory","coordinateSequenceFactory","precisionModel","getDefaultCoordinateSequenceFactory","toMultiPolygonArray","multiPolygons","multiPolygonArray","toGeometryArray","geometryArray","toMultiLineStringArray","multiLineStrings","multiLineStringArray","toLineStringArray","lineStringArray","toMultiPointArray","multiPoints","multiPointArray","toLinearRingArray","linearRings","linearRingArray","toPointArray","pointArray","toPolygonArray","polygonArray","createPointFromInternalCoord","exemplar","createEmpty","geomList","geomType","isHeterogeneous","hasGeometryCollection","partType","geom0","isCollection","createMultiPolygon","createMultiPoint","createMultiPointFromCoords","ptSeq","GeometryLayout","XY","XYZ","XYM","XYZM","GeometryType","POINT","LINE_STRING","LINEAR_RING","POLYGON","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","GEOMETRY_COLLECTION","CIRCLE","EMPTY","ZM","TokenType","TEXT","LEFT_PAREN","RIGHT_PAREN","NUMBER","COMMA","EOF","WKTGeometryType","type","Lexer","wkt","index_","isAlpha_","isNumeric_","opt_decimal","decimal","undefined","isWhiteSpace_","nextChar_","nextToken","readNumber_","readText_","Error","scientificNotation","parseFloat","Parser","lexer","lexer_","token_","layout_","consume_","isTokenType","isMatch","match","geometry","parseGeometry_","parseGeometryLayout_","layout","dimToken","dimInfo","parseGeometryCollectionText_","isEmptyGeometry_","formatErrorMessage_","parsePointText_","parsePoint_","parseLineStringText_","parsePointList_","parsePolygonText_","parseLineStringTextList_","parseMultiPointText_","parsePointTextList_","parseMultiLineStringText_","parseMultiPolygonText_","parsePolygonTextList_","dimensions","token","o2c","ordinates","ca2p","components","encodePointGeometry","join","encodeMultiPointGeometry","ii","encodeGeometryCollectionGeometry","encode","encodeLineStringGeometry","encodeMultiLineStringGeometry","encodePolygonGeometry","encodeMultiPolygonGeometry","encodeGeometryLayout","GeometryEncoder","geometryEncoder","enc","WKTParser","geometryFactory","read","parser","write","WKTWriter","toLineString","LineIntersector","_result","_inputLines","_intPt","_intLineIndex","_isProper","_pa","_pb","computeEdgeDistance","pdx","pdy","nonRobustComputeEdgeDistance","getIndexAlongSegment","segmentIndex","intIndex","computeIntLineIndex","getTopologySummary","catBuilder","isEndPoint","isCollinear","computeIntersection","p3","p4","computeIntersect","getIntersectionNum","dist0","getEdgeDistance","dist1","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","inputLineIndex","getIntersection","NO_INTERSECTION","COLLINEAR_INTERSECTION","getEndpoint","ptIndex","isIntersection","getIntersectionAlongSegment","DONT_INTERSECT","DO_INTERSECT","POINT_INTERSECTION","RobustLineIntersector","nearestEndpoint","nearestPt","minDist","isInSegmentEnvelopes","intPt","env0","env1","intersectionSafe","checkDD","intPtDD","isIn","out","println","computeCollinearIntersection","p1q1p2","p1q2p2","q1p1q2","q1p2q2","Pq1","Pq2","Qp1","Qp2","collinear","LineSegment","ls","midPoint","minX","seg","orient0","orient1","geomFactory","isVertical","li","project","projectionFactor","pf0","pf1","newp0","newp1","angle","atan2","distancePerpendicular","minY","closestPoints","closestPt","close00","closestPoint","close01","close10","close11","factor","maxX","comp0","temp","equalsTopo","lineIntersection","maxY","pointAlongOffset","segmentLengthFraction","offsetDistance","segx","segy","ux","uy","offsetx","offsety","setCoordinates","segmentFraction","inputPt","segFrac","isHorizontal","reflect","A2plusB2","A2subB2","rx","ry","pointAlong","bits0","hash0","bits1","hash1","Location","toLocationSymbol","locationValue","EXTERIOR","BOUNDARY","INTERIOR","NONE","IntersectionMatrix","_matrix","setAll","elements","matches","actualDimensionValue","requiredDimensionSymbol","actualDimensionSymbols","requiredDimensionSymbols","isIntersects","isDisjoint","isCovers","hasPointInCommon","isCoveredBy","dimensionSymbols","row","col","column","isContains","setAtLeast","minimumDimensionSymbols","minimumDimensionValue","setAtLeastIfValid","isWithin","isTouches","dimensionOfGeometryA","dimensionOfGeometryB","isOverlaps","isEquals","builder","ai","bi","transpose","im","isCrosses","Angle","toDegrees","radians","PI_TIMES_2","isAcute","dx0","dy0","dotprod","isObtuse","interiorAngle","anglePrev","angleNext","normalizePositive","angleBetween","tip1","tail","tip2","a1","a2","diff","ang1","ang2","delAngle","toRadians","angleDegrees","getTurn","crossproduct","sin","angleBetweenOriented","angDel","PI_OVER_2","PI_OVER_4","NotRepresentableException","HCoordinate","_x","_y","_w","Triangle","signedArea","m00","m01","m10","m11","interpolateZ","v0","longestSideLength","lenAB","lenBC","lenCA","maxLen","circumcentreDD","ay","bx","by","asqr","bsqr","numx","numy","ccx","ccy","circumcentre","cx","cy","perpendicularBisector","l1","l2","angleBisector","len0","frac","splitPt","area3D","uz","vx","vy","vz","crossx","crossy","crossz","absSq","centroid","inCentre","len1","circum","inCentreX","inCentreY","NoninvertibleTransformationException","msg","AffineTransformation","_m00","_m01","_m02","_m10","_m11","_m12","setToIdentity","matrix","trans","setTransformation","m02","m12","translationInstance","setToTranslation","shearInstance","xShear","yShear","setToShear","reflectionInstance","setToReflection","rotationInstance","theta","cos","sinTheta","cosTheta","setToRotation","scaleInstance","xScale","yScale","setToScale","setToReflectionBasic","c2s2","getInverse","getDeterminant","im00","im10","im01","im11","im02","im12","compose","mp00","mp01","mp02","mp10","mp11","mp12","isIdentity","getMatrixEntries","transform","rotate","composeBefore","shear","g2","xp","yp","Matrix","solve","maxElementRow","swapRows","rowFactor","solution","AffineTransformationBuilder","_src0","_src1","_src2","_dest0","_dest1","_dest2","src0","src1","src2","dest0","dest1","dest2","compute","row0","row1","getTransformation","isSolvable","AffineTransformationFactory","createFromBaseLines","rotPt","ang","srcDist","destDist","createFromControlVectors","ComponentCoordinateExtracter","_coords","coords","GeometryCollectionMapper","_mapOp","mapOp","op","mapper","mapped","GeometryCombiner","_geomFactory","_skipEmpty","_inputGeoms","geoms","extractFactory","combine","combiner","g0","g1","createList","obj0","obj1","list","obj2","extractElements","elems","elemGeom","GeometryEditor","_isUserDataCopied","setCopyUserData","isUserDataCopied","edit","operation","editInternal","editGeometryCollection","editPolygon","collection","collectionForType","newPolygon","hole","GeometryEditorOperation","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","GeometryExtracter","_geometryType","_comps","geometryType","comps","isOfType","GeometryMapper","MapOp","gr","GeometryTransformer","_inputGeom","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformPoint","parent","transformCoordinates","transformPolygon","isAllValidLinearRings","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transGeomList","transformGeom","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","inputGeom","seqSize","LineStringExtracter","getGeometry","getLines","lines","LinearComponentExtracter","_lines","_isForcedToLineString","isForcedToLineString","forceToLineString","setForceToLineString","Collections","reverseOrder","l","pos","alen","singletonList","PointExtracter","_pts","getPoints","PolygonExtracter","getPolygons","ShortCircuitedGeometryVisitor","_isDone","applyTo","visit","GeometricShapeFactory","_geomFact","_precModel","_dim","Dimensions","_nPts","_rotationAngle","geomFact","createSupercircle","power","recipPow","radius","getMinSize","getCentre","r4","xyInt","nSegsInOct","totPts","xInc","x4","coordTrans","setNumPoints","setBase","base","setRotation","setWidth","width","createEllipse","xRadius","yRadius","centreX","centreY","iPt","createSquircle","setEnvelope","setCentre","createArc","startAng","angExtent","angSize","angInc","createArcPolygon","createRectangle","ipt","nSide","XsegLen","YsegLen","createCircle","setHeight","height","setSize","getBase","SineStarFactory","_numArms","_armLengthRatio","origin","nArms","armLengthRatio","gsf","setArmLengthRatio","setNumArms","createSineStar","numArms","armRatio","armMaxLen","insideRadius","ptArcFrac","armAngFrac","armAng","armLenFrac","curveRadius","PointPairDistance","_pt","_distance","_isNull","setMinimum","ptDist","initialize","getDistance","setMaximum","DistanceToPoint","computeDistance","tempSegment","segment","DiscreteHausdorffDistance","_g0","_g1","_ptDist","_densifyFrac","densifyFrac","setDensifyFraction","computeOrientedDistance","discreteGeom","distFilter","MaxPointDistanceFilter","getMaxPointDistance","fracFilter","MaxDensifiedByFractionDistanceFilter","orientedDistance","_maxPtDist","_minPtDist","_euclideanDist","_geom","_numSubSegs","fraction","delx","dely","ItemVisitor","visitItem","item","PointOnGeometryLocator","locate","IntervalRTreeNode","_min","POSITIVE_INFINITY","_max","getMin","queryMin","queryMax","getMax","NodeComparator","mid1","mid2","IntervalRTreeLeafNode","_item","query","visitor","IntervalRTreeBranchNode","_node1","_node2","buildExtent","SortedPackedIntervalRTree","_leaves","_root","_level","buildTree","buildLevel","insert","buildRoot","printNode","node","ArrayListVisitor","_items","getItems","RayCrossingCounter","_p","_crossingCount","_isPointOnSegment","locatePointInRing","counter","countSegment","isOnSegment","getLocation","minx","maxx","orient","isPointInPolygon","IndexedPointInAreaLocator","_index","IntervalIndexedGeometry","rcc","SegmentVisitor","_counter","_isEmpty","addLine","PointLocation","isOnLine","lineIntersector","locateInRing","isInRing","GeometryCollectionIterator","_parent","_atStart","_subcollectionIterator","isAtomic","getName","SimplePointInAreaLocator","locatePointInPolygon","shellLoc","holeLoc","containsPointInPolygon","locateInGeometry","geomi","loc","isContained","SimilarityMeasure","measure","AreaSimilarityMeasure","areaInt","areaUnion","union","HausdorffSimilarityMeasure","diagonalSize","hgt","DENSIFY_FRACTION","envSize","SimilarityMeasureCombiner","measure1","measure2","Centroid","_areaBasePt","_triangleCent3","_areasum2","_cg3","_lineCentSum","_totalLength","_ptCount","_ptCentSum","area2","centroid3","getCentroid","cent","setAreaBasePoint","basePt","addPoint","addLineSegments","lineLen","segmentLen","addHole","isPositiveArea","addTriangle","addShell","EmptyStackException","Stack","pop","peek","empty","search","UniqueCoordinateArrayFilter","_coordSet","_list","filterCoordinates","ConvexHull","_inputPts","extractCoordinates","preSort","RadialComparator","computeOctRing","inputPts","octPts","computeOctPts","lineOrPolygon","cleanRing","linearRing","cleanedRing","previousDistinctCoordinate","currentCoordinate","nextCoordinate","isBetween","cleanedRingCoordinates","c3","reduce","polyPts","reducedSet","reducedPts","padArray3","getConvexHull","sortedPts","cHS","grahamScan","cH","pad","stack","ps","_origin","polarCompare","dxp","dyp","dxq","dyq","oq","InteriorPointArea","_interiorPoint","_maxWidth","process","getInteriorPoint","avg","processPolygon","intPtPoly","InteriorPointPolygon","_polygon","_interiorPointY","_interiorSectionWidth","ScanLineYOrdinateFinder","getScanLineY","isEdgeCrossingCounted","scanY","intersectsHorizontalLine","segDX","segDY","findBestMidpoint","crossings","DoubleComparator","interiorPointX","scanRing","ptPrev","addEdgeCrossing","_poly","_centreY","_hiY","_loY","finder","updateInterval","scanLineY","InteriorPointLine","_centroid","_minDistance","addInterior","addEndpoints","InteriorPointPoint","BoundaryNodeRule","isInBoundary","boundaryCount","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","PointLocator","_boundaryRule","_isIn","_numBoundaries","boundaryRule","locateInPolygonRing","updateLocationInfo","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","ml","mpoly","ptCoord","MinimumBoundingCircle","_input","_extremalPts","_centre","_radius","farthestPoints","dist01","dist12","dist20","pointWitMinAngleWithX","minSin","minAngPt","lowestPoint","pointWithMinAngleWithSegment","Q","minAng","getRadius","getExtremalPoints","computeCirclePoints","hullPts","R","computeCentre","getCircle","centrePoint","getMaximumDiameter","maxDiameter","MinimumDiameter","_isConvex","_convexHullPts","_minBaseSeg","_minWidthPt","_minPtIndex","_minWidth","isConvex","nextIndex","computeC","getMinimumDiameter","getMinimumRectangle","computeSegmentForLine","getWidthCoordinate","computeMinimumDiameter","getSupportingSegment","computeWidthConvex","convexGeom","computeConvexRingMinDiameter","currMaxIndex","findMaxPerpDistance","startIndex","maxPerpDistance","nextPerpDistance","maxIndex","minPara","maxPara","minPerp","maxPerp","paraC","perpC","maxPerpLine","minPerpLine","maxParaLine","minParaLine","Densifier","_distanceTolerance","densifyPoints","distanceTolerance","precModel","densifiedSegCount","densifiedSegLen","segFract","densify","densifier","setDistanceTolerance","getResultGeometry","DensifyTransformer","roughGeom","createValidArea","newPts","roughAreaGeom","Quadrant","isNorthern","quad","NE","NW","isOpposite","quad1","quad2","commonHalfPlane","isInHalfPlane","halfPlane","SE","SW","quadrant","HalfEdge","_orig","_sym","_next","orig","e0","e1","link","find","oNext","isEdgesSorted","lowest","findLowest","eNext","isSorted","directionY","directionPt","eAdd","insertAfter","ePrev","insertionEdge","save","setNext","sym","degree","compareAngularDirection","directionX","quadrant2","prevNode","toStringNode","sb","format","setSym","toStringNodeEdge","MarkHalfEdge","_isMarked","setMarkBoth","isMarked","setMark","markBoth","mark","EdgeGraph","_vertexMap","isValidEdge","cmp","eAdj","eAdjDest","createEdge","addEdge","eSame","getVertexEdges","findEdge","DissolveHalfEdge","_isStart","setStart","isStart","DissolveEdgeGraph","LineDissolver","_graph","_nodeEdgeStack","_ringStartEdge","dissolve","getResult","updateRingStartEdge","computeResult","eNode","stackEdges","buildLines","buildRing","eStartRing","buildLine","eStart","edges","component","lineString","doneStart","Position","opposite","ON","MonotoneChain","mce","chainIndex","computeIntersections","mc","si","computeIntersectsForChain","SweepLineEvent","_label","_xValue","_eventType","_insertEvent","_deleteEventIndex","_obj","insertEvent","DELETE","label","INSERT","isDelete","setDeleteEventIndex","deleteEventIndex","getObject","pe","getInsertEvent","isInsert","isSameLabel","ev","getDeleteEventIndex","EdgeSetIntersector","SegmentIntersector","_hasIntersection","_hasProper","_hasProperInterior","_properIntersectionPoint","_li","_includeProper","_recordIsolated","_isSelfIntersection","_numIntersections","numTests","_bdyNodes","_isDoneWhenProperInt","includeProper","recordIsolated","isAdjacentSegments","isTrivialIntersection","segIndex0","segIndex1","maxSegIndex","getProperIntersectionPoint","setIsDoneIfProperInt","isDoneWhenProperInt","hasProperInteriorIntersection","isBoundaryPointInternal","bdyNodes","hasProperIntersection","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","addIntersections","p00","p01","p10","p11","setIsolated","SimpleMCSweepLineIntersector","events","nOverlaps","prepareEvents","processOverlaps","edges0","edges1","addEdges","testAllSegments","edge","edgeSet","getMonotoneChainEdge","getStartIndexes","ev0","mc0","ev1","mc1","TopologyLocation","location","on","gl","left","right","setAllLocations","locValue","setAllLocationsIfNull","isLine","merge","newLoc","getLocations","flip","setLocations","posIndex","isArea","isAnyNull","setLocation","locIndex","isEqualOnSide","allPositionsEqual","Label","elt","onLoc","lbl","geomIndex","leftLoc","rightLoc","toLineLabel","lineLabel","getGeometryCount","count","side","toLine","EdgeIntersection","getSegmentIndex","print","maxSegmentIndex","SortedMap","BLACK","RED","colorOf","color","parentOf","setColor","leftOf","rightOf","TreeMap","root_","size_","getValue","getKey","oldValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","containsKey","EdgeIntersectionList","_nodeMap","ei","addSplitEdges","edgeList","eiPrev","newEdge","createSplitEdge","ei0","ei1","lastSegStartPt","useIntPt1","Edge","eiNew","IntArrayList","_data","_size","initialCapacity","capacity","MonotoneChainIndexer","toIntArray","getChainStartIndices","startIndexList","findChainEnd","chainQuad","OLDgetChainStartIndices","MonotoneChainEdge","mcb","chainIndex0","chainIndex1","start0","end0","start1","end1","overlaps","mid0","computeIntersects","Depth","_depth","NULL_VALUE","depthAtLocation","getDepth","setDepth","depthValue","minDepth","newValue","getDelta","GraphComponent","_isInResult","_isCovered","_isCoveredSet","_isVisited","setVisited","isVisited","setInResult","isInResult","isCovered","isCoveredSet","setLabel","getLabel","setCovered","updateIM","computeIM","_env","eiList","_mce","_isIsolated","_depthDelta","getCollapsedEdge","newe","isIsolated","setName","isEqualForward","isEqualReverse","iRev","isCollapsed","getMaximumSegmentIndex","getDepthDelta","printReverse","addIntersection","normalizedSegmentIndex","nextSegIndex","nextPt","isPointwiseEqual","setDepthDelta","depthDelta","getEdgeIntersectionList","Node","_coord","_edges","isIncidentEdgeInResult","getEdges","de","getEdge","computeMergedLocation","label2","eltIndex","nLoc","argIndex","onLocation","mergeLabel","thisLoc","setNode","setLabelBoundary","NodeMap","nodeMap","nodeFact","addNode","createNode","getBoundaryNodes","EdgeEnd","_edge","_node","_p0","_p1","_dx","_dy","_quadrant","compareDirection","getDy","className","lastDotPos","lastIndexOf","getDirectedCoordinate","getDx","getQuadrant","getNode","computeLabel","boundaryNodeRule","TopologyException","DirectedEdge","_isForward","_nextMin","_edgeRing","_minEdgeRing","computeDirectedLabel","depthFactor","currLocation","nextLocation","getNextMin","getNext","depthVal","isInteriorAreaEdge","setNextMin","nextMin","setMinEdgeRing","minEdgeRing","isLineEdge","isExteriorIfArea0","isExteriorIfArea1","setEdgeRing","edgeRing","getMinEdgeRing","getSym","printEdge","setVisitedEdge","setEdgeDepths","depth","directionFactor","oppositePos","delta","oppositeDepth","getEdgeRing","NodeFactory","PlanarGraph","_nodes","_edgeEndList","linkResultDirectedEdges","nodes","nodeit","printEdges","getNodeIterator","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","debugPrint","getEdgeIterator","findEdgeInSameDirection","eCoord","insertEdge","findEdgeEnd","ee","edgesToAdd","de1","de2","getNodes","GeometryGraph","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_invalidPoint","_areaPtLocator","_ptLocator","parentGeom","determineBoundary","insertBoundaryPoint","computeSelfNodes","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","computeAllSegments","addSelfIntersectionNodes","computeSplitEdges","edgelist","computeEdgeIntersections","getBoundaryNodeRule","hasTooFewPoints","insertPoint","addPolygon","addPolygonRing","addLineString","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","lr","cwLeft","cwRight","eLoc","eiIt","addCollection","KdNodeVisitor","KdNode","_left","_right","_count","data","isRepeated","getRight","setLeft","getData","getCount","getLeft","increment","setRight","KdTree","_numberOfNodes","_tolerance","toCoordinates","kdnodes","includeRepeated","matchNode","findBestMatchNode","insertExact","queryEnv","queryNode","currentNode","odd","discriminant","searchLeft","searchRight","BestMatchVisitor","queryEnvelope","leafNode","isOddLevel","isLessThan","isInTolerance","_matchNode","_matchDist","update","NodeBase","_subnode","getSubnodeIndex","centrex","centrey","subnodeIndex","hasChildren","isPrunable","hasItems","addAllItems","resultItems","getNodeCount","subSize","addAllItemsFromOverlapping","searchEnv","isSearchMatch","visitItems","itemEnv","found","maxSubDepth","sqd","DoubleBits","exponent","CVTFWD","powerOf2","NumW","Qty","Sign","Expo","Mant","Bin","Inf","ExW","Key","computeKey","computeQuadLevel","dMax","level","getLevel","quadSize","getPoint","_centrex","_centrey","createExpanded","addEnv","expandEnv","largerNode","insertNode","getSubnode","createSubnode","miny","maxy","sqEnv","childNode","IntervalSize","isZeroWidth","maxAbs","scaledInterval","MIN_BINARY_EXPONENT","Root","insertContained","tree","isZeroX","isZeroY","SpatialIndex","Quadtree","_minExtent","ensureExtent","collectStats","insertEnv","queryAll","foundItems","posEnv","delX","delY","Boundable","getBounds","ItemBoundable","_bounds","bounds","getItem","PriorityQueue","poll","minItem","reorder","child","AbstractNode","_childBoundables","getChildBoundables","addChildBoundable","childBoundable","computeBounds","EnvelopeDistance","maxDistance","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","maximumDistance","env2","minMaxDistance","aminx","aminy","amaxx","amaxy","bminx","bminy","bmaxx","bmaxy","BoundablePair","_boundable1","_boundable2","_itemDistance","boundable1","boundable2","itemDistance","isComposite","expandToQueue","priQ","isComp1","isComp2","expand","isLeaves","nd","bndComposite","bndOther","isFlipped","children","bp","getBoundable","AbstractSTRtree","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","nodeCapacity","compareDoubles","queryInternal","searchBounds","childBoundables","getIntersectsOp","getNodeCapacity","lastNode","build","removeItem","childToRemove","itemsTree","valuesTree","valuesTreeForNode","valuesTreeForChild","boundablesAtLevel","boundables","top","boundable","createHigherLevels","getRoot","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","IntersectsOp","ItemDistance","item1","item2","STRtree","kNearestNeighbors","items","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","nearestNeighbourK","initBndPair","distanceLowerBound","bndPair","pairDistance","bp1","bp2","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","yComparator","minLeafCount","xComparator","nearestNeighbour","itemDist","minPair","bnd","isWithinDistance","distanceUpperBound","aBounds","bBounds","geometryTypes","GeoJSONParser","json","JSON","Feature","feature","bbox","FeatureCollection","featureCollection","features","sub","multipoint","geoJson","linestring","multilinestring","shellGeoJson","holeGeoJson","multipolygon","GeoJSONReader","GeoJSONWriter","WKTReader","p2c","OL3Parser","olReference","ol","inject","convertFromPoint","convertFromLineString","convertFromLinearRing","convertFromPolygon","convertFromMultiPoint","convertFromMultiLineString","convertFromMultiPolygon","convertFromCollection","getLinearRings","multiPoint","multiLineString","getLineStrings","multiPolygon","getGeometries","convertToPoint","convertToLineString","convertToLinearRing","convertToPolygon","convertToMultiPoint","convertToMultiLineString","convertToMultiPolygon","convertToCollection","geometryCollection","SegmentPointComparator","relativeSign","octant","xSign","ySign","compareValue","compareSign0","compareSign1","SegmentNode","_segString","_segmentOctant","_isInterior","segString","segmentOctant","isInterior","SegmentNodeList","getSplitCoordinates","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","createSplitEdgePts","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","NodedSegmentString","getSegmentOctant","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","pt0","splitn","splitnPts","ptn","Octant","adx","ady","SegmentString","setData","NodableSegmentString","_nodeList","getNodedSubstrings","segStrings","resultEdgelist","ss","getNodeList","safeOctant","addIntersectionNode","MonotoneChainOverlapAction","_overlapSeg1","_overlapSeg2","overlap","mc2","start2","getLineSegment","_start","_end","_context","_id","context","computeSelect","mcs","select","computeOverlaps","mco","setId","id","getEndIndex","getStartIndex","getContext","getId","MonotoneChainBuilder","safeStart","getChains","mcList","chainStart","chainEnd","Noder","computeNodes","SinglePassNoder","_segInt","segInt","setSegmentIntersector","MCIndexNoder","_monoChains","_idCounter","_nodedSegStrings","_nOverlaps","getMonotoneChains","getIndex","segStr","segChains","inputSegStrings","intersectChains","overlapAction","SegmentOverlapAction","queryChain","overlapChains","testChain","_si","ss1","ss2","processIntersections","ScaledNoder","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","noder","scaleFactor","isIntegerPrecision","rescale","nodedSegmentStrings","roundPts","roundPtsNoDup","splitSS","intSegStrings","BoundaryOp","_bnRule","_endpointMap","bnRule","bop","boundaryMultiLineString","mLine","getEmptyMultiPoint","bdyPts","computeBoundaryCoordinates","boundaryLineString","closedEndpointOnBoundary","addEndpoint","valence","Counter","IsSimpleOp","_isClosedEndpointsInInterior","_nonSimpleLocation","isSimpleMultiPoint","mp","isSimplePolygonal","isSimpleLinearGeometry","hasClosedEndpointIntersection","graph","endPoints","eiInfo","getNonSimpleLocation","hasNonEndpointIntersection","EndpointInfo","computeSimple","isSimpleGeometryCollection","BufferParameters","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","quadrantSegments","setQuadrantSegments","endCapStyle","setEndCapStyle","joinStyle","mitreLimit","setJoinStyle","setMitreLimit","bufferDistanceError","quadSegs","alpha","getEndCapStyle","isSingleSided","JOIN_BEVEL","JOIN_MITRE","getJoinStyle","setSimplifyFactor","simplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","CAP_FLAT","CAP_SQUARE","RightmostEdgeFinder","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","pPrev","pNext","orientation","usePrev","findRightmostEdgeAtNode","star","getRightmostEdge","dirEdgeList","rightmostSide","LinkedList","addLast","removeFirst","shift","BufferSubgraph","_finder","_dirEdgeList","_rightMostCoord","clearVisitedEdges","getRightmostCoordinate","computeNodeDepth","startEdge","computeDepths","copySymDepths","computeDepth","outsideDepth","addReachable","findResultEdges","nodesVisited","nodeQueue","startNode","adjNode","edgeEnv","dirEdge","nodeStack","symNode","getDirectedEdges","EdgeRing","_startDe","_maxNodeDegree","_ring","_isHole","_geometryFactory","computePoints","computeRing","isFirstEdge","addPoints","getLinearRing","computeMaxNodeDegree","getOutgoingDegree","isHole","containsPoint","isShell","getMaxNodeDegree","getShell","deLabel","setShell","toPolygon","holeLR","MinimalEdgeRing","er","MaximalEdgeRing","buildMinimalRings","minEdgeRings","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","PolygonBuilder","_shellList","findEdgeRingContaining","testEr","shellList","testRing","testEnv","minShell","minShellEnv","tryShell","tryShellRing","tryShellEnv","sortShellsAndHoles","edgeRings","freeHoleList","computePolygons","resultPolyList","placeFreeHoles","buildMinimalEdgeRings","maxEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","dirEdges","shellCount","BufferInputLineSimplifier","_inputLine","_distanceTol","_isDeleted","_angleOrientation","inputLine","simplify","distanceTol","simp","isDeletable","i0","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","midIndex","findNextNonDeletedIndex","lastIndex","isMiddleVertexDeleted","isShallowConcavity","isAngleToSimplify","NUM_PTS_TO_CHECK","collapseLine","INIT","KEEP","OffsetSegmentString","_ptList","_minimimVertexDistance","COORDINATE_ARRAY_TYPE","addPt","bufPt","isRedundant","addPts","lastPt","startPt","setMinimumVertexDistance","minimimVertexDistance","OffsetSegmentGenerator","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_bufParams","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","bufParams","MAX_CLOSING_SEG_LEN_FACTOR","addNextSegment","addStartPoint","computeOffsetSegment","outsideTurn","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","offsetL","offsetR","addDirectedFillet","squareCapSideOffset","squareCapLOffset","squareCapROffset","addMitreJoin","offset0","offset1","mitreRatio","addLimitedMitreJoin","OFFSET_SEGMENT_SEPARATION_FACTOR","addBevelJoin","addCornerFillet","createSquare","addSegments","addFirstSegment","startAngle","endAngle","addLastSegment","initSideSegments","s1","s2","ang0","angDiff","angDiffHalf","midAng","mitreMidAng","mitreDist","bevelDelta","bevelHalfLen","bevelMidX","bevelMidY","bevelMidPt","mitreMidLine","bevelEndLeft","bevelEndRight","totalAngle","nSegs","angleInc","offset","sideSign","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","numInt","hasNarrowConcaveAngle","OffsetCurveBuilder","copyCoordinates","getOffsetCurve","isRightSide","posDistance","segGen","getSegGen","computePointCurve","computeOffsetCurve","curvePts","computeSingleSidedBufferCurve","distTol","simplifyTolerance","simp2","simp1","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","isLineOffsetEmpty","lineCoord","getBufferParameters","bufDistance","getRingCurve","SubgraphDepthLocater","_subgraphs","_seg","subgraphs","findStabbedSegments","stabbingRayLeftPt","stabbedSegments","bsg","ds","DepthSegment","_leftDepth","_upwardSeg","orientIndex","compareX","seg0","seg1","compare0","OffsetCurveSetBuilder","_curveBuilder","_curveList","curveBuilder","addRingSide","cwLeftLoc","cwRightLoc","curve","addCurve","addRingBothSides","offsetSide","shellCoord","isErodedCompletely","holeCoord","isTriangleErodedCompletely","triangleCoord","bufferDistance","tri","distToCentre","getCurves","ringCoord","envMinDimension","EdgeEndStar","_edgeMap","_edgeList","_ptInAreaLocation","getNextCW","iNextCW","propagateSideLabels","startLoc","currLoc","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","checkAreaLabelsConsistent","lastEdgeIndex","startLabel","findIndex","eSearch","computeLabelling","hasDimensionalCollapseEdge","getDegree","insertEdgeEnd","DirectedEdgeStar","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","firstOut","incoming","state","nextOut","nextIn","de0","deLast","quad0","updateLabelling","nodeLabel","prevOut","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","currDepth","nextDe","mergeSymLabels","findCoveredLineEdges","eLabel","OverlayNodeFactory","OrientedCoordinateArray","_orientation","compareOriented","orientation1","orientation2","limit1","limit2","compPt","done1","done2","oca","EdgeList","_ocaMap","edgeColl","findEdgeIndex","findEqualEdge","matchEdge","IntersectionAdder","_hasInterior","numIntersections","numInteriorIntersections","numProperIntersections","getLineIntersector","hasInteriorIntersection","BufferBuilder","_workingPrecisionModel","_workingNoder","lLoc","rLoc","convertSegStrings","setWorkingPrecisionModel","insertUniqueEdge","existingEdge","existingLabel","labelToMerge","mergeDelta","existingDelta","newDelta","buildSubgraphs","subgraphList","polyBuilder","processedGraphs","subgraph","locater","createSubgraphs","createEmptyResultGeometry","emptyGeom","getNoder","curveSetBuilder","bufferSegStrList","computeNodedEdges","resultGeom","nodedSegStrings","oldLabel","setNoder","NodingValidator","_segStrings","checkEndPtVertexIntersections","checkInteriorIntersections","ss0","pts0","checkValid","checkCollapses","checkCollapse","HotPixel","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_corner","_safeEnv","initCorners","intersectsScaled","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersectsToleranceSquare","copyScaled","pScaled","getSafeEnvelope","safeTolerance","SAFE_ENV_EXPANSION_FACTOR","intersectsPixelClosure","intersectsLeft","intersectsBottom","addSnappedNode","segIndex","MonotoneChainSelectAction","selectedSegment","MCIndexPointSnapper","snap","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","InteriorIntersectionFinderAdder","_interiorIntersections","getInteriorIntersections","MCIndexSnapRounder","_pm","_pointSnapper","checkCorrectness","inputSegmentStrings","resultSegStrings","nv","printStackTrace","snapRound","intersections","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","snapPts","snapPt","BufferOp","_argGeom","_resultGeometry","_saveException","bufferOp","gBuf","geomBuf","bufOp","params","precisionScaleFactor","maxPrecisionDigits","envMax","expandByDistance","bufEnvMax","bufEnvPrecisionDigits","minUnitLog10","bufferFixedPrecision","fixedPM","bufBuilder","bufferReducedPrecision","precDigits","MAX_PRECISION_DIGITS","precisionDigits","sizeBasedScaleFactor","computeGeometry","bufferOriginalPrecision","argPM","CAP_BUTT","GeometryLocation","_component","_segIndex","INSIDE_AREA","isInsideArea","toPoint","getGeometryComponent","ConnectedElementLocationFilter","_locations","locations","DistanceOp","_terminateDistance","_minDistanceLocation","terminateDistance","distOp","envDist","nearestPoints","computeContainmentDistance","locPtPoly","polyGeomIndex","polyGeom","locationsIndex","polys","insideLocs","locs","ptLoc","computeMinDistanceLinesPoints","locGeom","computeMinDistance","computeFacetDistance","lines0","lines1","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPts","coord0","segClosestPoint","line0","line1","segEnv0","segEnv1","points0","points1","pt1","EdgeString","_directedEdges","forwardDirectedEdges","reverseDirectedEdges","coordinateList","directedEdge","getEdgeDirection","getLine","getComponentWithVisitedState","visitedState","visited","setMarked","marked","setContext","_from","_to","_edgeDirection","_angle","edgeDirection","toEdges","isRemoved","getDirectionPt","getAngle","getFromNode","setEdge","getToNode","LineMergeDirectedEdge","getOutEdges","_dirEdge","setDirectedEdges","addOutEdge","getDirEdge","fromNode","getOppositeNode","_outEdges","_sorted","getNextEdge","sortEdges","getNextCWEdge","modi","_deStar","deStar","getEdgesBetween","node0","node1","commonEdges","retainAll","LineMergeEdge","_line","_dirEdges","findNodesOfDegree","nodesFound","nodeIterator","dirEdgeIterator","edgeIterator","outEdges","findNode","LineMergeGraph","startCoordinate","endCoordinate","endNode","directedEdge0","directedEdge1","LineMerger","_mergedLineStrings","_edgeStrings","buildEdgeStringsForUnprocessedNodes","buildEdgeStringsStartingAt","buildEdgeStringsForNonDegree2Nodes","buildEdgeStringsForObviousStartNodes","getMergedLineStrings","buildEdgeStringStartingWith","buildEdgeStringsForIsolatedLoops","edgeString","Subgraph","_parentGraph","parentGraph","getParent","ConnectedSubgraphFinder","findSubgraph","getConnectedSubgraphs","toNode","LineSequencer","_lineCount","_isRun","_sequencedGeometry","_isSequenceable","findUnvisitedBestOrientedDE","wellOrientedDE","unvisitedDE","findLowestDegreeNode","minDegree","minDegreeNode","isSequenced","mls","prevSubgraphNodes","currNodes","revPts","sequence","sequencer","getSequencedLineStrings","hasSequence","oddDegreeCount","computeSequence","sequences","findSequences","buildSequencedGeometry","finalLineCount","csFinder","findSequence","addReverseSubpath","lit","expectedClosed","unvisitedOutDE","startDE","startDESym","listIterator","hasPrevious","previous","orientedSeq","newSeq","addFirst","endEdge","flipSeq","hasDegree1Node","hasObviousStartNode","lineToAdd","isSequenceable","LineStringSnapper","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","srcLine","snapTolerance","srcPts","snapVertices","srcCoords","srcPt","snapVert","findSnapForVertex","snapTo","snapSegments","distinctPtCount","findSegmentIndexToSnap","snapIndex","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","GeometrySnapper","_srcGeom","srcGeom","snapGeom","snapper0","snapper1","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","fixedSnapTol","minDimension","snapTol","SNAP_PRECISION_FACTOR","snapToSelf","cleanResult","extractTargetCoordinates","snapTrans","SnapTransformer","snappedGeom","computeSnapTolerance","ringPts","minSegLen","computeMinimumSegmentLength","ptSet","segLen","_snapPts","_isSelfSnap","isSelfSnap","snapLine","snapper","BasicSegmentString","NodingIntersectionFinder","_findAllIntersections","_isCheckEndSegmentsOnly","_keepIntersections","_isInteriorIntersectionsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","createAllIntersectionsFinder","setFindAllIntersections","isInteriorVertexIntersection","isEnd0","isEnd1","isEnd00","isEnd01","isEnd10","isEnd11","createInteriorIntersectionCounter","setInteriorIntersectionsOnly","setKeepIntersections","createIntersectionCounter","isEndSegment","createAnyIntersectionFinder","createInteriorIntersectionsFinder","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","findAllIntersections","keepIntersections","isSameSegString","isSameSegment","isEndSegPresent","isInteriorInt","isInteriorVertexInt","isAdjacentSegment","isInteriorIntersectionsOnly","FastNodingValidator","_isValid","execute","getErrorMessage","intSegs","EdgeNodingValidator","_nv","toSegmentStrings","validator","LineBuilder","_op","_lineEdgesList","_resultLineList","ptLocator","collectLines","opCode","getGraph","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","targetIndex","getArgGeometry","OverlayOp","isResultOfOp","isCoveredByA","labelIsolatedLines","edgesList","INTERSECTION","PointBuilder","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","CommonBits","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","numBits","signExpBits","numSignExp","numCommonMostSigMantissaBits","zeroLowerBits","numStr","padStr","bitStr","getBit","nBits","prop","num1","num2","CommonBitsRemover","_commonCoord","_ccFilter","CommonCoordinateFilter","addCommonBits","Translater","removeCommonBits","invCoord","getCommonCoordinate","_commonBitsX","_commonBitsY","SnapOverlayOp","_cbr","overlayOp","UNION","symDifference","SYMDIFFERENCE","difference","DIFFERENCE","selfSnap","remGeom","prepareResult","prepGeom","SnapIfNeededOverlayOp","isSuccess","savedException","GeometryGraphOperation","_resultPrecisionModel","_arg","setComputationPrecision","_resultGeom","_resultPolyList","geom1","gov","geomOv","createEmptyResult","resultDimension","dim0","dim1","overlayOpCode","resultDim","loc0","loc1","cancelDuplicateResultEdges","resultPointList","resultLineList","opcode","replaceCollapsedEdges","newEdges","updateNodeLabelling","computeOverlay","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","lineBuilder","pointBuilder","labelIncompleteNode","graphNode","newNode","ni","PolygonizeDirectedEdge","setRing","getRing","PolygonizeEdge","ConnectedInteriorTester","_geomGraph","_disconnectedRingcoord","findDifferentPoint","visitInteriorRing","intDe","visitLinkedDirectedEdges","visitShellInteriors","setInteriorEdgesInResult","startDe","buildEdgeRings","hasUnvisitedShellEdge","isInteriorsConnected","EdgeEndBuilder","createEdgeEndForNext","eiCurr","eiNext","createEdgeEndForPrev","computeEdgeEnds","EdgeEndBundle","_edgeEnds","computeLabelOn","foundInterior","computeLabelSide","computeLabelSides","EdgeEndBundleStar","esb","eb","RelateNode","updateIMFromEdges","RelateNodeFactory","RelateNodeGraph","insertEdgeEnds","copyNodesAndLabels","nodeIt","computeIntersectionNodes","eeBuilder","eeList","edgeIt","ConsistentAreaTester","_nodeGraph","isNodeEdgeAreaLabelsConsistent","hasDuplicateRings","eeb","isNodeConsistentArea","intersector","IndexedNestedRingTester","_rings","_totalEnv","_nestedPt","buildIndex","getNestedPoint","isNonNested","innerRing","innerRingPts","results","searchRing","searchRingPts","innerRingPt","IsValidOp","findPtNotNode","isInside","TopologyValidationError","_errorType","errorType","getErrorType","getMessage","errMsg","locStr","ERROR","REPEATED_POINT","HOLE_OUTSIDE_SHELL","NESTED_HOLES","DISCONNECTED_INTERIOR","SELF_INTERSECTION","RING_SELF_INTERSECTION","NESTED_SHELLS","DUPLICATE_RINGS","TOO_FEW_POINTS","INVALID_COORDINATE","RING_NOT_CLOSED","_parentGeometry","_isSelfTouchingRingFormingHoleValid","_validErr","parentGeometry","testCoords","searchEdge","isValidOp","checkInvalidCoordinates","checkHolesNotNested","nestedTester","innerHole","checkConsistentArea","cat","isValidArea","checkShellInsideHole","shellPts","holePts","shellPt","insideHole","holePt","insideShell","checkNoSelfIntersectingRings","checkNoSelfIntersectingRing","checkConnectedInteriors","cit","nodeSet","isFirst","checkHolesInShell","isShellEmpty","pir","outside","checkTooFewPoints","getValidationError","checkClosedRing","checkClosedRings","checkShellsNotNested","setSelfTouchingRingFormingHoleValid","checkShellNotNested","polyShell","insidePolyShell","badNestedPt","_deList","_lowestEdge","_locator","_ringPts","_isProcessed","_isIncludedSet","_isIncluded","findDirEdgesInRing","erList","minRing","minRingEnv","tryEdgeRing","tryRing","isIncluded","isIncludedSet","getLocator","isOuterHole","hasShell","getPolygon","isProcessed","holeER","setIncluded","getOuterHole","adjRing","computeHole","isOuterShell","getLineString","updateIncluded","adjShell","setProcessed","EnvelopeComparator","r0","r1","PolygonizeGraph","findLabeledEdgeRings","edgeRingStarts","currLabel","getDegreeNonDeleted","deleteAllEdges","computeNextCWEdges","prevDE","outDE","computeNextCCWEdges","firstOutDE","prevInDE","inDE","findIntersectionNodes","intNodes","findEdgeRing","computeDepthParity","iNode","linePts","endPt","nStart","nEnd","deleteCutEdges","cutLines","getEdgeRings","maximalRings","convertMaximalToMinimalEdgeRings","edgeRingList","ringEdges","deleteDangles","nodesToRemove","dangleLines","nodeOutEdges","HoleAssigner","_shells","_shellIndex","shells","assignHolesToShells","assigner","holeList","assignHoleToShell","queryOverlappingShells","ringEnv","findShellContaining","candidateShells","Polygonizer","_lineStringAdder","LineStringAdder","_dangles","_cutEdges","_invalidRingLines","_holeList","_polyList","_isCheckingRingsValid","_extractOnlyPolygonal","extractOnlyPolygonal","extractPolygons","includeAll","polyList","findOuterShells","outerHoleER","findDisjointShells","isMoreToScan","polygonize","getInvalidRingLines","findValidRings","validEdgeRingList","invalidRingList","findShellsAndHoles","getDangles","getCutEdges","setCheckRingsValid","isCheckingRingsValid","RelateComputer","_im","_isolatedEdges","arg","computeProperIntersectionIM","dimA","dimB","hasProper","hasProperInterior","labelIsolatedEdges","thisIndex","labelIsolatedEdge","target","computeDisjointIM","labelIsolatedNodes","ee0","ee1","labelNodeEdges","labelIntersectionNodes","labelIsolatedNode","ga","gb","RectangleContains","_rectEnv","rectangle","rc","isContainedInBoundary","isPointContainedInBoundary","isLineStringContainedInBoundary","isLineSegmentContainedInBoundary","RectangleLineIntersector","_diagUp0","_diagUp1","_diagDown0","_diagDown1","rectEnv","segEnv","isSegUpwards","RectangleIntersects","_rectangle","rp","EnvelopeIntersectsVisitor","ecpVisitor","GeometryContainsPointVisitor","riVisitor","RectangleIntersectsSegmentVisitor","_intersects","elementEnv","_rectSeq","_containsPoint","rectPt","_rectIntersector","checkIntersectionWithLineStrings","testLine","checkIntersectionWithSegments","seq1","RelateOp","_relate","getIntersectionMatrix","touches","relate","relOp","crosses","PointGeometryUnion","_pointGeom","_otherGeom","pointGeom","unioner","exteriorCoords","ptComp","InputExtracter","_polygons","extracter","recordDimension","getExtract","OverlapUnion","_isUnionSafe","containsProperly","overlapEnvelope","g0Env","g1Env","overlapEnv","extractBorderSegments","segs","isBorder","unionBuffer","gColl","isBorderSegmentsSame","segsBefore","segsAfter","extractByEnvelope","disjointGeoms","intersectingGeoms","elem","segs0","segs1","g0Copy","g1Copy","disjointPolys","g0Overlap","g1Overlap","unionGeom","unionFull","isUnionOptimized","CascadedPolygonUnion","_inputPolys","restrictToPolygons","reduceToGeometries","geomTree","unionTree","STRTREE_NODE_CAPACITY","itemTree","unionAll","binaryUnion","unionSafe","repeatedUnion","unionActual","bufferUnion","UnaryUnionOp","_extracter","unionNoOpt","unionWithNull","unionPoints","ptGeom","unionLines","lineGeom","unionPolygons","unionLA","PrecisionReducerCoordinateOperation","_targetPM","_removeCollapsed","targetPM","removeCollapsed","reducedCoords","noRepeatedCoordList","noRepeatedCoords","minLength","collapsedCoords","GeometryPrecisionReducer","_changePrecisionModel","_isPointwise","reducer","reducePointwise","setPointwise","fixPolygonalTopology","geomToBuffer","changePM","bufGeom","geomEdit","newFactory","createFactory","finalRemoveCollapsed","reduceGeom","newPM","geomEditor","createEditor","setRemoveCollapsedComponents","inputFactory","setChangePrecisionModel","changePrecisionModel","reducePW","isPointwise","DouglasPeuckerLineSimplifier","_usePt","simplifySection","DouglasPeuckerSimplifier","_isEnsureValidTopology","tss","setEnsureValid","isEnsureValidTopology","DPTransformer","rawGeom","rawAreaGeom","removeDegenerateRings","simpResult","TaggedLineSegment","TaggedLineString","_parentLine","_segs","_resultSegs","_minimumSize","parentLine","minimumSize","addToResult","asLineString","getResultSize","resultSegsSize","getSegment","getParentCoordinates","getMinimumSize","asLinearRing","getSegments","getResultCoordinates","LineSegmentIndex","querySeg","LineSegmentVisitor","itemsFound","_querySeg","TaggedLineStringSimplifier","_inputIndex","_outputIndex","_linePts","inputIndex","outputIndex","isInLineSection","sectionIndex","flatten","newSeg","hasBadIntersection","candidateSeg","hasBadOutputIntersection","hasBadInputIntersection","isValidToSimplify","worstCaseSize","furthestPtIndex","findFurthestPoint","querySegs","maxDist","midPt","TaggedLinesSimplifier","taggedLines","tlss","TopologyPreservingSimplifier","_lineSimplifier","_linestringMap","LineStringMapBuilderFilter","LineStringTransformer","linestringMap","taggedLine","tps","minSize","VWLineSimplifier","simplifyVertex","vwLine","curr","minArea","minVertex","isLive","VWVertex","_prev","_area","MAX_AREA","_isLive","first","v","setPrev","updateArea","tmpPrev","tmpNext","VWSimplifier","VWTransformer","SplitSegment","_segLen","_splitPt","_minimumLen","pointAlongReverse","splitAt","minFrac","actualLen","getConstrainedLength","setMinimumLength","minLen","getSplitPoint","ConstraintSplitPointFinder","findSplitPoint","encroachPt","NonEncroachingSplitPointFinder","projectedSplitPoint","lineSeg","projPt","midPtLen","splitSeg","nonEncroachDiam","maxSplitLen","TrianglePredicate","triArea","isInCircleDDNormalized","bdx","bdy","cdx","cdy","abdet","bcdet","cadet","alift","blift","clift","isInCircle","checkRobustInCircle","nonRobustInCircle","isInCircleNonRobust","isInCircleDD","isInCircleDDSlow","isInCircleCC","circumCentre","isInCircleDDFast","aTerm","triAreaDDFast","bTerm","cTerm","pTerm","cc","ccRadius","pRadiusDiff","isInCircleNormalized","triAreaDDSlow","isInCircleRobust","t1","t2","Vertex","_z","ptLen","pz","circleCenter","cab","bisector","cbc","hcc","nre","err","dot","magn","interpolateZValue","xm","ym","zm","crossProduct","times","cross","classify","sa","BEHIND","BEYOND","ORIGIN","DESTINATION","BETWEEN","circumRadiusRatio","edgeLength","el","ConstraintVertex","_isOnConstraint","_constraint","getConstraint","setOnConstraint","isOnConstraint","setConstraint","constraint","QuadEdge","_rot","_vertex","makeEdge","q0","q3","setOrig","setDest","oPrev","lNext","rot","beta","t3","t4","connect","equalsNonOriented","qe","equalsOriented","toLineSegment","dNext","lPrev","rPrev","invRot","delete","rNext","getPrimary","dPrev","IncrementalDelaunayTriangulator","_subdiv","_isUsingTolerance","subdiv","getTolerance","insertSite","isVertexOfEdge","isOnEdge","insertSites","vertices","QuadEdgeLocator","LastFoundQuadEdgeLocator","_lastEdge","locateFromEdge","LocateFailureException","msgWithSpatial","TriangleVisitor","triEdges","QuadEdgeSubdivision","_visitedKey","_quadEdges","_startingEdge","_edgeCoincidenceTolerance","_frameVertex","_frameEnv","_triEdges","EDGE_COINCIDENCE_TOL_FACTOR","createFrame","initSubdiv","getTriangleEdges","startQE","triEdge","getTriangleVertices","includeFrame","TriangleVertexListVisitor","visitTriangles","isFrameVertex","getVoronoiCellPolygon","cellPts","cellPoly","setLocator","locator","ea","ec","isFrameBorderEdge","leftTri","rightTri","vLeftTriOther","vRightTriOther","triVisitor","edgeStack","visitedEdges","fetchTriangleToVisit","isFrameEdge","getTriangleCoordinates","TriangleCoordinatesVisitor","getTriangles","getVertices","vd","edgeCount","isFrame","quadEdges","getPrimaryEdges","getVertexUniqueEdges","visitedVertices","qd","TriangleEdgesListVisitor","priQE","eSym","eRot","eRotSym","iter","maxIter","getVoronoiCellPolygons","TriangleCircumcentreVisitor","cells","getVoronoiDiagram","vorCells","triPtsList","tris","triPt","locEdge","ccVertex","_triList","_coordList","_triCoords","checkTriangleSize","Segment","_ls","z1","z2","getEndZ","getStartZ","getStart","getEnd","getEndY","getStartX","getStartY","getEndX","ConstraintEnforcementException","msgWithCoord","ConformingDelaunayTriangulator","_initialVertices","_segVertices","_segments","_incDel","_convexHull","_splitFinder","_kdt","_vertexFactory","_computeAreaEnv","initialVertices","computeVertexEnvelope","getInitialVertices","getKDT","enforceConstraints","addConstraintVertices","splits","enforceGabriel","MAX_SPLIT_ITER","getVertexFactory","getPointArray","setConstraints","segments","segVertices","computeConvexHull","hull","findNonGabrielPoint","segRadius","closestNonGabriel","nextNode","testRadius","testDist","getConstraintSegments","setSplitPointFinder","splitFinder","segsToInsert","newSegments","segsToRemove","splitVertex","createVertex","insertedVertex","removeAll","getSubdivision","computeBoundingBox","vertexEnv","allPointsEnv","setVertexFactory","vertexFactory","formInitialDelaunay","kdnode","snappedV","DelaunayTriangulationBuilder","_siteCoords","extractUniqueCoordinates","unique","coordsCopy","toVertices","verts","siteEnv","triangulator","setTolerance","setSites","ConformingDelaunayTriangulationBuilder","_constraintLines","_constraintVertexMap","createConstraintSegments","constraintSegs","createSiteVertices","createVertices","sites","cdt","constraintLines","VoronoiDiagramBuilder","_clipEnv","_diagramEnv","clipGeometryCollection","clipEnv","clipPoly","clipped","getDiagram","setClipEnvelope","LinearIterator","_linearGeom","_numLines","_currentLine","_componentIndex","_vertexIndex","linear","getComponentIndex","segmentEndVertexIndex","linearGeom","componentIndex","loadCurrentLine","getSegmentFraction","getVertexIndex","getSegmentEnd","getSegmentStart","isEndOfLine","LengthIndexOfPoint","indexOfAfter","minIndex","indexOfFromStart","ptMeasure","segmentStartMeasure","segDistance","segMeasureToPt","segmentNearestMeasure","closestAfter","projFactor","LinearLocation","_segmentIndex","_segmentFraction","doNormalize","getEndLocation","setToEnd","pointAlongSegmentByFraction","compareLocationValues","componentIndex0","segmentIndex0","segmentFraction0","componentIndex1","segmentIndex1","segmentFraction1","numSegments","isEndpoint","lineComp","nseg","toLowest","lastLine","isOnSameSegment","snapToVertex","getSegmentLength","lenToStart","lenToEnd","isVertex","LocationIndexOfPoint","minComponentIndex","minSegmentIndex","candidateComponentIndex","candidateSegmentIndex","endLoc","LocationIndexOfLine","indicesOf","subLine","locPt","subLineLoc","LengthLocationMap","resolveLower","totalLength","resolveHigher","compIndex","forwardLength","getLocationForward","LinearGeometryBuilder","_ignoreInvalidLines","_fixInvalidLines","_lastPt","endLine","getLastCoordinate","rawPts","validCoordinateSequence","setFixInvalidLines","fixInvalidLines","allowRepeatedPoints","setIgnoreInvalidLines","ignoreInvalidLines","validPts","ExtractLineByLocation","computeLinear","computeLine","startSegmentIndex","lastSegmentIndex","newCoordinateArray","LengthIndexedLine","clampIndex","positiveIndex","locationOf","extractPoint","locLow","isValidIndex","extractLine","startIndex2","endIndex2","resolveStartLower","LocationIndexedLine","checkGeometryType","indexLow","CollectionUtil","func","Boolean","Function","CoordinateArrayFilter","CoordinateCountFilter","_n","ObjectCounter","_counts","PrintStream","StringReader","ByteArrayOutputStream","IOException","LineNumberReader","StringUtil","chars","String","getStackTrace","os","stackTrace","stringReader","lineNumberReader","readLine","NEWLINE","spaces","split","separator","separatorlen","tokenList","tmpString","UnionOp","prototype","coveredBy","within","intersectionPattern","centPt","interiorPt","toText","writer","version"],"mappings":"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"}