\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 CommonBitsRemover from './CommonBitsRemover'\nexport default class CommonBitsOp {\n constructor() {\n CommonBitsOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._returnToOriginalPrecision = true\n this._cbr = null\n if (arguments.length === 0) {\n CommonBitsOp.constructor_.call(this, true)\n } else if (arguments.length === 1) {\n const returnToOriginalPrecision = arguments[0]\n this._returnToOriginalPrecision = returnToOriginalPrecision\n }\n }\n computeResultPrecision(result) {\n if (this._returnToOriginalPrecision) this._cbr.addCommonBits(result)\n return result\n }\n union(geom0, geom1) {\n const geom = this.removeCommonBits(geom0, geom1)\n return this.computeResultPrecision(geom[0].union(geom[1]))\n }\n intersection(geom0, geom1) {\n const geom = this.removeCommonBits(geom0, geom1)\n return this.computeResultPrecision(geom[0].intersection(geom[1]))\n }\n removeCommonBits() {\n if (arguments.length === 1) {\n const geom0 = arguments[0]\n this._cbr = new CommonBitsRemover()\n this._cbr.add(geom0)\n const geom = this._cbr.removeCommonBits(geom0.copy())\n return geom\n } else if (arguments.length === 2) {\n const geom0 = arguments[0], geom1 = arguments[1]\n this._cbr = new CommonBitsRemover()\n this._cbr.add(geom0)\n this._cbr.add(geom1)\n const geom = new Array(2).fill(null)\n geom[0] = this._cbr.removeCommonBits(geom0.copy())\n geom[1] = this._cbr.removeCommonBits(geom1.copy())\n return geom\n }\n }\n buffer(geom0, distance) {\n const geom = this.removeCommonBits(geom0)\n return this.computeResultPrecision(geom.buffer(distance))\n }\n symDifference(geom0, geom1) {\n const geom = this.removeCommonBits(geom0, geom1)\n return this.computeResultPrecision(geom[0].symDifference(geom[1]))\n }\n difference(geom0, geom1) {\n const geom = this.removeCommonBits(geom0, geom1)\n return this.computeResultPrecision(geom[0].difference(geom[1]))\n }\n}\n","import CommonBitsOp from './CommonBitsOp'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nexport default class EnhancedPrecisionOp {\n static union(geom0, geom1) {\n let originalEx = null\n try {\n const result = geom0.union(geom1)\n return result\n } catch (ex) {\n if (ex instanceof RuntimeException) \n originalEx = ex\n else throw ex\n } finally {}\n try {\n const cbo = new CommonBitsOp(true)\n const resultEP = cbo.union(geom0, geom1)\n if (!resultEP.isValid()) throw originalEx\n return resultEP\n } catch (ex2) {\n if (ex2 instanceof RuntimeException) \n throw originalEx\n else throw ex2\n } finally {}\n }\n static intersection(geom0, geom1) {\n let originalEx = null\n try {\n const result = geom0.intersection(geom1)\n return result\n } catch (ex) {\n if (ex instanceof RuntimeException) \n originalEx = ex\n else throw ex\n } finally {}\n try {\n const cbo = new CommonBitsOp(true)\n const resultEP = cbo.intersection(geom0, geom1)\n if (!resultEP.isValid()) throw originalEx\n return resultEP\n } catch (ex2) {\n if (ex2 instanceof RuntimeException) \n throw originalEx\n else throw ex2\n } finally {}\n }\n static buffer(geom, distance) {\n let originalEx = null\n try {\n const result = geom.buffer(distance)\n return result\n } catch (ex) {\n if (ex instanceof RuntimeException) \n originalEx = ex\n else throw ex\n } finally {}\n try {\n const cbo = new CommonBitsOp(true)\n const resultEP = cbo.buffer(geom, distance)\n if (!resultEP.isValid()) throw originalEx\n return resultEP\n } catch (ex2) {\n if (ex2 instanceof RuntimeException) \n throw originalEx\n else throw ex2\n } finally {}\n }\n static symDifference(geom0, geom1) {\n let originalEx = null\n try {\n const result = geom0.symDifference(geom1)\n return result\n } catch (ex) {\n if (ex instanceof RuntimeException) \n originalEx = ex\n else throw ex\n } finally {}\n try {\n const cbo = new CommonBitsOp(true)\n const resultEP = cbo.symDifference(geom0, geom1)\n if (!resultEP.isValid()) throw originalEx\n return resultEP\n } catch (ex2) {\n if (ex2 instanceof RuntimeException) \n throw originalEx\n else throw ex2\n } finally {}\n }\n static difference(geom0, geom1) {\n let originalEx = null\n try {\n const result = geom0.difference(geom1)\n return result\n } catch (ex) {\n if (ex instanceof RuntimeException) \n originalEx = ex\n else throw ex\n } finally {}\n try {\n const cbo = new CommonBitsOp(true)\n const resultEP = cbo.difference(geom0, geom1)\n if (!resultEP.isValid()) throw originalEx\n return resultEP\n } catch (ex2) {\n if (ex2 instanceof RuntimeException) \n throw originalEx\n else throw ex2\n } finally {}\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 StringBuffer from '../../../../../java/lang/StringBuffer'\nimport Coordinate from '../../geom/Coordinate'\nimport GeometryLocation from './GeometryLocation'\nimport Double from '../../../../../java/lang/Double'\nimport LineSegment from '../../geom/LineSegment'\nimport Envelope from '../../geom/Envelope'\nimport Distance from '../../algorithm/Distance'\nexport default class FacetSequence {\n constructor() {\n FacetSequence.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._pts = null\n this._start = null\n this._end = null\n if (arguments.length === 2) {\n const pts = arguments[0], start = arguments[1]\n this._pts = pts\n this._start = start\n this._end = start + 1\n } else if (arguments.length === 3) {\n const pts = arguments[0], start = arguments[1], end = arguments[2]\n this._pts = pts\n this._start = start\n this._end = end\n } else if (arguments.length === 4) {\n const geom = arguments[0], pts = arguments[1], start = arguments[2], end = arguments[3]\n this._geom = geom\n this._pts = pts\n this._start = start\n this._end = end\n }\n }\n computeDistanceLineLine(facetSeq, locs) {\n let minDistance = Double.MAX_VALUE\n for (let i = this._start; i < this._end - 1; i++) {\n const p0 = this._pts.getCoordinate(i)\n const p1 = this._pts.getCoordinate(i + 1)\n for (let j = facetSeq._start; j < facetSeq._end - 1; j++) {\n const q0 = facetSeq._pts.getCoordinate(j)\n const q1 = facetSeq._pts.getCoordinate(j + 1)\n const dist = Distance.segmentToSegment(p0, p1, q0, q1)\n if (dist < minDistance) {\n minDistance = dist\n if (locs !== null) this.updateNearestLocationsLineLine(i, p0, p1, facetSeq, j, q0, q1, locs)\n if (minDistance <= 0.0) return minDistance\n }\n }\n }\n return minDistance\n }\n updateNearestLocationsPointLine(pt, facetSeq, i, q0, q1, locs) {\n locs[0] = new GeometryLocation(this._geom, this._start, new Coordinate(pt))\n const seg = new LineSegment(q0, q1)\n const segClosestPoint = seg.closestPoint(pt)\n locs[1] = new GeometryLocation(facetSeq._geom, i, new Coordinate(segClosestPoint))\n }\n size() {\n return this._end - this._start\n }\n getCoordinate(index) {\n return this._pts.getCoordinate(this._start + index)\n }\n nearestLocations(facetSeq) {\n const isPoint = this.isPoint()\n const isPointOther = facetSeq.isPoint()\n const locs = new Array(2).fill(null)\n if (isPoint && isPointOther) {\n const pt = this._pts.getCoordinate(this._start)\n const seqPt = facetSeq._pts.getCoordinate(facetSeq._start)\n locs[0] = new GeometryLocation(this._geom, this._start, new Coordinate(pt))\n locs[1] = new GeometryLocation(facetSeq._geom, facetSeq._start, new Coordinate(seqPt))\n } else if (isPoint) {\n const pt = this._pts.getCoordinate(this._start)\n this.computeDistancePointLine(pt, facetSeq, locs)\n } else if (isPointOther) {\n const seqPt = facetSeq._pts.getCoordinate(facetSeq._start)\n this.computeDistancePointLine(seqPt, this, locs)\n const tmp = locs[0]\n locs[0] = locs[1]\n locs[1] = tmp\n } else {\n this.computeDistanceLineLine(facetSeq, locs)\n }\n return locs\n }\n getEnvelope() {\n const env = new Envelope()\n for (let i = this._start; i < this._end; i++) \n env.expandToInclude(this._pts.getX(i), this._pts.getY(i))\n \n return env\n }\n updateNearestLocationsLineLine(i, p0, p1, facetSeq, j, q0, q1, locs) {\n const seg0 = new LineSegment(p0, p1)\n const seg1 = new LineSegment(q0, q1)\n const closestPt = seg0.closestPoints(seg1)\n locs[0] = new GeometryLocation(this._geom, i, new Coordinate(closestPt[0]))\n locs[1] = new GeometryLocation(facetSeq._geom, j, new Coordinate(closestPt[1]))\n }\n toString() {\n const buf = new StringBuffer()\n buf.append('LINESTRING ( ')\n const p = new Coordinate()\n for (let i = this._start; i < this._end; i++) {\n if (i > this._start) buf.append(', ')\n this._pts.getCoordinate(i, p)\n buf.append(p.x + ' ' + p.y)\n }\n buf.append(' )')\n return buf.toString()\n }\n computeDistancePointLine(pt, facetSeq, locs) {\n let minDistance = Double.MAX_VALUE\n for (let i = facetSeq._start; i < facetSeq._end - 1; i++) {\n const q0 = facetSeq._pts.getCoordinate(i)\n const q1 = facetSeq._pts.getCoordinate(i + 1)\n const dist = Distance.pointToSegment(pt, q0, q1)\n if (dist < minDistance) {\n minDistance = dist\n if (locs !== null) this.updateNearestLocationsPointLine(pt, facetSeq, i, q0, q1, locs)\n if (minDistance <= 0.0) return minDistance\n }\n }\n return minDistance\n }\n isPoint() {\n return this._end - this._start === 1\n }\n distance(facetSeq) {\n const isPoint = this.isPoint()\n const isPointOther = facetSeq.isPoint()\n let distance = null\n if (isPoint && isPointOther) {\n const pt = this._pts.getCoordinate(this._start)\n const seqPt = facetSeq._pts.getCoordinate(facetSeq._start)\n distance = pt.distance(seqPt)\n } else if (isPoint) {\n const pt = this._pts.getCoordinate(this._start)\n distance = this.computeDistancePointLine(pt, facetSeq, null)\n } else if (isPointOther) {\n const seqPt = facetSeq._pts.getCoordinate(facetSeq._start)\n distance = this.computeDistancePointLine(seqPt, this, null)\n } else {\n distance = this.computeDistanceLineLine(facetSeq, null)\n }\n return distance\n }\n}\n","import LineString from '../../geom/LineString'\nimport FacetSequence from './FacetSequence'\nimport STRtree from '../../index/strtree/STRtree'\nimport Point from '../../geom/Point'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class FacetSequenceTreeBuilder {\n static addFacetSequences(geom, pts, sections) {\n let i = 0\n const size = pts.size()\n while (i <= size - 1) {\n let end = i + FacetSequenceTreeBuilder.FACET_SEQUENCE_SIZE + 1\n if (end >= size - 1) end = size\n const sect = new FacetSequence(geom, pts, i, end)\n sections.add(sect)\n i = i + FacetSequenceTreeBuilder.FACET_SEQUENCE_SIZE\n }\n }\n static computeFacetSequences(g) {\n const sections = new ArrayList()\n g.apply(new (class {\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n filter(geom) {\n let seq = null\n if (geom instanceof LineString) {\n seq = geom.getCoordinateSequence()\n FacetSequenceTreeBuilder.addFacetSequences(geom, seq, sections)\n } else if (geom instanceof Point) {\n seq = geom.getCoordinateSequence()\n FacetSequenceTreeBuilder.addFacetSequences(geom, seq, sections)\n }\n }\n })())\n return sections\n }\n static build(g) {\n const tree = new STRtree(FacetSequenceTreeBuilder.STR_TREE_NODE_CAPACITY)\n const sections = FacetSequenceTreeBuilder.computeFacetSequences(g)\n for (let i = sections.iterator(); i.hasNext(); ) {\n const section = i.next()\n tree.insert(section.getEnvelope(), section)\n }\n tree.build()\n return tree\n }\n}\nFacetSequenceTreeBuilder.FACET_SEQUENCE_SIZE = 6\nFacetSequenceTreeBuilder.STR_TREE_NODE_CAPACITY = 4\n","import ItemBoundable from '../index/strtree/ItemBoundable'\nimport FacetSequence from '../operation/distance/FacetSequence'\nimport Coordinate from '../geom/Coordinate'\nimport Double from '../../../../java/lang/Double'\nimport LineSegment from '../geom/LineSegment'\nimport FacetSequenceTreeBuilder from '../operation/distance/FacetSequenceTreeBuilder'\nimport Distance from '../algorithm/Distance'\nimport ItemDistance from '../index/strtree/ItemDistance'\nexport default class MinimumClearance {\n constructor() {\n MinimumClearance.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._minClearance = null\n this._minClearancePts = null\n const geom = arguments[0]\n this._inputGeom = geom\n }\n static getLine(g) {\n const rp = new MinimumClearance(g)\n return rp.getLine()\n }\n static getDistance(g) {\n const rp = new MinimumClearance(g)\n return rp.getDistance()\n }\n getLine() {\n this.compute()\n if (this._minClearancePts === null || this._minClearancePts[0] === null) return this._inputGeom.getFactory().createLineString()\n return this._inputGeom.getFactory().createLineString(this._minClearancePts)\n }\n compute() {\n if (this._minClearancePts !== null) return null\n this._minClearancePts = new Array(2).fill(null)\n this._minClearance = Double.MAX_VALUE\n if (this._inputGeom.isEmpty()) \n return null\n \n const geomTree = FacetSequenceTreeBuilder.build(this._inputGeom)\n const nearest = geomTree.nearestNeighbour(new MinClearanceDistance())\n const mcd = new MinClearanceDistance()\n this._minClearance = mcd.distance(nearest[0], nearest[1])\n this._minClearancePts = mcd.getCoordinates()\n }\n getDistance() {\n this.compute()\n return this._minClearance\n }\n}\nclass MinClearanceDistance {\n constructor() {\n MinClearanceDistance.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._minDist = Double.MAX_VALUE\n this._minPts = new Array(2).fill(null)\n }\n vertexDistance(fs1, fs2) {\n for (let i1 = 0; i1 < fs1.size(); i1++) \n for (let i2 = 0; i2 < fs2.size(); i2++) {\n const p1 = fs1.getCoordinate(i1)\n const p2 = fs2.getCoordinate(i2)\n if (!p1.equals2D(p2)) {\n const d = p1.distance(p2)\n if (d < this._minDist) {\n this._minDist = d\n this._minPts[0] = p1\n this._minPts[1] = p2\n if (d === 0.0) return d\n }\n }\n }\n \n return this._minDist\n }\n getCoordinates() {\n return this._minPts\n }\n segmentDistance(fs1, fs2) {\n for (let i1 = 0; i1 < fs1.size(); i1++) \n for (let i2 = 1; i2 < fs2.size(); i2++) {\n const p = fs1.getCoordinate(i1)\n const seg0 = fs2.getCoordinate(i2 - 1)\n const seg1 = fs2.getCoordinate(i2)\n if (!(p.equals2D(seg0) || p.equals2D(seg1))) {\n const d = Distance.pointToSegment(p, seg0, seg1)\n if (d < this._minDist) {\n this._minDist = d\n this.updatePts(p, seg0, seg1)\n if (d === 0.0) return d\n }\n }\n }\n \n return this._minDist\n }\n distance() {\n if (arguments[0] instanceof ItemBoundable && arguments[1] instanceof ItemBoundable) {\n const b1 = arguments[0], b2 = arguments[1]\n const fs1 = b1.getItem()\n const fs2 = b2.getItem()\n this._minDist = Double.MAX_VALUE\n return this.distance(fs1, fs2)\n } else if (arguments[0] instanceof FacetSequence && arguments[1] instanceof FacetSequence) {\n const fs1 = arguments[0], fs2 = arguments[1]\n this.vertexDistance(fs1, fs2)\n if (fs1.size() === 1 && fs2.size() === 1) return this._minDist\n if (this._minDist <= 0.0) return this._minDist\n this.segmentDistance(fs1, fs2)\n if (this._minDist <= 0.0) return this._minDist\n this.segmentDistance(fs2, fs1)\n return this._minDist\n }\n }\n updatePts(p, seg0, seg1) {\n this._minPts[0] = p\n const seg = new LineSegment(seg0, seg1)\n this._minPts[1] = new Coordinate(seg.closestPoint(p))\n }\n get interfaces_() {\n return [ItemDistance]\n }\n}\nMinimumClearance.MinClearanceDistance = MinClearanceDistance\n","import CoordinateFilter from '../geom/CoordinateFilter'\nimport Coordinate from '../geom/Coordinate'\nimport Double from '../../../../java/lang/Double'\nimport LineSegment from '../geom/LineSegment'\nimport CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter'\nimport Distance from '../algorithm/Distance'\nexport default class SimpleMinimumClearance {\n constructor() {\n SimpleMinimumClearance.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._minClearance = null\n this._minClearancePts = null\n const geom = arguments[0]\n this._inputGeom = geom\n }\n static getLine(g) {\n const rp = new SimpleMinimumClearance(g)\n return rp.getLine()\n }\n static getDistance(g) {\n const rp = new SimpleMinimumClearance(g)\n return rp.getDistance()\n }\n getLine() {\n this.compute()\n return this._inputGeom.getFactory().createLineString(this._minClearancePts)\n }\n updateClearance() {\n if (arguments.length === 3) {\n const candidateValue = arguments[0], p0 = arguments[1], p1 = arguments[2]\n if (candidateValue < this._minClearance) {\n this._minClearance = candidateValue\n this._minClearancePts[0] = new Coordinate(p0)\n this._minClearancePts[1] = new Coordinate(p1)\n }\n } else if (arguments.length === 4) {\n const candidateValue = arguments[0], p = arguments[1], seg0 = arguments[2], seg1 = arguments[3]\n if (candidateValue < this._minClearance) {\n this._minClearance = candidateValue\n this._minClearancePts[0] = new Coordinate(p)\n const seg = new LineSegment(seg0, seg1)\n this._minClearancePts[1] = new Coordinate(seg.closestPoint(p))\n }\n }\n }\n compute() {\n if (this._minClearancePts !== null) return null\n this._minClearancePts = new Array(2).fill(null)\n this._minClearance = Double.MAX_VALUE\n this._inputGeom.apply(new VertexCoordinateFilter(this))\n }\n getDistance() {\n this.compute()\n return this._minClearance\n }\n}\nclass VertexCoordinateFilter {\n constructor() {\n VertexCoordinateFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.smc = null\n const smc = arguments[0]\n this.smc = smc\n }\n filter(coord) {\n this.smc._inputGeom.apply(new ComputeMCCoordinateSequenceFilter(this.smc, coord))\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\nclass ComputeMCCoordinateSequenceFilter {\n constructor() {\n ComputeMCCoordinateSequenceFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.smc = null\n this._queryPt = null\n const smc = arguments[0], queryPt = arguments[1]\n this.smc = smc\n this._queryPt = queryPt\n }\n isGeometryChanged() {\n return false\n }\n checkVertexDistance(vertex) {\n const vertexDist = vertex.distance(this._queryPt)\n if (vertexDist > 0) \n this.smc.updateClearance(vertexDist, this._queryPt, vertex)\n \n }\n filter(seq, i) {\n this.checkVertexDistance(seq.getCoordinate(i))\n if (i > 0) \n this.checkSegmentDistance(seq.getCoordinate(i - 1), seq.getCoordinate(i))\n \n }\n checkSegmentDistance(seg0, seg1) {\n if (this._queryPt.equals2D(seg0) || this._queryPt.equals2D(seg1)) return null\n const segDist = Distance.pointToSegment(this._queryPt, seg1, seg0)\n if (segDist > 0) this.smc.updateClearance(segDist, this._queryPt, seg1, seg0)\n }\n isDone() {\n return false\n }\n get interfaces_() {\n return [CoordinateSequenceFilter]\n }\n}\nSimpleMinimumClearance.VertexCoordinateFilter = VertexCoordinateFilter\nSimpleMinimumClearance.ComputeMCCoordinateSequenceFilter = ComputeMCCoordinateSequenceFilter\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 * 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\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","Error","constructor","message","name","Object","keys","toString","IllegalArgumentException","Long","high","low","toBinaryString","i","mask","result","Double","NaN","isNaN","n","Number","isInfinite","isFinite","MAX_VALUE","POSITIVE_INFINITY","NEGATIVE_INFINITY","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","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","CoordinateXY","CoordinateXYM","_m","CoordinateXYZM","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","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","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","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_","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","cs","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","_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","CommonBitsOp","_returnToOriginalPrecision","returnToOriginalPrecision","computeResultPrecision","EnhancedPrecisionOp","originalEx","cbo","resultEP","ex2","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","FacetSequence","computeDistanceLineLine","facetSeq","q0","updateNearestLocationsLineLine","updateNearestLocationsPointLine","isPoint","isPointOther","seqPt","computeDistancePointLine","FacetSequenceTreeBuilder","addFacetSequences","sections","FACET_SEQUENCE_SIZE","sect","computeFacetSequences","STR_TREE_NODE_CAPACITY","section","MinimumClearance","_minClearance","_minClearancePts","nearest","MinClearanceDistance","mcd","_minDist","_minPts","vertexDistance","fs1","fs2","segmentDistance","updatePts","b1","b2","SimpleMinimumClearance","updateClearance","candidateValue","VertexCoordinateFilter","smc","ComputeMCCoordinateSequenceFilter","_queryPt","queryPt","checkVertexDistance","vertex","vertexDist","checkSegmentDistance","segDist","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","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","version"],"mappings":"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"}