\n * The WKTWriter
outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *
\n * The SFS WKT spec does not define a special tag for {@link LinearRing}s.\n * Under the spec, rings are output as \n * LINESTRING
s.\n */\nexport default class WKTWriter {\n /**\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory)\n }\n\n /**\n * Converts a Geometry
to its Well-known Text representation.\n *\n * @param {Geometry} geometry a Geometry
to process.\n * @return {string} a GeoJSONReader
is parameterized by a GeometryFactory
,\n * to allow it to create Geometry
objects of the appropriate\n * implementation. In particular, the GeometryFactory
determines\n * the PrecisionModel
and SRID
that is used.\n *\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new GeoJSONParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a GeoJSON representation of a {@link Geometry}\n *\n * Will also parse GeoJSON Features/FeatureCollections as custom objects.\n *\n * @param {Object|String} geoJson a GeoJSON Object or String.\n * @return {Geometry|Object} a Geometry or Feature/FeatureCollection representation.
\n * @memberof module:org/locationtech/jts/io/GeoJSONReader#\n */\n read(geoJson) {\n const geometry = this.parser.read(geoJson)\n return geometry\n }\n}\n","/**\n * @module org/locationtech/jts/io/GeoJSONWriter\n */\n\nimport GeoJSONParser from './GeoJSONParser'\n\n/**\n * Writes the GeoJSON representation of a {@link Geometry}. The\n * The GeoJSON format is defined here.\n */\nexport default class GeoJSONWriter {\n /**\n * The GeoJSONWriter
outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\n constructor() {\n this.parser = new GeoJSONParser(this.geometryFactory)\n }\n\n /**\n * Converts a Geometry
to its GeoJSON representation.\n *\n * @param {Geometry}\n * geometry a Geometry
to process.\n * @return {Object} The GeoJSON representation of the Geometry.\n * @memberof module:org/locationtech/jts/io/GeoJSONWriter#\n */\n write(geometry) {\n return this.parser.write(geometry)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTReader\n */\n\nimport GeometryFactory from '../geom/GeometryFactory'\nimport WKTParser from './WKTParser'\n\n/**\n * Converts a geometry in Well-Known Text format to a {@link Geometry}.\n * WKTReader
supports extracting Geometry
objects\n * from either {@link Reader}s or {@link String}s. This allows it to function\n * as a parser to read Geometry
objects from text blocks embedded\n * in other data formats (e.g. XML).\n */\n\nexport default class WKTReader {\n /**\n * A WKTReader
is parameterized by a GeometryFactory
,\n * to allow it to create Geometry
objects of the appropriate\n * implementation. In particular, the GeometryFactory
determines\n * the PrecisionModel
and SRID
that is used.\n * @param {GeometryFactory} geometryFactory\n */\n constructor(geometryFactory) {\n this.parser = new WKTParser(geometryFactory || new GeometryFactory())\n }\n\n /**\n * Reads a Well-Known Text representation of a {@link Geometry}\n *\n * @param {string}\n * wkt a Geometry
read from\n * string.
\n * @memberof module:org/locationtech/jts/io/WKTReader#\n */\n read(wkt) {\n return this.parser.read(wkt)\n }\n}\n","/* eslint-disable no-undef */\n\n/**\n * @module org/locationtech/jts/io/OL3Parser\n */\n\nimport Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\n\nfunction p2c(p) {\n return [p.x, p.y]\n}\n\nexport default class OL3Parser {\n /**\n * OpenLayers Geometry parser and writer\n * @param {GeometryFactory} geometryFactory\n * @param {ol} olReference\n */\n constructor(geometryFactory, olReference) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.ol = olReference || (typeof ol !== 'undefined' && ol)\n }\n\n /**\n * Inject OpenLayers geom classes\n */\n inject(Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection) {\n this.ol = {\n geom: {\n Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection\n }\n }\n }\n\n /**\n * @param geometry {ol.geom.Geometry}\n * @return {Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n read(geometry) {\n const ol = this.ol\n if (geometry instanceof ol.geom.Point)\n return this.convertFromPoint(geometry)\n else if (geometry instanceof ol.geom.LineString)\n return this.convertFromLineString(geometry)\n else if (geometry instanceof ol.geom.LinearRing)\n return this.convertFromLinearRing(geometry)\n else if (geometry instanceof ol.geom.Polygon)\n return this.convertFromPolygon(geometry)\n else if (geometry instanceof ol.geom.MultiPoint)\n return this.convertFromMultiPoint(geometry)\n else if (geometry instanceof ol.geom.MultiLineString)\n return this.convertFromMultiLineString(geometry)\n else if (geometry instanceof ol.geom.MultiPolygon)\n return this.convertFromMultiPolygon(geometry)\n else if (geometry instanceof ol.geom.GeometryCollection) return this.convertFromCollection(geometry)\n }\n\n convertFromPoint(point) {\n const coordinates = point.getCoordinates()\n return this.geometryFactory.createPoint(new Coordinate(coordinates[0], coordinates[1]))\n }\n\n convertFromLineString(lineString) {\n return this.geometryFactory.createLineString(lineString.getCoordinates().map(function(coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromLinearRing(linearRing) {\n return this.geometryFactory.createLinearRing(linearRing.getCoordinates().map(function(coordinates) {\n return new Coordinate(coordinates[0], coordinates[1])\n }))\n }\n\n convertFromPolygon(polygon) {\n const linearRings = polygon.getLinearRings()\n let shell = null\n const holes = []\n for (let i = 0; i < linearRings.length; i++) {\n const linearRing = this.convertFromLinearRing(linearRings[i])\n if (i === 0)\n shell = linearRing\n else holes.push(linearRing)\n }\n return this.geometryFactory.createPolygon(shell, holes)\n }\n\n convertFromMultiPoint(multiPoint) {\n const points = multiPoint.getPoints().map(function(point) {\n return this.convertFromPoint(point)\n }, this)\n return this.geometryFactory.createMultiPoint(points)\n }\n\n convertFromMultiLineString(multiLineString) {\n const lineStrings = multiLineString.getLineStrings().map(function(lineString) {\n return this.convertFromLineString(lineString)\n }, this)\n return this.geometryFactory.createMultiLineString(lineStrings)\n }\n\n convertFromMultiPolygon(multiPolygon) {\n const polygons = multiPolygon.getPolygons().map(function(polygon) {\n return this.convertFromPolygon(polygon)\n }, this)\n return this.geometryFactory.createMultiPolygon(polygons)\n }\n\n convertFromCollection(collection) {\n const geometries = collection.getGeometries().map(function(geometry) {\n return this.read(geometry)\n }, this)\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n\n /**\n * @param geometry\n * {Geometry}\n * @return {ol.geom.Geometry}\n * @memberof module:org/locationtech/jts/io/OL3Parser#\n */\n write(geometry) {\n if (geometry.getGeometryType() === 'Point')\n return this.convertToPoint(geometry.getCoordinate())\n else if (geometry.getGeometryType() === 'LineString')\n return this.convertToLineString(geometry)\n else if (geometry.getGeometryType() === 'LinearRing')\n return this.convertToLinearRing(geometry)\n else if (geometry.getGeometryType() === 'Polygon')\n return this.convertToPolygon(geometry)\n else if (geometry.getGeometryType() === 'MultiPoint')\n return this.convertToMultiPoint(geometry)\n else if (geometry.getGeometryType() === 'MultiLineString')\n return this.convertToMultiLineString(geometry)\n else if (geometry.getGeometryType() === 'MultiPolygon')\n return this.convertToMultiPolygon(geometry)\n else if (geometry.getGeometryType() === 'GeometryCollection') return this.convertToCollection(geometry)\n }\n\n convertToPoint(coordinate) {\n return new this.ol.geom.Point([coordinate.x, coordinate.y])\n }\n\n convertToLineString(lineString) {\n const points = lineString._points._coordinates.map(p2c)\n return new this.ol.geom.LineString(points)\n }\n\n convertToLinearRing(linearRing) {\n const points = linearRing._points._coordinates.map(p2c)\n return new this.ol.geom.LinearRing(points)\n }\n\n convertToPolygon(polygon) {\n const rings = [polygon._shell._points._coordinates.map(p2c)]\n for (let i = 0; i < polygon._holes.length; i++) rings.push(polygon._holes[i]._points._coordinates.map(p2c))\n\n return new this.ol.geom.Polygon(rings)\n }\n\n convertToMultiPoint(multiPoint) {\n return new this.ol.geom.MultiPoint(multiPoint.getCoordinates().map(p2c))\n }\n\n convertToMultiLineString(multiLineString) {\n const lineStrings = []\n for (let i = 0; i < multiLineString._geometries.length; i++) lineStrings.push(this.convertToLineString(multiLineString._geometries[i]).getCoordinates())\n\n return new this.ol.geom.MultiLineString(lineStrings)\n }\n\n convertToMultiPolygon(multiPolygon) {\n const polygons = []\n for (let i = 0; i < multiPolygon._geometries.length; i++) polygons.push(this.convertToPolygon(multiPolygon._geometries[i]).getCoordinates())\n\n return new this.ol.geom.MultiPolygon(polygons)\n }\n\n convertToCollection(geometryCollection) {\n const geometries = []\n for (let i = 0; i < geometryCollection._geometries.length; i++) {\n const geometry = geometryCollection._geometries[i]\n geometries.push(this.write(geometry))\n }\n return new this.ol.geom.GeometryCollection(geometries)\n }\n}\n","import Assert from '../util/Assert'\nexport default class SegmentPointComparator {\n static relativeSign(x0, x1) {\n if (x0 < x1) return -1\n if (x0 > x1) return 1\n return 0\n }\n static compare(octant, p0, p1) {\n if (p0.equals2D(p1)) return 0\n const xSign = SegmentPointComparator.relativeSign(p0.x, p1.x)\n const ySign = SegmentPointComparator.relativeSign(p0.y, p1.y)\n switch (octant) {\n case 0:\n return SegmentPointComparator.compareValue(xSign, ySign)\n case 1:\n return SegmentPointComparator.compareValue(ySign, xSign)\n case 2:\n return SegmentPointComparator.compareValue(ySign, -xSign)\n case 3:\n return SegmentPointComparator.compareValue(-xSign, ySign)\n case 4:\n return SegmentPointComparator.compareValue(-xSign, -ySign)\n case 5:\n return SegmentPointComparator.compareValue(-ySign, -xSign)\n case 6:\n return SegmentPointComparator.compareValue(-ySign, xSign)\n case 7:\n return SegmentPointComparator.compareValue(xSign, -ySign)\n }\n Assert.shouldNeverReachHere('invalid octant value')\n return 0\n }\n static compareValue(compareSign0, compareSign1) {\n if (compareSign0 < 0) return -1\n if (compareSign0 > 0) return 1\n if (compareSign1 < 0) return -1\n if (compareSign1 > 0) return 1\n return 0\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport SegmentPointComparator from './SegmentPointComparator'\nimport Comparable from '../../../../java/lang/Comparable'\nexport default class SegmentNode {\n constructor() {\n SegmentNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._segString = null\n this.coord = null\n this.segmentIndex = null\n this._segmentOctant = null\n this._isInterior = null\n const segString = arguments[0], coord = arguments[1], segmentIndex = arguments[2], segmentOctant = arguments[3]\n this._segString = segString\n this.coord = new Coordinate(coord)\n this.segmentIndex = segmentIndex\n this._segmentOctant = segmentOctant\n this._isInterior = !coord.equals2D(segString.getCoordinate(segmentIndex))\n }\n getCoordinate() {\n return this.coord\n }\n print(out) {\n out.print(this.coord)\n out.print(' seg # = ' + this.segmentIndex)\n }\n compareTo(obj) {\n const other = obj\n if (this.segmentIndex < other.segmentIndex) return -1\n if (this.segmentIndex > other.segmentIndex) return 1\n if (this.coord.equals2D(other.coord)) return 0\n if (!this._isInterior) return -1\n if (!other._isInterior) return 1\n return SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord)\n }\n isEndPoint(maxSegmentIndex) {\n if (this.segmentIndex === 0 && !this._isInterior) return true\n if (this.segmentIndex === maxSegmentIndex) return true\n return false\n }\n toString() {\n return this.segmentIndex + ':' + this.coord.toString()\n }\n isInterior() {\n return this._isInterior\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport SegmentNode from './SegmentNode'\nimport Iterator from '../../../../java/util/Iterator'\nimport Coordinate from '../geom/Coordinate'\nimport NodedSegmentString from './NodedSegmentString'\nimport Integer from '../../../../java/lang/Integer'\nimport UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nimport Assert from '../util/Assert'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class SegmentNodeList {\n constructor() {\n SegmentNodeList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n this._edge = null\n const edge = arguments[0]\n this._edge = edge\n }\n getSplitCoordinates() {\n const coordList = new CoordinateList()\n this.addEndpoints()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n this.addEdgeCoordinates(eiPrev, ei, coordList)\n eiPrev = ei\n }\n return coordList.toCoordinateArray()\n }\n addCollapsedNodes() {\n const collapsedVertexIndexes = new ArrayList()\n this.findCollapsesFromInsertedNodes(collapsedVertexIndexes)\n this.findCollapsesFromExistingVertices(collapsedVertexIndexes)\n for (let it = collapsedVertexIndexes.iterator(); it.hasNext(); ) {\n const vertexIndex = it.next().intValue()\n this.add(this._edge.getCoordinate(vertexIndex), vertexIndex)\n }\n }\n createSplitEdgePts(ei0, ei1) {\n let npts = ei1.segmentIndex - ei0.segmentIndex + 2\n if (npts === 2) return [new Coordinate(ei0.coord), new Coordinate(ei1.coord)]\n const lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex)\n const useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt)\n if (!useIntPt1) \n npts--\n \n const pts = new Array(npts).fill(null)\n let ipt = 0\n pts[ipt++] = new Coordinate(ei0.coord)\n for (let i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) \n pts[ipt++] = this._edge.getCoordinate(i)\n \n if (useIntPt1) pts[ipt] = new Coordinate(ei1.coord)\n return pts\n }\n print(out) {\n out.println('Intersections:')\n for (let it = this.iterator(); it.hasNext(); ) {\n const ei = it.next()\n ei.print(out)\n }\n }\n findCollapsesFromExistingVertices(collapsedVertexIndexes) {\n for (let i = 0; i < this._edge.size() - 2; i++) {\n const p0 = this._edge.getCoordinate(i)\n const p1 = this._edge.getCoordinate(i + 1)\n const p2 = this._edge.getCoordinate(i + 2)\n if (p0.equals2D(p2)) \n collapsedVertexIndexes.add(Integer.valueOf(i + 1))\n \n }\n }\n addEdgeCoordinates(ei0, ei1, coordList) {\n const pts = this.createSplitEdgePts(ei0, ei1)\n coordList.add(pts, false)\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n addSplitEdges(edgeList) {\n this.addEndpoints()\n this.addCollapsedNodes()\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const newEdge = this.createSplitEdge(eiPrev, ei)\n edgeList.add(newEdge)\n eiPrev = ei\n }\n }\n findCollapseIndex(ei0, ei1, collapsedVertexIndex) {\n if (!ei0.coord.equals2D(ei1.coord)) return false\n let numVerticesBetween = ei1.segmentIndex - ei0.segmentIndex\n if (!ei1.isInterior()) \n numVerticesBetween--\n \n if (numVerticesBetween === 1) {\n collapsedVertexIndex[0] = ei0.segmentIndex + 1\n return true\n }\n return false\n }\n findCollapsesFromInsertedNodes(collapsedVertexIndexes) {\n const collapsedVertexIndex = new Array(1).fill(null)\n const it = this.iterator()\n let eiPrev = it.next()\n while (it.hasNext()) {\n const ei = it.next()\n const isCollapsed = this.findCollapseIndex(eiPrev, ei, collapsedVertexIndex)\n if (isCollapsed) collapsedVertexIndexes.add(Integer.valueOf(collapsedVertexIndex[0]))\n eiPrev = ei\n }\n }\n getEdge() {\n return this._edge\n }\n addEndpoints() {\n const maxSegIndex = this._edge.size() - 1\n this.add(this._edge.getCoordinate(0), 0)\n this.add(this._edge.getCoordinate(maxSegIndex), maxSegIndex)\n }\n createSplitEdge(ei0, ei1) {\n const pts = this.createSplitEdgePts(ei0, ei1)\n return new NodedSegmentString(pts, this._edge.getData())\n }\n add(intPt, segmentIndex) {\n const eiNew = new SegmentNode(this._edge, intPt, segmentIndex, this._edge.getSegmentOctant(segmentIndex))\n const ei = this._nodeMap.get(eiNew)\n if (ei !== null) {\n Assert.isTrue(ei.coord.equals2D(intPt), 'Found equal nodes with different coordinates')\n return ei\n }\n this._nodeMap.put(eiNew, eiNew)\n return eiNew\n }\n checkSplitEdgesCorrectness(splitEdges) {\n const edgePts = this._edge.getCoordinates()\n const split0 = splitEdges.get(0)\n const pt0 = split0.getCoordinate(0)\n if (!pt0.equals2D(edgePts[0])) throw new RuntimeException('bad split edge start point at ' + pt0)\n const splitn = splitEdges.get(splitEdges.size() - 1)\n const splitnPts = splitn.getCoordinates()\n const ptn = splitnPts[splitnPts.length - 1]\n if (!ptn.equals2D(edgePts[edgePts.length - 1])) throw new RuntimeException('bad split edge end point at ' + ptn)\n }\n}\nclass NodeVertexIterator {\n constructor() {\n NodeVertexIterator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeList = null\n this._edge = null\n this._nodeIt = null\n this._currNode = null\n this._nextNode = null\n this._currSegIndex = 0\n const nodeList = arguments[0]\n this._nodeList = nodeList\n this._edge = nodeList.getEdge()\n this._nodeIt = nodeList.iterator()\n this.readNextNode()\n }\n next() {\n if (this._currNode === null) {\n this._currNode = this._nextNode\n this._currSegIndex = this._currNode.segmentIndex\n this.readNextNode()\n return this._currNode\n }\n if (this._nextNode === null) return null\n if (this._nextNode.segmentIndex === this._currNode.segmentIndex) {\n this._currNode = this._nextNode\n this._currSegIndex = this._currNode.segmentIndex\n this.readNextNode()\n return this._currNode\n }\n if (this._nextNode.segmentIndex > this._currNode.segmentIndex) {}\n return null\n }\n remove() {\n throw new UnsupportedOperationException(this.getClass().getName())\n }\n hasNext() {\n if (this._nextNode === null) return false\n return true\n }\n readNextNode() {\n if (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null\n }\n get interfaces_() {\n return [Iterator]\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nexport default class Octant {\n static octant() {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const dx = arguments[0], dy = arguments[1]\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the octant for point ( ' + dx + ', ' + dy + ' )')\n const adx = Math.abs(dx)\n const ady = Math.abs(dy)\n if (dx >= 0) \n if (dy >= 0) \n if (adx >= ady) return 0; else return 1\n else \n if (adx >= ady) return 7; else return 6\n \n else \n if (dy >= 0) \n if (adx >= ady) return 3; else return 2\n else \n if (adx >= ady) return 4; else return 5\n \n \n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const p0 = arguments[0], p1 = arguments[1]\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n if (dx === 0.0 && dy === 0.0) throw new IllegalArgumentException('Cannot compute the octant for two identical points ' + p0)\n return Octant.octant(dx, dy)\n }\n }\n}\n","export default class SegmentString {\n getCoordinates() {}\n size() {}\n getCoordinate(i) {}\n isClosed() {}\n setData(data) {}\n getData() {}\n}\n","import SegmentString from './SegmentString'\nexport default class NodableSegmentString {\n addIntersection(intPt, segmentIndex) {}\n get interfaces_() {\n return [SegmentString]\n }\n}\n","import SegmentNodeList from './SegmentNodeList'\nimport WKTWriter from '../io/WKTWriter'\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence'\nimport Coordinate from '../geom/Coordinate'\nimport Octant from './Octant'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport NodableSegmentString from './NodableSegmentString'\nexport default class NodedSegmentString {\n constructor() {\n NodedSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeList = new SegmentNodeList(this)\n this._pts = null\n this._data = null\n const pts = arguments[0], data = arguments[1]\n this._pts = pts\n this._data = data\n }\n static getNodedSubstrings() {\n if (arguments.length === 1) {\n const segStrings = arguments[0]\n const resultEdgelist = new ArrayList()\n NodedSegmentString.getNodedSubstrings(segStrings, resultEdgelist)\n return resultEdgelist\n } else if (arguments.length === 2) {\n const segStrings = arguments[0], resultEdgelist = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n ss.getNodeList().addSplitEdges(resultEdgelist)\n }\n }\n }\n getCoordinates() {\n return this._pts\n }\n size() {\n return this._pts.length\n }\n getCoordinate(i) {\n return this._pts[i]\n }\n isClosed() {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\n getSegmentOctant(index) {\n if (index === this._pts.length - 1) return -1\n return this.safeOctant(this.getCoordinate(index), this.getCoordinate(index + 1))\n }\n setData(data) {\n this._data = data\n }\n safeOctant(p0, p1) {\n if (p0.equals2D(p1)) return 0\n return Octant.octant(p0, p1)\n }\n getData() {\n return this._data\n }\n addIntersection() {\n if (arguments.length === 2) {\n const intPt = arguments[0], segmentIndex = arguments[1]\n this.addIntersectionNode(intPt, segmentIndex)\n } else if (arguments.length === 4) {\n const li = arguments[0], segmentIndex = arguments[1], geomIndex = arguments[2], intIndex = arguments[3]\n const intPt = new Coordinate(li.getIntersection(intIndex))\n this.addIntersection(intPt, segmentIndex)\n }\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n getNodeList() {\n return this._nodeList\n }\n addIntersectionNode(intPt, segmentIndex) {\n let normalizedSegmentIndex = segmentIndex\n const nextSegIndex = normalizedSegmentIndex + 1\n if (nextSegIndex < this._pts.length) {\n const nextPt = this._pts[nextSegIndex]\n if (intPt.equals2D(nextPt)) \n normalizedSegmentIndex = nextSegIndex\n \n }\n const ei = this._nodeList.add(intPt, normalizedSegmentIndex)\n return ei\n }\n addIntersections(li, segmentIndex, geomIndex) {\n for (let i = 0; i < li.getIntersectionNum(); i++) \n this.addIntersection(li, segmentIndex, geomIndex, i)\n \n }\n get interfaces_() {\n return [NodableSegmentString]\n }\n}\n","import LineSegment from '../../geom/LineSegment'\nexport default class MonotoneChainOverlapAction {\n constructor() {\n MonotoneChainOverlapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._overlapSeg1 = new LineSegment()\n this._overlapSeg2 = new LineSegment()\n }\n overlap() {\n if (arguments.length === 2) {\n const seg1 = arguments[0], seg2 = arguments[1]\n } else if (arguments.length === 4) {\n const mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3]\n mc1.getLineSegment(start1, this._overlapSeg1)\n mc2.getLineSegment(start2, this._overlapSeg2)\n this.overlap(this._overlapSeg1, this._overlapSeg2)\n }\n }\n}\n","import Envelope from '../../geom/Envelope'\nexport default class MonotoneChain {\n constructor() {\n MonotoneChain.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._start = null\n this._end = null\n this._env = null\n this._context = null\n this._id = null\n const pts = arguments[0], start = arguments[1], end = arguments[2], context = arguments[3]\n this._pts = pts\n this._start = start\n this._end = end\n this._context = context\n }\n getLineSegment(index, ls) {\n ls.p0 = this._pts[index]\n ls.p1 = this._pts[index + 1]\n }\n computeSelect(searchEnv, start0, end0, mcs) {\n const p0 = this._pts[start0]\n const p1 = this._pts[end0]\n if (end0 - start0 === 1) {\n mcs.select(this, start0)\n return null\n }\n if (!searchEnv.intersects(p0, p1)) return null\n const mid = Math.trunc((start0 + end0) / 2)\n if (start0 < mid) \n this.computeSelect(searchEnv, start0, mid, mcs)\n \n if (mid < end0) \n this.computeSelect(searchEnv, mid, end0, mcs)\n \n }\n getCoordinates() {\n const coord = new Array(this._end - this._start + 1).fill(null)\n let index = 0\n for (let i = this._start; i <= this._end; i++) \n coord[index++] = this._pts[i]\n \n return coord\n }\n computeOverlaps() {\n if (arguments.length === 2) {\n const mc = arguments[0], mco = arguments[1]\n this.computeOverlaps(this._start, this._end, mc, mc._start, mc._end, mco)\n } else if (arguments.length === 6) {\n const start0 = arguments[0], end0 = arguments[1], mc = arguments[2], start1 = arguments[3], end1 = arguments[4], mco = arguments[5]\n if (end0 - start0 === 1 && end1 - start1 === 1) {\n mco.overlap(this, start0, mc, start1)\n return null\n }\n if (!this.overlaps(start0, end0, mc, start1, end1)) return null\n const mid0 = Math.trunc((start0 + end0) / 2)\n const mid1 = Math.trunc((start1 + end1) / 2)\n if (start0 < mid0) {\n if (start1 < mid1) this.computeOverlaps(start0, mid0, mc, start1, mid1, mco)\n if (mid1 < end1) this.computeOverlaps(start0, mid0, mc, mid1, end1, mco)\n }\n if (mid0 < end0) {\n if (start1 < mid1) this.computeOverlaps(mid0, end0, mc, start1, mid1, mco)\n if (mid1 < end1) this.computeOverlaps(mid0, end0, mc, mid1, end1, mco)\n }\n }\n }\n setId(id) {\n this._id = id\n }\n select(searchEnv, mcs) {\n this.computeSelect(searchEnv, this._start, this._end, mcs)\n }\n getEnvelope() {\n if (this._env === null) {\n const p0 = this._pts[this._start]\n const p1 = this._pts[this._end]\n this._env = new Envelope(p0, p1)\n }\n return this._env\n }\n overlaps(start0, end0, mc, start1, end1) {\n return Envelope.intersects(this._pts[start0], this._pts[end0], mc._pts[start1], mc._pts[end1])\n }\n getEndIndex() {\n return this._end\n }\n getStartIndex() {\n return this._start\n }\n getContext() {\n return this._context\n }\n getId() {\n return this._id\n }\n}\n","import MonotoneChain from './MonotoneChain'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Quadrant from '../../geomgraph/Quadrant'\nexport default class MonotoneChainBuilder {\n static findChainEnd(pts, start) {\n let safeStart = start\n while (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) \n safeStart++\n \n if (safeStart >= pts.length - 1) \n return pts.length - 1\n \n const chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1])\n let last = start + 1\n while (last < pts.length) {\n if (!pts[last - 1].equals2D(pts[last])) {\n const quad = Quadrant.quadrant(pts[last - 1], pts[last])\n if (quad !== chainQuad) break\n }\n last++\n }\n return last - 1\n }\n static getChains() {\n if (arguments.length === 1) {\n const pts = arguments[0]\n return MonotoneChainBuilder.getChains(pts, null)\n } else if (arguments.length === 2) {\n const pts = arguments[0], context = arguments[1]\n const mcList = new ArrayList()\n let chainStart = 0\n do {\n const chainEnd = MonotoneChainBuilder.findChainEnd(pts, chainStart)\n const mc = new MonotoneChain(pts, chainStart, chainEnd, context)\n mcList.add(mc)\n chainStart = chainEnd\n } while (chainStart < pts.length - 1)\n return mcList\n }\n }\n}\n","export default class Noder {\n computeNodes(segStrings) {}\n getNodedSubstrings() {}\n}\n","import Noder from './Noder'\nexport default class SinglePassNoder {\n constructor() {\n SinglePassNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._segInt = null\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const segInt = arguments[0]\n this.setSegmentIntersector(segInt)\n }\n }\n setSegmentIntersector(segInt) {\n this._segInt = segInt\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import STRtree from '../index/strtree/STRtree'\nimport NodedSegmentString from './NodedSegmentString'\nimport MonotoneChainOverlapAction from '../index/chain/MonotoneChainOverlapAction'\nimport MonotoneChainBuilder from '../index/chain/MonotoneChainBuilder'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport SinglePassNoder from './SinglePassNoder'\nexport default class MCIndexNoder extends SinglePassNoder {\n constructor() {\n super()\n MCIndexNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._monoChains = new ArrayList()\n this._index = new STRtree()\n this._idCounter = 0\n this._nodedSegStrings = null\n this._nOverlaps = 0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const si = arguments[0]\n SinglePassNoder.constructor_.call(this, si)\n }\n }\n getMonotoneChains() {\n return this._monoChains\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n getIndex() {\n return this._index\n }\n add(segStr) {\n const segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr)\n for (let i = segChains.iterator(); i.hasNext(); ) {\n const mc = i.next()\n mc.setId(this._idCounter++)\n this._index.insert(mc.getEnvelope(), mc)\n this._monoChains.add(mc)\n }\n }\n computeNodes(inputSegStrings) {\n this._nodedSegStrings = inputSegStrings\n for (let i = inputSegStrings.iterator(); i.hasNext(); ) \n this.add(i.next())\n \n this.intersectChains()\n }\n intersectChains() {\n const overlapAction = new SegmentOverlapAction(this._segInt)\n for (let i = this._monoChains.iterator(); i.hasNext(); ) {\n const queryChain = i.next()\n const overlapChains = this._index.query(queryChain.getEnvelope())\n for (let j = overlapChains.iterator(); j.hasNext(); ) {\n const testChain = j.next()\n if (testChain.getId() > queryChain.getId()) {\n queryChain.computeOverlaps(testChain, overlapAction)\n this._nOverlaps++\n }\n if (this._segInt.isDone()) return null\n }\n }\n }\n}\nclass SegmentOverlapAction extends MonotoneChainOverlapAction {\n constructor() {\n super()\n SegmentOverlapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._si = null\n const si = arguments[0]\n this._si = si\n }\n overlap() {\n if (arguments.length === 4) {\n const mc1 = arguments[0], start1 = arguments[1], mc2 = arguments[2], start2 = arguments[3]\n const ss1 = mc1.getContext()\n const ss2 = mc2.getContext()\n this._si.processIntersections(ss1, start1, ss2, start2)\n } else {\n return super.overlap.apply(this, arguments)\n }\n }\n}\nMCIndexNoder.SegmentOverlapAction = SegmentOverlapAction\n","import hasInterface from '../../../../hasInterface'\nimport Collection from '../../../../java/util/Collection'\nimport Noder from './Noder'\nimport Coordinate from '../geom/Coordinate'\nimport NodedSegmentString from './NodedSegmentString'\nimport System from '../../../../java/lang/System'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class ScaledNoder {\n constructor() {\n ScaledNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._noder = null\n this._scaleFactor = null\n this._offsetX = null\n this._offsetY = null\n this._isScaled = false\n if (arguments.length === 2) {\n const noder = arguments[0], scaleFactor = arguments[1]\n ScaledNoder.constructor_.call(this, noder, scaleFactor, 0, 0)\n } else if (arguments.length === 4) {\n const noder = arguments[0], scaleFactor = arguments[1], offsetX = arguments[2], offsetY = arguments[3]\n this._noder = noder\n this._scaleFactor = scaleFactor\n this._isScaled = !this.isIntegerPrecision()\n }\n }\n rescale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.rescale(ss.getCoordinates())\n }\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n for (let i = 0; i < pts.length; i++) {\n pts[i].x = pts[i].x / this._scaleFactor + this._offsetX\n pts[i].y = pts[i].y / this._scaleFactor + this._offsetY\n }\n if (pts.length === 2 && pts[0].equals2D(pts[1])) \n System.out.println(pts)\n \n }\n }\n scale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n const nodedSegmentStrings = new ArrayList(segStrings.size())\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n nodedSegmentStrings.add(new NodedSegmentString(this.scale(ss.getCoordinates()), ss.getData()))\n }\n return nodedSegmentStrings\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n const roundPts = new Array(pts.length).fill(null)\n for (let i = 0; i < pts.length; i++) \n roundPts[i] = new Coordinate(Math.round((pts[i].x - this._offsetX) * this._scaleFactor), Math.round((pts[i].y - this._offsetY) * this._scaleFactor), pts[i].getZ())\n \n const roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts)\n return roundPtsNoDup\n }\n }\n isIntegerPrecision() {\n return this._scaleFactor === 1.0\n }\n getNodedSubstrings() {\n const splitSS = this._noder.getNodedSubstrings()\n if (this._isScaled) this.rescale(splitSS)\n return splitSS\n }\n computeNodes(inputSegStrings) {\n let intSegStrings = inputSegStrings\n if (this._isScaled) intSegStrings = this.scale(inputSegStrings)\n this._noder.computeNodes(intSegStrings)\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import LineString from '../geom/LineString'\nimport BoundaryNodeRule from '../algorithm/BoundaryNodeRule'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport TreeMap from '../../../../java/util/TreeMap'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class BoundaryOp {\n constructor() {\n BoundaryOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._geomFact = null\n this._bnRule = null\n this._endpointMap = null\n if (arguments.length === 1) {\n const geom = arguments[0]\n BoundaryOp.constructor_.call(this, geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE)\n } else if (arguments.length === 2) {\n const geom = arguments[0], bnRule = arguments[1]\n this._geom = geom\n this._geomFact = geom.getFactory()\n this._bnRule = bnRule\n }\n }\n static getBoundary() {\n if (arguments.length === 1) {\n const g = arguments[0]\n const bop = new BoundaryOp(g)\n return bop.getBoundary()\n } else if (arguments.length === 2) {\n const g = arguments[0], bnRule = arguments[1]\n const bop = new BoundaryOp(g, bnRule)\n return bop.getBoundary()\n }\n }\n boundaryMultiLineString(mLine) {\n if (this._geom.isEmpty()) \n return this.getEmptyMultiPoint()\n \n const bdyPts = this.computeBoundaryCoordinates(mLine)\n if (bdyPts.length === 1) \n return this._geomFact.createPoint(bdyPts[0])\n \n return this._geomFact.createMultiPointFromCoords(bdyPts)\n }\n getBoundary() {\n if (this._geom instanceof LineString) return this.boundaryLineString(this._geom)\n if (this._geom instanceof MultiLineString) return this.boundaryMultiLineString(this._geom)\n return this._geom.getBoundary()\n }\n boundaryLineString(line) {\n if (this._geom.isEmpty()) \n return this.getEmptyMultiPoint()\n \n if (line.isClosed()) {\n const closedEndpointOnBoundary = this._bnRule.isInBoundary(2)\n if (closedEndpointOnBoundary) \n return line.getStartPoint()\n else \n return this._geomFact.createMultiPoint()\n \n }\n return this._geomFact.createMultiPoint([line.getStartPoint(), line.getEndPoint()])\n }\n getEmptyMultiPoint() {\n return this._geomFact.createMultiPoint()\n }\n computeBoundaryCoordinates(mLine) {\n const bdyPts = new ArrayList()\n this._endpointMap = new TreeMap()\n for (let i = 0; i < mLine.getNumGeometries(); i++) {\n const line = mLine.getGeometryN(i)\n if (line.getNumPoints() === 0) continue\n this.addEndpoint(line.getCoordinateN(0))\n this.addEndpoint(line.getCoordinateN(line.getNumPoints() - 1))\n }\n for (let it = this._endpointMap.entrySet().iterator(); it.hasNext(); ) {\n const entry = it.next()\n const counter = entry.getValue()\n const valence = counter.count\n if (this._bnRule.isInBoundary(valence)) \n bdyPts.add(entry.getKey())\n \n }\n return CoordinateArrays.toCoordinateArray(bdyPts)\n }\n addEndpoint(pt) {\n let counter = this._endpointMap.get(pt)\n if (counter === null) {\n counter = new Counter()\n this._endpointMap.put(pt, counter)\n }\n counter.count++\n }\n}\nclass Counter {\n constructor() {\n Counter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.count = null\n }\n}\n","import TreeSet from '../../../../java/util/TreeSet'\nimport LineString from '../geom/LineString'\nimport hasInterface from '../../../../hasInterface'\nimport MultiPoint from '../geom/MultiPoint'\nimport GeometryGraph from '../geomgraph/GeometryGraph'\nimport GeometryCollection from '../geom/GeometryCollection'\nimport Polygonal from '../geom/Polygonal'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter'\nimport TreeMap from '../../../../java/util/TreeMap'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class IsSimpleOp {\n constructor() {\n IsSimpleOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._isClosedEndpointsInInterior = true\n this._nonSimpleLocation = null\n if (arguments.length === 1) {\n const geom = arguments[0]\n this._inputGeom = geom\n } else if (arguments.length === 2) {\n const geom = arguments[0], boundaryNodeRule = arguments[1]\n this._inputGeom = geom\n this._isClosedEndpointsInInterior = !boundaryNodeRule.isInBoundary(2)\n }\n }\n static isSimple() {\n if (arguments.length === 1) {\n const geom = arguments[0]\n const op = new IsSimpleOp(geom)\n return op.isSimple()\n } else if (arguments.length === 2) {\n const geom = arguments[0], boundaryNodeRule = arguments[1]\n const op = new IsSimpleOp(geom, boundaryNodeRule)\n return op.isSimple()\n }\n }\n isSimpleMultiPoint(mp) {\n if (mp.isEmpty()) return true\n const points = new TreeSet()\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const pt = mp.getGeometryN(i)\n const p = pt.getCoordinate()\n if (points.contains(p)) {\n this._nonSimpleLocation = p\n return false\n }\n points.add(p)\n }\n return true\n }\n isSimplePolygonal(geom) {\n const rings = LinearComponentExtracter.getLines(geom)\n for (let i = rings.iterator(); i.hasNext(); ) {\n const ring = i.next()\n if (!this.isSimpleLinearGeometry(ring)) return false\n }\n return true\n }\n hasClosedEndpointIntersection(graph) {\n const endPoints = new TreeMap()\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const isClosed = e.isClosed()\n const p0 = e.getCoordinate(0)\n this.addEndpoint(endPoints, p0, isClosed)\n const p1 = e.getCoordinate(e.getNumPoints() - 1)\n this.addEndpoint(endPoints, p1, isClosed)\n }\n for (let i = endPoints.values().iterator(); i.hasNext(); ) {\n const eiInfo = i.next()\n if (eiInfo.isClosed && eiInfo.degree !== 2) {\n this._nonSimpleLocation = eiInfo.getCoordinate()\n return true\n }\n }\n return false\n }\n getNonSimpleLocation() {\n return this._nonSimpleLocation\n }\n isSimpleLinearGeometry(geom) {\n if (geom.isEmpty()) return true\n const graph = new GeometryGraph(0, geom)\n const li = new RobustLineIntersector()\n const si = graph.computeSelfNodes(li, true)\n if (!si.hasIntersection()) return true\n if (si.hasProperIntersection()) {\n this._nonSimpleLocation = si.getProperIntersectionPoint()\n return false\n }\n if (this.hasNonEndpointIntersection(graph)) return false\n if (this._isClosedEndpointsInInterior) \n if (this.hasClosedEndpointIntersection(graph)) return false\n \n return true\n }\n hasNonEndpointIntersection(graph) {\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const maxSegmentIndex = e.getMaximumSegmentIndex()\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n if (!ei.isEndPoint(maxSegmentIndex)) {\n this._nonSimpleLocation = ei.getCoordinate()\n return true\n }\n }\n }\n return false\n }\n addEndpoint(endPoints, p, isClosed) {\n let eiInfo = endPoints.get(p)\n if (eiInfo === null) {\n eiInfo = new EndpointInfo(p)\n endPoints.put(p, eiInfo)\n }\n eiInfo.addEndpoint(isClosed)\n }\n computeSimple(geom) {\n this._nonSimpleLocation = null\n if (geom.isEmpty()) return true\n if (geom instanceof LineString) return this.isSimpleLinearGeometry(geom)\n if (geom instanceof MultiLineString) return this.isSimpleLinearGeometry(geom)\n if (geom instanceof MultiPoint) return this.isSimpleMultiPoint(geom)\n if (hasInterface(geom, Polygonal)) return this.isSimplePolygonal(geom)\n if (geom instanceof GeometryCollection) return this.isSimpleGeometryCollection(geom)\n return true\n }\n isSimple() {\n this._nonSimpleLocation = null\n return this.computeSimple(this._inputGeom)\n }\n isSimpleGeometryCollection(geom) {\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const comp = geom.getGeometryN(i)\n if (!this.computeSimple(comp)) return false\n }\n return true\n }\n}\nclass EndpointInfo {\n constructor() {\n EndpointInfo.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.pt = null\n this.isClosed = null\n this.degree = null\n const pt = arguments[0]\n this.pt = pt\n this.isClosed = false\n this.degree = 0\n }\n addEndpoint(isClosed) {\n this.degree++\n this.isClosed |= isClosed\n }\n getCoordinate() {\n return this.pt\n }\n}\nIsSimpleOp.EndpointInfo = EndpointInfo\n","export default class BufferParameters {\n constructor() {\n BufferParameters.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n this._endCapStyle = BufferParameters.CAP_ROUND\n this._joinStyle = BufferParameters.JOIN_ROUND\n this._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT\n this._isSingleSided = false\n this._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const quadrantSegments = arguments[0]\n this.setQuadrantSegments(quadrantSegments)\n } else if (arguments.length === 2) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n } else if (arguments.length === 4) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1], joinStyle = arguments[2], mitreLimit = arguments[3]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n this.setJoinStyle(joinStyle)\n this.setMitreLimit(mitreLimit)\n }\n }\n static bufferDistanceError(quadSegs) {\n const alpha = Math.PI / 2.0 / quadSegs\n return 1 - Math.cos(alpha / 2.0)\n }\n getEndCapStyle() {\n return this._endCapStyle\n }\n isSingleSided() {\n return this._isSingleSided\n }\n setQuadrantSegments(quadSegs) {\n this._quadrantSegments = quadSegs\n if (this._quadrantSegments === 0) this._joinStyle = BufferParameters.JOIN_BEVEL\n if (this._quadrantSegments < 0) {\n this._joinStyle = BufferParameters.JOIN_MITRE\n this._mitreLimit = Math.abs(this._quadrantSegments)\n }\n if (quadSegs <= 0) \n this._quadrantSegments = 1\n \n if (this._joinStyle !== BufferParameters.JOIN_ROUND) \n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n \n }\n getJoinStyle() {\n return this._joinStyle\n }\n setJoinStyle(joinStyle) {\n this._joinStyle = joinStyle\n }\n setSimplifyFactor(simplifyFactor) {\n this._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor\n }\n getSimplifyFactor() {\n return this._simplifyFactor\n }\n getQuadrantSegments() {\n return this._quadrantSegments\n }\n setEndCapStyle(endCapStyle) {\n this._endCapStyle = endCapStyle\n }\n getMitreLimit() {\n return this._mitreLimit\n }\n setMitreLimit(mitreLimit) {\n this._mitreLimit = mitreLimit\n }\n setSingleSided(isSingleSided) {\n this._isSingleSided = isSingleSided\n }\n}\nBufferParameters.CAP_ROUND = 1\nBufferParameters.CAP_FLAT = 2\nBufferParameters.CAP_SQUARE = 3\nBufferParameters.JOIN_ROUND = 1\nBufferParameters.JOIN_MITRE = 2\nBufferParameters.JOIN_BEVEL = 3\nBufferParameters.DEFAULT_QUADRANT_SEGMENTS = 8\nBufferParameters.DEFAULT_MITRE_LIMIT = 5.0\nBufferParameters.DEFAULT_SIMPLIFY_FACTOR = 0.01\n","import Position from '../../geomgraph/Position'\nimport Orientation from '../../algorithm/Orientation'\nimport Assert from '../../util/Assert'\nexport default class RightmostEdgeFinder {\n constructor() {\n RightmostEdgeFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._minIndex = -1\n this._minCoord = null\n this._minDe = null\n this._orientedDe = null\n }\n getCoordinate() {\n return this._minCoord\n }\n getRightmostSide(de, index) {\n let side = this.getRightmostSideOfSegment(de, index)\n if (side < 0) side = this.getRightmostSideOfSegment(de, index - 1)\n if (side < 0) {\n this._minCoord = null\n this.checkForRightmostCoordinate(de)\n }\n return side\n }\n findRightmostEdgeAtVertex() {\n const pts = this._minDe.getEdge().getCoordinates()\n Assert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, 'rightmost point expected to be interior vertex of edge')\n const pPrev = pts[this._minIndex - 1]\n const pNext = pts[this._minIndex + 1]\n const orientation = Orientation.index(this._minCoord, pNext, pPrev)\n let usePrev = false\n if (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === Orientation.COUNTERCLOCKWISE) \n usePrev = true\n else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === Orientation.CLOCKWISE) \n usePrev = true\n \n if (usePrev) \n this._minIndex = this._minIndex - 1\n \n }\n getRightmostSideOfSegment(de, i) {\n const e = de.getEdge()\n const coord = e.getCoordinates()\n if (i < 0 || i + 1 >= coord.length) return -1\n if (coord[i].y === coord[i + 1].y) return -1\n let pos = Position.LEFT\n if (coord[i].y < coord[i + 1].y) pos = Position.RIGHT\n return pos\n }\n getEdge() {\n return this._orientedDe\n }\n checkForRightmostCoordinate(de) {\n const coord = de.getEdge().getCoordinates()\n for (let i = 0; i < coord.length - 1; i++) \n if (this._minCoord === null || coord[i].x > this._minCoord.x) {\n this._minDe = de\n this._minIndex = i\n this._minCoord = coord[i]\n }\n \n }\n findRightmostEdgeAtNode() {\n const node = this._minDe.getNode()\n const star = node.getEdges()\n this._minDe = star.getRightmostEdge()\n if (!this._minDe.isForward()) {\n this._minDe = this._minDe.getSym()\n this._minIndex = this._minDe.getEdge().getCoordinates().length - 1\n }\n }\n findEdge(dirEdgeList) {\n for (let i = dirEdgeList.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.checkForRightmostCoordinate(de)\n }\n Assert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), 'inconsistency in rightmost processing')\n if (this._minIndex === 0) \n this.findRightmostEdgeAtNode()\n else \n this.findRightmostEdgeAtVertex()\n \n this._orientedDe = this._minDe\n const rightmostSide = this.getRightmostSide(this._minDe, this._minIndex)\n if (rightmostSide === Position.LEFT) \n this._orientedDe = this._minDe.getSym()\n \n }\n}\n","export default class LinkedList {\n constructor() {\n this.array = []\n }\n\n addLast(e) {\n this.array.push(e)\n }\n\n removeFirst() {\n return this.array.shift()\n }\n\n isEmpty() {\n return this.array.length === 0\n }\n}\n","import HashSet from '../../../../../java/util/HashSet'\nimport Position from '../../geomgraph/Position'\nimport Stack from '../../../../../java/util/Stack'\nimport RightmostEdgeFinder from './RightmostEdgeFinder'\nimport TopologyException from '../../geom/TopologyException'\nimport LinkedList from '../../../../../java/util/LinkedList'\nimport Comparable from '../../../../../java/lang/Comparable'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nexport default class BufferSubgraph {\n constructor() {\n BufferSubgraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._finder = null\n this._dirEdgeList = new ArrayList()\n this._nodes = new ArrayList()\n this._rightMostCoord = null\n this._env = null\n this._finder = new RightmostEdgeFinder()\n }\n clearVisitedEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n de.setVisited(false)\n }\n }\n getRightmostCoordinate() {\n return this._rightMostCoord\n }\n computeNodeDepth(n) {\n let startEdge = null\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isVisited() || de.getSym().isVisited()) {\n startEdge = de\n break\n }\n }\n if (startEdge === null) throw new TopologyException('unable to find edge to compute depths at ' + n.getCoordinate())\n n.getEdges().computeDepths(startEdge)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setVisited(true)\n this.copySymDepths(de)\n }\n }\n computeDepth(outsideDepth) {\n this.clearVisitedEdges()\n const de = this._finder.getEdge()\n const n = de.getNode()\n const label = de.getLabel()\n de.setEdgeDepths(Position.RIGHT, outsideDepth)\n this.copySymDepths(de)\n this.computeDepths(de)\n }\n create(node) {\n this.addReachable(node)\n this._finder.findEdge(this._dirEdgeList)\n this._rightMostCoord = this._finder.getCoordinate()\n }\n findResultEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) \n de.setInResult(true)\n \n }\n }\n computeDepths(startEdge) {\n const nodesVisited = new HashSet()\n const nodeQueue = new LinkedList()\n const startNode = startEdge.getNode()\n nodeQueue.addLast(startNode)\n nodesVisited.add(startNode)\n startEdge.setVisited(true)\n while (!nodeQueue.isEmpty()) {\n const n = nodeQueue.removeFirst()\n nodesVisited.add(n)\n this.computeNodeDepth(n)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym.isVisited()) continue\n const adjNode = sym.getNode()\n if (!nodesVisited.contains(adjNode)) {\n nodeQueue.addLast(adjNode)\n nodesVisited.add(adjNode)\n }\n }\n }\n }\n compareTo(o) {\n const graph = o\n if (this._rightMostCoord.x < graph._rightMostCoord.x) \n return -1\n \n if (this._rightMostCoord.x > graph._rightMostCoord.x) \n return 1\n \n return 0\n }\n getEnvelope() {\n if (this._env === null) {\n const edgeEnv = new Envelope()\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const dirEdge = it.next()\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) \n edgeEnv.expandToInclude(pts[i])\n \n }\n this._env = edgeEnv\n }\n return this._env\n }\n addReachable(startNode) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.add(node, nodeStack)\n }\n }\n copySymDepths(de) {\n const sym = de.getSym()\n sym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT))\n sym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT))\n }\n add(node, nodeStack) {\n node.setVisited(true)\n this._nodes.add(node)\n for (let i = node.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n this._dirEdgeList.add(de)\n const sym = de.getSym()\n const symNode = sym.getNode()\n if (!symNode.isVisited()) nodeStack.push(symNode)\n }\n }\n getNodes() {\n return this._nodes\n }\n getDirectedEdges() {\n return this._dirEdgeList\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import Location from '../geom/Location'\nimport Position from './Position'\nimport PointLocation from '../algorithm/PointLocation'\nimport TopologyException from '../geom/TopologyException'\nimport Orientation from '../algorithm/Orientation'\nimport Label from './Label'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Assert from '../util/Assert'\nexport default class EdgeRing {\n constructor() {\n EdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._startDe = null\n this._maxNodeDegree = -1\n this._edges = new ArrayList()\n this._pts = new ArrayList()\n this._label = new Label(Location.NONE)\n this._ring = null\n this._isHole = null\n this._shell = null\n this._holes = new ArrayList()\n this._geometryFactory = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const start = arguments[0], geometryFactory = arguments[1]\n this._geometryFactory = geometryFactory\n this.computePoints(start)\n this.computeRing()\n }\n }\n computeRing() {\n if (this._ring !== null) return null\n const coord = new Array(this._pts.size()).fill(null)\n for (let i = 0; i < this._pts.size(); i++) \n coord[i] = this._pts.get(i)\n \n this._ring = this._geometryFactory.createLinearRing(coord)\n this._isHole = Orientation.isCCW(this._ring.getCoordinates())\n }\n isIsolated() {\n return this._label.getGeometryCount() === 1\n }\n computePoints(start) {\n this._startDe = start\n let de = start\n let isFirstEdge = true\n do {\n if (de === null) throw new TopologyException('Found null DirectedEdge')\n if (de.getEdgeRing() === this) throw new TopologyException('Directed Edge visited twice during ring-building at ' + de.getCoordinate())\n this._edges.add(de)\n const label = de.getLabel()\n Assert.isTrue(label.isArea())\n this.mergeLabel(label)\n this.addPoints(de.getEdge(), de.isForward(), isFirstEdge)\n isFirstEdge = false\n this.setEdgeRing(de, this)\n de = this.getNext(de)\n } while (de !== this._startDe)\n }\n getLinearRing() {\n return this._ring\n }\n getCoordinate(i) {\n return this._pts.get(i)\n }\n computeMaxNodeDegree() {\n this._maxNodeDegree = 0\n let de = this._startDe\n do {\n const node = de.getNode()\n const degree = node.getEdges().getOutgoingDegree(this)\n if (degree > this._maxNodeDegree) this._maxNodeDegree = degree\n de = this.getNext(de)\n } while (de !== this._startDe)\n this._maxNodeDegree *= 2\n }\n addPoints(edge, isForward, isFirstEdge) {\n const edgePts = edge.getCoordinates()\n if (isForward) {\n let startIndex = 1\n if (isFirstEdge) startIndex = 0\n for (let i = startIndex; i < edgePts.length; i++) \n this._pts.add(edgePts[i])\n \n } else {\n let startIndex = edgePts.length - 2\n if (isFirstEdge) startIndex = edgePts.length - 1\n for (let i = startIndex; i >= 0; i--) \n this._pts.add(edgePts[i])\n \n }\n }\n isHole() {\n return this._isHole\n }\n setInResult() {\n let de = this._startDe\n do {\n de.getEdge().setInResult(true)\n de = de.getNext()\n } while (de !== this._startDe)\n }\n containsPoint(p) {\n const shell = this.getLinearRing()\n const env = shell.getEnvelopeInternal()\n if (!env.contains(p)) return false\n if (!PointLocation.isInRing(p, shell.getCoordinates())) return false\n for (let i = this._holes.iterator(); i.hasNext(); ) {\n const hole = i.next()\n if (hole.containsPoint(p)) return false\n }\n return true\n }\n addHole(ring) {\n this._holes.add(ring)\n }\n isShell() {\n return this._shell === null\n }\n getLabel() {\n return this._label\n }\n getEdges() {\n return this._edges\n }\n getMaxNodeDegree() {\n if (this._maxNodeDegree < 0) this.computeMaxNodeDegree()\n return this._maxNodeDegree\n }\n getShell() {\n return this._shell\n }\n mergeLabel() {\n if (arguments.length === 1) {\n const deLabel = arguments[0]\n this.mergeLabel(deLabel, 0)\n this.mergeLabel(deLabel, 1)\n } else if (arguments.length === 2) {\n const deLabel = arguments[0], geomIndex = arguments[1]\n const loc = deLabel.getLocation(geomIndex, Position.RIGHT)\n if (loc === Location.NONE) return null\n if (this._label.getLocation(geomIndex) === Location.NONE) {\n this._label.setLocation(geomIndex, loc)\n return null\n }\n }\n }\n setShell(shell) {\n this._shell = shell\n if (shell !== null) shell.addHole(this)\n }\n toPolygon(geometryFactory) {\n const holeLR = new Array(this._holes.size()).fill(null)\n for (let i = 0; i < this._holes.size(); i++) \n holeLR[i] = this._holes.get(i).getLinearRing()\n \n const poly = geometryFactory.createPolygon(this.getLinearRing(), holeLR)\n return poly\n }\n}\n","import EdgeRing from '../../geomgraph/EdgeRing'\nexport default class MinimalEdgeRing extends EdgeRing {\n constructor() {\n super()\n MinimalEdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const start = arguments[0], geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n }\n setEdgeRing(de, er) {\n de.setMinEdgeRing(er)\n }\n getNext(de) {\n return de.getNextMin()\n }\n}\n","import MinimalEdgeRing from './MinimalEdgeRing'\nimport EdgeRing from '../../geomgraph/EdgeRing'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class MaximalEdgeRing extends EdgeRing {\n constructor() {\n super()\n MaximalEdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const start = arguments[0], geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n }\n buildMinimalRings() {\n const minEdgeRings = new ArrayList()\n let de = this._startDe\n do {\n if (de.getMinEdgeRing() === null) {\n const minEr = new MinimalEdgeRing(de, this._geometryFactory)\n minEdgeRings.add(minEr)\n }\n de = de.getNext()\n } while (de !== this._startDe)\n return minEdgeRings\n }\n setEdgeRing(de, er) {\n de.setEdgeRing(er)\n }\n linkDirectedEdgesForMinimalEdgeRings() {\n let de = this._startDe\n do {\n const node = de.getNode()\n node.getEdges().linkMinimalDirectedEdges(this)\n de = de.getNext()\n } while (de !== this._startDe)\n }\n getNext(de) {\n return de.getNext()\n }\n}\n","import PointLocation from '../../algorithm/PointLocation'\nimport TopologyException from '../../geom/TopologyException'\nimport MaximalEdgeRing from './MaximalEdgeRing'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class PolygonBuilder {\n constructor() {\n PolygonBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geometryFactory = null\n this._shellList = new ArrayList()\n const geometryFactory = arguments[0]\n this._geometryFactory = geometryFactory\n }\n static findEdgeRingContaining(testEr, shellList) {\n const testRing = testEr.getLinearRing()\n const testEnv = testRing.getEnvelopeInternal()\n let testPt = testRing.getCoordinateN(0)\n let minShell = null\n let minShellEnv = null\n for (let it = shellList.iterator(); it.hasNext(); ) {\n const tryShell = it.next()\n const tryShellRing = tryShell.getLinearRing()\n const tryShellEnv = tryShellRing.getEnvelopeInternal()\n if (tryShellEnv.equals(testEnv)) continue\n if (!tryShellEnv.contains(testEnv)) continue\n testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryShellRing.getCoordinates())\n let isContained = false\n if (PointLocation.isInRing(testPt, tryShellRing.getCoordinates())) isContained = true\n if (isContained) \n if (minShell === null || minShellEnv.contains(tryShellEnv)) {\n minShell = tryShell\n minShellEnv = minShell.getLinearRing().getEnvelopeInternal()\n }\n \n }\n return minShell\n }\n sortShellsAndHoles(edgeRings, shellList, freeHoleList) {\n for (let it = edgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.isHole()) \n freeHoleList.add(er)\n else \n shellList.add(er)\n \n }\n }\n computePolygons(shellList) {\n const resultPolyList = new ArrayList()\n for (let it = shellList.iterator(); it.hasNext(); ) {\n const er = it.next()\n const poly = er.toPolygon(this._geometryFactory)\n resultPolyList.add(poly)\n }\n return resultPolyList\n }\n placeFreeHoles(shellList, freeHoleList) {\n for (let it = freeHoleList.iterator(); it.hasNext(); ) {\n const hole = it.next()\n if (hole.getShell() === null) {\n const shell = PolygonBuilder.findEdgeRingContaining(hole, shellList)\n if (shell === null) throw new TopologyException('unable to assign hole to a shell', hole.getCoordinate(0))\n hole.setShell(shell)\n }\n }\n }\n buildMinimalEdgeRings(maxEdgeRings, shellList, freeHoleList) {\n const edgeRings = new ArrayList()\n for (let it = maxEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.getMaxNodeDegree() > 2) {\n er.linkDirectedEdgesForMinimalEdgeRings()\n const minEdgeRings = er.buildMinimalRings()\n const shell = this.findShell(minEdgeRings)\n if (shell !== null) {\n this.placePolygonHoles(shell, minEdgeRings)\n shellList.add(shell)\n } else {\n freeHoleList.addAll(minEdgeRings)\n }\n } else {\n edgeRings.add(er)\n }\n }\n return edgeRings\n }\n buildMaximalEdgeRings(dirEdges) {\n const maxEdgeRings = new ArrayList()\n for (let it = dirEdges.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() && de.getLabel().isArea()) \n if (de.getEdgeRing() === null) {\n const er = new MaximalEdgeRing(de, this._geometryFactory)\n maxEdgeRings.add(er)\n er.setInResult()\n }\n \n }\n return maxEdgeRings\n }\n placePolygonHoles(shell, minEdgeRings) {\n for (let it = minEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (er.isHole()) \n er.setShell(shell)\n \n }\n }\n getPolygons() {\n const resultPolyList = this.computePolygons(this._shellList)\n return resultPolyList\n }\n findShell(minEdgeRings) {\n let shellCount = 0\n let shell = null\n for (let it = minEdgeRings.iterator(); it.hasNext(); ) {\n const er = it.next()\n if (!er.isHole()) {\n shell = er\n shellCount++\n }\n }\n Assert.isTrue(shellCount <= 1, 'found two shells in MinimalEdgeRing list')\n return shell\n }\n add() {\n if (arguments.length === 1) {\n const graph = arguments[0]\n this.add(graph.getEdgeEnds(), graph.getNodes())\n } else if (arguments.length === 2) {\n const dirEdges = arguments[0], nodes = arguments[1]\n PlanarGraph.linkResultDirectedEdges(nodes)\n const maxEdgeRings = this.buildMaximalEdgeRings(dirEdges)\n const freeHoleList = new ArrayList()\n const edgeRings = this.buildMinimalEdgeRings(maxEdgeRings, this._shellList, freeHoleList)\n this.sortShellsAndHoles(edgeRings, this._shellList, freeHoleList)\n this.placeFreeHoles(this._shellList, freeHoleList)\n }\n }\n}\n","import CoordinateList from '../../geom/CoordinateList'\nimport Orientation from '../../algorithm/Orientation'\nimport Distance from '../../algorithm/Distance'\nexport default class BufferInputLineSimplifier {\n constructor() {\n BufferInputLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputLine = null\n this._distanceTol = null\n this._isDeleted = null\n this._angleOrientation = Orientation.COUNTERCLOCKWISE\n const inputLine = arguments[0]\n this._inputLine = inputLine\n }\n static simplify(inputLine, distanceTol) {\n const simp = new BufferInputLineSimplifier(inputLine)\n return simp.simplify(distanceTol)\n }\n isDeletable(i0, i1, i2, distanceTol) {\n const p0 = this._inputLine[i0]\n const p1 = this._inputLine[i1]\n const p2 = this._inputLine[i2]\n if (!this.isConcave(p0, p1, p2)) return false\n if (!this.isShallow(p0, p1, p2, distanceTol)) return false\n return this.isShallowSampled(p0, p1, i0, i2, distanceTol)\n }\n deleteShallowConcavities() {\n let index = 1\n let midIndex = this.findNextNonDeletedIndex(index)\n let lastIndex = this.findNextNonDeletedIndex(midIndex)\n let isChanged = false\n while (lastIndex < this._inputLine.length) {\n let isMiddleVertexDeleted = false\n if (this.isDeletable(index, midIndex, lastIndex, this._distanceTol)) {\n this._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE\n isMiddleVertexDeleted = true\n isChanged = true\n }\n if (isMiddleVertexDeleted) index = lastIndex; else index = midIndex\n midIndex = this.findNextNonDeletedIndex(index)\n lastIndex = this.findNextNonDeletedIndex(midIndex)\n }\n return isChanged\n }\n isShallowConcavity(p0, p1, p2, distanceTol) {\n const orientation = Orientation.index(p0, p1, p2)\n const isAngleToSimplify = orientation === this._angleOrientation\n if (!isAngleToSimplify) return false\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n isShallowSampled(p0, p2, i0, i2, distanceTol) {\n let inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK)\n if (inc <= 0) inc = 1\n for (let i = i0; i < i2; i += inc) \n if (!this.isShallow(p0, p2, this._inputLine[i], distanceTol)) return false\n \n return true\n }\n isConcave(p0, p1, p2) {\n const orientation = Orientation.index(p0, p1, p2)\n const isConcave = orientation === this._angleOrientation\n return isConcave\n }\n simplify(distanceTol) {\n this._distanceTol = Math.abs(distanceTol)\n if (distanceTol < 0) this._angleOrientation = Orientation.CLOCKWISE\n this._isDeleted = new Array(this._inputLine.length).fill(null)\n let isChanged = false\n do \n isChanged = this.deleteShallowConcavities()\n while (isChanged)\n return this.collapseLine()\n }\n findNextNonDeletedIndex(index) {\n let next = index + 1\n while (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) next++\n return next\n }\n isShallow(p0, p1, p2, distanceTol) {\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n collapseLine() {\n const coordList = new CoordinateList()\n for (let i = 0; i < this._inputLine.length; i++) \n if (this._isDeleted[i] !== BufferInputLineSimplifier.DELETE) coordList.add(this._inputLine[i])\n \n return coordList.toCoordinateArray()\n }\n}\nBufferInputLineSimplifier.INIT = 0\nBufferInputLineSimplifier.DELETE = 1\nBufferInputLineSimplifier.KEEP = 1\nBufferInputLineSimplifier.NUM_PTS_TO_CHECK = 10\n","import GeometryFactory from '../../geom/GeometryFactory'\nimport Coordinate from '../../geom/Coordinate'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class OffsetSegmentString {\n constructor() {\n OffsetSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ptList = null\n this._precisionModel = null\n this._minimimVertexDistance = 0.0\n this._ptList = new ArrayList()\n }\n getCoordinates() {\n const coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE)\n return coord\n }\n setPrecisionModel(precisionModel) {\n this._precisionModel = precisionModel\n }\n addPt(pt) {\n const bufPt = new Coordinate(pt)\n this._precisionModel.makePrecise(bufPt)\n if (this.isRedundant(bufPt)) return null\n this._ptList.add(bufPt)\n }\n reverse() {}\n addPts(pt, isForward) {\n if (isForward) \n for (let i = 0; i < pt.length; i++) \n this.addPt(pt[i])\n \n else \n for (let i = pt.length - 1; i >= 0; i--) \n this.addPt(pt[i])\n \n \n }\n isRedundant(pt) {\n if (this._ptList.size() < 1) return false\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n const ptDist = pt.distance(lastPt)\n if (ptDist < this._minimimVertexDistance) return true\n return false\n }\n toString() {\n const fact = new GeometryFactory()\n const line = fact.createLineString(this.getCoordinates())\n return line.toString()\n }\n closeRing() {\n if (this._ptList.size() < 1) return null\n const startPt = new Coordinate(this._ptList.get(0))\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n if (startPt.equals(lastPt)) return null\n this._ptList.add(startPt)\n }\n setMinimumVertexDistance(minimimVertexDistance) {\n this._minimimVertexDistance = minimimVertexDistance\n }\n}\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null)\n","import BufferParameters from './BufferParameters'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport Orientation from '../../algorithm/Orientation'\nimport Intersection from '../../algorithm/Intersection'\nimport OffsetSegmentString from './OffsetSegmentString'\nimport LineSegment from '../../geom/LineSegment'\nimport Angle from '../../algorithm/Angle'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nexport default class OffsetSegmentGenerator {\n constructor() {\n OffsetSegmentGenerator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._maxCurveSegmentError = 0.0\n this._filletAngleQuantum = null\n this._closingSegLengthFactor = 1\n this._segList = null\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n this._li = null\n this._s0 = null\n this._s1 = null\n this._s2 = null\n this._seg0 = new LineSegment()\n this._seg1 = new LineSegment()\n this._offset0 = new LineSegment()\n this._offset1 = new LineSegment()\n this._side = 0\n this._hasNarrowConcaveAngle = false\n const precisionModel = arguments[0], bufParams = arguments[1], distance = arguments[2]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n this._li = new RobustLineIntersector()\n this._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments()\n if (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR\n this.init(distance)\n }\n addNextSegment(p, addStartPoint) {\n this._s0 = this._s1\n this._s1 = this._s2\n this._s2 = p\n this._seg0.setCoordinates(this._s0, this._s1)\n this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0)\n this._seg1.setCoordinates(this._s1, this._s2)\n this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1)\n if (this._s1.equals(this._s2)) return null\n const orientation = Orientation.index(this._s0, this._s1, this._s2)\n const outsideTurn = orientation === Orientation.CLOCKWISE && this._side === Position.LEFT || orientation === Orientation.COUNTERCLOCKWISE && this._side === Position.RIGHT\n if (orientation === 0) \n this.addCollinear(addStartPoint)\n else if (outsideTurn) \n this.addOutsideTurn(orientation, addStartPoint)\n else \n this.addInsideTurn(orientation, addStartPoint)\n \n }\n addLineEndCap(p0, p1) {\n const seg = new LineSegment(p0, p1)\n const offsetL = new LineSegment()\n this.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL)\n const offsetR = new LineSegment()\n this.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR)\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n const angle = Math.atan2(dy, dx)\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n this._segList.addPt(offsetL.p1)\n this.addDirectedFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, Orientation.CLOCKWISE, this._distance)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_FLAT:\n this._segList.addPt(offsetL.p1)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_SQUARE:\n const squareCapSideOffset = new Coordinate()\n squareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle)\n squareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle)\n const squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y)\n const squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y)\n this._segList.addPt(squareCapLOffset)\n this._segList.addPt(squareCapROffset)\n break\n }\n }\n getCoordinates() {\n const pts = this._segList.getCoordinates()\n return pts\n }\n addMitreJoin(p, offset0, offset1, distance) {\n const intPt = Intersection.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1)\n if (intPt !== null) {\n const mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance)\n if (mitreRatio <= this._bufParams.getMitreLimit()) {\n this._segList.addPt(intPt)\n return null\n }\n }\n this.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit())\n }\n addOutsideTurn(orientation, addStartPoint) {\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n return null\n }\n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance)\n } else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n this.addBevelJoin(this._offset0, this._offset1)\n } else {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance)\n this._segList.addPt(this._offset1.p0)\n }\n }\n createSquare(p) {\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance))\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance))\n this._segList.closeRing()\n }\n addSegments(pt, isForward) {\n this._segList.addPts(pt, isForward)\n }\n addFirstSegment() {\n this._segList.addPt(this._offset1.p0)\n }\n addCornerFillet(p, p0, p1, direction, radius) {\n const dx0 = p0.x - p.x\n const dy0 = p0.y - p.y\n let startAngle = Math.atan2(dy0, dx0)\n const dx1 = p1.x - p.x\n const dy1 = p1.y - p.y\n const endAngle = Math.atan2(dy1, dx1)\n if (direction === Orientation.CLOCKWISE) {\n if (startAngle <= endAngle) startAngle += 2.0 * Math.PI\n } else {\n if (startAngle >= endAngle) startAngle -= 2.0 * Math.PI\n }\n this._segList.addPt(p0)\n this.addDirectedFillet(p, startAngle, endAngle, direction, radius)\n this._segList.addPt(p1)\n }\n addLastSegment() {\n this._segList.addPt(this._offset1.p1)\n }\n initSideSegments(s1, s2, side) {\n this._s1 = s1\n this._s2 = s2\n this._side = side\n this._seg1.setCoordinates(s1, s2)\n this.computeOffsetSegment(this._seg1, side, this._distance, this._offset1)\n }\n addLimitedMitreJoin(offset0, offset1, distance, mitreLimit) {\n const basePt = this._seg0.p1\n const ang0 = Angle.angle(basePt, this._seg0.p0)\n const angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1)\n const angDiffHalf = angDiff / 2\n const midAng = Angle.normalize(ang0 + angDiffHalf)\n const mitreMidAng = Angle.normalize(midAng + Math.PI)\n const mitreDist = mitreLimit * distance\n const bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf))\n const bevelHalfLen = distance - bevelDelta\n const bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng)\n const bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng)\n const bevelMidPt = new Coordinate(bevelMidX, bevelMidY)\n const mitreMidLine = new LineSegment(basePt, bevelMidPt)\n const bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen)\n const bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen)\n if (this._side === Position.LEFT) {\n this._segList.addPt(bevelEndLeft)\n this._segList.addPt(bevelEndRight)\n } else {\n this._segList.addPt(bevelEndRight)\n this._segList.addPt(bevelEndLeft)\n }\n }\n addDirectedFillet(p, startAngle, endAngle, direction, radius) {\n const directionFactor = direction === Orientation.CLOCKWISE ? -1 : 1\n const totalAngle = Math.abs(startAngle - endAngle)\n const nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5)\n if (nSegs < 1) return null\n const angleInc = totalAngle / nSegs\n const pt = new Coordinate()\n for (let i = 0; i < nSegs; i++) {\n const angle = startAngle + directionFactor * i * angleInc\n pt.x = p.x + radius * Math.cos(angle)\n pt.y = p.y + radius * Math.sin(angle)\n this._segList.addPt(pt)\n }\n }\n computeOffsetSegment(seg, side, distance, offset) {\n const sideSign = side === Position.LEFT ? 1 : -1\n const dx = seg.p1.x - seg.p0.x\n const dy = seg.p1.y - seg.p0.y\n const len = Math.sqrt(dx * dx + dy * dy)\n const ux = sideSign * distance * dx / len\n const uy = sideSign * distance * dy / len\n offset.p0.x = seg.p0.x - uy\n offset.p0.y = seg.p0.y + ux\n offset.p1.x = seg.p1.x - uy\n offset.p1.y = seg.p1.y + ux\n }\n addInsideTurn(orientation, addStartPoint) {\n this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1)\n if (this._li.hasIntersection()) {\n this._segList.addPt(this._li.getIntersection(0))\n } else {\n this._hasNarrowConcaveAngle = true\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n } else {\n this._segList.addPt(this._offset0.p1)\n if (this._closingSegLengthFactor > 0) {\n const mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid0)\n const mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid1)\n } else {\n this._segList.addPt(this._s1)\n }\n this._segList.addPt(this._offset1.p0)\n }\n }\n }\n createCircle(p) {\n const pt = new Coordinate(p.x + this._distance, p.y)\n this._segList.addPt(pt)\n this.addDirectedFillet(p, 0.0, 2.0 * Math.PI, -1, this._distance)\n this._segList.closeRing()\n }\n addBevelJoin(offset0, offset1) {\n this._segList.addPt(offset0.p1)\n this._segList.addPt(offset1.p0)\n }\n init(distance) {\n this._distance = distance\n this._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0))\n this._segList = new OffsetSegmentString()\n this._segList.setPrecisionModel(this._precisionModel)\n this._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)\n }\n addCollinear(addStartPoint) {\n this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2)\n const numInt = this._li.getIntersectionNum()\n if (numInt >= 2) \n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this._segList.addPt(this._offset1.p0)\n } else {\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, Orientation.CLOCKWISE, this._distance)\n }\n \n }\n closeRing() {\n this._segList.closeRing()\n }\n hasNarrowConcaveAngle() {\n return this._hasNarrowConcaveAngle\n }\n}\nOffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3\nOffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3\nOffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6\nOffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR = 80\n","import BufferParameters from './BufferParameters'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport BufferInputLineSimplifier from './BufferInputLineSimplifier'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport OffsetSegmentGenerator from './OffsetSegmentGenerator'\nexport default class OffsetCurveBuilder {\n constructor() {\n OffsetCurveBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n const precisionModel = arguments[0], bufParams = arguments[1]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n }\n static copyCoordinates(pts) {\n const copy = new Array(pts.length).fill(null)\n for (let i = 0; i < copy.length; i++) \n copy[i] = new Coordinate(pts[i])\n \n return copy\n }\n getOffsetCurve(inputPts, distance) {\n this._distance = distance\n if (distance === 0.0) return null\n const isRightSide = distance < 0.0\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) \n this.computePointCurve(inputPts[0], segGen)\n else \n this.computeOffsetCurve(inputPts, isRightSide, segGen)\n \n const curvePts = segGen.getCoordinates()\n if (isRightSide) CoordinateArrays.reverse(curvePts)\n return curvePts\n }\n computeSingleSidedBufferCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n segGen.addSegments(inputPts, true)\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n segGen.addSegments(inputPts, false)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n segGen.closeRing()\n }\n computeRingBufferCurve(inputPts, side, segGen) {\n let distTol = this.simplifyTolerance(this._distance)\n if (side === Position.RIGHT) distTol = -distTol\n const simp = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n = simp.length - 1\n segGen.initSideSegments(simp[n - 1], simp[0], side)\n for (let i = 1; i <= n; i++) {\n const addStartPoint = i !== 1\n segGen.addNextSegment(simp[i], addStartPoint)\n }\n segGen.closeRing()\n }\n computeLineBufferCurve(inputPts, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp1[n1 - 1], simp1[n1])\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp2[1], simp2[0])\n segGen.closeRing()\n }\n computePointCurve(pt, segGen) {\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n segGen.createCircle(pt)\n break\n case BufferParameters.CAP_SQUARE:\n segGen.createSquare(pt)\n break\n }\n }\n getLineCurve(inputPts, distance) {\n this._distance = distance\n if (this.isLineOffsetEmpty(distance)) return null\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) {\n this.computePointCurve(inputPts[0], segGen)\n } else \n if (this._bufParams.isSingleSided()) {\n const isRightSide = distance < 0.0\n this.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen)\n } else {\n this.computeLineBufferCurve(inputPts, segGen)\n }\n \n const lineCoord = segGen.getCoordinates()\n return lineCoord\n }\n getBufferParameters() {\n return this._bufParams\n }\n simplifyTolerance(bufDistance) {\n return bufDistance * this._bufParams.getSimplifyFactor()\n }\n getRingCurve(inputPts, side, distance) {\n this._distance = distance\n if (inputPts.length <= 2) return this.getLineCurve(inputPts, distance)\n if (distance === 0.0) \n return OffsetCurveBuilder.copyCoordinates(inputPts)\n \n const segGen = this.getSegGen(distance)\n this.computeRingBufferCurve(inputPts, side, segGen)\n return segGen.getCoordinates()\n }\n computeOffsetCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n }\n isLineOffsetEmpty(distance) {\n if (distance === 0.0) return true\n if (distance < 0.0 && !this._bufParams.isSingleSided()) return true\n return false\n }\n getSegGen(distance) {\n return new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance)\n }\n}\n","import hasInterface from '../../../../../hasInterface'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport Orientation from '../../algorithm/Orientation'\nimport Collections from '../../../../../java/util/Collections'\nimport DirectedEdge from '../../geomgraph/DirectedEdge'\nimport LineSegment from '../../geom/LineSegment'\nimport Comparable from '../../../../../java/lang/Comparable'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport List from '../../../../../java/util/List'\nexport default class SubgraphDepthLocater {\n constructor() {\n SubgraphDepthLocater.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subgraphs = null\n this._seg = new LineSegment()\n const subgraphs = arguments[0]\n this._subgraphs = subgraphs\n }\n findStabbedSegments() {\n if (arguments.length === 1) {\n const stabbingRayLeftPt = arguments[0]\n const stabbedSegments = new ArrayList()\n for (let i = this._subgraphs.iterator(); i.hasNext(); ) {\n const bsg = i.next()\n const env = bsg.getEnvelope()\n if (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) continue\n this.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments)\n }\n return stabbedSegments\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n const stabbingRayLeftPt = arguments[0], dirEdge = arguments[1], stabbedSegments = arguments[2]\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) {\n this._seg.p0 = pts[i]\n this._seg.p1 = pts[i + 1]\n if (this._seg.p0.y > this._seg.p1.y) this._seg.reverse()\n const maxx = Math.max(this._seg.p0.x, this._seg.p1.x)\n if (maxx < stabbingRayLeftPt.x) continue\n if (this._seg.isHorizontal()) continue\n if (stabbingRayLeftPt.y < this._seg.p0.y || stabbingRayLeftPt.y > this._seg.p1.y) continue\n if (Orientation.index(this._seg.p0, this._seg.p1, stabbingRayLeftPt) === Orientation.RIGHT) continue\n let depth = dirEdge.getDepth(Position.LEFT)\n if (!this._seg.p0.equals(pts[i])) depth = dirEdge.getDepth(Position.RIGHT)\n const ds = new DepthSegment(this._seg, depth)\n stabbedSegments.add(ds)\n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n const stabbingRayLeftPt = arguments[0], dirEdges = arguments[1], stabbedSegments = arguments[2]\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.findStabbedSegments(stabbingRayLeftPt, de, stabbedSegments)\n }\n }\n }\n }\n getDepth(p) {\n const stabbedSegments = this.findStabbedSegments(p)\n if (stabbedSegments.size() === 0) return 0\n const ds = Collections.min(stabbedSegments)\n return ds._leftDepth\n }\n}\nclass DepthSegment {\n constructor() {\n DepthSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._upwardSeg = null\n this._leftDepth = null\n const seg = arguments[0], depth = arguments[1]\n this._upwardSeg = new LineSegment(seg)\n this._leftDepth = depth\n }\n compareTo(obj) {\n const other = obj\n if (this._upwardSeg.minX() >= other._upwardSeg.maxX()) return 1\n if (this._upwardSeg.maxX() <= other._upwardSeg.minX()) return -1\n let orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n orientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n return this._upwardSeg.compareTo(other._upwardSeg)\n }\n compareX(seg0, seg1) {\n const compare0 = seg0.p0.compareTo(seg1.p0)\n if (compare0 !== 0) return compare0\n return seg0.p1.compareTo(seg1.p1)\n }\n toString() {\n return this._upwardSeg.toString()\n }\n get interfaces_() {\n return [Comparable]\n }\n}\nSubgraphDepthLocater.DepthSegment = DepthSegment\n","import Location from '../../geom/Location'\nimport LineString from '../../geom/LineString'\nimport Position from '../../geomgraph/Position'\nimport Point from '../../geom/Point'\nimport NodedSegmentString from '../../noding/NodedSegmentString'\nimport Polygon from '../../geom/Polygon'\nimport MultiPoint from '../../geom/MultiPoint'\nimport LinearRing from '../../geom/LinearRing'\nimport Orientation from '../../algorithm/Orientation'\nimport MultiPolygon from '../../geom/MultiPolygon'\nimport Label from '../../geomgraph/Label'\nimport GeometryCollection from '../../geom/GeometryCollection'\nimport UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Distance from '../../algorithm/Distance'\nimport MultiLineString from '../../geom/MultiLineString'\nimport Triangle from '../../geom/Triangle'\nexport default class OffsetCurveSetBuilder {\n constructor() {\n OffsetCurveSetBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distance = null\n this._curveBuilder = null\n this._curveList = new ArrayList()\n const inputGeom = arguments[0], distance = arguments[1], curveBuilder = arguments[2]\n this._inputGeom = inputGeom\n this._distance = distance\n this._curveBuilder = curveBuilder\n }\n addRingSide(coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n if (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) return null\n let leftLoc = cwLeftLoc\n let rightLoc = cwRightLoc\n if (coord.length >= LinearRing.MINIMUM_VALID_SIZE && Orientation.isCCW(coord)) {\n leftLoc = cwRightLoc\n rightLoc = cwLeftLoc\n side = Position.opposite(side)\n }\n const curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance)\n this.addCurve(curve, leftLoc, rightLoc)\n }\n addRingBothSides(coord, distance) {\n this.addRingSide(coord, distance, Position.LEFT, Location.EXTERIOR, Location.INTERIOR)\n this.addRingSide(coord, distance, Position.RIGHT, Location.INTERIOR, Location.EXTERIOR)\n }\n addPoint(p) {\n if (this._distance <= 0.0) return null\n const coord = p.getCoordinates()\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n addPolygon(p) {\n let offsetDistance = this._distance\n let offsetSide = Position.LEFT\n if (this._distance < 0.0) {\n offsetDistance = -this._distance\n offsetSide = Position.RIGHT\n }\n const shell = p.getExteriorRing()\n const shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates())\n if (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) return null\n if (this._distance <= 0.0 && shellCoord.length < 3) return null\n this.addRingSide(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n const holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates())\n if (this._distance > 0.0 && this.isErodedCompletely(hole, -this._distance)) continue\n this.addRingSide(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR)\n }\n }\n isTriangleErodedCompletely(triangleCoord, bufferDistance) {\n const tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2])\n const inCentre = tri.inCentre()\n const distToCentre = Distance.pointToSegment(inCentre, tri.p0, tri.p1)\n return distToCentre < Math.abs(bufferDistance)\n }\n addLineString(line) {\n if (this._curveBuilder.isLineOffsetEmpty(this._distance)) return null\n const coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (CoordinateArrays.isRing(coord) && !this._curveBuilder.getBufferParameters().isSingleSided()) {\n this.addRingBothSides(coord, this._distance)\n } else {\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n }\n addCurve(coord, leftLoc, rightLoc) {\n if (coord === null || coord.length < 2) return null\n const e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc))\n this._curveList.add(e)\n }\n getCurves() {\n this.add(this._inputGeom)\n return this._curveList\n }\n add(g) {\n if (g.isEmpty()) return null\n if (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getGeometryType())\n }\n isErodedCompletely(ring, bufferDistance) {\n const ringCoord = ring.getCoordinates()\n if (ringCoord.length < 4) return bufferDistance < 0\n if (ringCoord.length === 4) return this.isTriangleErodedCompletely(ringCoord, bufferDistance)\n const env = ring.getEnvelopeInternal()\n const envMinDimension = Math.min(env.getHeight(), env.getWidth())\n if (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) return true\n return false\n }\n addCollection(gc) {\n for (let i = 0; i < gc.getNumGeometries(); i++) {\n const g = gc.getGeometryN(i)\n this.add(g)\n }\n }\n}\n","import StringBuffer from '../../../../java/lang/StringBuffer'\nimport Location from '../geom/Location'\nimport Position from './Position'\nimport TopologyException from '../geom/TopologyException'\nimport System from '../../../../java/lang/System'\nimport SimplePointInAreaLocator from '../algorithm/locate/SimplePointInAreaLocator'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Assert from '../util/Assert'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class EdgeEndStar {\n constructor() {\n EdgeEndStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeMap = new TreeMap()\n this._edgeList = null\n this._ptInAreaLocation = [Location.NONE, Location.NONE]\n }\n getNextCW(ee) {\n this.getEdges()\n const i = this._edgeList.indexOf(ee)\n let iNextCW = i - 1\n if (i === 0) iNextCW = this._edgeList.size() - 1\n return this._edgeList.get(iNextCW)\n }\n propagateSideLabels(geomIndex) {\n let startLoc = Location.NONE\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (label.isArea(geomIndex) && label.getLocation(geomIndex, Position.LEFT) !== Location.NONE) startLoc = label.getLocation(geomIndex, Position.LEFT)\n }\n if (startLoc === Location.NONE) return null\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (label.getLocation(geomIndex, Position.ON) === Location.NONE) label.setLocation(geomIndex, Position.ON, currLoc)\n if (label.isArea(geomIndex)) {\n const leftLoc = label.getLocation(geomIndex, Position.LEFT)\n const rightLoc = label.getLocation(geomIndex, Position.RIGHT)\n if (rightLoc !== Location.NONE) {\n if (rightLoc !== currLoc) throw new TopologyException('side location conflict', e.getCoordinate())\n if (leftLoc === Location.NONE) \n Assert.shouldNeverReachHere('found single null side (at ' + e.getCoordinate() + ')')\n \n currLoc = leftLoc\n } else {\n Assert.isTrue(label.getLocation(geomIndex, Position.LEFT) === Location.NONE, 'found single null side')\n label.setLocation(geomIndex, Position.RIGHT, currLoc)\n label.setLocation(geomIndex, Position.LEFT, currLoc)\n }\n }\n }\n }\n getCoordinate() {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\n print(out) {\n System.out.println('EdgeEndStar: ' + this.getCoordinate())\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n e.print(out)\n }\n }\n isAreaLabelsConsistent(geomGraph) {\n this.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule())\n return this.checkAreaLabelsConsistent(0)\n }\n checkAreaLabelsConsistent(geomIndex) {\n const edges = this.getEdges()\n if (edges.size() <= 0) return true\n const lastEdgeIndex = edges.size() - 1\n const startLabel = edges.get(lastEdgeIndex).getLabel()\n const startLoc = startLabel.getLocation(geomIndex, Position.LEFT)\n Assert.isTrue(startLoc !== Location.NONE, 'Found unlabelled area edge')\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n Assert.isTrue(label.isArea(geomIndex), 'Found non-area edge')\n const leftLoc = label.getLocation(geomIndex, Position.LEFT)\n const rightLoc = label.getLocation(geomIndex, Position.RIGHT)\n if (leftLoc === rightLoc) \n return false\n \n if (rightLoc !== currLoc) \n return false\n \n currLoc = leftLoc\n }\n return true\n }\n findIndex(eSearch) {\n this.iterator()\n for (let i = 0; i < this._edgeList.size(); i++) {\n const e = this._edgeList.get(i)\n if (e === eSearch) return i\n }\n return -1\n }\n iterator() {\n return this.getEdges().iterator()\n }\n getEdges() {\n if (this._edgeList === null) \n this._edgeList = new ArrayList(this._edgeMap.values())\n \n return this._edgeList\n }\n getLocation(geomIndex, p, geom) {\n if (this._ptInAreaLocation[geomIndex] === Location.NONE) \n this._ptInAreaLocation[geomIndex] = SimplePointInAreaLocator.locate(p, geom[geomIndex].getGeometry())\n \n return this._ptInAreaLocation[geomIndex]\n }\n toString() {\n const buf = new StringBuffer()\n buf.append('EdgeEndStar: ' + this.getCoordinate())\n buf.append('\\n')\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n buf.append(e)\n buf.append('\\n')\n }\n return buf.toString()\n }\n computeEdgeEndLabels(boundaryNodeRule) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n ee.computeLabel(boundaryNodeRule)\n }\n }\n computeLabelling(geomGraph) {\n this.computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule())\n this.propagateSideLabels(0)\n this.propagateSideLabels(1)\n const hasDimensionalCollapseEdge = [false, false]\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n for (let geomi = 0; geomi < 2; geomi++) \n if (label.isLine(geomi) && label.getLocation(geomi) === Location.BOUNDARY) hasDimensionalCollapseEdge[geomi] = true\n \n }\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n for (let geomi = 0; geomi < 2; geomi++) \n if (label.isAnyNull(geomi)) {\n let loc = Location.NONE\n if (hasDimensionalCollapseEdge[geomi]) {\n loc = Location.EXTERIOR\n } else {\n const p = e.getCoordinate()\n loc = this.getLocation(geomi, p, geomGraph)\n }\n label.setAllLocationsIfNull(geomi, loc)\n }\n \n }\n }\n getDegree() {\n return this._edgeMap.size()\n }\n insertEdgeEnd(e, obj) {\n this._edgeMap.put(e, obj)\n this._edgeList = null\n }\n}\n","import Location from '../geom/Location'\nimport Position from './Position'\nimport TopologyException from '../geom/TopologyException'\nimport EdgeEndStar from './EdgeEndStar'\nimport System from '../../../../java/lang/System'\nimport Label from './Label'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Quadrant from './Quadrant'\nimport Assert from '../util/Assert'\nexport default class DirectedEdgeStar extends EdgeEndStar {\n constructor() {\n super()\n DirectedEdgeStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._resultAreaEdgeList = null\n this._label = null\n this._SCANNING_FOR_INCOMING = 1\n this._LINKING_TO_OUTGOING = 2\n }\n linkResultDirectedEdges() {\n this.getResultAreaEdges()\n let firstOut = null\n let incoming = null\n let state = this._SCANNING_FOR_INCOMING\n for (let i = 0; i < this._resultAreaEdgeList.size(); i++) {\n const nextOut = this._resultAreaEdgeList.get(i)\n const nextIn = nextOut.getSym()\n if (!nextOut.getLabel().isArea()) continue\n if (firstOut === null && nextOut.isInResult()) firstOut = nextOut\n switch (state) {\n case this._SCANNING_FOR_INCOMING:\n if (!nextIn.isInResult()) continue\n incoming = nextIn\n state = this._LINKING_TO_OUTGOING\n break\n case this._LINKING_TO_OUTGOING:\n if (!nextOut.isInResult()) continue\n incoming.setNext(nextOut)\n state = this._SCANNING_FOR_INCOMING\n break\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n if (firstOut === null) throw new TopologyException('no outgoing dirEdge found', this.getCoordinate())\n Assert.isTrue(firstOut.isInResult(), 'unable to link last incoming dirEdge')\n incoming.setNext(firstOut)\n }\n }\n insert(ee) {\n const de = ee\n this.insertEdgeEnd(de, de)\n }\n getRightmostEdge() {\n const edges = this.getEdges()\n const size = edges.size()\n if (size < 1) return null\n const de0 = edges.get(0)\n if (size === 1) return de0\n const deLast = edges.get(size - 1)\n const quad0 = de0.getQuadrant()\n const quad1 = deLast.getQuadrant()\n if (Quadrant.isNorthern(quad0) && Quadrant.isNorthern(quad1)) {\n return de0\n } else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) {\n return deLast\n } else {\n const nonHorizontalEdge = null\n if (de0.getDy() !== 0) return de0; else if (deLast.getDy() !== 0) return deLast\n }\n Assert.shouldNeverReachHere('found two horizontal edges incident on node')\n return null\n }\n print(out) {\n System.out.println('DirectedEdgeStar: ' + this.getCoordinate())\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n out.print('out ')\n de.print(out)\n out.println()\n out.print('in ')\n de.getSym().print(out)\n out.println()\n }\n }\n getResultAreaEdges() {\n if (this._resultAreaEdgeList !== null) return this._resultAreaEdgeList\n this._resultAreaEdgeList = new ArrayList()\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() || de.getSym().isInResult()) this._resultAreaEdgeList.add(de)\n }\n return this._resultAreaEdgeList\n }\n updateLabelling(nodeLabel) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n label.setAllLocationsIfNull(0, nodeLabel.getLocation(0))\n label.setAllLocationsIfNull(1, nodeLabel.getLocation(1))\n }\n }\n linkAllDirectedEdges() {\n this.getEdges()\n let prevOut = null\n let firstIn = null\n for (let i = this._edgeList.size() - 1; i >= 0; i--) {\n const nextOut = this._edgeList.get(i)\n const nextIn = nextOut.getSym()\n if (firstIn === null) firstIn = nextIn\n if (prevOut !== null) nextIn.setNext(prevOut)\n prevOut = nextOut\n }\n firstIn.setNext(prevOut)\n }\n computeDepths() {\n if (arguments.length === 1) {\n const de = arguments[0]\n const edgeIndex = this.findIndex(de)\n const startDepth = de.getDepth(Position.LEFT)\n const targetLastDepth = de.getDepth(Position.RIGHT)\n const nextDepth = this.computeDepths(edgeIndex + 1, this._edgeList.size(), startDepth)\n const lastDepth = this.computeDepths(0, edgeIndex, nextDepth)\n if (lastDepth !== targetLastDepth) throw new TopologyException('depth mismatch at ' + de.getCoordinate())\n } else if (arguments.length === 3) {\n const startIndex = arguments[0], endIndex = arguments[1], startDepth = arguments[2]\n let currDepth = startDepth\n for (let i = startIndex; i < endIndex; i++) {\n const nextDe = this._edgeList.get(i)\n nextDe.setEdgeDepths(Position.RIGHT, currDepth)\n currDepth = nextDe.getDepth(Position.LEFT)\n }\n return currDepth\n }\n }\n mergeSymLabels() {\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n label.merge(de.getSym().getLabel())\n }\n }\n linkMinimalDirectedEdges(er) {\n let firstOut = null\n let incoming = null\n let state = this._SCANNING_FOR_INCOMING\n for (let i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {\n const nextOut = this._resultAreaEdgeList.get(i)\n const nextIn = nextOut.getSym()\n if (firstOut === null && nextOut.getEdgeRing() === er) firstOut = nextOut\n switch (state) {\n case this._SCANNING_FOR_INCOMING:\n if (nextIn.getEdgeRing() !== er) continue\n incoming = nextIn\n state = this._LINKING_TO_OUTGOING\n break\n case this._LINKING_TO_OUTGOING:\n if (nextOut.getEdgeRing() !== er) continue\n incoming.setNextMin(nextOut)\n state = this._SCANNING_FOR_INCOMING\n break\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n Assert.isTrue(firstOut !== null, 'found null for first outgoing dirEdge')\n Assert.isTrue(firstOut.getEdgeRing() === er, 'unable to link last incoming dirEdge')\n incoming.setNextMin(firstOut)\n }\n }\n getOutgoingDegree() {\n if (arguments.length === 0) {\n let degree = 0\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult()) degree++\n }\n return degree\n } else if (arguments.length === 1) {\n const er = arguments[0]\n let degree = 0\n for (let it = this.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getEdgeRing() === er) degree++\n }\n return degree\n }\n }\n getLabel() {\n return this._label\n }\n findCoveredLineEdges() {\n let startLoc = Location.NONE\n for (let it = this.iterator(); it.hasNext(); ) {\n const nextOut = it.next()\n const nextIn = nextOut.getSym()\n if (!nextOut.isLineEdge()) {\n if (nextOut.isInResult()) {\n startLoc = Location.INTERIOR\n break\n }\n if (nextIn.isInResult()) {\n startLoc = Location.EXTERIOR\n break\n }\n }\n }\n if (startLoc === Location.NONE) return null\n let currLoc = startLoc\n for (let it = this.iterator(); it.hasNext(); ) {\n const nextOut = it.next()\n const nextIn = nextOut.getSym()\n if (nextOut.isLineEdge()) {\n nextOut.getEdge().setCovered(currLoc === Location.INTERIOR)\n } else {\n if (nextOut.isInResult()) currLoc = Location.EXTERIOR\n if (nextIn.isInResult()) currLoc = Location.INTERIOR\n }\n }\n }\n computeLabelling(geom) {\n super.computeLabelling.call(this, geom)\n this._label = new Label(Location.NONE)\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n const e = ee.getEdge()\n const eLabel = e.getLabel()\n for (let i = 0; i < 2; i++) {\n const eLoc = eLabel.getLocation(i)\n if (eLoc === Location.INTERIOR || eLoc === Location.BOUNDARY) this._label.setLocation(i, Location.INTERIOR)\n }\n }\n }\n}\n","import DirectedEdgeStar from '../../geomgraph/DirectedEdgeStar'\nimport Node from '../../geomgraph/Node'\nimport NodeFactory from '../../geomgraph/NodeFactory'\nexport default class OverlayNodeFactory extends NodeFactory {\n constructor() {\n super()\n }\n createNode(coord) {\n return new Node(coord, new DirectedEdgeStar())\n }\n}\n","import Comparable from '../../../../java/lang/Comparable'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nexport default class OrientedCoordinateArray {\n constructor() {\n OrientedCoordinateArray.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._orientation = null\n const pts = arguments[0]\n this._pts = pts\n this._orientation = OrientedCoordinateArray.orientation(pts)\n }\n static orientation(pts) {\n return CoordinateArrays.increasingDirection(pts) === 1\n }\n static compareOriented(pts1, orientation1, pts2, orientation2) {\n const dir1 = orientation1 ? 1 : -1\n const dir2 = orientation2 ? 1 : -1\n const limit1 = orientation1 ? pts1.length : -1\n const limit2 = orientation2 ? pts2.length : -1\n let i1 = orientation1 ? 0 : pts1.length - 1\n let i2 = orientation2 ? 0 : pts2.length - 1\n while (true) {\n const compPt = pts1[i1].compareTo(pts2[i2])\n if (compPt !== 0) return compPt\n i1 += dir1\n i2 += dir2\n const done1 = i1 === limit1\n const done2 = i2 === limit2\n if (done1 && !done2) return -1\n if (!done1 && done2) return 1\n if (done1 && done2) return 0\n }\n }\n compareTo(o1) {\n const oca = o1\n const comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation)\n return comp\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import OrientedCoordinateArray from '../noding/OrientedCoordinateArray'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class EdgeList {\n constructor() {\n EdgeList.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new ArrayList()\n this._ocaMap = new TreeMap()\n }\n print(out) {\n out.print('MULTILINESTRING ( ')\n for (let j = 0; j < this._edges.size(); j++) {\n const e = this._edges.get(j)\n if (j > 0) out.print(',')\n out.print('(')\n const pts = e.getCoordinates()\n for (let i = 0; i < pts.length; i++) {\n if (i > 0) out.print(',')\n out.print(pts[i].x + ' ' + pts[i].y)\n }\n out.println(')')\n }\n out.print(') ')\n }\n addAll(edgeColl) {\n for (let i = edgeColl.iterator(); i.hasNext(); ) \n this.add(i.next())\n \n }\n findEdgeIndex(e) {\n for (let i = 0; i < this._edges.size(); i++) \n if (this._edges.get(i).equals(e)) return i\n \n return -1\n }\n iterator() {\n return this._edges.iterator()\n }\n getEdges() {\n return this._edges\n }\n get(i) {\n return this._edges.get(i)\n }\n findEqualEdge(e) {\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n const matchEdge = this._ocaMap.get(oca)\n return matchEdge\n }\n add(e) {\n this._edges.add(e)\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n this._ocaMap.put(oca, e)\n }\n}\n","export default class SegmentIntersector {\n processIntersections(e0, segIndex0, e1, segIndex1) {}\n isDone() {}\n}\n","import SegmentIntersector from './SegmentIntersector'\nexport default class IntersectionAdder {\n constructor() {\n IntersectionAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hasIntersection = false\n this._hasProper = false\n this._hasProperInterior = false\n this._hasInterior = false\n this._properIntersectionPoint = null\n this._li = null\n this._isSelfIntersection = null\n this.numIntersections = 0\n this.numInteriorIntersections = 0\n this.numProperIntersections = 0\n this.numTests = 0\n const li = arguments[0]\n this._li = li\n }\n static isAdjacentSegments(i1, i2) {\n return Math.abs(i1 - i2) === 1\n }\n isTrivialIntersection(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1) \n if (this._li.getIntersectionNum() === 1) {\n if (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) return true\n if (e0.isClosed()) {\n const maxSegIndex = e0.size() - 1\n if (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) \n return true\n \n }\n }\n \n return false\n }\n getProperIntersectionPoint() {\n return this._properIntersectionPoint\n }\n hasProperInteriorIntersection() {\n return this._hasProperInterior\n }\n getLineIntersector() {\n return this._li\n }\n hasProperIntersection() {\n return this._hasProper\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n this.numTests++\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) {\n this.numIntersections++\n if (this._li.isInteriorIntersection()) {\n this.numInteriorIntersections++\n this._hasInterior = true\n }\n if (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n this._hasIntersection = true\n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n if (this._li.isProper()) {\n this.numProperIntersections++\n this._hasProper = true\n this._hasProperInterior = true\n }\n }\n }\n }\n hasIntersection() {\n return this._hasIntersection\n }\n isDone() {\n return false\n }\n hasInteriorIntersection() {\n return this._hasInterior\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import Location from '../../geom/Location'\nimport BufferSubgraph from './BufferSubgraph'\nimport PolygonBuilder from '../overlay/PolygonBuilder'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Position from '../../geomgraph/Position'\nimport MCIndexNoder from '../../noding/MCIndexNoder'\nimport OffsetCurveBuilder from './OffsetCurveBuilder'\nimport Collections from '../../../../../java/util/Collections'\nimport SubgraphDepthLocater from './SubgraphDepthLocater'\nimport OffsetCurveSetBuilder from './OffsetCurveSetBuilder'\nimport Label from '../../geomgraph/Label'\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory'\nimport EdgeList from '../../geomgraph/EdgeList'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport IntersectionAdder from '../../noding/IntersectionAdder'\nimport Edge from '../../geomgraph/Edge'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class BufferBuilder {\n constructor() {\n BufferBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._bufParams = null\n this._workingPrecisionModel = null\n this._workingNoder = null\n this._geomFact = null\n this._graph = null\n this._edgeList = new EdgeList()\n const bufParams = arguments[0]\n this._bufParams = bufParams\n }\n static depthDelta(label) {\n const lLoc = label.getLocation(0, Position.LEFT)\n const rLoc = label.getLocation(0, Position.RIGHT)\n if (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) return 1; else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) return -1\n return 0\n }\n static convertSegStrings(it) {\n const fact = new GeometryFactory()\n const lines = new ArrayList()\n while (it.hasNext()) {\n const ss = it.next()\n const line = fact.createLineString(ss.getCoordinates())\n lines.add(line)\n }\n return fact.buildGeometry(lines)\n }\n setWorkingPrecisionModel(pm) {\n this._workingPrecisionModel = pm\n }\n insertUniqueEdge(e) {\n const existingEdge = this._edgeList.findEqualEdge(e)\n if (existingEdge !== null) {\n const existingLabel = existingEdge.getLabel()\n let labelToMerge = e.getLabel()\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel())\n labelToMerge.flip()\n }\n existingLabel.merge(labelToMerge)\n const mergeDelta = BufferBuilder.depthDelta(labelToMerge)\n const existingDelta = existingEdge.getDepthDelta()\n const newDelta = existingDelta + mergeDelta\n existingEdge.setDepthDelta(newDelta)\n } else {\n this._edgeList.add(e)\n e.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()))\n }\n }\n buildSubgraphs(subgraphList, polyBuilder) {\n const processedGraphs = new ArrayList()\n for (let i = subgraphList.iterator(); i.hasNext(); ) {\n const subgraph = i.next()\n const p = subgraph.getRightmostCoordinate()\n const locater = new SubgraphDepthLocater(processedGraphs)\n const outsideDepth = locater.getDepth(p)\n subgraph.computeDepth(outsideDepth)\n subgraph.findResultEdges()\n processedGraphs.add(subgraph)\n polyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes())\n }\n }\n createSubgraphs(graph) {\n const subgraphList = new ArrayList()\n for (let i = graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (!node.isVisited()) {\n const subgraph = new BufferSubgraph()\n subgraph.create(node)\n subgraphList.add(subgraph)\n }\n }\n Collections.sort(subgraphList, Collections.reverseOrder())\n return subgraphList\n }\n createEmptyResultGeometry() {\n const emptyGeom = this._geomFact.createPolygon()\n return emptyGeom\n }\n getNoder(precisionModel) {\n if (this._workingNoder !== null) return this._workingNoder\n const noder = new MCIndexNoder()\n const li = new RobustLineIntersector()\n li.setPrecisionModel(precisionModel)\n noder.setSegmentIntersector(new IntersectionAdder(li))\n return noder\n }\n buffer(g, distance) {\n let precisionModel = this._workingPrecisionModel\n if (precisionModel === null) precisionModel = g.getPrecisionModel()\n this._geomFact = g.getFactory()\n const curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams)\n const curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder)\n const bufferSegStrList = curveSetBuilder.getCurves()\n if (bufferSegStrList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n this.computeNodedEdges(bufferSegStrList, precisionModel)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._graph.addEdges(this._edgeList.getEdges())\n const subgraphList = this.createSubgraphs(this._graph)\n const polyBuilder = new PolygonBuilder(this._geomFact)\n this.buildSubgraphs(subgraphList, polyBuilder)\n const resultPolyList = polyBuilder.getPolygons()\n if (resultPolyList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n const resultGeom = this._geomFact.buildGeometry(resultPolyList)\n return resultGeom\n }\n computeNodedEdges(bufferSegStrList, precisionModel) {\n const noder = this.getNoder(precisionModel)\n noder.computeNodes(bufferSegStrList)\n const nodedSegStrings = noder.getNodedSubstrings()\n for (let i = nodedSegStrings.iterator(); i.hasNext(); ) {\n const segStr = i.next()\n const pts = segStr.getCoordinates()\n if (pts.length === 2 && pts[0].equals2D(pts[1])) continue\n const oldLabel = segStr.getData()\n const edge = new Edge(segStr.getCoordinates(), new Label(oldLabel))\n this.insertUniqueEdge(edge)\n }\n }\n setNoder(noder) {\n this._workingNoder = noder\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nexport default class NodingValidator {\n constructor() {\n NodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n const segStrings = arguments[0]\n this._segStrings = segStrings\n }\n checkEndPtVertexIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n this.checkEndPtVertexIntersections(pts[0], this._segStrings)\n this.checkEndPtVertexIntersections(pts[pts.length - 1], this._segStrings)\n }\n } else if (arguments.length === 2) {\n const testPt = arguments[0], segStrings = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n for (let j = 1; j < pts.length - 1; j++) \n if (pts[j].equals(testPt)) throw new RuntimeException('found endpt/interior pt intersection at index ' + j + ' :pt ' + testPt)\n \n }\n }\n }\n checkInteriorIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss0 = i.next()\n for (let j = this._segStrings.iterator(); j.hasNext(); ) {\n const ss1 = j.next()\n this.checkInteriorIntersections(ss0, ss1)\n }\n }\n } else if (arguments.length === 2) {\n const ss0 = arguments[0], ss1 = arguments[1]\n const pts0 = ss0.getCoordinates()\n const pts1 = ss1.getCoordinates()\n for (let i0 = 0; i0 < pts0.length - 1; i0++) \n for (let i1 = 0; i1 < pts1.length - 1; i1++) \n this.checkInteriorIntersections(ss0, i0, ss1, i1)\n \n \n } else if (arguments.length === 4) {\n const e0 = arguments[0], segIndex0 = arguments[1], e1 = arguments[2], segIndex1 = arguments[3]\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) \n throw new RuntimeException('found non-noded intersection at ' + p00 + '-' + p01 + ' and ' + p10 + '-' + p11)\n \n \n }\n }\n checkValid() {\n this.checkEndPtVertexIntersections()\n this.checkInteriorIntersections()\n this.checkCollapses()\n }\n checkCollapses() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.checkCollapses(ss)\n }\n } else if (arguments.length === 1) {\n const ss = arguments[0]\n const pts = ss.getCoordinates()\n for (let i = 0; i < pts.length - 2; i++) \n this.checkCollapse(pts[i], pts[i + 1], pts[i + 2])\n \n }\n }\n hasInteriorIntersection(li, p0, p1) {\n for (let i = 0; i < li.getIntersectionNum(); i++) {\n const intPt = li.getIntersection(i)\n if (!(intPt.equals(p0) || intPt.equals(p1))) return true\n }\n return false\n }\n checkCollapse(p0, p1, p2) {\n if (p0.equals(p2)) throw new RuntimeException('found non-noded collapse at ' + NodingValidator.fact.createLineString([p0, p1, p2]))\n }\n}\nNodingValidator.fact = new GeometryFactory()\n","import Coordinate from '../../geom/Coordinate'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Envelope from '../../geom/Envelope'\nimport Assert from '../../util/Assert'\nexport default class HotPixel {\n constructor() {\n HotPixel.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._pt = null\n this._originalPt = null\n this._ptScaled = null\n this._p0Scaled = null\n this._p1Scaled = null\n this._scaleFactor = null\n this._minx = null\n this._maxx = null\n this._miny = null\n this._maxy = null\n this._corner = new Array(4).fill(null)\n this._safeEnv = null\n const pt = arguments[0], scaleFactor = arguments[1], li = arguments[2]\n this._originalPt = pt\n this._pt = pt\n this._scaleFactor = scaleFactor\n this._li = li\n if (scaleFactor <= 0) throw new IllegalArgumentException('Scale factor must be non-zero')\n if (scaleFactor !== 1.0) {\n this._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y))\n this._p0Scaled = new Coordinate()\n this._p1Scaled = new Coordinate()\n }\n this.initCorners(this._pt)\n }\n intersectsScaled(p0, p1) {\n const segMinx = Math.min(p0.x, p1.x)\n const segMaxx = Math.max(p0.x, p1.x)\n const segMiny = Math.min(p0.y, p1.y)\n const segMaxy = Math.max(p0.y, p1.y)\n const isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy\n if (isOutsidePixelEnv) return false\n const intersects = this.intersectsToleranceSquare(p0, p1)\n Assert.isTrue(!(isOutsidePixelEnv && intersects), 'Found bad envelope test')\n return intersects\n }\n initCorners(pt) {\n const tolerance = 0.5\n this._minx = pt.x - tolerance\n this._maxx = pt.x + tolerance\n this._miny = pt.y - tolerance\n this._maxy = pt.y + tolerance\n this._corner[0] = new Coordinate(this._maxx, this._maxy)\n this._corner[1] = new Coordinate(this._minx, this._maxy)\n this._corner[2] = new Coordinate(this._minx, this._miny)\n this._corner[3] = new Coordinate(this._maxx, this._miny)\n }\n intersects(p0, p1) {\n if (this._scaleFactor === 1.0) return this.intersectsScaled(p0, p1)\n this.copyScaled(p0, this._p0Scaled)\n this.copyScaled(p1, this._p1Scaled)\n return this.intersectsScaled(this._p0Scaled, this._p1Scaled)\n }\n scale(val) {\n return Math.round(val * this._scaleFactor)\n }\n getCoordinate() {\n return this._originalPt\n }\n copyScaled(p, pScaled) {\n pScaled.x = this.scale(p.x)\n pScaled.y = this.scale(p.y)\n }\n getSafeEnvelope() {\n if (this._safeEnv === null) {\n const safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor\n this._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance)\n }\n return this._safeEnv\n }\n intersectsPixelClosure(p0, p1) {\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.hasIntersection()) return true\n return false\n }\n intersectsToleranceSquare(p0, p1) {\n let intersectsLeft = false\n let intersectsBottom = false\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.isProper()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsLeft = true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsBottom = true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.isProper()) return true\n if (intersectsLeft && intersectsBottom) return true\n if (p0.equals(this._pt)) return true\n if (p1.equals(this._pt)) return true\n return false\n }\n addSnappedNode(segStr, segIndex) {\n const p0 = segStr.getCoordinate(segIndex)\n const p1 = segStr.getCoordinate(segIndex + 1)\n if (this.intersects(p0, p1)) {\n segStr.addIntersection(this.getCoordinate(), segIndex)\n return true\n }\n return false\n }\n}\nHotPixel.SAFE_ENV_EXPANSION_FACTOR = 0.75\n","import LineSegment from '../../geom/LineSegment'\nexport default class MonotoneChainSelectAction {\n constructor() {\n MonotoneChainSelectAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.selectedSegment = new LineSegment()\n }\n select() {\n if (arguments.length === 1) {\n const seg = arguments[0]\n } else if (arguments.length === 2) {\n const mc = arguments[0], startIndex = arguments[1]\n mc.getLineSegment(startIndex, this.selectedSegment)\n this.select(this.selectedSegment)\n }\n }\n}\n","import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction'\nimport MonotoneChain from '../../index/chain/MonotoneChain'\nimport ItemVisitor from '../../index/ItemVisitor'\nexport default class MCIndexPointSnapper {\n constructor() {\n MCIndexPointSnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._index = null\n const index = arguments[0]\n this._index = index\n }\n snap() {\n if (arguments.length === 1) {\n const hotPixel = arguments[0]\n return this.snap(hotPixel, null, -1)\n } else if (arguments.length === 3) {\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n const pixelEnv = hotPixel.getSafeEnvelope()\n const hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex)\n this._index.query(pixelEnv, new (class {\n get interfaces_() {\n return [ItemVisitor]\n }\n visitItem(item) {\n const testChain = item\n testChain.select(pixelEnv, hotPixelSnapAction)\n }\n })())\n return hotPixelSnapAction.isNodeAdded()\n }\n }\n}\nclass HotPixelSnapAction extends MonotoneChainSelectAction {\n constructor() {\n super()\n HotPixelSnapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hotPixel = null\n this._parentEdge = null\n this._hotPixelVertexIndex = null\n this._isNodeAdded = false\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n this._hotPixel = hotPixel\n this._parentEdge = parentEdge\n this._hotPixelVertexIndex = hotPixelVertexIndex\n }\n isNodeAdded() {\n return this._isNodeAdded\n }\n select() {\n if (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n const mc = arguments[0], startIndex = arguments[1]\n const ss = mc.getContext()\n if (this._parentEdge === ss) \n if (startIndex === this._hotPixelVertexIndex || startIndex + 1 === this._hotPixelVertexIndex) return null\n \n this._isNodeAdded |= this._hotPixel.addSnappedNode(ss, startIndex)\n } else {\n return super.select.apply(this, arguments)\n }\n }\n}\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction\n","import SegmentIntersector from './SegmentIntersector'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class InteriorIntersectionFinderAdder {\n constructor() {\n InteriorIntersectionFinderAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._interiorIntersections = null\n const li = arguments[0]\n this._li = li\n this._interiorIntersections = new ArrayList()\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isInteriorIntersection()) {\n for (let intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) \n this._interiorIntersections.add(this._li.getIntersection(intIndex))\n \n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n }\n \n }\n isDone() {\n return false\n }\n getInteriorIntersections() {\n return this._interiorIntersections\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import NodingValidator from '../NodingValidator'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport Noder from '../Noder'\nimport MCIndexNoder from '../MCIndexNoder'\nimport NodedSegmentString from '../NodedSegmentString'\nimport HotPixel from './HotPixel'\nimport Exception from '../../../../../java/lang/Exception'\nimport MCIndexPointSnapper from './MCIndexPointSnapper'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport InteriorIntersectionFinderAdder from '../InteriorIntersectionFinderAdder'\nexport default class MCIndexSnapRounder {\n constructor() {\n MCIndexSnapRounder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pm = null\n this._li = null\n this._scaleFactor = null\n this._noder = null\n this._pointSnapper = null\n this._nodedSegStrings = null\n const pm = arguments[0]\n this._pm = pm\n this._li = new RobustLineIntersector()\n this._li.setPrecisionModel(pm)\n this._scaleFactor = pm.getScale()\n }\n checkCorrectness(inputSegmentStrings) {\n const resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings)\n const nv = new NodingValidator(resultSegStrings)\n try {\n nv.checkValid()\n } catch (ex) {\n if (ex instanceof Exception) \n ex.printStackTrace()\n else throw ex\n } finally {}\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n snapRound(segStrings, li) {\n const intersections = this.findInteriorIntersections(segStrings, li)\n this.computeIntersectionSnaps(intersections)\n this.computeVertexSnaps(segStrings)\n }\n findInteriorIntersections(segStrings, li) {\n const intFinderAdder = new InteriorIntersectionFinderAdder(li)\n this._noder.setSegmentIntersector(intFinderAdder)\n this._noder.computeNodes(segStrings)\n return intFinderAdder.getInteriorIntersections()\n }\n computeVertexSnaps() {\n if (hasInterface(arguments[0], Collection)) {\n const edges = arguments[0]\n for (let i0 = edges.iterator(); i0.hasNext(); ) {\n const edge0 = i0.next()\n this.computeVertexSnaps(edge0)\n }\n } else if (arguments[0] instanceof NodedSegmentString) {\n const e = arguments[0]\n const pts0 = e.getCoordinates()\n for (let i = 0; i < pts0.length; i++) {\n const hotPixel = new HotPixel(pts0[i], this._scaleFactor, this._li)\n const isNodeAdded = this._pointSnapper.snap(hotPixel, e, i)\n if (isNodeAdded) \n e.addIntersection(pts0[i], i)\n \n }\n }\n }\n computeNodes(inputSegmentStrings) {\n this._nodedSegStrings = inputSegmentStrings\n this._noder = new MCIndexNoder()\n this._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex())\n this.snapRound(inputSegmentStrings, this._li)\n }\n computeIntersectionSnaps(snapPts) {\n for (let it = snapPts.iterator(); it.hasNext(); ) {\n const snapPt = it.next()\n const hotPixel = new HotPixel(snapPt, this._scaleFactor, this._li)\n this._pointSnapper.snap(hotPixel)\n }\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import BufferParameters from './BufferParameters'\nimport Geometry from '../../geom/Geometry'\nimport BufferBuilder from './BufferBuilder'\nimport ScaledNoder from '../../noding/ScaledNoder'\nimport TopologyException from '../../geom/TopologyException'\nimport MathUtil from '../../math/MathUtil'\nimport PrecisionModel from '../../geom/PrecisionModel'\nimport RuntimeException from '../../../../../java/lang/RuntimeException'\nimport MCIndexSnapRounder from '../../noding/snapround/MCIndexSnapRounder'\nexport default class BufferOp {\n constructor() {\n BufferOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._argGeom = null\n this._distance = null\n this._bufParams = new BufferParameters()\n this._resultGeometry = null\n this._saveException = null\n if (arguments.length === 1) {\n const g = arguments[0]\n this._argGeom = g\n } else if (arguments.length === 2) {\n const g = arguments[0], bufParams = arguments[1]\n this._argGeom = g\n this._bufParams = bufParams\n }\n }\n static bufferOp() {\n if (arguments.length === 2) {\n const g = arguments[0], distance = arguments[1]\n const gBuf = new BufferOp(g)\n const geomBuf = gBuf.getResultGeometry(distance)\n return geomBuf\n } else if (arguments.length === 3) {\n if (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n } else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], params = arguments[2]\n const bufOp = new BufferOp(g, params)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n } else if (arguments.length === 4) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2], endCapStyle = arguments[3]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n bufOp.setEndCapStyle(endCapStyle)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n }\n static precisionScaleFactor(g, distance, maxPrecisionDigits) {\n const env = g.getEnvelopeInternal()\n const envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()))\n const expandByDistance = distance > 0.0 ? distance : 0.0\n const bufEnvMax = envMax + 2 * expandByDistance\n const bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0)\n const minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits\n const scaleFactor = Math.pow(10.0, minUnitLog10)\n return scaleFactor\n }\n bufferFixedPrecision(fixedPM) {\n const noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale())\n const bufBuilder = new BufferBuilder(this._bufParams)\n bufBuilder.setWorkingPrecisionModel(fixedPM)\n bufBuilder.setNoder(noder)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n }\n bufferReducedPrecision() {\n if (arguments.length === 0) {\n for (let precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n try {\n this.bufferReducedPrecision(precDigits)\n } catch (ex) {\n if (ex instanceof TopologyException) \n this._saveException = ex\n else throw ex\n } finally {}\n if (this._resultGeometry !== null) return null\n }\n throw this._saveException\n } else if (arguments.length === 1) {\n const precisionDigits = arguments[0]\n const sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits)\n const fixedPM = new PrecisionModel(sizeBasedScaleFactor)\n this.bufferFixedPrecision(fixedPM)\n }\n }\n computeGeometry() {\n this.bufferOriginalPrecision()\n if (this._resultGeometry !== null) return null\n const argPM = this._argGeom.getFactory().getPrecisionModel()\n if (argPM.getType() === PrecisionModel.FIXED) this.bufferFixedPrecision(argPM); else this.bufferReducedPrecision()\n }\n setQuadrantSegments(quadrantSegments) {\n this._bufParams.setQuadrantSegments(quadrantSegments)\n }\n bufferOriginalPrecision() {\n try {\n const bufBuilder = new BufferBuilder(this._bufParams)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n } catch (ex) {\n if (ex instanceof RuntimeException) \n this._saveException = ex\n else throw ex\n } finally {}\n }\n getResultGeometry(distance) {\n this._distance = distance\n this.computeGeometry()\n return this._resultGeometry\n }\n setEndCapStyle(endCapStyle) {\n this._bufParams.setEndCapStyle(endCapStyle)\n }\n}\nBufferOp.CAP_ROUND = BufferParameters.CAP_ROUND\nBufferOp.CAP_BUTT = BufferParameters.CAP_FLAT\nBufferOp.CAP_FLAT = BufferParameters.CAP_FLAT\nBufferOp.CAP_SQUARE = BufferParameters.CAP_SQUARE\nBufferOp.MAX_PRECISION_DIGITS = 12\n","import WKTWriter from '../../io/WKTWriter'\nexport default class GeometryLocation {\n constructor() {\n GeometryLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._component = null\n this._segIndex = null\n this._pt = null\n if (arguments.length === 2) {\n const component = arguments[0], pt = arguments[1]\n GeometryLocation.constructor_.call(this, component, GeometryLocation.INSIDE_AREA, pt)\n } else if (arguments.length === 3) {\n const component = arguments[0], segIndex = arguments[1], pt = arguments[2]\n this._component = component\n this._segIndex = segIndex\n this._pt = pt\n }\n }\n getSegmentIndex() {\n return this._segIndex\n }\n getCoordinate() {\n return this._pt\n }\n isInsideArea() {\n return this._segIndex === GeometryLocation.INSIDE_AREA\n }\n toString() {\n return this._component.getGeometryType() + '[' + this._segIndex + ']' + '-' + WKTWriter.toPoint(this._pt)\n }\n getGeometryComponent() {\n return this._component\n }\n}\nGeometryLocation.INSIDE_AREA = -1\n","import LineString from '../../geom/LineString'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport GeometryLocation from './GeometryLocation'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GeometryFilter from '../../geom/GeometryFilter'\nexport default class ConnectedElementLocationFilter {\n constructor() {\n ConnectedElementLocationFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._locations = null\n const locations = arguments[0]\n this._locations = locations\n }\n static getLocations(geom) {\n const locations = new ArrayList()\n geom.apply(new ConnectedElementLocationFilter(locations))\n return locations\n }\n filter(geom) {\n if (geom.isEmpty()) return null\n if (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate()))\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import PointLocator from '../../algorithm/PointLocator'\nimport PolygonExtracter from '../../geom/util/PolygonExtracter'\nimport Location from '../../geom/Location'\nimport LineString from '../../geom/LineString'\nimport hasInterface from '../../../../../hasInterface'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport GeometryLocation from './GeometryLocation'\nimport Double from '../../../../../java/lang/Double'\nimport PointExtracter from '../../geom/util/PointExtracter'\nimport ConnectedElementLocationFilter from './ConnectedElementLocationFilter'\nimport LineSegment from '../../geom/LineSegment'\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter'\nimport Envelope from '../../geom/Envelope'\nimport List from '../../../../../java/util/List'\nimport Distance from '../../algorithm/Distance'\nexport default class DistanceOp {\n constructor() {\n DistanceOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._terminateDistance = 0.0\n this._ptLocator = new PointLocator()\n this._minDistanceLocation = null\n this._minDistance = Double.MAX_VALUE\n if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n DistanceOp.constructor_.call(this, g0, g1, 0.0)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], terminateDistance = arguments[2]\n this._geom = new Array(2).fill(null)\n this._geom[0] = g0\n this._geom[1] = g1\n this._terminateDistance = terminateDistance\n }\n }\n static distance(g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.distance()\n }\n static isWithinDistance(g0, g1, distance) {\n const envDist = g0.getEnvelopeInternal().distance(g1.getEnvelopeInternal())\n if (envDist > distance) return false\n const distOp = new DistanceOp(g0, g1, distance)\n return distOp.distance() <= distance\n }\n static nearestPoints(g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.nearestPoints()\n }\n computeContainmentDistance() {\n if (arguments.length === 0) {\n const locPtPoly = new Array(2).fill(null)\n this.computeContainmentDistance(0, locPtPoly)\n if (this._minDistance <= this._terminateDistance) return null\n this.computeContainmentDistance(1, locPtPoly)\n } else if (arguments.length === 2) {\n const polyGeomIndex = arguments[0], locPtPoly = arguments[1]\n const polyGeom = this._geom[polyGeomIndex]\n if (polyGeom.getDimension() < 2) return null\n const locationsIndex = 1 - polyGeomIndex\n const polys = PolygonExtracter.getPolygons(polyGeom)\n if (polys.size() > 0) {\n const insideLocs = ConnectedElementLocationFilter.getLocations(this._geom[locationsIndex])\n this.computeContainmentDistance(insideLocs, polys, locPtPoly)\n if (this._minDistance <= this._terminateDistance) {\n this._minDistanceLocation[locationsIndex] = locPtPoly[0]\n this._minDistanceLocation[polyGeomIndex] = locPtPoly[1]\n return null\n }\n }\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n const locs = arguments[0], polys = arguments[1], locPtPoly = arguments[2]\n for (let i = 0; i < locs.size(); i++) {\n const loc = locs.get(i)\n for (let j = 0; j < polys.size(); j++) {\n this.computeContainmentDistance(loc, polys.get(j), locPtPoly)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof GeometryLocation && arguments[1] instanceof Polygon)) {\n const ptLoc = arguments[0], poly = arguments[1], locPtPoly = arguments[2]\n const pt = ptLoc.getCoordinate()\n if (Location.EXTERIOR !== this._ptLocator.locate(pt, poly)) {\n this._minDistance = 0.0\n locPtPoly[0] = ptLoc\n locPtPoly[1] = new GeometryLocation(poly, pt)\n \n return null\n }\n }\n }\n }\n computeMinDistanceLinesPoints(lines, points, locGeom) {\n for (let i = 0; i < lines.size(); i++) {\n const line = lines.get(i)\n for (let j = 0; j < points.size(); j++) {\n const pt = points.get(j)\n this.computeMinDistance(line, pt, locGeom)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n computeFacetDistance() {\n const locGeom = new Array(2).fill(null)\n const lines0 = LinearComponentExtracter.getLines(this._geom[0])\n const lines1 = LinearComponentExtracter.getLines(this._geom[1])\n const pts0 = PointExtracter.getPoints(this._geom[0])\n const pts1 = PointExtracter.getPoints(this._geom[1])\n this.computeMinDistanceLines(lines0, lines1, locGeom)\n this.updateMinDistance(locGeom, false)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistanceLinesPoints(lines0, pts1, locGeom)\n this.updateMinDistance(locGeom, false)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistanceLinesPoints(lines1, pts0, locGeom)\n this.updateMinDistance(locGeom, true)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistancePoints(pts0, pts1, locGeom)\n this.updateMinDistance(locGeom, false)\n }\n nearestLocations() {\n this.computeMinDistance()\n return this._minDistanceLocation\n }\n updateMinDistance(locGeom, flip) {\n if (locGeom[0] === null) return null\n if (flip) {\n this._minDistanceLocation[0] = locGeom[1]\n this._minDistanceLocation[1] = locGeom[0]\n } else {\n this._minDistanceLocation[0] = locGeom[0]\n this._minDistanceLocation[1] = locGeom[1]\n }\n }\n nearestPoints() {\n this.computeMinDistance()\n const nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()]\n return nearestPts\n }\n computeMinDistance() {\n if (arguments.length === 0) {\n if (this._minDistanceLocation !== null) return null\n this._minDistanceLocation = new Array(2).fill(null)\n this.computeContainmentDistance()\n if (this._minDistance <= this._terminateDistance) return null\n this.computeFacetDistance()\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof Point)) {\n const line = arguments[0], pt = arguments[1], locGeom = arguments[2]\n if (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > this._minDistance) return null\n const coord0 = line.getCoordinates()\n const coord = pt.getCoordinate()\n for (let i = 0; i < coord0.length - 1; i++) {\n const dist = Distance.pointToSegment(coord, coord0[i], coord0[i + 1])\n if (dist < this._minDistance) {\n this._minDistance = dist\n const seg = new LineSegment(coord0[i], coord0[i + 1])\n const segClosestPoint = seg.closestPoint(coord)\n locGeom[0] = new GeometryLocation(line, i, segClosestPoint)\n locGeom[1] = new GeometryLocation(pt, 0, coord)\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof LineString)) {\n const line0 = arguments[0], line1 = arguments[1], locGeom = arguments[2]\n if (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) > this._minDistance) return null\n const coord0 = line0.getCoordinates()\n const coord1 = line1.getCoordinates()\n for (let i = 0; i < coord0.length - 1; i++) {\n const segEnv0 = new Envelope(coord0[i], coord0[i + 1])\n if (segEnv0.distance(line1.getEnvelopeInternal()) > this._minDistance) continue\n for (let j = 0; j < coord1.length - 1; j++) {\n const segEnv1 = new Envelope(coord1[j], coord1[j + 1])\n if (segEnv0.distance(segEnv1) > this._minDistance) continue\n const dist = Distance.segmentToSegment(coord0[i], coord0[i + 1], coord1[j], coord1[j + 1])\n if (dist < this._minDistance) {\n this._minDistance = dist\n const seg0 = new LineSegment(coord0[i], coord0[i + 1])\n const seg1 = new LineSegment(coord1[j], coord1[j + 1])\n const closestPt = seg0.closestPoints(seg1)\n locGeom[0] = new GeometryLocation(line0, i, closestPt[0])\n locGeom[1] = new GeometryLocation(line1, j, closestPt[1])\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n }\n }\n computeMinDistancePoints(points0, points1, locGeom) {\n for (let i = 0; i < points0.size(); i++) {\n const pt0 = points0.get(i)\n for (let j = 0; j < points1.size(); j++) {\n const pt1 = points1.get(j)\n const dist = pt0.getCoordinate().distance(pt1.getCoordinate())\n if (dist < this._minDistance) {\n this._minDistance = dist\n locGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate())\n locGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate())\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n distance() {\n if (this._geom[0] === null || this._geom[1] === null) throw new IllegalArgumentException('null geometries are not supported')\n if (this._geom[0].isEmpty() || this._geom[1].isEmpty()) return 0.0\n this.computeMinDistance()\n return this._minDistance\n }\n computeMinDistanceLines(lines0, lines1, locGeom) {\n for (let i = 0; i < lines0.size(); i++) {\n const line0 = lines0.get(i)\n for (let j = 0; j < lines1.size(); j++) {\n const line1 = lines1.get(j)\n this.computeMinDistance(line0, line1, locGeom)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n}\n","import CoordinateList from '../../geom/CoordinateList'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class EdgeString {\n constructor() {\n EdgeString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n this._directedEdges = new ArrayList()\n this._coordinates = null\n const factory = arguments[0]\n this._factory = factory\n }\n getCoordinates() {\n if (this._coordinates === null) {\n let forwardDirectedEdges = 0\n let reverseDirectedEdges = 0\n const coordinateList = new CoordinateList()\n for (let i = this._directedEdges.iterator(); i.hasNext(); ) {\n const directedEdge = i.next()\n if (directedEdge.getEdgeDirection()) \n forwardDirectedEdges++\n else \n reverseDirectedEdges++\n \n coordinateList.add(directedEdge.getEdge().getLine().getCoordinates(), false, directedEdge.getEdgeDirection())\n }\n this._coordinates = coordinateList.toCoordinateArray()\n if (reverseDirectedEdges > forwardDirectedEdges) \n CoordinateArrays.reverse(this._coordinates)\n \n }\n return this._coordinates\n }\n toLineString() {\n return this._factory.createLineString(this.getCoordinates())\n }\n add(directedEdge) {\n this._directedEdges.add(directedEdge)\n }\n}\n","export default class GraphComponent {\n constructor() {\n GraphComponent.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isMarked = false\n this._isVisited = false\n this._data = null\n }\n static getComponentWithVisitedState(i, visitedState) {\n while (i.hasNext()) {\n const comp = i.next()\n if (comp.isVisited() === visitedState) return comp\n }\n return null\n }\n static setVisited(i, visited) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setVisited(visited)\n }\n }\n static setMarked(i, marked) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setMarked(marked)\n }\n }\n setVisited(isVisited) {\n this._isVisited = isVisited\n }\n isMarked() {\n return this._isMarked\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n setMarked(isMarked) {\n this._isMarked = isMarked\n }\n getContext() {\n return this._data\n }\n isVisited() {\n return this._isVisited\n }\n setContext(data) {\n this._data = data\n }\n}\n","import Orientation from '../algorithm/Orientation'\nimport Comparable from '../../../../java/lang/Comparable'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Quadrant from '../geomgraph/Quadrant'\nimport GraphComponent from './GraphComponent'\nexport default class DirectedEdge extends GraphComponent {\n constructor() {\n super()\n DirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentEdge = null\n this._from = null\n this._to = null\n this._p0 = null\n this._p1 = null\n this._sym = null\n this._edgeDirection = null\n this._quadrant = null\n this._angle = null\n if (arguments.length === 0) {} else if (arguments.length === 4) {\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n this._from = from\n this._to = to\n this._edgeDirection = edgeDirection\n this._p0 = from.getCoordinate()\n this._p1 = directionPt\n const dx = this._p1.x - this._p0.x\n const dy = this._p1.y - this._p0.y\n this._quadrant = Quadrant.quadrant(dx, dy)\n this._angle = Math.atan2(dy, dx)\n }\n }\n static toEdges(dirEdges) {\n const edges = new ArrayList()\n for (let i = dirEdges.iterator(); i.hasNext(); ) \n edges.add(i.next()._parentEdge)\n \n return edges\n }\n isRemoved() {\n return this._parentEdge === null\n }\n compareDirection(e) {\n if (this._quadrant > e._quadrant) return 1\n if (this._quadrant < e._quadrant) return -1\n return Orientation.index(e._p0, e._p1, this._p1)\n }\n getCoordinate() {\n return this._from.getCoordinate()\n }\n print(out) {\n const className = this.getClass().getName()\n const lastDotPos = className.lastIndexOf('.')\n const name = className.substring(lastDotPos + 1)\n out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + this._angle)\n }\n getDirectionPt() {\n return this._p1\n }\n getAngle() {\n return this._angle\n }\n compareTo(obj) {\n const de = obj\n return this.compareDirection(de)\n }\n getFromNode() {\n return this._from\n }\n getSym() {\n return this._sym\n }\n setEdge(parentEdge) {\n this._parentEdge = parentEdge\n }\n remove() {\n this._sym = null\n this._parentEdge = null\n }\n getEdge() {\n return this._parentEdge\n }\n getQuadrant() {\n return this._quadrant\n }\n setSym(sym) {\n this._sym = sym\n }\n getToNode() {\n return this._to\n }\n getEdgeDirection() {\n return this._edgeDirection\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import DirectedEdge from '../../planargraph/DirectedEdge'\nimport Assert from '../../util/Assert'\nexport default class LineMergeDirectedEdge extends DirectedEdge {\n constructor() {\n super()\n LineMergeDirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\n }\n getNext() {\n if (this.getToNode().getDegree() !== 2) \n return null\n \n if (this.getToNode().getOutEdges().getEdges().get(0) === this.getSym()) \n return this.getToNode().getOutEdges().getEdges().get(1)\n \n Assert.isTrue(this.getToNode().getOutEdges().getEdges().get(1) === this.getSym())\n return this.getToNode().getOutEdges().getEdges().get(0)\n }\n}\n","import Node from './Node'\nimport GraphComponent from './GraphComponent'\nexport default class Edge extends GraphComponent {\n constructor() {\n super()\n Edge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._dirEdge = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const de0 = arguments[0], de1 = arguments[1]\n this.setDirectedEdges(de0, de1)\n }\n }\n isRemoved() {\n return this._dirEdge === null\n }\n setDirectedEdges(de0, de1) {\n this._dirEdge = [de0, de1]\n de0.setEdge(this)\n de1.setEdge(this)\n de0.setSym(de1)\n de1.setSym(de0)\n de0.getFromNode().addOutEdge(de0)\n de1.getFromNode().addOutEdge(de1)\n }\n getDirEdge() {\n if (Number.isInteger(arguments[0])) {\n const i = arguments[0]\n return this._dirEdge[i]\n } else if (arguments[0] instanceof Node) {\n const fromNode = arguments[0]\n if (this._dirEdge[0].getFromNode() === fromNode) return this._dirEdge[0]\n if (this._dirEdge[1].getFromNode() === fromNode) return this._dirEdge[1]\n return null\n }\n }\n remove() {\n this._dirEdge = null\n }\n getOppositeNode(node) {\n if (this._dirEdge[0].getFromNode() === node) return this._dirEdge[0].getToNode()\n if (this._dirEdge[1].getFromNode() === node) return this._dirEdge[1].getToNode()\n return null\n }\n}\n","import Collections from '../../../../java/util/Collections'\nimport DirectedEdge from './DirectedEdge'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Edge from './Edge'\nexport default class DirectedEdgeStar {\n constructor() {\n DirectedEdgeStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._outEdges = new ArrayList()\n this._sorted = false\n }\n getNextEdge(dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i + 1))\n }\n getCoordinate() {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\n iterator() {\n this.sortEdges()\n return this._outEdges.iterator()\n }\n sortEdges() {\n if (!this._sorted) {\n Collections.sort(this._outEdges)\n this._sorted = true\n }\n }\n remove(de) {\n this._outEdges.remove(de)\n }\n getEdges() {\n this.sortEdges()\n return this._outEdges\n }\n getNextCWEdge(dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i - 1))\n }\n getIndex() {\n if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this.sortEdges()\n for (let i = 0; i < this._outEdges.size(); i++) {\n const de = this._outEdges.get(i)\n if (de.getEdge() === edge) return i\n }\n return -1\n } else if (arguments[0] instanceof DirectedEdge) {\n const dirEdge = arguments[0]\n this.sortEdges()\n for (let i = 0; i < this._outEdges.size(); i++) {\n const de = this._outEdges.get(i)\n if (de === dirEdge) return i\n }\n return -1\n } else if (Number.isInteger(arguments[0])) {\n const i = arguments[0]\n let modi = i % this._outEdges.size()\n if (modi < 0) modi += this._outEdges.size()\n return modi\n }\n }\n add(de) {\n this._outEdges.add(de)\n this._sorted = false\n }\n getDegree() {\n return this._outEdges.size()\n }\n}\n","import DirectedEdgeStar from './DirectedEdgeStar'\nimport HashSet from '../../../../java/util/HashSet'\nimport DirectedEdge from './DirectedEdge'\nimport GraphComponent from './GraphComponent'\nexport default class Node extends GraphComponent {\n constructor() {\n super()\n Node.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n this._deStar = null\n if (arguments.length === 1) {\n const pt = arguments[0]\n Node.constructor_.call(this, pt, new DirectedEdgeStar())\n } else if (arguments.length === 2) {\n const pt = arguments[0], deStar = arguments[1]\n this._pt = pt\n this._deStar = deStar\n }\n }\n static getEdgesBetween(node0, node1) {\n const edges0 = DirectedEdge.toEdges(node0.getOutEdges().getEdges())\n const commonEdges = new HashSet(edges0)\n const edges1 = DirectedEdge.toEdges(node1.getOutEdges().getEdges())\n commonEdges.retainAll(edges1)\n return commonEdges\n }\n isRemoved() {\n return this._pt === null\n }\n addOutEdge(de) {\n this._deStar.add(de)\n }\n getCoordinate() {\n return this._pt\n }\n getOutEdges() {\n return this._deStar\n }\n remove() {\n if (arguments.length === 0) {\n this._pt = null\n } else if (arguments.length === 1) {\n const de = arguments[0]\n this._deStar.remove(de)\n }\n }\n getIndex(edge) {\n return this._deStar.getIndex(edge)\n }\n getDegree() {\n return this._deStar.getDegree()\n }\n}\n","import Edge from '../../planargraph/Edge'\nexport default class LineMergeEdge extends Edge {\n constructor() {\n super()\n LineMergeEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n getLine() {\n return this._line\n }\n}\n","import TreeMap from '../../../../java/util/TreeMap'\nexport default class NodeMap {\n constructor() {\n NodeMap.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n }\n find(coord) {\n return this._nodeMap.get(coord)\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n remove(pt) {\n return this._nodeMap.remove(pt)\n }\n values() {\n return this._nodeMap.values()\n }\n add(n) {\n this._nodeMap.put(n.getCoordinate(), n)\n return n\n }\n}\n","import HashSet from '../../../../java/util/HashSet'\nimport Node from './Node'\nimport NodeMap from './NodeMap'\nimport DirectedEdge from './DirectedEdge'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Edge from './Edge'\nexport default class PlanarGraph {\n constructor() {\n PlanarGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new HashSet()\n this._dirEdges = new HashSet()\n this._nodeMap = new NodeMap()\n }\n findNodesOfDegree(degree) {\n const nodesFound = new ArrayList()\n for (let i = this.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() === degree) nodesFound.add(node)\n }\n return nodesFound\n }\n dirEdgeIterator() {\n return this._dirEdges.iterator()\n }\n edgeIterator() {\n return this._edges.iterator()\n }\n remove() {\n if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this.remove(edge.getDirEdge(0))\n this.remove(edge.getDirEdge(1))\n this._edges.remove(edge)\n edge.remove()\n } else if (arguments[0] instanceof DirectedEdge) {\n const de = arguments[0]\n const sym = de.getSym()\n if (sym !== null) sym.setSym(null)\n de.getFromNode().remove(de)\n de.remove()\n this._dirEdges.remove(de)\n } else if (arguments[0] instanceof Node) {\n const node = arguments[0]\n const outEdges = node.getOutEdges().getEdges()\n for (let i = outEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym !== null) this.remove(sym)\n this._dirEdges.remove(de)\n const edge = de.getEdge()\n if (edge !== null) \n this._edges.remove(edge)\n \n }\n this._nodeMap.remove(node.getCoordinate())\n node.remove()\n }\n }\n findNode(pt) {\n return this._nodeMap.find(pt)\n }\n getEdges() {\n return this._edges\n }\n nodeIterator() {\n return this._nodeMap.iterator()\n }\n contains() {\n if (arguments[0] instanceof Edge) {\n const e = arguments[0]\n return this._edges.contains(e)\n } else if (arguments[0] instanceof DirectedEdge) {\n const de = arguments[0]\n return this._dirEdges.contains(de)\n }\n }\n add() {\n if (arguments[0] instanceof Node) {\n const node = arguments[0]\n this._nodeMap.add(node)\n } else if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this._edges.add(edge)\n this.add(edge.getDirEdge(0))\n this.add(edge.getDirEdge(1))\n } else if (arguments[0] instanceof DirectedEdge) {\n const dirEdge = arguments[0]\n this._dirEdges.add(dirEdge)\n }\n }\n getNodes() {\n return this._nodeMap.values()\n }\n}\n","import LineMergeDirectedEdge from './LineMergeDirectedEdge'\nimport Node from '../../planargraph/Node'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport LineMergeEdge from './LineMergeEdge'\nimport PlanarGraph from '../../planargraph/PlanarGraph'\nexport default class LineMergeGraph extends PlanarGraph {\n constructor() {\n super()\n }\n addEdge(lineString) {\n if (lineString.isEmpty()) \n return null\n \n const coordinates = CoordinateArrays.removeRepeatedPoints(lineString.getCoordinates())\n if (coordinates.length <= 1) return null\n const startCoordinate = coordinates[0]\n const endCoordinate = coordinates[coordinates.length - 1]\n const startNode = this.getNode(startCoordinate)\n const endNode = this.getNode(endCoordinate)\n const directedEdge0 = new LineMergeDirectedEdge(startNode, endNode, coordinates[1], true)\n const directedEdge1 = new LineMergeDirectedEdge(endNode, startNode, coordinates[coordinates.length - 2], false)\n const edge = new LineMergeEdge(lineString)\n edge.setDirectedEdges(directedEdge0, directedEdge1)\n this.add(edge)\n }\n getNode(coordinate) {\n let node = this.findNode(coordinate)\n if (node === null) {\n node = new Node(coordinate)\n this.add(node)\n }\n return node\n }\n}\n","import LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport EdgeString from './EdgeString'\nimport LineMergeGraph from './LineMergeGraph'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport GraphComponent from '../../planargraph/GraphComponent'\nexport default class LineMerger {\n constructor() {\n LineMerger.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = new LineMergeGraph()\n this._mergedLineStrings = null\n this._factory = null\n this._edgeStrings = null\n }\n buildEdgeStringsForUnprocessedNodes() {\n for (let i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (!node.isMarked()) {\n Assert.isTrue(node.getDegree() === 2)\n this.buildEdgeStringsStartingAt(node)\n node.setMarked(true)\n }\n }\n }\n buildEdgeStringsForNonDegree2Nodes() {\n for (let i = this._graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() !== 2) {\n this.buildEdgeStringsStartingAt(node)\n node.setMarked(true)\n }\n }\n }\n buildEdgeStringsForObviousStartNodes() {\n this.buildEdgeStringsForNonDegree2Nodes()\n }\n getMergedLineStrings() {\n this.merge()\n return this._mergedLineStrings\n }\n buildEdgeStringsStartingAt(node) {\n for (let i = node.getOutEdges().iterator(); i.hasNext(); ) {\n const directedEdge = i.next()\n if (directedEdge.getEdge().isMarked()) \n continue\n \n this._edgeStrings.add(this.buildEdgeStringStartingWith(directedEdge))\n }\n }\n merge() {\n if (this._mergedLineStrings !== null) \n return null\n \n GraphComponent.setMarked(this._graph.nodeIterator(), false)\n GraphComponent.setMarked(this._graph.edgeIterator(), false)\n this._edgeStrings = new ArrayList()\n this.buildEdgeStringsForObviousStartNodes()\n this.buildEdgeStringsForIsolatedLoops()\n this._mergedLineStrings = new ArrayList()\n for (let i = this._edgeStrings.iterator(); i.hasNext(); ) {\n const edgeString = i.next()\n this._mergedLineStrings.add(edgeString.toLineString())\n }\n }\n addLineString(lineString) {\n if (this._factory === null) \n this._factory = lineString.getFactory()\n \n this._graph.addEdge(lineString)\n }\n buildEdgeStringStartingWith(start) {\n const edgeString = new EdgeString(this._factory)\n let current = start\n do {\n edgeString.add(current)\n current.getEdge().setMarked(true)\n current = current.getNext()\n } while (current !== null && current !== start)\n return edgeString\n }\n add() {\n if (arguments[0] instanceof Geometry) {\n const geometry = arguments[0]\n for (let i = 0; i < geometry.getNumGeometries(); i++) {\n const component = geometry.getGeometryN(i)\n if (component instanceof LineString) \n this.addLineString(component)\n \n }\n \n } else if (hasInterface(arguments[0], Collection)) {\n const geometries = arguments[0]\n this._mergedLineStrings = null\n for (let i = geometries.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n }\n }\n buildEdgeStringsForIsolatedLoops() {\n this.buildEdgeStringsForUnprocessedNodes()\n }\n}\n","import HashSet from '../../../../java/util/HashSet'\nimport NodeMap from './NodeMap'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class Subgraph {\n constructor() {\n Subgraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentGraph = null\n this._edges = new HashSet()\n this._dirEdges = new ArrayList()\n this._nodeMap = new NodeMap()\n const parentGraph = arguments[0]\n this._parentGraph = parentGraph\n }\n dirEdgeIterator() {\n return this._dirEdges.iterator()\n }\n edgeIterator() {\n return this._edges.iterator()\n }\n getParent() {\n return this._parentGraph\n }\n nodeIterator() {\n return this._nodeMap.iterator()\n }\n contains(e) {\n return this._edges.contains(e)\n }\n add(e) {\n if (this._edges.contains(e)) return null\n this._edges.add(e)\n this._dirEdges.add(e.getDirEdge(0))\n this._dirEdges.add(e.getDirEdge(1))\n this._nodeMap.add(e.getDirEdge(0).getFromNode())\n this._nodeMap.add(e.getDirEdge(1).getFromNode())\n }\n}\n","import Stack from '../../../../../java/util/Stack'\nimport Subgraph from '../Subgraph'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GraphComponent from '../GraphComponent'\nexport default class ConnectedSubgraphFinder {\n constructor() {\n ConnectedSubgraphFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = null\n const graph = arguments[0]\n this._graph = graph\n }\n addReachable(startNode, subgraph) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.addEdges(node, nodeStack, subgraph)\n }\n }\n findSubgraph(node) {\n const subgraph = new Subgraph(this._graph)\n this.addReachable(node, subgraph)\n return subgraph\n }\n getConnectedSubgraphs() {\n const subgraphs = new ArrayList()\n GraphComponent.setVisited(this._graph.nodeIterator(), false)\n for (let i = this._graph.edgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const node = e.getDirEdge(0).getFromNode()\n if (!node.isVisited()) \n subgraphs.add(this.findSubgraph(node))\n \n }\n return subgraphs\n }\n addEdges(node, nodeStack, subgraph) {\n node.setVisited(true)\n for (let i = node.getOutEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n subgraph.add(de.getEdge())\n const toNode = de.getToNode()\n if (!toNode.isVisited()) nodeStack.push(toNode)\n }\n }\n}\n","import TreeSet from '../../../../../java/util/TreeSet'\nimport LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Collection from '../../../../../java/util/Collection'\nimport Coordinate from '../../geom/Coordinate'\nimport Integer from '../../../../../java/lang/Integer'\nimport LineMergeGraph from './LineMergeGraph'\nimport LinkedList from '../../../../../java/util/LinkedList'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport ConnectedSubgraphFinder from '../../planargraph/algorithm/ConnectedSubgraphFinder'\nimport Assert from '../../util/Assert'\nimport MultiLineString from '../../geom/MultiLineString'\nimport GraphComponent from '../../planargraph/GraphComponent'\nexport default class LineSequencer {\n constructor() {\n LineSequencer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = new LineMergeGraph()\n this._factory = new GeometryFactory()\n this._lineCount = 0\n this._isRun = false\n this._sequencedGeometry = null\n this._isSequenceable = false\n }\n static findUnvisitedBestOrientedDE(node) {\n let wellOrientedDE = null\n let unvisitedDE = null\n for (let i = node.getOutEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.getEdge().isVisited()) {\n unvisitedDE = de\n if (de.getEdgeDirection()) wellOrientedDE = de\n }\n }\n if (wellOrientedDE !== null) return wellOrientedDE\n return unvisitedDE\n }\n static findLowestDegreeNode(graph) {\n let minDegree = Integer.MAX_VALUE\n let minDegreeNode = null\n for (let i = graph.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (minDegreeNode === null || node.getDegree() < minDegree) {\n minDegree = node.getDegree()\n minDegreeNode = node\n }\n }\n return minDegreeNode\n }\n static isSequenced(geom) {\n if (!(geom instanceof MultiLineString)) \n return true\n \n const mls = geom\n const prevSubgraphNodes = new TreeSet()\n let lastNode = null\n const currNodes = new ArrayList()\n for (let i = 0; i < mls.getNumGeometries(); i++) {\n const line = mls.getGeometryN(i)\n const startNode = line.getCoordinateN(0)\n const endNode = line.getCoordinateN(line.getNumPoints() - 1)\n if (prevSubgraphNodes.contains(startNode)) return false\n if (prevSubgraphNodes.contains(endNode)) return false\n if (lastNode !== null) \n if (!startNode.equals(lastNode)) {\n prevSubgraphNodes.addAll(currNodes)\n currNodes.clear()\n }\n \n currNodes.add(startNode)\n currNodes.add(endNode)\n lastNode = endNode\n }\n return true\n }\n static reverse(line) {\n const pts = line.getCoordinates()\n const revPts = new Array(pts.length).fill(null)\n const len = pts.length\n for (let i = 0; i < len; i++) \n revPts[len - 1 - i] = new Coordinate(pts[i])\n \n return line.getFactory().createLineString(revPts)\n }\n static sequence(geom) {\n const sequencer = new LineSequencer()\n sequencer.add(geom)\n return sequencer.getSequencedLineStrings()\n }\n addLine(lineString) {\n if (this._factory === null) \n this._factory = lineString.getFactory()\n \n this._graph.addEdge(lineString)\n this._lineCount++\n }\n hasSequence(graph) {\n let oddDegreeCount = 0\n for (let i = graph.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() % 2 === 1) oddDegreeCount++\n }\n return oddDegreeCount <= 2\n }\n computeSequence() {\n if (this._isRun) \n return null\n \n this._isRun = true\n const sequences = this.findSequences()\n if (sequences === null) return null\n this._sequencedGeometry = this.buildSequencedGeometry(sequences)\n this._isSequenceable = true\n const finalLineCount = this._sequencedGeometry.getNumGeometries()\n Assert.isTrue(this._lineCount === finalLineCount, 'Lines were missing from result')\n Assert.isTrue(this._sequencedGeometry instanceof LineString || this._sequencedGeometry instanceof MultiLineString, 'Result is not lineal')\n }\n findSequences() {\n const sequences = new ArrayList()\n const csFinder = new ConnectedSubgraphFinder(this._graph)\n const subgraphs = csFinder.getConnectedSubgraphs()\n for (let i = subgraphs.iterator(); i.hasNext(); ) {\n const subgraph = i.next()\n if (this.hasSequence(subgraph)) {\n const seq = this.findSequence(subgraph)\n sequences.add(seq)\n } else {\n return null\n }\n }\n return sequences\n }\n addReverseSubpath(de, lit, expectedClosed) {\n const endNode = de.getToNode()\n let fromNode = null\n while (true) {\n lit.add(de.getSym())\n de.getEdge().setVisited(true)\n fromNode = de.getFromNode()\n const unvisitedOutDE = LineSequencer.findUnvisitedBestOrientedDE(fromNode)\n if (unvisitedOutDE === null) break\n de = unvisitedOutDE.getSym()\n }\n if (expectedClosed) \n Assert.isTrue(fromNode === endNode, 'path not contiguous')\n \n }\n findSequence(graph) {\n GraphComponent.setVisited(graph.edgeIterator(), false)\n const startNode = LineSequencer.findLowestDegreeNode(graph)\n const startDE = startNode.getOutEdges().iterator().next()\n const startDESym = startDE.getSym()\n const seq = new LinkedList()\n const lit = seq.listIterator()\n this.addReverseSubpath(startDESym, lit, false)\n while (lit.hasPrevious()) {\n const prev = lit.previous()\n const unvisitedOutDE = LineSequencer.findUnvisitedBestOrientedDE(prev.getFromNode())\n if (unvisitedOutDE !== null) this.addReverseSubpath(unvisitedOutDE.getSym(), lit, true)\n }\n const orientedSeq = this.orient(seq)\n return orientedSeq\n }\n reverse(seq) {\n const newSeq = new LinkedList()\n for (let i = seq.iterator(); i.hasNext(); ) {\n const de = i.next()\n newSeq.addFirst(de.getSym())\n }\n return newSeq\n }\n orient(seq) {\n const startEdge = seq.get(0)\n const endEdge = seq.get(seq.size() - 1)\n const startNode = startEdge.getFromNode()\n const endNode = endEdge.getToNode()\n let flipSeq = false\n const hasDegree1Node = startNode.getDegree() === 1 || endNode.getDegree() === 1\n if (hasDegree1Node) {\n let hasObviousStartNode = false\n if (endEdge.getToNode().getDegree() === 1 && endEdge.getEdgeDirection() === false) {\n hasObviousStartNode = true\n flipSeq = true\n }\n if (startEdge.getFromNode().getDegree() === 1 && startEdge.getEdgeDirection() === true) {\n hasObviousStartNode = true\n flipSeq = false\n }\n if (!hasObviousStartNode) \n if (startEdge.getFromNode().getDegree() === 1) flipSeq = true\n \n }\n if (flipSeq) return this.reverse(seq)\n return seq\n }\n buildSequencedGeometry(sequences) {\n const lines = new ArrayList()\n for (let i1 = sequences.iterator(); i1.hasNext(); ) {\n const seq = i1.next()\n for (let i2 = seq.iterator(); i2.hasNext(); ) {\n const de = i2.next()\n const e = de.getEdge()\n const line = e.getLine()\n let lineToAdd = line\n if (!de.getEdgeDirection() && !line.isClosed()) lineToAdd = LineSequencer.reverse(line)\n lines.add(lineToAdd)\n }\n }\n if (lines.size() === 0) return this._factory.createMultiLineString(new Array(0).fill(null))\n return this._factory.buildGeometry(lines)\n }\n getSequencedLineStrings() {\n this.computeSequence()\n return this._sequencedGeometry\n }\n isSequenceable() {\n this.computeSequence()\n return this._isSequenceable\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geometries = arguments[0]\n for (let i = geometries.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n } else if (arguments[0] instanceof Geometry) {\n const geometry = arguments[0]\n geometry.apply(new (class {\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n filter(component) {\n if (component instanceof LineString) \n this.addLine(component)\n \n }\n })())\n }\n }\n}\n","import LineString from '../../../geom/LineString'\nimport CoordinateList from '../../../geom/CoordinateList'\nimport Coordinate from '../../../geom/Coordinate'\nimport Double from '../../../../../../java/lang/Double'\nimport LineSegment from '../../../geom/LineSegment'\nexport default class LineStringSnapper {\n constructor() {\n LineStringSnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._snapTolerance = 0.0\n this._srcPts = null\n this._seg = new LineSegment()\n this._allowSnappingToSourceVertices = false\n this._isClosed = false\n if (arguments[0] instanceof LineString && typeof arguments[1] === 'number') {\n const srcLine = arguments[0], snapTolerance = arguments[1]\n LineStringSnapper.constructor_.call(this, srcLine.getCoordinates(), snapTolerance)\n } else if (arguments[0] instanceof Array && typeof arguments[1] === 'number') {\n const srcPts = arguments[0], snapTolerance = arguments[1]\n this._srcPts = srcPts\n this._isClosed = LineStringSnapper.isClosed(srcPts)\n this._snapTolerance = snapTolerance\n }\n }\n static isClosed(pts) {\n if (pts.length <= 1) return false\n return pts[0].equals2D(pts[pts.length - 1])\n }\n snapVertices(srcCoords, snapPts) {\n const end = this._isClosed ? srcCoords.size() - 1 : srcCoords.size()\n for (let i = 0; i < end; i++) {\n const srcPt = srcCoords.get(i)\n const snapVert = this.findSnapForVertex(srcPt, snapPts)\n if (snapVert !== null) {\n srcCoords.set(i, new Coordinate(snapVert))\n if (i === 0 && this._isClosed) srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert))\n }\n }\n }\n findSnapForVertex(pt, snapPts) {\n for (let i = 0; i < snapPts.length; i++) {\n if (pt.equals2D(snapPts[i])) return null\n if (pt.distance(snapPts[i]) < this._snapTolerance) return snapPts[i]\n }\n return null\n }\n snapTo(snapPts) {\n const coordList = new CoordinateList(this._srcPts)\n this.snapVertices(coordList, snapPts)\n this.snapSegments(coordList, snapPts)\n const newPts = coordList.toCoordinateArray()\n return newPts\n }\n snapSegments(srcCoords, snapPts) {\n if (snapPts.length === 0) return null\n let distinctPtCount = snapPts.length\n if (snapPts[0].equals2D(snapPts[snapPts.length - 1])) distinctPtCount = snapPts.length - 1\n for (let i = 0; i < distinctPtCount; i++) {\n const snapPt = snapPts[i]\n const index = this.findSegmentIndexToSnap(snapPt, srcCoords)\n if (index >= 0) \n srcCoords.add(index + 1, new Coordinate(snapPt), false)\n \n }\n }\n findSegmentIndexToSnap(snapPt, srcCoords) {\n let minDist = Double.MAX_VALUE\n let snapIndex = -1\n for (let i = 0; i < srcCoords.size() - 1; i++) {\n this._seg.p0 = srcCoords.get(i)\n this._seg.p1 = srcCoords.get(i + 1)\n if (this._seg.p0.equals2D(snapPt) || this._seg.p1.equals2D(snapPt)) \n if (this._allowSnappingToSourceVertices) continue; else return -1\n \n const dist = this._seg.distance(snapPt)\n if (dist < this._snapTolerance && dist < minDist) {\n minDist = dist\n snapIndex = i\n }\n }\n return snapIndex\n }\n setAllowSnappingToSourceVertices(allowSnappingToSourceVertices) {\n this._allowSnappingToSourceVertices = allowSnappingToSourceVertices\n }\n}\n","import TreeSet from '../../../../../../java/util/TreeSet'\nimport GeometryTransformer from '../../../geom/util/GeometryTransformer'\nimport hasInterface from '../../../../../../hasInterface'\nimport Double from '../../../../../../java/lang/Double'\nimport LineStringSnapper from './LineStringSnapper'\nimport PrecisionModel from '../../../geom/PrecisionModel'\nimport Polygonal from '../../../geom/Polygonal'\nexport default class GeometrySnapper {\n constructor() {\n GeometrySnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._srcGeom = null\n const srcGeom = arguments[0]\n this._srcGeom = srcGeom\n }\n static snap(g0, g1, snapTolerance) {\n const snapGeom = new Array(2).fill(null)\n const snapper0 = new GeometrySnapper(g0)\n snapGeom[0] = snapper0.snapTo(g1, snapTolerance)\n const snapper1 = new GeometrySnapper(g1)\n snapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance)\n return snapGeom\n }\n static computeOverlaySnapTolerance() {\n if (arguments.length === 1) {\n const g = arguments[0]\n let snapTolerance = GeometrySnapper.computeSizeBasedSnapTolerance(g)\n const pm = g.getPrecisionModel()\n if (pm.getType() === PrecisionModel.FIXED) {\n const fixedSnapTol = 1 / pm.getScale() * 2 / 1.415\n if (fixedSnapTol > snapTolerance) snapTolerance = fixedSnapTol\n }\n return snapTolerance\n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n return Math.min(GeometrySnapper.computeOverlaySnapTolerance(g0), GeometrySnapper.computeOverlaySnapTolerance(g1))\n }\n }\n static computeSizeBasedSnapTolerance(g) {\n const env = g.getEnvelopeInternal()\n const minDimension = Math.min(env.getHeight(), env.getWidth())\n const snapTol = minDimension * GeometrySnapper.SNAP_PRECISION_FACTOR\n return snapTol\n }\n static snapToSelf(geom, snapTolerance, cleanResult) {\n const snapper0 = new GeometrySnapper(geom)\n return snapper0.snapToSelf(snapTolerance, cleanResult)\n }\n snapTo(snapGeom, snapTolerance) {\n const snapPts = this.extractTargetCoordinates(snapGeom)\n const snapTrans = new SnapTransformer(snapTolerance, snapPts)\n return snapTrans.transform(this._srcGeom)\n }\n snapToSelf(snapTolerance, cleanResult) {\n const snapPts = this.extractTargetCoordinates(this._srcGeom)\n const snapTrans = new SnapTransformer(snapTolerance, snapPts, true)\n const snappedGeom = snapTrans.transform(this._srcGeom)\n let result = snappedGeom\n if (cleanResult && hasInterface(result, Polygonal)) \n result = snappedGeom.buffer(0)\n \n return result\n }\n computeSnapTolerance(ringPts) {\n const minSegLen = this.computeMinimumSegmentLength(ringPts)\n const snapTol = minSegLen / 10\n return snapTol\n }\n extractTargetCoordinates(g) {\n const ptSet = new TreeSet()\n const pts = g.getCoordinates()\n for (let i = 0; i < pts.length; i++) \n ptSet.add(pts[i])\n \n return ptSet.toArray(new Array(0).fill(null))\n }\n computeMinimumSegmentLength(pts) {\n let minSegLen = Double.MAX_VALUE\n for (let i = 0; i < pts.length - 1; i++) {\n const segLen = pts[i].distance(pts[i + 1])\n if (segLen < minSegLen) minSegLen = segLen\n }\n return minSegLen\n }\n}\nGeometrySnapper.SNAP_PRECISION_FACTOR = 1e-9\nclass SnapTransformer extends GeometryTransformer {\n constructor() {\n super()\n SnapTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._snapTolerance = null\n this._snapPts = null\n this._isSelfSnap = false\n if (arguments.length === 2) {\n const snapTolerance = arguments[0], snapPts = arguments[1]\n this._snapTolerance = snapTolerance\n this._snapPts = snapPts\n } else if (arguments.length === 3) {\n const snapTolerance = arguments[0], snapPts = arguments[1], isSelfSnap = arguments[2]\n this._snapTolerance = snapTolerance\n this._snapPts = snapPts\n this._isSelfSnap = isSelfSnap\n }\n }\n snapLine(srcPts, snapPts) {\n const snapper = new LineStringSnapper(srcPts, this._snapTolerance)\n snapper.setAllowSnappingToSourceVertices(this._isSelfSnap)\n return snapper.snapTo(snapPts)\n }\n transformCoordinates(coords, parent) {\n const srcPts = coords.toCoordinateArray()\n const newPts = this.snapLine(srcPts, this._snapPts)\n return this._factory.getCoordinateSequenceFactory().create(newPts)\n }\n}\n","import WKTWriter from '../io/WKTWriter'\nimport CoordinateArraySequence from '../geom/impl/CoordinateArraySequence'\nimport Octant from './Octant'\nimport SegmentString from './SegmentString'\nexport default class BasicSegmentString {\n constructor() {\n BasicSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._data = null\n const pts = arguments[0], data = arguments[1]\n this._pts = pts\n this._data = data\n }\n getCoordinates() {\n return this._pts\n }\n size() {\n return this._pts.length\n }\n getCoordinate(i) {\n return this._pts[i]\n }\n isClosed() {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\n getSegmentOctant(index) {\n if (index === this._pts.length - 1) return -1\n return Octant.octant(this.getCoordinate(index), this.getCoordinate(index + 1))\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n get interfaces_() {\n return [SegmentString]\n }\n}\n","import SegmentIntersector from './SegmentIntersector'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class NodingIntersectionFinder {\n constructor() {\n NodingIntersectionFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._findAllIntersections = false\n this._isCheckEndSegmentsOnly = false\n this._keepIntersections = true\n this._isInteriorIntersectionsOnly = false\n this._li = null\n this._interiorIntersection = null\n this._intSegments = null\n this._intersections = new ArrayList()\n this._intersectionCount = 0\n const li = arguments[0]\n this._li = li\n this._interiorIntersection = null\n }\n static createAllIntersectionsFinder(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n return finder\n }\n static isInteriorVertexIntersection() {\n if (arguments.length === 4) {\n const p0 = arguments[0], p1 = arguments[1], isEnd0 = arguments[2], isEnd1 = arguments[3]\n if (isEnd0 && isEnd1) return false\n if (p0.equals2D(p1)) \n return true\n \n return false\n } else if (arguments.length === 8) {\n const p00 = arguments[0], p01 = arguments[1], p10 = arguments[2], p11 = arguments[3], isEnd00 = arguments[4], isEnd01 = arguments[5], isEnd10 = arguments[6], isEnd11 = arguments[7]\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p00, p10, isEnd00, isEnd10)) return true\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p00, p11, isEnd00, isEnd11)) return true\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p01, p10, isEnd01, isEnd10)) return true\n if (NodingIntersectionFinder.isInteriorVertexIntersection(p01, p11, isEnd01, isEnd11)) return true\n return false\n }\n }\n static createInteriorIntersectionCounter(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setInteriorIntersectionsOnly(true)\n finder.setFindAllIntersections(true)\n finder.setKeepIntersections(false)\n return finder\n }\n static createIntersectionCounter(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n finder.setKeepIntersections(false)\n return finder\n }\n static isEndSegment(segStr, index) {\n if (index === 0) return true\n if (index >= segStr.size() - 2) return true\n return false\n }\n static createAnyIntersectionFinder(li) {\n return new NodingIntersectionFinder(li)\n }\n static createInteriorIntersectionsFinder(li) {\n const finder = new NodingIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n finder.setInteriorIntersectionsOnly(true)\n return finder\n }\n setCheckEndSegmentsOnly(isCheckEndSegmentsOnly) {\n this._isCheckEndSegmentsOnly = isCheckEndSegmentsOnly\n }\n getIntersectionSegments() {\n return this._intSegments\n }\n count() {\n return this._intersectionCount\n }\n getIntersections() {\n return this._intersections\n }\n setFindAllIntersections(findAllIntersections) {\n this._findAllIntersections = findAllIntersections\n }\n setKeepIntersections(keepIntersections) {\n this._keepIntersections = keepIntersections\n }\n getIntersection() {\n return this._interiorIntersection\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (!this._findAllIntersections && this.hasIntersection()) return null\n const isSameSegString = e0 === e1\n const isSameSegment = isSameSegString && segIndex0 === segIndex1\n if (isSameSegment) return null\n if (this._isCheckEndSegmentsOnly) {\n const isEndSegPresent = NodingIntersectionFinder.isEndSegment(e0, segIndex0) || NodingIntersectionFinder.isEndSegment(e1, segIndex1)\n if (!isEndSegPresent) return null\n }\n const p00 = e0.getCoordinate(segIndex0)\n const p01 = e0.getCoordinate(segIndex0 + 1)\n const p10 = e1.getCoordinate(segIndex1)\n const p11 = e1.getCoordinate(segIndex1 + 1)\n const isEnd00 = segIndex0 === 0\n const isEnd01 = segIndex0 + 2 === e0.size()\n const isEnd10 = segIndex1 === 0\n const isEnd11 = segIndex1 + 2 === e1.size()\n this._li.computeIntersection(p00, p01, p10, p11)\n const isInteriorInt = this._li.hasIntersection() && this._li.isInteriorIntersection()\n let isInteriorVertexInt = false\n if (!this._isInteriorIntersectionsOnly) {\n const isAdjacentSegment = isSameSegString && Math.abs(segIndex1 - segIndex0) <= 1\n isInteriorVertexInt = !isAdjacentSegment && NodingIntersectionFinder.isInteriorVertexIntersection(p00, p01, p10, p11, isEnd00, isEnd01, isEnd10, isEnd11)\n }\n if (isInteriorInt || isInteriorVertexInt) {\n this._intSegments = new Array(4).fill(null)\n this._intSegments[0] = p00\n this._intSegments[1] = p01\n this._intSegments[2] = p10\n this._intSegments[3] = p11\n this._interiorIntersection = this._li.getIntersection(0)\n if (this._keepIntersections) this._intersections.add(this._interiorIntersection)\n this._intersectionCount++\n }\n }\n hasIntersection() {\n return this._interiorIntersection !== null\n }\n isDone() {\n if (this._findAllIntersections) return false\n return this._interiorIntersection !== null\n }\n setInteriorIntersectionsOnly(isInteriorIntersectionsOnly) {\n this._isInteriorIntersectionsOnly = isInteriorIntersectionsOnly\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import WKTWriter from '../io/WKTWriter'\nimport MCIndexNoder from './MCIndexNoder'\nimport TopologyException from '../geom/TopologyException'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport NodingIntersectionFinder from './NodingIntersectionFinder'\nexport default class FastNodingValidator {\n constructor() {\n FastNodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n this._findAllIntersections = false\n this._segInt = null\n this._isValid = true\n const segStrings = arguments[0]\n this._segStrings = segStrings\n }\n static computeIntersections(segStrings) {\n const nv = new FastNodingValidator(segStrings)\n nv.setFindAllIntersections(true)\n nv.isValid()\n return nv.getIntersections()\n }\n execute() {\n if (this._segInt !== null) return null\n this.checkInteriorIntersections()\n }\n getIntersections() {\n return this._segInt.getIntersections()\n }\n isValid() {\n this.execute()\n return this._isValid\n }\n setFindAllIntersections(findAllIntersections) {\n this._findAllIntersections = findAllIntersections\n }\n checkInteriorIntersections() {\n this._isValid = true\n this._segInt = new NodingIntersectionFinder(this._li)\n this._segInt.setFindAllIntersections(this._findAllIntersections)\n const noder = new MCIndexNoder()\n noder.setSegmentIntersector(this._segInt)\n noder.computeNodes(this._segStrings)\n if (this._segInt.hasIntersection()) {\n this._isValid = false\n return null\n }\n }\n checkValid() {\n this.execute()\n if (!this._isValid) throw new TopologyException(this.getErrorMessage(), this._segInt.getIntersection())\n }\n getErrorMessage() {\n if (this._isValid) return 'no intersections found'\n const intSegs = this._segInt.getIntersectionSegments()\n return 'found non-noded intersection between ' + WKTWriter.toLineString(intSegs[0], intSegs[1]) + ' and ' + WKTWriter.toLineString(intSegs[2], intSegs[3])\n }\n}\n","import BasicSegmentString from '../noding/BasicSegmentString'\nimport FastNodingValidator from '../noding/FastNodingValidator'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class EdgeNodingValidator {\n constructor() {\n EdgeNodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nv = null\n const edges = arguments[0]\n this._nv = new FastNodingValidator(EdgeNodingValidator.toSegmentStrings(edges))\n }\n static toSegmentStrings(edges) {\n const segStrings = new ArrayList()\n for (let i = edges.iterator(); i.hasNext(); ) {\n const e = i.next()\n segStrings.add(new BasicSegmentString(e.getCoordinates(), e))\n }\n return segStrings\n }\n static checkValid(edges) {\n const validator = new EdgeNodingValidator(edges)\n validator.checkValid()\n }\n checkValid() {\n this._nv.checkValid()\n }\n}\n","import ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport OverlayOp from './OverlayOp'\nexport default class LineBuilder {\n constructor() {\n LineBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._op = null\n this._geometryFactory = null\n this._ptLocator = null\n this._lineEdgesList = new ArrayList()\n this._resultLineList = new ArrayList()\n const op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2]\n this._op = op\n this._geometryFactory = geometryFactory\n this._ptLocator = ptLocator\n }\n collectLines(opCode) {\n for (let it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n this.collectLineEdge(de, opCode, this._lineEdgesList)\n this.collectBoundaryTouchEdge(de, opCode, this._lineEdgesList)\n }\n }\n labelIsolatedLine(e, targetIndex) {\n const loc = this._ptLocator.locate(e.getCoordinate(), this._op.getArgGeometry(targetIndex))\n e.getLabel().setLocation(targetIndex, loc)\n }\n build(opCode) {\n this.findCoveredLineEdges()\n this.collectLines(opCode)\n this.buildLines(opCode)\n return this._resultLineList\n }\n collectLineEdge(de, opCode, edges) {\n const label = de.getLabel()\n const e = de.getEdge()\n if (de.isLineEdge()) \n if (!de.isVisited() && OverlayOp.isResultOfOp(label, opCode) && !e.isCovered()) {\n edges.add(e)\n de.setVisitedEdge(true)\n }\n \n }\n findCoveredLineEdges() {\n for (let nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().findCoveredLineEdges()\n }\n for (let it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n const e = de.getEdge()\n if (de.isLineEdge() && !e.isCoveredSet()) {\n const isCovered = this._op.isCoveredByA(de.getCoordinate())\n e.setCovered(isCovered)\n }\n }\n }\n labelIsolatedLines(edgesList) {\n for (let it = edgesList.iterator(); it.hasNext(); ) {\n const e = it.next()\n const label = e.getLabel()\n if (e.isIsolated()) \n if (label.isNull(0)) this.labelIsolatedLine(e, 0); else this.labelIsolatedLine(e, 1)\n \n }\n }\n buildLines(opCode) {\n for (let it = this._lineEdgesList.iterator(); it.hasNext(); ) {\n const e = it.next()\n const line = this._geometryFactory.createLineString(e.getCoordinates())\n this._resultLineList.add(line)\n e.setInResult(true)\n }\n }\n collectBoundaryTouchEdge(de, opCode, edges) {\n const label = de.getLabel()\n if (de.isLineEdge()) return null\n if (de.isVisited()) return null\n if (de.isInteriorAreaEdge()) return null\n if (de.getEdge().isInResult()) return null\n Assert.isTrue(!(de.isInResult() || de.getSym().isInResult()) || !de.getEdge().isInResult())\n if (OverlayOp.isResultOfOp(label, opCode) && opCode === OverlayOp.INTERSECTION) {\n edges.add(de.getEdge())\n de.setVisitedEdge(true)\n }\n }\n}\n","import ArrayList from '../../../../../java/util/ArrayList'\nimport OverlayOp from './OverlayOp'\nexport default class PointBuilder {\n constructor() {\n PointBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._op = null\n this._geometryFactory = null\n this._resultPointList = new ArrayList()\n const op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2]\n this._op = op\n this._geometryFactory = geometryFactory\n }\n filterCoveredNodeToPoint(n) {\n const coord = n.getCoordinate()\n if (!this._op.isCoveredByLA(coord)) {\n const pt = this._geometryFactory.createPoint(coord)\n this._resultPointList.add(pt)\n }\n }\n extractNonCoveredResultNodes(opCode) {\n for (let nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {\n const n = nodeit.next()\n if (n.isInResult()) continue\n if (n.isIncidentEdgeInResult()) continue\n if (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {\n const label = n.getLabel()\n if (OverlayOp.isResultOfOp(label, opCode)) \n this.filterCoveredNodeToPoint(n)\n \n }\n }\n }\n build(opCode) {\n this.extractNonCoveredResultNodes(opCode)\n return this._resultPointList\n }\n}\n","import Double from '../../../../java/lang/Double'\nimport Long from '../../../../java/lang/Long'\nexport default class CommonBits {\n constructor() {\n this._isFirst = true\n this._commonMantissaBitsCount = 53\n this._commonBits = new Long()\n this._commonSignExp = null\n }\n\n getCommon() {\n return Double.longBitsToDouble(this._commonBits)\n }\n\n add(num) {\n const numBits = Double.doubleToLongBits(num)\n if (this._isFirst) {\n this._commonBits = numBits\n this._commonSignExp = CommonBits.signExpBits(this._commonBits)\n this._isFirst = false\n return null\n }\n const numSignExp = CommonBits.signExpBits(numBits)\n if (numSignExp !== this._commonSignExp) {\n this._commonBits.high = 0 | 0\n this._commonBits.low = 0 | 0\n return null\n }\n this._commonMantissaBitsCount = CommonBits.numCommonMostSigMantissaBits(this._commonBits, numBits)\n this._commonBits = CommonBits.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount))\n }\n\n toString() {\n if (arguments.length === 1) {\n const bits = arguments[0]\n const x = Double.longBitsToDouble(bits)\n const numStr = Long.toBinaryString(bits)\n const padStr = '0000000000000000000000000000000000000000000000000000000000000000' + numStr\n const bitStr = padStr.substring(padStr.length - 64)\n const str = bitStr.substring(0, 1) + ' ' + bitStr.substring(1, 12) + '(exp) ' + bitStr.substring(12) + ' [ ' + x + ' ]'\n return str\n }\n }\n\n getClass() {\n return CommonBits\n }\n\n get interfaces_() {\n return []\n }\n\n static getBit(bits, i) {\n const mask = (1 << (i % 32))\n if (i < 32) return (bits.low & mask) !== 0 ? 1 : 0\n\n return (bits.high & mask) !== 0 ? 1 : 0\n }\n\n static signExpBits(num) {\n return num.high >>> 20\n }\n\n static zeroLowerBits(bits, nBits) {\n let prop = 'low'\n if (nBits > 32) {\n bits.low = 0 | 0\n nBits %= 32\n prop = 'high'\n }\n if (nBits > 0) {\n const mask = (nBits < 32) ? (~((1 << nBits) - 1)) : 0\n bits[prop] &= mask\n }\n return bits\n }\n\n static numCommonMostSigMantissaBits(num1, num2) {\n let count = 0\n for (let i = 52; i >= 0; i--) {\n if (CommonBits.getBit(num1, i) !== CommonBits.getBit(num2, i)) return count\n count++\n }\n return 52\n }\n}\n","import CommonBits from './CommonBits'\nimport CoordinateFilter from '../geom/CoordinateFilter'\nimport Coordinate from '../geom/Coordinate'\nimport CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter'\nexport default class CommonBitsRemover {\n constructor() {\n CommonBitsRemover.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._commonCoord = null\n this._ccFilter = new CommonCoordinateFilter()\n }\n addCommonBits(geom) {\n const trans = new Translater(this._commonCoord)\n geom.apply(trans)\n geom.geometryChanged()\n }\n removeCommonBits(geom) {\n if (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) return geom\n const invCoord = new Coordinate(this._commonCoord)\n invCoord.x = -invCoord.x\n invCoord.y = -invCoord.y\n const trans = new Translater(invCoord)\n geom.apply(trans)\n geom.geometryChanged()\n return geom\n }\n getCommonCoordinate() {\n return this._commonCoord\n }\n add(geom) {\n geom.apply(this._ccFilter)\n this._commonCoord = this._ccFilter.getCommonCoordinate()\n }\n}\nclass CommonCoordinateFilter {\n constructor() {\n CommonCoordinateFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._commonBitsX = new CommonBits()\n this._commonBitsY = new CommonBits()\n }\n filter(coord) {\n this._commonBitsX.add(coord.x)\n this._commonBitsY.add(coord.y)\n }\n getCommonCoordinate() {\n return new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\nclass Translater {\n constructor() {\n Translater.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.trans = null\n const trans = arguments[0]\n this.trans = trans\n }\n filter(seq, i) {\n const xp = seq.getOrdinate(i, 0) + this.trans.x\n const yp = seq.getOrdinate(i, 1) + this.trans.y\n seq.setOrdinate(i, 0, xp)\n seq.setOrdinate(i, 1, yp)\n }\n isDone() {\n return false\n }\n isGeometryChanged() {\n return true\n }\n get interfaces_() {\n return [CoordinateSequenceFilter]\n }\n}\nCommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter\nCommonBitsRemover.Translater = Translater\n","import GeometrySnapper from './GeometrySnapper'\nimport System from '../../../../../../java/lang/System'\nimport CommonBitsRemover from '../../../precision/CommonBitsRemover'\nimport OverlayOp from '../OverlayOp'\nexport default class SnapOverlayOp {\n constructor() {\n SnapOverlayOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = new Array(2).fill(null)\n this._snapTolerance = null\n this._cbr = null\n const g1 = arguments[0], g2 = arguments[1]\n this._geom[0] = g1\n this._geom[1] = g2\n this.computeSnapTolerance()\n }\n static overlayOp(g0, g1, opCode) {\n const op = new SnapOverlayOp(g0, g1)\n return op.getResultGeometry(opCode)\n }\n static union(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n }\n static intersection(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n }\n static symDifference(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n }\n static difference(g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n }\n selfSnap(geom) {\n const snapper0 = new GeometrySnapper(geom)\n const snapGeom = snapper0.snapTo(geom, this._snapTolerance)\n return snapGeom\n }\n removeCommonBits(geom) {\n this._cbr = new CommonBitsRemover()\n this._cbr.add(geom[0])\n this._cbr.add(geom[1])\n const remGeom = new Array(2).fill(null)\n remGeom[0] = this._cbr.removeCommonBits(geom[0].copy())\n remGeom[1] = this._cbr.removeCommonBits(geom[1].copy())\n return remGeom\n }\n prepareResult(geom) {\n this._cbr.addCommonBits(geom)\n return geom\n }\n getResultGeometry(opCode) {\n const prepGeom = this.snap(this._geom)\n const result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode)\n return this.prepareResult(result)\n }\n checkValid(g) {\n if (!g.isValid()) \n System.out.println('Snapped geometry is invalid')\n \n }\n computeSnapTolerance() {\n this._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1])\n }\n snap(geom) {\n const remGeom = this.removeCommonBits(geom)\n const snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], this._snapTolerance)\n return snapGeom\n }\n}\n","import SnapOverlayOp from './SnapOverlayOp'\nimport RuntimeException from '../../../../../../java/lang/RuntimeException'\nimport OverlayOp from '../OverlayOp'\nexport default class SnapIfNeededOverlayOp {\n constructor() {\n SnapIfNeededOverlayOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = new Array(2).fill(null)\n const g1 = arguments[0], g2 = arguments[1]\n this._geom[0] = g1\n this._geom[1] = g2\n }\n static overlayOp(g0, g1, opCode) {\n const op = new SnapIfNeededOverlayOp(g0, g1)\n return op.getResultGeometry(opCode)\n }\n static union(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n }\n static intersection(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n }\n static symDifference(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n }\n static difference(g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n }\n getResultGeometry(opCode) {\n let result = null\n let isSuccess = false\n let savedException = null\n try {\n result = OverlayOp.overlayOp(this._geom[0], this._geom[1], opCode)\n const isValid = true\n if (isValid) isSuccess = true\n } catch (ex) {\n if (ex instanceof RuntimeException) \n savedException = ex\n else throw ex\n } finally {}\n if (!isSuccess) \n try {\n result = SnapOverlayOp.overlayOp(this._geom[0], this._geom[1], opCode)\n } catch (ex) {\n if (ex instanceof RuntimeException) \n throw savedException\n else throw ex\n } finally {}\n \n return result\n }\n}\n","import BoundaryNodeRule from '../algorithm/BoundaryNodeRule'\nimport GeometryGraph from '../geomgraph/GeometryGraph'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nexport default class GeometryGraphOperation {\n constructor() {\n GeometryGraphOperation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._resultPrecisionModel = null\n this._arg = null\n if (arguments.length === 1) {\n const g0 = arguments[0]\n this.setComputationPrecision(g0.getPrecisionModel())\n this._arg = new Array(1).fill(null)\n this._arg[0] = new GeometryGraph(0, g0)\n \n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1, BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2]\n if (g0.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0) this.setComputationPrecision(g0.getPrecisionModel()); else this.setComputationPrecision(g1.getPrecisionModel())\n this._arg = new Array(2).fill(null)\n this._arg[0] = new GeometryGraph(0, g0, boundaryNodeRule)\n this._arg[1] = new GeometryGraph(1, g1, boundaryNodeRule)\n }\n }\n getArgGeometry(i) {\n return this._arg[i].getGeometry()\n }\n setComputationPrecision(pm) {\n this._resultPrecisionModel = pm\n this._li.setPrecisionModel(this._resultPrecisionModel)\n }\n}\n","import PointLocator from '../../algorithm/PointLocator'\nimport Location from '../../geom/Location'\nimport EdgeNodingValidator from '../../geomgraph/EdgeNodingValidator'\nimport GeometryCollectionMapper from '../../geom/util/GeometryCollectionMapper'\nimport PolygonBuilder from './PolygonBuilder'\nimport Position from '../../geomgraph/Position'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport LineBuilder from './LineBuilder'\nimport PointBuilder from './PointBuilder'\nimport SnapIfNeededOverlayOp from './snap/SnapIfNeededOverlayOp'\nimport Label from '../../geomgraph/Label'\nimport OverlayNodeFactory from './OverlayNodeFactory'\nimport GeometryGraphOperation from '../GeometryGraphOperation'\nimport EdgeList from '../../geomgraph/EdgeList'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class OverlayOp extends GeometryGraphOperation {\n constructor() {\n super()\n OverlayOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ptLocator = new PointLocator()\n this._geomFact = null\n this._resultGeom = null\n this._graph = null\n this._edgeList = new EdgeList()\n this._resultPolyList = new ArrayList()\n this._resultLineList = new ArrayList()\n this._resultPointList = new ArrayList()\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._geomFact = g0.getFactory()\n }\n static overlayOp(geom0, geom1, opCode) {\n const gov = new OverlayOp(geom0, geom1)\n const geomOv = gov.getResultGeometry(opCode)\n return geomOv\n }\n static union(geom, other) {\n if (geom.isEmpty() || other.isEmpty()) {\n if (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, geom, other, geom.getFactory())\n if (geom.isEmpty()) return other.copy()\n if (other.isEmpty()) return geom.copy()\n }\n if (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.UNION)\n }\n static intersection(geom, other) {\n if (geom.isEmpty() || other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, geom, other, geom.getFactory())\n if (geom.isGeometryCollection()) {\n const g2 = other\n return GeometryCollectionMapper.map(geom, new (class {\n get interfaces_() {\n return [MapOp]\n }\n map(g) {\n return OverlayOp.intersection(g, g2)\n }\n })())\n }\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.INTERSECTION)\n }\n static symDifference(geom, other) {\n if (geom.isEmpty() || other.isEmpty()) {\n if (geom.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, geom, other, geom.getFactory())\n if (geom.isEmpty()) return other.copy()\n if (other.isEmpty()) return geom.copy()\n }\n if (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.SYMDIFFERENCE)\n }\n static resultDimension(opCode, g0, g1) {\n const dim0 = g0.getDimension()\n const dim1 = g1.getDimension()\n let resultDimension = -1\n switch (opCode) {\n case OverlayOp.INTERSECTION:\n resultDimension = Math.min(dim0, dim1)\n break\n case OverlayOp.UNION:\n resultDimension = Math.max(dim0, dim1)\n break\n case OverlayOp.DIFFERENCE:\n resultDimension = dim0\n break\n case OverlayOp.SYMDIFFERENCE:\n resultDimension = Math.max(dim0, dim1)\n break\n }\n return resultDimension\n }\n static createEmptyResult(overlayOpCode, a, b, geomFact) {\n let result = null\n const resultDim = OverlayOp.resultDimension(overlayOpCode, a, b)\n return result = geomFact.createEmpty(resultDim)\n }\n static difference(geom, other) {\n if (geom.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, geom, other, geom.getFactory())\n if (other.isEmpty()) return geom.copy()\n if (geom.isGeometryCollection() || other.isGeometryCollection()) throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.DIFFERENCE)\n }\n static isResultOfOp() {\n if (arguments.length === 2) {\n const label = arguments[0], opCode = arguments[1]\n const loc0 = label.getLocation(0)\n const loc1 = label.getLocation(1)\n return OverlayOp.isResultOfOp(loc0, loc1, opCode)\n } else if (arguments.length === 3) {\n let loc0 = arguments[0], loc1 = arguments[1], overlayOpCode = arguments[2]\n if (loc0 === Location.BOUNDARY) loc0 = Location.INTERIOR\n if (loc1 === Location.BOUNDARY) loc1 = Location.INTERIOR\n switch (overlayOpCode) {\n case OverlayOp.INTERSECTION:\n return loc0 === Location.INTERIOR && loc1 === Location.INTERIOR\n case OverlayOp.UNION:\n return loc0 === Location.INTERIOR || loc1 === Location.INTERIOR\n case OverlayOp.DIFFERENCE:\n return loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR\n case OverlayOp.SYMDIFFERENCE:\n return loc0 === Location.INTERIOR && loc1 !== Location.INTERIOR || loc0 !== Location.INTERIOR && loc1 === Location.INTERIOR\n }\n return false\n }\n }\n insertUniqueEdge(e) {\n const existingEdge = this._edgeList.findEqualEdge(e)\n if (existingEdge !== null) {\n const existingLabel = existingEdge.getLabel()\n let labelToMerge = e.getLabel()\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel())\n labelToMerge.flip()\n }\n const depth = existingEdge.getDepth()\n if (depth.isNull()) \n depth.add(existingLabel)\n \n depth.add(labelToMerge)\n existingLabel.merge(labelToMerge)\n } else {\n this._edgeList.add(e)\n }\n }\n getGraph() {\n return this._graph\n }\n cancelDuplicateResultEdges() {\n for (let it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n const sym = de.getSym()\n if (de.isInResult() && sym.isInResult()) {\n de.setInResult(false)\n sym.setInResult(false)\n }\n }\n }\n isCoveredByLA(coord) {\n if (this.isCovered(coord, this._resultLineList)) return true\n if (this.isCovered(coord, this._resultPolyList)) return true\n return false\n }\n computeGeometry(resultPointList, resultLineList, resultPolyList, opcode) {\n const geomList = new ArrayList()\n geomList.addAll(resultPointList)\n geomList.addAll(resultLineList)\n geomList.addAll(resultPolyList)\n if (geomList.isEmpty()) return OverlayOp.createEmptyResult(opcode, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact)\n return this._geomFact.buildGeometry(geomList)\n }\n mergeSymLabels() {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().mergeSymLabels()\n }\n }\n isCovered(coord, geomList) {\n for (let it = geomList.iterator(); it.hasNext(); ) {\n const geom = it.next()\n const loc = this._ptLocator.locate(coord, geom)\n if (loc !== Location.EXTERIOR) return true\n }\n return false\n }\n replaceCollapsedEdges() {\n const newEdges = new ArrayList()\n for (let it = this._edgeList.iterator(); it.hasNext(); ) {\n const e = it.next()\n if (e.isCollapsed()) {\n it.remove()\n newEdges.add(e.getCollapsedEdge())\n }\n }\n this._edgeList.addAll(newEdges)\n }\n updateNodeLabelling() {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n const lbl = node.getEdges().getLabel()\n node.getLabel().merge(lbl)\n }\n }\n getResultGeometry(overlayOpCode) {\n this.computeOverlay(overlayOpCode)\n return this._resultGeom\n }\n insertUniqueEdges(edges) {\n for (let i = edges.iterator(); i.hasNext(); ) {\n const e = i.next()\n this.insertUniqueEdge(e)\n }\n }\n computeOverlay(opCode) {\n this.copyPoints(0)\n this.copyPoints(1)\n this._arg[0].computeSelfNodes(this._li, false)\n this._arg[1].computeSelfNodes(this._li, false)\n this._arg[0].computeEdgeIntersections(this._arg[1], this._li, true)\n const baseSplitEdges = new ArrayList()\n this._arg[0].computeSplitEdges(baseSplitEdges)\n this._arg[1].computeSplitEdges(baseSplitEdges)\n const splitEdges = baseSplitEdges\n this.insertUniqueEdges(baseSplitEdges)\n this.computeLabelsFromDepths()\n this.replaceCollapsedEdges()\n EdgeNodingValidator.checkValid(this._edgeList.getEdges())\n this._graph.addEdges(this._edgeList.getEdges())\n this.computeLabelling()\n this.labelIncompleteNodes()\n this.findResultAreaEdges(opCode)\n this.cancelDuplicateResultEdges()\n const polyBuilder = new PolygonBuilder(this._geomFact)\n polyBuilder.add(this._graph)\n this._resultPolyList = polyBuilder.getPolygons()\n const lineBuilder = new LineBuilder(this, this._geomFact, this._ptLocator)\n this._resultLineList = lineBuilder.build(opCode)\n const pointBuilder = new PointBuilder(this, this._geomFact, this._ptLocator)\n this._resultPointList = pointBuilder.build(opCode)\n this._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, opCode)\n }\n labelIncompleteNode(n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setLocation(targetIndex, loc)\n }\n copyPoints(argIndex) {\n for (let i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n const graphNode = i.next()\n const newNode = this._graph.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n findResultAreaEdges(opCode) {\n for (let it = this._graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n const label = de.getLabel()\n if (label.isArea() && !de.isInteriorAreaEdge() && OverlayOp.isResultOfOp(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), opCode)) \n de.setInResult(true)\n \n }\n }\n computeLabelsFromDepths() {\n for (let it = this._edgeList.iterator(); it.hasNext(); ) {\n const e = it.next()\n const lbl = e.getLabel()\n const depth = e.getDepth()\n if (!depth.isNull()) {\n depth.normalize()\n for (let i = 0; i < 2; i++) \n if (!lbl.isNull(i) && lbl.isArea() && !depth.isNull(i)) \n if (depth.getDelta(i) === 0) {\n lbl.toLine(i)\n } else {\n Assert.isTrue(!depth.isNull(i, Position.LEFT), 'depth of LEFT side has not been initialized')\n lbl.setLocation(i, Position.LEFT, depth.getLocation(i, Position.LEFT))\n Assert.isTrue(!depth.isNull(i, Position.RIGHT), 'depth of RIGHT side has not been initialized')\n lbl.setLocation(i, Position.RIGHT, depth.getLocation(i, Position.RIGHT))\n }\n \n \n }\n }\n }\n computeLabelling() {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext(); ) {\n const node = nodeit.next()\n node.getEdges().computeLabelling(this._arg)\n }\n this.mergeSymLabels()\n this.updateNodeLabelling()\n }\n labelIncompleteNodes() {\n for (let ni = this._graph.getNodes().iterator(); ni.hasNext(); ) {\n const n = ni.next()\n const label = n.getLabel()\n if (n.isIsolated()) \n if (label.isNull(0)) this.labelIncompleteNode(n, 0); else this.labelIncompleteNode(n, 1)\n \n n.getEdges().updateLabelling(label)\n }\n }\n isCoveredByA(coord) {\n if (this.isCovered(coord, this._resultPolyList)) return true\n return false\n }\n}\nOverlayOp.INTERSECTION = 1\nOverlayOp.UNION = 2\nOverlayOp.DIFFERENCE = 3\nOverlayOp.SYMDIFFERENCE = 4\n","import DirectedEdge from '../../planargraph/DirectedEdge'\nexport default class PolygonizeDirectedEdge extends DirectedEdge {\n constructor() {\n super()\n PolygonizeDirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeRing = null\n this._next = null\n this._label = -1\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\n }\n getNext() {\n return this._next\n }\n isInRing() {\n return this._edgeRing !== null\n }\n setRing(edgeRing) {\n this._edgeRing = edgeRing\n }\n setLabel(label) {\n this._label = label\n }\n getLabel() {\n return this._label\n }\n setNext(next) {\n this._next = next\n }\n getRing() {\n return this._edgeRing\n }\n}\n","import Edge from '../../planargraph/Edge'\nexport default class PolygonizeEdge extends Edge {\n constructor() {\n super()\n PolygonizeEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n getLine() {\n return this._line\n }\n}\n","import Location from '../../geom/Location'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Position from '../../geomgraph/Position'\nimport Polygon from '../../geom/Polygon'\nimport MultiPolygon from '../../geom/MultiPolygon'\nimport MaximalEdgeRing from '../overlay/MaximalEdgeRing'\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../geomgraph/PlanarGraph'\nexport default class ConnectedInteriorTester {\n constructor() {\n ConnectedInteriorTester.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geometryFactory = new GeometryFactory()\n this._geomGraph = null\n this._disconnectedRingcoord = null\n const geomGraph = arguments[0]\n this._geomGraph = geomGraph\n }\n static findDifferentPoint(coord, pt) {\n for (let i = 0; i < coord.length; i++) \n if (!coord[i].equals(pt)) return coord[i]\n \n return null\n }\n visitInteriorRing(ring, graph) {\n if (ring.isEmpty()) return null\n const pts = ring.getCoordinates()\n const pt0 = pts[0]\n const pt1 = ConnectedInteriorTester.findDifferentPoint(pts, pt0)\n const e = graph.findEdgeInSameDirection(pt0, pt1)\n const de = graph.findEdgeEnd(e)\n let intDe = null\n if (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) \n intDe = de\n else if (de.getSym().getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) \n intDe = de.getSym()\n \n Assert.isTrue(intDe !== null, 'unable to find dirEdge with Interior on RHS')\n this.visitLinkedDirectedEdges(intDe)\n }\n visitShellInteriors(g, graph) {\n if (g instanceof Polygon) {\n const p = g\n this.visitInteriorRing(p.getExteriorRing(), graph)\n }\n if (g instanceof MultiPolygon) {\n const mp = g\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const p = mp.getGeometryN(i)\n this.visitInteriorRing(p.getExteriorRing(), graph)\n }\n }\n }\n getCoordinate() {\n return this._disconnectedRingcoord\n }\n setInteriorEdgesInResult(graph) {\n for (let it = graph.getEdgeEnds().iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getLabel().getLocation(0, Position.RIGHT) === Location.INTERIOR) \n de.setInResult(true)\n \n }\n }\n visitLinkedDirectedEdges(start) {\n const startDe = start\n let de = start\n do {\n Assert.isTrue(de !== null, 'found null Directed Edge')\n de.setVisited(true)\n de = de.getNext()\n } while (de !== startDe)\n }\n buildEdgeRings(dirEdges) {\n const edgeRings = new ArrayList()\n for (let it = dirEdges.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.isInResult() && de.getEdgeRing() === null) {\n const er = new MaximalEdgeRing(de, this._geometryFactory)\n er.linkDirectedEdgesForMinimalEdgeRings()\n const minEdgeRings = er.buildMinimalRings()\n edgeRings.addAll(minEdgeRings)\n }\n }\n return edgeRings\n }\n hasUnvisitedShellEdge(edgeRings) {\n for (let i = 0; i < edgeRings.size(); i++) {\n const er = edgeRings.get(i)\n if (er.isHole()) continue\n const edges = er.getEdges()\n let de = edges.get(0)\n if (de.getLabel().getLocation(0, Position.RIGHT) !== Location.INTERIOR) continue\n for (let j = 0; j < edges.size(); j++) {\n de = edges.get(j)\n if (!de.isVisited()) {\n this._disconnectedRingcoord = de.getCoordinate()\n return true\n }\n }\n }\n return false\n }\n isInteriorsConnected() {\n const splitEdges = new ArrayList()\n this._geomGraph.computeSplitEdges(splitEdges)\n const graph = new PlanarGraph(new OverlayNodeFactory())\n graph.addEdges(splitEdges)\n this.setInteriorEdgesInResult(graph)\n graph.linkResultDirectedEdges()\n const edgeRings = this.buildEdgeRings(graph.getEdgeEnds())\n this.visitShellInteriors(this._geomGraph.getGeometry(), graph)\n return !this.hasUnvisitedShellEdge(edgeRings)\n }\n}\n","import EdgeEnd from '../../geomgraph/EdgeEnd'\nimport Label from '../../geomgraph/Label'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class EdgeEndBuilder {\n createEdgeEndForNext(edge, l, eiCurr, eiNext) {\n const iNext = eiCurr.segmentIndex + 1\n if (iNext >= edge.getNumPoints() && eiNext === null) return null\n let pNext = edge.getCoordinate(iNext)\n if (eiNext !== null && eiNext.segmentIndex === eiCurr.segmentIndex) pNext = eiNext.coord\n const e = new EdgeEnd(edge, eiCurr.coord, pNext, new Label(edge.getLabel()))\n l.add(e)\n }\n createEdgeEndForPrev(edge, l, eiCurr, eiPrev) {\n let iPrev = eiCurr.segmentIndex\n if (eiCurr.dist === 0.0) {\n if (iPrev === 0) return null\n iPrev--\n }\n let pPrev = edge.getCoordinate(iPrev)\n if (eiPrev !== null && eiPrev.segmentIndex >= iPrev) pPrev = eiPrev.coord\n const label = new Label(edge.getLabel())\n label.flip()\n const e = new EdgeEnd(edge, eiCurr.coord, pPrev, label)\n l.add(e)\n }\n computeEdgeEnds() {\n if (arguments.length === 1) {\n const edges = arguments[0]\n const l = new ArrayList()\n for (let i = edges; i.hasNext(); ) {\n const e = i.next()\n this.computeEdgeEnds(e, l)\n }\n return l\n } else if (arguments.length === 2) {\n const edge = arguments[0], l = arguments[1]\n const eiList = edge.getEdgeIntersectionList()\n eiList.addEndpoints()\n const it = eiList.iterator()\n let eiPrev = null\n let eiCurr = null\n if (!it.hasNext()) return null\n let eiNext = it.next()\n do {\n eiPrev = eiCurr\n eiCurr = eiNext\n eiNext = null\n if (it.hasNext()) eiNext = it.next()\n if (eiCurr !== null) {\n this.createEdgeEndForPrev(edge, l, eiCurr, eiPrev)\n this.createEdgeEndForNext(edge, l, eiCurr, eiNext)\n }\n } while (eiCurr !== null)\n }\n }\n}\n","import Location from '../../geom/Location'\nimport EdgeEnd from '../../geomgraph/EdgeEnd'\nimport Position from '../../geomgraph/Position'\nimport GeometryGraph from '../../geomgraph/GeometryGraph'\nimport Label from '../../geomgraph/Label'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Edge from '../../geomgraph/Edge'\nexport default class EdgeEndBundle extends EdgeEnd {\n constructor() {\n super()\n EdgeEndBundle.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeEnds = new ArrayList()\n if (arguments.length === 1) {\n const e = arguments[0]\n EdgeEndBundle.constructor_.call(this, null, e)\n } else if (arguments.length === 2) {\n const boundaryNodeRule = arguments[0], e = arguments[1]\n EdgeEnd.constructor_.call(this, e.getEdge(), e.getCoordinate(), e.getDirectedCoordinate(), new Label(e.getLabel()))\n this.insert(e)\n }\n }\n insert(e) {\n this._edgeEnds.add(e)\n }\n print(out) {\n out.println('EdgeEndBundle--> Label: ' + this._label)\n for (let it = this.iterator(); it.hasNext(); ) {\n const ee = it.next()\n ee.print(out)\n out.println()\n }\n }\n iterator() {\n return this._edgeEnds.iterator()\n }\n getEdgeEnds() {\n return this._edgeEnds\n }\n computeLabelOn(geomIndex, boundaryNodeRule) {\n let boundaryCount = 0\n let foundInterior = false\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n const loc = e.getLabel().getLocation(geomIndex)\n if (loc === Location.BOUNDARY) boundaryCount++\n if (loc === Location.INTERIOR) foundInterior = true\n }\n let loc = Location.NONE\n if (foundInterior) loc = Location.INTERIOR\n if (boundaryCount > 0) \n loc = GeometryGraph.determineBoundary(boundaryNodeRule, boundaryCount)\n \n this._label.setLocation(geomIndex, loc)\n }\n computeLabelSide(geomIndex, side) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n if (e.getLabel().isArea()) {\n const loc = e.getLabel().getLocation(geomIndex, side)\n if (loc === Location.INTERIOR) {\n this._label.setLocation(geomIndex, side, Location.INTERIOR)\n return null\n } else if (loc === Location.EXTERIOR) {\n this._label.setLocation(geomIndex, side, Location.EXTERIOR)\n }\n }\n }\n }\n getLabel() {\n return this._label\n }\n computeLabelSides(geomIndex) {\n this.computeLabelSide(geomIndex, Position.LEFT)\n this.computeLabelSide(geomIndex, Position.RIGHT)\n }\n updateIM(im) {\n Edge.updateIM(this._label, im)\n }\n computeLabel(boundaryNodeRule) {\n let isArea = false\n for (let it = this.iterator(); it.hasNext(); ) {\n const e = it.next()\n if (e.getLabel().isArea()) isArea = true\n }\n if (isArea) this._label = new Label(Location.NONE, Location.NONE, Location.NONE); else this._label = new Label(Location.NONE)\n for (let i = 0; i < 2; i++) {\n this.computeLabelOn(i, boundaryNodeRule)\n if (isArea) this.computeLabelSides(i)\n }\n }\n}\n","import EdgeEndStar from '../../geomgraph/EdgeEndStar'\nimport EdgeEndBundle from './EdgeEndBundle'\nexport default class EdgeEndBundleStar extends EdgeEndStar {\n constructor() {\n super()\n }\n updateIM(im) {\n for (let it = this.iterator(); it.hasNext(); ) {\n const esb = it.next()\n esb.updateIM(im)\n }\n }\n insert(e) {\n let eb = this._edgeMap.get(e)\n if (eb === null) {\n eb = new EdgeEndBundle(e)\n this.insertEdgeEnd(e, eb)\n } else {\n eb.insert(e)\n }\n }\n}\n","import Node from '../../geomgraph/Node'\nexport default class RelateNode extends Node {\n constructor() {\n super()\n RelateNode.constructor_.apply(this, arguments)\n }\n static constructor_() {\n const coord = arguments[0], edges = arguments[1]\n Node.constructor_.call(this, coord, edges)\n }\n updateIMFromEdges(im) {\n this._edges.updateIM(im)\n }\n computeIM(im) {\n im.setAtLeastIfValid(this._label.getLocation(0), this._label.getLocation(1), 0)\n }\n}\n","import EdgeEndBundleStar from './EdgeEndBundleStar'\nimport RelateNode from './RelateNode'\nimport NodeFactory from '../../geomgraph/NodeFactory'\nexport default class RelateNodeFactory extends NodeFactory {\n constructor() {\n super()\n }\n createNode(coord) {\n return new RelateNode(coord, new EdgeEndBundleStar())\n }\n}\n","import Location from '../../geom/Location'\nimport EdgeEndBuilder from './EdgeEndBuilder'\nimport NodeMap from '../../geomgraph/NodeMap'\nimport RelateNodeFactory from './RelateNodeFactory'\nexport default class RelateNodeGraph {\n constructor() {\n RelateNodeGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodes = new NodeMap(new RelateNodeFactory())\n }\n insertEdgeEnds(ee) {\n for (let i = ee.iterator(); i.hasNext(); ) {\n const e = i.next()\n this._nodes.add(e)\n }\n }\n getNodeIterator() {\n return this._nodes.iterator()\n }\n copyNodesAndLabels(geomGraph, argIndex) {\n for (let nodeIt = geomGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n const graphNode = nodeIt.next()\n const newNode = this._nodes.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n build(geomGraph) {\n this.computeIntersectionNodes(geomGraph, 0)\n this.copyNodesAndLabels(geomGraph, 0)\n const eeBuilder = new EdgeEndBuilder()\n const eeList = eeBuilder.computeEdgeEnds(geomGraph.getEdgeIterator())\n this.insertEdgeEnds(eeList)\n }\n computeIntersectionNodes(geomGraph, argIndex) {\n for (let edgeIt = geomGraph.getEdgeIterator(); edgeIt.hasNext(); ) {\n const e = edgeIt.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.addNode(ei.coord)\n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else \n if (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n}\n","import RelateNodeGraph from '../relate/RelateNodeGraph'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nexport default class ConsistentAreaTester {\n constructor() {\n ConsistentAreaTester.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._geomGraph = null\n this._nodeGraph = new RelateNodeGraph()\n this._invalidPoint = null\n const geomGraph = arguments[0]\n this._geomGraph = geomGraph\n }\n isNodeEdgeAreaLabelsConsistent() {\n for (let nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n const node = nodeIt.next()\n if (!node.getEdges().isAreaLabelsConsistent(this._geomGraph)) {\n this._invalidPoint = node.getCoordinate().copy()\n return false\n }\n }\n return true\n }\n getInvalidPoint() {\n return this._invalidPoint\n }\n hasDuplicateRings() {\n for (let nodeIt = this._nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {\n const node = nodeIt.next()\n for (let i = node.getEdges().iterator(); i.hasNext(); ) {\n const eeb = i.next()\n if (eeb.getEdgeEnds().size() > 1) {\n this._invalidPoint = eeb.getEdge().getCoordinate(0)\n return true\n }\n }\n }\n return false\n }\n isNodeConsistentArea() {\n const intersector = this._geomGraph.computeSelfNodes(this._li, true, true)\n if (intersector.hasProperIntersection()) {\n this._invalidPoint = intersector.getProperIntersectionPoint()\n return false\n }\n this._nodeGraph.build(this._geomGraph)\n return this.isNodeEdgeAreaLabelsConsistent()\n }\n}\n","import STRtree from '../../index/strtree/STRtree'\nimport IsValidOp from './IsValidOp'\nimport PointLocation from '../../algorithm/PointLocation'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nexport default class IndexedNestedRingTester {\n constructor() {\n IndexedNestedRingTester.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._graph = null\n this._rings = new ArrayList()\n this._totalEnv = new Envelope()\n this._index = null\n this._nestedPt = null\n const graph = arguments[0]\n this._graph = graph\n }\n buildIndex() {\n this._index = new STRtree()\n for (let i = 0; i < this._rings.size(); i++) {\n const ring = this._rings.get(i)\n const env = ring.getEnvelopeInternal()\n this._index.insert(env, ring)\n }\n }\n getNestedPoint() {\n return this._nestedPt\n }\n isNonNested() {\n this.buildIndex()\n for (let i = 0; i < this._rings.size(); i++) {\n const innerRing = this._rings.get(i)\n const innerRingPts = innerRing.getCoordinates()\n const results = this._index.query(innerRing.getEnvelopeInternal())\n for (let j = 0; j < results.size(); j++) {\n const searchRing = results.get(j)\n const searchRingPts = searchRing.getCoordinates()\n if (innerRing === searchRing) continue\n if (!innerRing.getEnvelopeInternal().intersects(searchRing.getEnvelopeInternal())) continue\n const innerRingPt = IsValidOp.findPtNotNode(innerRingPts, searchRing, this._graph)\n if (innerRingPt === null) continue\n const isInside = PointLocation.isInRing(innerRingPt, searchRingPts)\n if (isInside) {\n this._nestedPt = innerRingPt\n return false\n }\n }\n }\n return true\n }\n add(ring) {\n this._rings.add(ring)\n this._totalEnv.expandToInclude(ring.getEnvelopeInternal())\n }\n}\n","export default class TopologyValidationError {\n constructor() {\n TopologyValidationError.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._errorType = null\n this._pt = null\n if (arguments.length === 1) {\n const errorType = arguments[0]\n TopologyValidationError.constructor_.call(this, errorType, null)\n } else if (arguments.length === 2) {\n const errorType = arguments[0], pt = arguments[1]\n this._errorType = errorType\n if (pt !== null) this._pt = pt.copy()\n }\n }\n getErrorType() {\n return this._errorType\n }\n getMessage() {\n return TopologyValidationError.errMsg[this._errorType]\n }\n getCoordinate() {\n return this._pt\n }\n toString() {\n let locStr = ''\n if (this._pt !== null) locStr = ' at or near point ' + this._pt\n return this.getMessage() + locStr\n }\n}\nTopologyValidationError.ERROR = 0\nTopologyValidationError.REPEATED_POINT = 1\nTopologyValidationError.HOLE_OUTSIDE_SHELL = 2\nTopologyValidationError.NESTED_HOLES = 3\nTopologyValidationError.DISCONNECTED_INTERIOR = 4\nTopologyValidationError.SELF_INTERSECTION = 5\nTopologyValidationError.RING_SELF_INTERSECTION = 6\nTopologyValidationError.NESTED_SHELLS = 7\nTopologyValidationError.DUPLICATE_RINGS = 8\nTopologyValidationError.TOO_FEW_POINTS = 9\nTopologyValidationError.INVALID_COORDINATE = 10\nTopologyValidationError.RING_NOT_CLOSED = 11\nTopologyValidationError.errMsg = ['Topology Validation Error', 'Repeated Point', 'Hole lies outside shell', 'Holes are nested', 'Interior is disconnected', 'Self-intersection', 'Ring Self-intersection', 'Nested shells', 'Duplicate Rings', 'Too few distinct points in geometry component', 'Invalid Coordinate', 'Ring is not closed']\n","import Location from '../../geom/Location'\nimport TreeSet from '../../../../../java/util/TreeSet'\nimport LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport ConnectedInteriorTester from './ConnectedInteriorTester'\nimport Coordinate from '../../geom/Coordinate'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport MultiPoint from '../../geom/MultiPoint'\nimport PointLocation from '../../algorithm/PointLocation'\nimport LinearRing from '../../geom/LinearRing'\nimport Double from '../../../../../java/lang/Double'\nimport GeometryGraph from '../../geomgraph/GeometryGraph'\nimport MultiPolygon from '../../geom/MultiPolygon'\nimport ConsistentAreaTester from './ConsistentAreaTester'\nimport GeometryCollection from '../../geom/GeometryCollection'\nimport UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException'\nimport IndexedNestedRingTester from './IndexedNestedRingTester'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport TopologyValidationError from './TopologyValidationError'\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator'\nimport Assert from '../../util/Assert'\nexport default class IsValidOp {\n constructor() {\n IsValidOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentGeometry = null\n this._isSelfTouchingRingFormingHoleValid = false\n this._validErr = null\n const parentGeometry = arguments[0]\n this._parentGeometry = parentGeometry\n }\n static findPtNotNode(testCoords, searchRing, graph) {\n const searchEdge = graph.findEdge(searchRing)\n const eiList = searchEdge.getEdgeIntersectionList()\n for (let i = 0; i < testCoords.length; i++) {\n const pt = testCoords[i]\n if (!eiList.isIntersection(pt)) return pt\n }\n return null\n }\n static isValid() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const isValidOp = new IsValidOp(geom)\n return isValidOp.isValid()\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n if (Double.isNaN(coord.x)) return false\n if (Double.isInfinite(coord.x)) return false\n if (Double.isNaN(coord.y)) return false\n if (Double.isInfinite(coord.y)) return false\n return true\n }\n }\n checkInvalidCoordinates() {\n if (arguments[0] instanceof Array) {\n const coords = arguments[0]\n for (let i = 0; i < coords.length; i++) \n if (!IsValidOp.isValid(coords[i])) {\n this._validErr = new TopologyValidationError(TopologyValidationError.INVALID_COORDINATE, coords[i])\n return null\n }\n \n } else if (arguments[0] instanceof Polygon) {\n const poly = arguments[0]\n this.checkInvalidCoordinates(poly.getExteriorRing().getCoordinates())\n if (this._validErr !== null) return null\n for (let i = 0; i < poly.getNumInteriorRing(); i++) {\n this.checkInvalidCoordinates(poly.getInteriorRingN(i).getCoordinates())\n if (this._validErr !== null) return null\n }\n }\n }\n checkHolesNotNested(p, graph) {\n if (p.getNumInteriorRing() <= 0) return null\n const nestedTester = new IndexedNestedRingTester(graph)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const innerHole = p.getInteriorRingN(i)\n if (innerHole.isEmpty()) continue\n nestedTester.add(innerHole)\n }\n const isNonNested = nestedTester.isNonNested()\n if (!isNonNested) \n this._validErr = new TopologyValidationError(TopologyValidationError.NESTED_HOLES, nestedTester.getNestedPoint())\n \n }\n checkConsistentArea(graph) {\n const cat = new ConsistentAreaTester(graph)\n const isValidArea = cat.isNodeConsistentArea()\n if (!isValidArea) {\n this._validErr = new TopologyValidationError(TopologyValidationError.SELF_INTERSECTION, cat.getInvalidPoint())\n return null\n }\n if (cat.hasDuplicateRings()) \n this._validErr = new TopologyValidationError(TopologyValidationError.DUPLICATE_RINGS, cat.getInvalidPoint())\n \n }\n isValid() {\n this.checkValid(this._parentGeometry)\n return this._validErr === null\n }\n checkShellInsideHole(shell, hole, graph) {\n const shellPts = shell.getCoordinates()\n const holePts = hole.getCoordinates()\n const shellPt = IsValidOp.findPtNotNode(shellPts, hole, graph)\n if (shellPt !== null) {\n const insideHole = PointLocation.isInRing(shellPt, holePts)\n if (!insideHole) \n return shellPt\n \n }\n const holePt = IsValidOp.findPtNotNode(holePts, shell, graph)\n if (holePt !== null) {\n const insideShell = PointLocation.isInRing(holePt, shellPts)\n if (insideShell) \n return holePt\n \n return null\n }\n Assert.shouldNeverReachHere('points in shell and hole appear to be equal')\n return null\n }\n checkNoSelfIntersectingRings(graph) {\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n this.checkNoSelfIntersectingRing(e.getEdgeIntersectionList())\n if (this._validErr !== null) return null\n }\n }\n checkConnectedInteriors(graph) {\n const cit = new ConnectedInteriorTester(graph)\n if (!cit.isInteriorsConnected()) this._validErr = new TopologyValidationError(TopologyValidationError.DISCONNECTED_INTERIOR, cit.getCoordinate())\n }\n checkNoSelfIntersectingRing(eiList) {\n const nodeSet = new TreeSet()\n let isFirst = true\n for (let i = eiList.iterator(); i.hasNext(); ) {\n const ei = i.next()\n if (isFirst) {\n isFirst = false\n continue\n }\n if (nodeSet.contains(ei.coord)) {\n this._validErr = new TopologyValidationError(TopologyValidationError.RING_SELF_INTERSECTION, ei.coord)\n return null\n } else {\n nodeSet.add(ei.coord)\n }\n }\n }\n checkHolesInShell(p, graph) {\n if (p.getNumInteriorRing() <= 0) return null\n const shell = p.getExteriorRing()\n const isShellEmpty = shell.isEmpty()\n const pir = new IndexedPointInAreaLocator(shell)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n let holePt = null\n if (hole.isEmpty()) continue\n holePt = IsValidOp.findPtNotNode(hole.getCoordinates(), shell, graph)\n if (holePt === null) return null\n const outside = isShellEmpty || Location.EXTERIOR === pir.locate(holePt)\n if (outside) {\n this._validErr = new TopologyValidationError(TopologyValidationError.HOLE_OUTSIDE_SHELL, holePt)\n return null\n }\n }\n }\n checkTooFewPoints(graph) {\n if (graph.hasTooFewPoints()) {\n this._validErr = new TopologyValidationError(TopologyValidationError.TOO_FEW_POINTS, graph.getInvalidPoint())\n return null\n }\n }\n getValidationError() {\n this.checkValid(this._parentGeometry)\n return this._validErr\n }\n checkValid() {\n if (arguments[0] instanceof Point) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n } else if (arguments[0] instanceof MultiPoint) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n } else if (arguments[0] instanceof LinearRing) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n if (this._validErr !== null) return null\n this.checkClosedRing(g)\n if (this._validErr !== null) return null\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n if (this._validErr !== null) return null\n const li = new RobustLineIntersector()\n graph.computeSelfNodes(li, true, true)\n this.checkNoSelfIntersectingRings(graph)\n } else if (arguments[0] instanceof LineString) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g.getCoordinates())\n if (this._validErr !== null) return null\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n } else if (arguments[0] instanceof Polygon) {\n const g = arguments[0]\n this.checkInvalidCoordinates(g)\n if (this._validErr !== null) return null\n this.checkClosedRings(g)\n if (this._validErr !== null) return null\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n if (this._validErr !== null) return null\n this.checkConsistentArea(graph)\n if (this._validErr !== null) return null\n if (!this._isSelfTouchingRingFormingHoleValid) {\n this.checkNoSelfIntersectingRings(graph)\n if (this._validErr !== null) return null\n }\n this.checkHolesInShell(g, graph)\n if (this._validErr !== null) return null\n this.checkHolesNotNested(g, graph)\n if (this._validErr !== null) return null\n this.checkConnectedInteriors(graph)\n } else if (arguments[0] instanceof MultiPolygon) {\n const g = arguments[0]\n for (let i = 0; i < g.getNumGeometries(); i++) {\n const p = g.getGeometryN(i)\n this.checkInvalidCoordinates(p)\n if (this._validErr !== null) return null\n this.checkClosedRings(p)\n if (this._validErr !== null) return null\n }\n const graph = new GeometryGraph(0, g)\n this.checkTooFewPoints(graph)\n if (this._validErr !== null) return null\n this.checkConsistentArea(graph)\n if (this._validErr !== null) return null\n if (!this._isSelfTouchingRingFormingHoleValid) {\n this.checkNoSelfIntersectingRings(graph)\n if (this._validErr !== null) return null\n }\n for (let i = 0; i < g.getNumGeometries(); i++) {\n const p = g.getGeometryN(i)\n this.checkHolesInShell(p, graph)\n if (this._validErr !== null) return null\n }\n for (let i = 0; i < g.getNumGeometries(); i++) {\n const p = g.getGeometryN(i)\n this.checkHolesNotNested(p, graph)\n if (this._validErr !== null) return null\n }\n this.checkShellsNotNested(g, graph)\n if (this._validErr !== null) return null\n this.checkConnectedInteriors(graph)\n } else if (arguments[0] instanceof GeometryCollection) {\n const gc = arguments[0]\n for (let i = 0; i < gc.getNumGeometries(); i++) {\n const g = gc.getGeometryN(i)\n this.checkValid(g)\n if (this._validErr !== null) return null\n }\n } else if (arguments[0] instanceof Geometry) {\n const g = arguments[0]\n this._validErr = null\n if (g.isEmpty()) return null\n if (g instanceof Point) this.checkValid(g); else if (g instanceof MultiPoint) this.checkValid(g); else if (g instanceof LinearRing) this.checkValid(g); else if (g instanceof LineString) this.checkValid(g); else if (g instanceof Polygon) this.checkValid(g); else if (g instanceof MultiPolygon) this.checkValid(g); else if (g instanceof GeometryCollection) this.checkValid(g); else throw new UnsupportedOperationException(g.getGeometryType())\n }\n }\n setSelfTouchingRingFormingHoleValid(isValid) {\n this._isSelfTouchingRingFormingHoleValid = isValid\n }\n checkShellNotNested(shell, p, graph) {\n const shellPts = shell.getCoordinates()\n const polyShell = p.getExteriorRing()\n if (polyShell.isEmpty()) return null\n const polyPts = polyShell.getCoordinates()\n const shellPt = IsValidOp.findPtNotNode(shellPts, polyShell, graph)\n if (shellPt === null) return null\n const insidePolyShell = PointLocation.isInRing(shellPt, polyPts)\n if (!insidePolyShell) return null\n if (p.getNumInteriorRing() <= 0) {\n this._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, shellPt)\n return null\n }\n let badNestedPt = null\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n badNestedPt = this.checkShellInsideHole(shell, hole, graph)\n if (badNestedPt === null) return null\n }\n this._validErr = new TopologyValidationError(TopologyValidationError.NESTED_SHELLS, badNestedPt)\n }\n checkClosedRings(poly) {\n this.checkClosedRing(poly.getExteriorRing())\n if (this._validErr !== null) return null\n for (let i = 0; i < poly.getNumInteriorRing(); i++) {\n this.checkClosedRing(poly.getInteriorRingN(i))\n if (this._validErr !== null) return null\n }\n }\n checkClosedRing(ring) {\n if (ring.isEmpty()) return null\n if (!ring.isClosed()) {\n let pt = null\n if (ring.getNumPoints() >= 1) pt = ring.getCoordinateN(0)\n this._validErr = new TopologyValidationError(TopologyValidationError.RING_NOT_CLOSED, pt)\n }\n }\n checkShellsNotNested(mp, graph) {\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const p = mp.getGeometryN(i)\n const shell = p.getExteriorRing()\n for (let j = 0; j < mp.getNumGeometries(); j++) {\n if (i === j) continue\n const p2 = mp.getGeometryN(j)\n this.checkShellNotNested(shell, p2, graph)\n if (this._validErr !== null) return null\n }\n }\n }\n}\n","import Location from '../../geom/Location'\nimport CoordinateList from '../../geom/CoordinateList'\nimport WKTWriter from '../../io/WKTWriter'\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence'\nimport IsValidOp from '../valid/IsValidOp'\nimport LinearRing from '../../geom/LinearRing'\nimport Exception from '../../../../../java/lang/Exception'\nimport Orientation from '../../algorithm/Orientation'\nimport System from '../../../../../java/lang/System'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Comparator from '../../../../../java/util/Comparator'\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator'\nimport Assert from '../../util/Assert'\nexport default class EdgeRing {\n constructor() {\n EdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n this._deList = new ArrayList()\n this._lowestEdge = null\n this._ring = null\n this._locator = null\n this._ringPts = null\n this._holes = null\n this._shell = null\n this._isHole = null\n this._isProcessed = false\n this._isIncludedSet = false\n this._isIncluded = false\n const factory = arguments[0]\n this._factory = factory\n }\n static findDirEdgesInRing(startDE) {\n let de = startDE\n const edges = new ArrayList()\n do {\n edges.add(de)\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n return edges\n }\n static addEdge(coords, isForward, coordList) {\n if (isForward) \n for (let i = 0; i < coords.length; i++) \n coordList.add(coords[i], false)\n \n else \n for (let i = coords.length - 1; i >= 0; i--) \n coordList.add(coords[i], false)\n \n \n }\n static findEdgeRingContaining(testEr, erList) {\n const testRing = testEr.getRing()\n const testEnv = testRing.getEnvelopeInternal()\n let testPt = testRing.getCoordinateN(0)\n let minRing = null\n let minRingEnv = null\n for (let it = erList.iterator(); it.hasNext(); ) {\n const tryEdgeRing = it.next()\n const tryRing = tryEdgeRing.getRing()\n const tryShellEnv = tryRing.getEnvelopeInternal()\n if (tryShellEnv.equals(testEnv)) continue\n if (!tryShellEnv.contains(testEnv)) continue\n testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryEdgeRing.getCoordinates())\n const isContained = tryEdgeRing.isInRing(testPt)\n if (isContained) \n if (minRing === null || minRingEnv.contains(tryShellEnv)) {\n minRing = tryEdgeRing\n minRingEnv = minRing.getRing().getEnvelopeInternal()\n }\n \n }\n return minRing\n }\n isIncluded() {\n return this._isIncluded\n }\n getCoordinates() {\n if (this._ringPts === null) {\n const coordList = new CoordinateList()\n for (let i = this._deList.iterator(); i.hasNext(); ) {\n const de = i.next()\n const edge = de.getEdge()\n EdgeRing.addEdge(edge.getLine().getCoordinates(), de.getEdgeDirection(), coordList)\n }\n this._ringPts = coordList.toCoordinateArray()\n }\n return this._ringPts\n }\n isIncludedSet() {\n return this._isIncludedSet\n }\n isValid() {\n this.getCoordinates()\n if (this._ringPts.length <= 3) return false\n this.getRing()\n return IsValidOp.isValid(this._ring)\n }\n build(startDE) {\n let de = startDE\n do {\n this.add(de)\n de.setRing(this)\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n }\n isInRing(pt) {\n return Location.EXTERIOR !== this.getLocator().locate(pt)\n }\n isOuterHole() {\n if (!this._isHole) return false\n return !this.hasShell()\n }\n getPolygon() {\n let holeLR = null\n if (this._holes !== null) {\n holeLR = new Array(this._holes.size()).fill(null)\n for (let i = 0; i < this._holes.size(); i++) \n holeLR[i] = this._holes.get(i)\n \n }\n const poly = this._factory.createPolygon(this._ring, holeLR)\n return poly\n }\n isHole() {\n return this._isHole\n }\n isProcessed() {\n return this._isProcessed\n }\n addHole() {\n if (arguments[0] instanceof LinearRing) {\n const hole = arguments[0]\n if (this._holes === null) this._holes = new ArrayList()\n this._holes.add(hole)\n } else if (arguments[0] instanceof EdgeRing) {\n const holeER = arguments[0]\n holeER.setShell(this)\n const hole = holeER.getRing()\n if (this._holes === null) this._holes = new ArrayList()\n this._holes.add(hole)\n }\n }\n setIncluded(isIncluded) {\n this._isIncluded = isIncluded\n this._isIncludedSet = true\n }\n getOuterHole() {\n if (this.isHole()) return null\n for (let i = 0; i < this._deList.size(); i++) {\n const de = this._deList.get(i)\n const adjRing = de.getSym().getRing()\n if (adjRing.isOuterHole()) return adjRing\n }\n return null\n }\n computeHole() {\n const ring = this.getRing()\n this._isHole = Orientation.isCCW(ring.getCoordinates())\n }\n hasShell() {\n return this._shell !== null\n }\n isOuterShell() {\n return this.getOuterHole() !== null\n }\n getLineString() {\n this.getCoordinates()\n return this._factory.createLineString(this._ringPts)\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this.getCoordinates()))\n }\n getLocator() {\n if (this._locator === null) \n this._locator = new IndexedPointInAreaLocator(this.getRing())\n \n return this._locator\n }\n getShell() {\n if (this.isHole()) return this._shell\n return this\n }\n add(de) {\n this._deList.add(de)\n }\n getRing() {\n if (this._ring !== null) return this._ring\n this.getCoordinates()\n if (this._ringPts.length < 3) System.out.println(this._ringPts)\n try {\n this._ring = this._factory.createLinearRing(this._ringPts)\n } catch (ex) {\n if (ex instanceof Exception) \n System.out.println(this._ringPts)\n else throw ex\n } finally {}\n return this._ring\n }\n updateIncluded() {\n if (this.isHole()) return null\n for (let i = 0; i < this._deList.size(); i++) {\n const de = this._deList.get(i)\n const adjShell = de.getSym().getRing().getShell()\n if (adjShell !== null && adjShell.isIncludedSet()) {\n this.setIncluded(!adjShell.isIncluded())\n return null\n }\n }\n }\n setShell(shell) {\n this._shell = shell\n }\n setProcessed(isProcessed) {\n this._isProcessed = isProcessed\n }\n}\nclass EnvelopeComparator {\n compare(obj0, obj1) {\n const r0 = obj0\n const r1 = obj1\n return r0.getRing().getEnvelope().compareTo(r1.getRing().getEnvelope())\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nEdgeRing.EnvelopeComparator = EnvelopeComparator\n","import PolygonizeDirectedEdge from './PolygonizeDirectedEdge'\nimport HashSet from '../../../../../java/util/HashSet'\nimport Stack from '../../../../../java/util/Stack'\nimport Node from '../../planargraph/Node'\nimport PolygonizeEdge from './PolygonizeEdge'\nimport EdgeRing from './EdgeRing'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport PlanarGraph from '../../planargraph/PlanarGraph'\nexport default class PolygonizeGraph extends PlanarGraph {\n constructor() {\n super()\n PolygonizeGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n const factory = arguments[0]\n this._factory = factory\n }\n static findLabeledEdgeRings(dirEdges) {\n const edgeRingStarts = new ArrayList()\n let currLabel = 1\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n if (de.getLabel() >= 0) continue\n edgeRingStarts.add(de)\n const edges = EdgeRing.findDirEdgesInRing(de)\n PolygonizeGraph.label(edges, currLabel)\n currLabel++\n }\n return edgeRingStarts\n }\n static getDegreeNonDeleted(node) {\n const edges = node.getOutEdges().getEdges()\n let degree = 0\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isMarked()) degree++\n }\n return degree\n }\n static deleteAllEdges(node) {\n const edges = node.getOutEdges().getEdges()\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setMarked(true)\n const sym = de.getSym()\n if (sym !== null) sym.setMarked(true)\n }\n }\n static label(dirEdges, label) {\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setLabel(label)\n }\n }\n static computeNextCWEdges(node) {\n const deStar = node.getOutEdges()\n let startDE = null\n let prevDE = null\n for (let i = deStar.getEdges().iterator(); i.hasNext(); ) {\n const outDE = i.next()\n if (outDE.isMarked()) continue\n if (startDE === null) startDE = outDE\n if (prevDE !== null) {\n const sym = prevDE.getSym()\n sym.setNext(outDE)\n }\n prevDE = outDE\n }\n if (prevDE !== null) {\n const sym = prevDE.getSym()\n sym.setNext(startDE)\n }\n }\n static computeNextCCWEdges(node, label) {\n const deStar = node.getOutEdges()\n let firstOutDE = null\n let prevInDE = null\n const edges = deStar.getEdges()\n for (let i = edges.size() - 1; i >= 0; i--) {\n const de = edges.get(i)\n const sym = de.getSym()\n let outDE = null\n if (de.getLabel() === label) outDE = de\n let inDE = null\n if (sym.getLabel() === label) inDE = sym\n if (outDE === null && inDE === null) continue\n if (inDE !== null) \n prevInDE = inDE\n \n if (outDE !== null) {\n if (prevInDE !== null) {\n prevInDE.setNext(outDE)\n prevInDE = null\n }\n if (firstOutDE === null) firstOutDE = outDE\n }\n }\n if (prevInDE !== null) {\n Assert.isTrue(firstOutDE !== null)\n prevInDE.setNext(firstOutDE)\n }\n }\n static getDegree(node, label) {\n const edges = node.getOutEdges().getEdges()\n let degree = 0\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.getLabel() === label) degree++\n }\n return degree\n }\n static findIntersectionNodes(startDE, label) {\n let de = startDE\n let intNodes = null\n do {\n const node = de.getFromNode()\n if (PolygonizeGraph.getDegree(node, label) > 1) {\n if (intNodes === null) intNodes = new ArrayList()\n intNodes.add(node)\n }\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n return intNodes\n }\n findEdgeRing(startDE) {\n const er = new EdgeRing(this._factory)\n er.build(startDE)\n return er\n }\n computeDepthParity() {\n if (arguments.length === 0) {\n while (true) {\n const de = null\n if (de === null) return null\n this.computeDepthParity(de)\n }\n } else if (arguments.length === 1) {\n const de = arguments[0]\n }\n }\n computeNextCWEdges() {\n for (let iNode = this.nodeIterator(); iNode.hasNext(); ) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCWEdges(node)\n }\n }\n addEdge(line) {\n if (line.isEmpty()) \n return null\n \n const linePts = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (linePts.length < 2) \n return null\n \n const startPt = linePts[0]\n const endPt = linePts[linePts.length - 1]\n const nStart = this.getNode(startPt)\n const nEnd = this.getNode(endPt)\n const de0 = new PolygonizeDirectedEdge(nStart, nEnd, linePts[1], true)\n const de1 = new PolygonizeDirectedEdge(nEnd, nStart, linePts[linePts.length - 2], false)\n const edge = new PolygonizeEdge(line)\n edge.setDirectedEdges(de0, de1)\n this.add(edge)\n }\n deleteCutEdges() {\n this.computeNextCWEdges()\n PolygonizeGraph.findLabeledEdgeRings(this._dirEdges)\n const cutLines = new ArrayList()\n for (let i = this._dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n const sym = de.getSym()\n if (de.getLabel() === sym.getLabel()) {\n de.setMarked(true)\n sym.setMarked(true)\n const e = de.getEdge()\n cutLines.add(e.getLine())\n }\n }\n return cutLines\n }\n getEdgeRings() {\n this.computeNextCWEdges()\n PolygonizeGraph.label(this._dirEdges, -1)\n const maximalRings = PolygonizeGraph.findLabeledEdgeRings(this._dirEdges)\n this.convertMaximalToMinimalEdgeRings(maximalRings)\n const edgeRingList = new ArrayList()\n for (let i = this._dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n if (de.isInRing()) continue\n const er = this.findEdgeRing(de)\n edgeRingList.add(er)\n }\n return edgeRingList\n }\n getNode(pt) {\n let node = this.findNode(pt)\n if (node === null) {\n node = new Node(pt)\n this.add(node)\n }\n return node\n }\n convertMaximalToMinimalEdgeRings(ringEdges) {\n for (let i = ringEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n const label = de.getLabel()\n const intNodes = PolygonizeGraph.findIntersectionNodes(de, label)\n if (intNodes === null) continue\n for (let iNode = intNodes.iterator(); iNode.hasNext(); ) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCCWEdges(node, label)\n }\n }\n }\n deleteDangles() {\n const nodesToRemove = this.findNodesOfDegree(1)\n const dangleLines = new HashSet()\n const nodeStack = new Stack()\n for (let i = nodesToRemove.iterator(); i.hasNext(); ) \n nodeStack.push(i.next())\n \n while (!nodeStack.isEmpty()) {\n const node = nodeStack.pop()\n PolygonizeGraph.deleteAllEdges(node)\n const nodeOutEdges = node.getOutEdges().getEdges()\n for (let i = nodeOutEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setMarked(true)\n const sym = de.getSym()\n if (sym !== null) sym.setMarked(true)\n const e = de.getEdge()\n dangleLines.add(e.getLine())\n const toNode = de.getToNode()\n if (PolygonizeGraph.getDegreeNonDeleted(toNode) === 1) nodeStack.push(toNode)\n }\n }\n return dangleLines\n }\n}\n","import STRtree from '../../index/strtree/STRtree'\nimport EdgeRing from './EdgeRing'\nexport default class HoleAssigner {\n constructor() {\n HoleAssigner.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._shells = null\n this._shellIndex = null\n const shells = arguments[0]\n this._shells = shells\n this.buildIndex()\n }\n static assignHolesToShells(holes, shells) {\n const assigner = new HoleAssigner(shells)\n assigner.assignHolesToShells(holes)\n }\n assignHolesToShells(holeList) {\n for (let i = holeList.iterator(); i.hasNext(); ) {\n const holeER = i.next()\n this.assignHoleToShell(holeER)\n }\n }\n buildIndex() {\n this._shellIndex = new STRtree()\n for (const shell of this._shells) \n this._shellIndex.insert(shell.getRing().getEnvelopeInternal(), shell)\n \n }\n queryOverlappingShells(ringEnv) {\n return this._shellIndex.query(ringEnv)\n }\n findShellContaining(testEr) {\n const testEnv = testEr.getRing().getEnvelopeInternal()\n const candidateShells = this.queryOverlappingShells(testEnv)\n return EdgeRing.findEdgeRingContaining(testEr, candidateShells)\n }\n assignHoleToShell(holeER) {\n const shell = this.findShellContaining(holeER)\n if (shell !== null) \n shell.addHole(holeER)\n \n }\n}\n","import LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport PolygonizeGraph from './PolygonizeGraph'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Collection from '../../../../../java/util/Collection'\nimport Collections from '../../../../../java/util/Collections'\nimport EdgeRing from './EdgeRing'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport HoleAssigner from './HoleAssigner'\nexport default class Polygonizer {\n constructor() {\n Polygonizer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._lineStringAdder = new LineStringAdder(this)\n this._graph = null\n this._dangles = new ArrayList()\n this._cutEdges = new ArrayList()\n this._invalidRingLines = new ArrayList()\n this._holeList = null\n this._shellList = null\n this._polyList = null\n this._isCheckingRingsValid = true\n this._extractOnlyPolygonal = null\n this._geomFactory = null\n if (arguments.length === 0) {\n Polygonizer.constructor_.call(this, false)\n } else if (arguments.length === 1) {\n const extractOnlyPolygonal = arguments[0]\n this._extractOnlyPolygonal = extractOnlyPolygonal\n }\n }\n static extractPolygons(shellList, includeAll) {\n const polyList = new ArrayList()\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (includeAll || er.isIncluded()) \n polyList.add(er.getPolygon())\n \n }\n return polyList\n }\n static findOuterShells(shellList) {\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n const outerHoleER = er.getOuterHole()\n if (outerHoleER !== null && !outerHoleER.isProcessed()) {\n er.setIncluded(true)\n outerHoleER.setProcessed(true)\n }\n }\n }\n static findDisjointShells(shellList) {\n Polygonizer.findOuterShells(shellList)\n let isMoreToScan = null\n do {\n isMoreToScan = false\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (er.isIncludedSet()) continue\n er.updateIncluded()\n if (!er.isIncludedSet()) \n isMoreToScan = true\n \n }\n } while (isMoreToScan)\n }\n getGeometry() {\n if (this._geomFactory === null) this._geomFactory = new GeometryFactory()\n this.polygonize()\n if (this._extractOnlyPolygonal) \n return this._geomFactory.buildGeometry(this._polyList)\n \n return this._geomFactory.createGeometryCollection(GeometryFactory.toGeometryArray(this._polyList))\n }\n getInvalidRingLines() {\n this.polygonize()\n return this._invalidRingLines\n }\n findValidRings(edgeRingList, validEdgeRingList, invalidRingList) {\n for (let i = edgeRingList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (er.isValid()) validEdgeRingList.add(er); else invalidRingList.add(er.getLineString())\n }\n }\n polygonize() {\n if (this._polyList !== null) return null\n this._polyList = new ArrayList()\n if (this._graph === null) return null\n this._dangles = this._graph.deleteDangles()\n this._cutEdges = this._graph.deleteCutEdges()\n const edgeRingList = this._graph.getEdgeRings()\n let validEdgeRingList = new ArrayList()\n this._invalidRingLines = new ArrayList()\n if (this._isCheckingRingsValid) \n this.findValidRings(edgeRingList, validEdgeRingList, this._invalidRingLines)\n else \n validEdgeRingList = edgeRingList\n \n this.findShellsAndHoles(validEdgeRingList)\n HoleAssigner.assignHolesToShells(this._holeList, this._shellList)\n Collections.sort(this._shellList, new EdgeRing.EnvelopeComparator())\n let includeAll = true\n if (this._extractOnlyPolygonal) {\n Polygonizer.findDisjointShells(this._shellList)\n includeAll = false\n }\n this._polyList = Polygonizer.extractPolygons(this._shellList, includeAll)\n }\n getDangles() {\n this.polygonize()\n return this._dangles\n }\n getCutEdges() {\n this.polygonize()\n return this._cutEdges\n }\n getPolygons() {\n this.polygonize()\n return this._polyList\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geomList = arguments[0]\n for (let i = geomList.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n } else if (arguments[0] instanceof LineString) {\n const line = arguments[0]\n this._geomFactory = line.getFactory()\n if (this._graph === null) this._graph = new PolygonizeGraph(this._geomFactory)\n this._graph.addEdge(line)\n } else if (arguments[0] instanceof Geometry) {\n const g = arguments[0]\n g.apply(this._lineStringAdder)\n }\n }\n setCheckRingsValid(isCheckingRingsValid) {\n this._isCheckingRingsValid = isCheckingRingsValid\n }\n findShellsAndHoles(edgeRingList) {\n this._holeList = new ArrayList()\n this._shellList = new ArrayList()\n for (let i = edgeRingList.iterator(); i.hasNext(); ) {\n const er = i.next()\n er.computeHole()\n if (er.isHole()) this._holeList.add(er); else this._shellList.add(er)\n }\n }\n}\nclass LineStringAdder {\n constructor() {\n LineStringAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.p = null\n const p = arguments[0]\n this.p = p\n }\n filter(g) {\n if (g instanceof LineString) this.p.add(g)\n }\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n}\nPolygonizer.LineStringAdder = LineStringAdder\n","import PointLocator from '../../algorithm/PointLocator'\nimport Location from '../../geom/Location'\nimport IntersectionMatrix from '../../geom/IntersectionMatrix'\nimport EdgeEndBuilder from './EdgeEndBuilder'\nimport NodeMap from '../../geomgraph/NodeMap'\nimport RelateNodeFactory from './RelateNodeFactory'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport Assert from '../../util/Assert'\nexport default class RelateComputer {\n constructor() {\n RelateComputer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._ptLocator = new PointLocator()\n this._arg = null\n this._nodes = new NodeMap(new RelateNodeFactory())\n this._im = null\n this._isolatedEdges = new ArrayList()\n this._invalidPoint = null\n const arg = arguments[0]\n this._arg = arg\n }\n insertEdgeEnds(ee) {\n for (let i = ee.iterator(); i.hasNext(); ) {\n const e = i.next()\n this._nodes.add(e)\n }\n }\n computeProperIntersectionIM(intersector, im) {\n const dimA = this._arg[0].getGeometry().getDimension()\n const dimB = this._arg[1].getGeometry().getDimension()\n const hasProper = intersector.hasProperIntersection()\n const hasProperInterior = intersector.hasProperInteriorIntersection()\n if (dimA === 2 && dimB === 2) {\n if (hasProper) im.setAtLeast('212101212')\n } else if (dimA === 2 && dimB === 1) {\n if (hasProper) im.setAtLeast('FFF0FFFF2')\n if (hasProperInterior) im.setAtLeast('1FFFFF1FF')\n } else if (dimA === 1 && dimB === 2) {\n if (hasProper) im.setAtLeast('F0FFFFFF2')\n if (hasProperInterior) im.setAtLeast('1F1FFFFFF')\n } else if (dimA === 1 && dimB === 1) {\n if (hasProperInterior) im.setAtLeast('0FFFFFFFF')\n }\n }\n labelIsolatedEdges(thisIndex, targetIndex) {\n for (let ei = this._arg[thisIndex].getEdgeIterator(); ei.hasNext(); ) {\n const e = ei.next()\n if (e.isIsolated()) {\n this.labelIsolatedEdge(e, targetIndex, this._arg[targetIndex].getGeometry())\n this._isolatedEdges.add(e)\n }\n }\n }\n labelIsolatedEdge(e, targetIndex, target) {\n if (target.getDimension() > 0) {\n const loc = this._ptLocator.locate(e.getCoordinate(), target)\n e.getLabel().setAllLocations(targetIndex, loc)\n } else {\n e.getLabel().setAllLocations(targetIndex, Location.EXTERIOR)\n }\n }\n computeIM() {\n const im = new IntersectionMatrix()\n im.set(Location.EXTERIOR, Location.EXTERIOR, 2)\n if (!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal())) {\n this.computeDisjointIM(im)\n return im\n }\n this._arg[0].computeSelfNodes(this._li, false)\n this._arg[1].computeSelfNodes(this._li, false)\n const intersector = this._arg[0].computeEdgeIntersections(this._arg[1], this._li, false)\n this.computeIntersectionNodes(0)\n this.computeIntersectionNodes(1)\n this.copyNodesAndLabels(0)\n this.copyNodesAndLabels(1)\n this.labelIsolatedNodes()\n this.computeProperIntersectionIM(intersector, im)\n const eeBuilder = new EdgeEndBuilder()\n const ee0 = eeBuilder.computeEdgeEnds(this._arg[0].getEdgeIterator())\n this.insertEdgeEnds(ee0)\n const ee1 = eeBuilder.computeEdgeEnds(this._arg[1].getEdgeIterator())\n this.insertEdgeEnds(ee1)\n this.labelNodeEdges()\n this.labelIsolatedEdges(0, 1)\n this.labelIsolatedEdges(1, 0)\n this.updateIM(im)\n return im\n }\n labelNodeEdges() {\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const node = ni.next()\n node.getEdges().computeLabelling(this._arg)\n }\n }\n copyNodesAndLabels(argIndex) {\n for (let i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n const graphNode = i.next()\n const newNode = this._nodes.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n labelIntersectionNodes(argIndex) {\n for (let i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.find(ei.coord)\n if (n.getLabel().isNull(argIndex)) \n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n labelIsolatedNode(n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setAllLocations(targetIndex, loc)\n }\n computeIntersectionNodes(argIndex) {\n for (let i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.addNode(ei.coord)\n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else \n if (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n labelIsolatedNodes() {\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const n = ni.next()\n const label = n.getLabel()\n Assert.isTrue(label.getGeometryCount() > 0, 'node with empty label found')\n if (n.isIsolated()) \n if (label.isNull(0)) this.labelIsolatedNode(n, 0); else this.labelIsolatedNode(n, 1)\n \n }\n }\n updateIM(im) {\n for (let ei = this._isolatedEdges.iterator(); ei.hasNext(); ) {\n const e = ei.next()\n e.updateIM(im)\n }\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const node = ni.next()\n node.updateIM(im)\n node.updateIMFromEdges(im)\n }\n }\n computeDisjointIM(im) {\n const ga = this._arg[0].getGeometry()\n if (!ga.isEmpty()) {\n im.set(Location.INTERIOR, Location.EXTERIOR, ga.getDimension())\n im.set(Location.BOUNDARY, Location.EXTERIOR, ga.getBoundaryDimension())\n }\n const gb = this._arg[1].getGeometry()\n if (!gb.isEmpty()) {\n im.set(Location.EXTERIOR, Location.INTERIOR, gb.getDimension())\n im.set(Location.EXTERIOR, Location.BOUNDARY, gb.getBoundaryDimension())\n }\n }\n}\n","import LineString from '../../geom/LineString'\nimport Coordinate from '../../geom/Coordinate'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nexport default class RectangleContains {\n constructor() {\n RectangleContains.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n static contains(rectangle, b) {\n const rc = new RectangleContains(rectangle)\n return rc.contains(b)\n }\n isContainedInBoundary(geom) {\n if (geom instanceof Polygon) return false\n if (geom instanceof Point) return this.isPointContainedInBoundary(geom)\n if (geom instanceof LineString) return this.isLineStringContainedInBoundary(geom)\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const comp = geom.getGeometryN(i)\n if (!this.isContainedInBoundary(comp)) return false\n }\n return true\n }\n isLineSegmentContainedInBoundary(p0, p1) {\n if (p0.equals(p1)) return this.isPointContainedInBoundary(p0)\n if (p0.x === p1.x) {\n if (p0.x === this._rectEnv.getMinX() || p0.x === this._rectEnv.getMaxX()) return true\n } else if (p0.y === p1.y) {\n if (p0.y === this._rectEnv.getMinY() || p0.y === this._rectEnv.getMaxY()) return true\n }\n return false\n }\n isLineStringContainedInBoundary(line) {\n const seq = line.getCoordinateSequence()\n const p0 = new Coordinate()\n const p1 = new Coordinate()\n for (let i = 0; i < seq.size() - 1; i++) {\n seq.getCoordinate(i, p0)\n seq.getCoordinate(i + 1, p1)\n if (!this.isLineSegmentContainedInBoundary(p0, p1)) return false\n }\n return true\n }\n isPointContainedInBoundary() {\n if (arguments[0] instanceof Point) {\n const point = arguments[0]\n return this.isPointContainedInBoundary(point.getCoordinate())\n } else if (arguments[0] instanceof Coordinate) {\n const pt = arguments[0]\n return pt.x === this._rectEnv.getMinX() || pt.x === this._rectEnv.getMaxX() || pt.y === this._rectEnv.getMinY() || pt.y === this._rectEnv.getMaxY()\n }\n }\n contains(geom) {\n if (!this._rectEnv.contains(geom.getEnvelopeInternal())) return false\n if (this.isContainedInBoundary(geom)) return false\n return true\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport RobustLineIntersector from './RobustLineIntersector'\nimport Envelope from '../geom/Envelope'\nexport default class RectangleLineIntersector {\n constructor() {\n RectangleLineIntersector.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._rectEnv = null\n this._diagUp0 = null\n this._diagUp1 = null\n this._diagDown0 = null\n this._diagDown1 = null\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n this._diagUp0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMinY())\n this._diagUp1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMaxY())\n this._diagDown0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMaxY())\n this._diagDown1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMinY())\n }\n intersects(p0, p1) {\n const segEnv = new Envelope(p0, p1)\n if (!this._rectEnv.intersects(segEnv)) return false\n if (this._rectEnv.intersects(p0)) return true\n if (this._rectEnv.intersects(p1)) return true\n if (p0.compareTo(p1) > 0) {\n const tmp = p0\n p0 = p1\n p1 = tmp\n }\n let isSegUpwards = false\n if (p1.y > p0.y) isSegUpwards = true\n if (isSegUpwards) \n this._li.computeIntersection(p0, p1, this._diagDown0, this._diagDown1)\n else \n this._li.computeIntersection(p0, p1, this._diagUp0, this._diagUp1)\n \n if (this._li.hasIntersection()) return true\n return false\n }\n}\n","import Coordinate from '../../geom/Coordinate'\nimport Polygon from '../../geom/Polygon'\nimport RectangleLineIntersector from '../../algorithm/RectangleLineIntersector'\nimport ShortCircuitedGeometryVisitor from '../../geom/util/ShortCircuitedGeometryVisitor'\nimport SimplePointInAreaLocator from '../../algorithm/locate/SimplePointInAreaLocator'\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter'\nexport default class RectangleIntersects {\n constructor() {\n RectangleIntersects.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectangle = null\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectangle = rectangle\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n static intersects(rectangle, b) {\n const rp = new RectangleIntersects(rectangle)\n return rp.intersects(b)\n }\n intersects(geom) {\n if (!this._rectEnv.intersects(geom.getEnvelopeInternal())) return false\n const visitor = new EnvelopeIntersectsVisitor(this._rectEnv)\n visitor.applyTo(geom)\n if (visitor.intersects()) return true\n const ecpVisitor = new GeometryContainsPointVisitor(this._rectangle)\n ecpVisitor.applyTo(geom)\n if (ecpVisitor.containsPoint()) return true\n const riVisitor = new RectangleIntersectsSegmentVisitor(this._rectangle)\n riVisitor.applyTo(geom)\n if (riVisitor.intersects()) return true\n return false\n }\n}\nclass EnvelopeIntersectsVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n EnvelopeIntersectsVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n this._intersects = false\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n }\n isDone() {\n return this._intersects === true\n }\n visit(element) {\n const elementEnv = element.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) \n return null\n \n if (this._rectEnv.contains(elementEnv)) {\n this._intersects = true\n return null\n }\n if (elementEnv.getMinX() >= this._rectEnv.getMinX() && elementEnv.getMaxX() <= this._rectEnv.getMaxX()) {\n this._intersects = true\n return null\n }\n if (elementEnv.getMinY() >= this._rectEnv.getMinY() && elementEnv.getMaxY() <= this._rectEnv.getMaxY()) {\n this._intersects = true\n return null\n }\n }\n intersects() {\n return this._intersects\n }\n}\nclass GeometryContainsPointVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n GeometryContainsPointVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectSeq = null\n this._rectEnv = null\n this._containsPoint = false\n const rectangle = arguments[0]\n this._rectSeq = rectangle.getExteriorRing().getCoordinateSequence()\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n isDone() {\n return this._containsPoint === true\n }\n visit(geom) {\n if (!(geom instanceof Polygon)) return null\n const elementEnv = geom.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) return null\n const rectPt = new Coordinate()\n for (let i = 0; i < 4; i++) {\n this._rectSeq.getCoordinate(i, rectPt)\n if (!elementEnv.contains(rectPt)) continue\n if (SimplePointInAreaLocator.containsPointInPolygon(rectPt, geom)) {\n this._containsPoint = true\n return null\n }\n }\n }\n containsPoint() {\n return this._containsPoint\n }\n}\nclass RectangleIntersectsSegmentVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n RectangleIntersectsSegmentVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n this._rectIntersector = null\n this._hasIntersection = false\n this._p0 = new Coordinate()\n this._p1 = new Coordinate()\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\n this._rectIntersector = new RectangleLineIntersector(this._rectEnv)\n }\n intersects() {\n return this._hasIntersection\n }\n isDone() {\n return this._hasIntersection === true\n }\n visit(geom) {\n const elementEnv = geom.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) return null\n const lines = LinearComponentExtracter.getLines(geom)\n this.checkIntersectionWithLineStrings(lines)\n }\n checkIntersectionWithLineStrings(lines) {\n for (let i = lines.iterator(); i.hasNext(); ) {\n const testLine = i.next()\n this.checkIntersectionWithSegments(testLine)\n if (this._hasIntersection) return null\n }\n }\n checkIntersectionWithSegments(testLine) {\n const seq1 = testLine.getCoordinateSequence()\n for (let j = 1; j < seq1.size(); j++) {\n seq1.getCoordinate(j - 1, this._p0)\n seq1.getCoordinate(j, this._p1)\n if (this._rectIntersector.intersects(this._p0, this._p1)) {\n this._hasIntersection = true\n return null\n }\n }\n }\n}\n","import RelateComputer from './RelateComputer'\nimport GeometryGraphOperation from '../GeometryGraphOperation'\nimport RectangleContains from '../predicate/RectangleContains'\nimport RectangleIntersects from '../predicate/RectangleIntersects'\nexport default class RelateOp extends GeometryGraphOperation {\n constructor() {\n super()\n RelateOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._relate = null\n if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1)\n this._relate = new RelateComputer(this._arg)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2]\n GeometryGraphOperation.constructor_.call(this, g0, g1, boundaryNodeRule)\n this._relate = new RelateComputer(this._arg)\n }\n }\n static covers(g1, g2) {\n if (g2.getDimension() === 2 && g1.getDimension() < 2) \n return false\n \n if (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) \n return false\n \n if (!g1.getEnvelopeInternal().covers(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return true\n \n return new RelateOp(g1, g2).getIntersectionMatrix().isCovers()\n }\n static intersects(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return RectangleIntersects.intersects(g1, g2)\n \n if (g2.isRectangle()) \n return RectangleIntersects.intersects(g2, g1)\n \n if (g1.isGeometryCollection() || g2.isGeometryCollection()) {\n const r = false\n for (let i = 0; i < g1.getNumGeometries(); i++) \n for (let j = 0; j < g2.getNumGeometries(); j++) \n if (g1.getGeometryN(i).intersects(g2.getGeometryN(j))) \n return true\n \n \n \n return false\n }\n return new RelateOp(g1, g2).getIntersectionMatrix().isIntersects()\n }\n static touches(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isTouches(g1.getDimension(), g2.getDimension())\n }\n static equalsTopo(g1, g2) {\n if (!g1.getEnvelopeInternal().equals(g2.getEnvelopeInternal())) return false\n return RelateOp.relate(g1, g2).isEquals(g1.getDimension(), g2.getDimension())\n }\n static relate() {\n if (arguments.length === 2) {\n const a = arguments[0], b = arguments[1]\n const relOp = new RelateOp(a, b)\n const im = relOp.getIntersectionMatrix()\n return im\n } else if (arguments.length === 3) {\n const a = arguments[0], b = arguments[1], boundaryNodeRule = arguments[2]\n const relOp = new RelateOp(a, b, boundaryNodeRule)\n const im = relOp.getIntersectionMatrix()\n return im\n }\n }\n static overlaps(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isOverlaps(g1.getDimension(), g2.getDimension())\n }\n static crosses(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isCrosses(g1.getDimension(), g2.getDimension())\n }\n static contains(g1, g2) {\n if (g2.getDimension() === 2 && g1.getDimension() < 2) \n return false\n \n if (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) \n return false\n \n if (!g1.getEnvelopeInternal().contains(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return RectangleContains.contains(g1, g2)\n \n return new RelateOp(g1, g2).getIntersectionMatrix().isContains()\n }\n getIntersectionMatrix() {\n return this._relate.computeIM()\n }\n}\n","import PointLocator from '../../algorithm/PointLocator'\nimport Location from '../../geom/Location'\nimport TreeSet from '../../../../../java/util/TreeSet'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nexport default class PointGeometryUnion {\n constructor() {\n PointGeometryUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pointGeom = null\n this._otherGeom = null\n this._geomFact = null\n const pointGeom = arguments[0], otherGeom = arguments[1]\n this._pointGeom = pointGeom\n this._otherGeom = otherGeom\n this._geomFact = otherGeom.getFactory()\n }\n static union(pointGeom, otherGeom) {\n const unioner = new PointGeometryUnion(pointGeom, otherGeom)\n return unioner.union()\n }\n union() {\n const locater = new PointLocator()\n const exteriorCoords = new TreeSet()\n for (let i = 0; i < this._pointGeom.getNumGeometries(); i++) {\n const point = this._pointGeom.getGeometryN(i)\n const coord = point.getCoordinate()\n const loc = locater.locate(coord, this._otherGeom)\n if (loc === Location.EXTERIOR) exteriorCoords.add(coord)\n }\n if (exteriorCoords.size() === 0) return this._otherGeom\n let ptComp = null\n const coords = CoordinateArrays.toCoordinateArray(exteriorCoords)\n if (coords.length === 1) \n ptComp = this._geomFact.createPoint(coords[0])\n else \n ptComp = this._geomFact.createMultiPointFromCoords(coords)\n \n return GeometryCombiner.combine(ptComp, this._otherGeom)\n }\n}\n","import LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport Point from '../../geom/Point'\nimport Polygon from '../../geom/Polygon'\nimport GeometryCollection from '../../geom/GeometryCollection'\nimport Dimension from '../../geom/Dimension'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GeometryFilter from '../../geom/GeometryFilter'\nimport Assert from '../../util/Assert'\nexport default class InputExtracter {\n constructor() {\n InputExtracter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._polygons = new ArrayList()\n this._lines = new ArrayList()\n this._points = new ArrayList()\n this._dimension = Dimension.FALSE\n }\n static extract() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n const extracter = new InputExtracter()\n extracter.add(geoms)\n return extracter\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const extracter = new InputExtracter()\n extracter.add(geom)\n return extracter\n }\n }\n getFactory() {\n return this._geomFactory\n }\n recordDimension(dim) {\n if (dim > this._dimension) this._dimension = dim\n }\n getDimension() {\n return this._dimension\n }\n filter(geom) {\n this.recordDimension(geom.getDimension())\n if (geom instanceof GeometryCollection) \n return null\n \n if (geom.isEmpty()) return null\n if (geom instanceof Polygon) {\n this._polygons.add(geom)\n return null\n } else if (geom instanceof LineString) {\n this._lines.add(geom)\n return null\n } else if (geom instanceof Point) {\n this._points.add(geom)\n return null\n }\n Assert.shouldNeverReachHere('Unhandled geometry type: ' + geom.getGeometryType())\n }\n getExtract(dim) {\n switch (dim) {\n case 0:\n return this._points\n case 1:\n return this._lines\n case 2:\n return this._polygons\n }\n Assert.shouldNeverReachHere('Invalid dimension: ' + dim)\n return null\n }\n isEmpty() {\n return this._polygons.isEmpty() && this._lines.isEmpty() && this._points.isEmpty()\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n for (const geom of geoms) \n this.add(geom)\n \n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (this._geomFactory === null) this._geomFactory = geom.getFactory()\n geom.apply(this)\n }\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import HashSet from '../../../../../java/util/HashSet'\nimport TopologyException from '../../geom/TopologyException'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner'\nimport LineSegment from '../../geom/LineSegment'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport CoordinateSequenceFilter from '../../geom/CoordinateSequenceFilter'\nexport default class OverlapUnion {\n constructor() {\n OverlapUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._g0 = null\n this._g1 = null\n this._isUnionSafe = null\n const g0 = arguments[0], g1 = arguments[1]\n this._g0 = g0\n this._g1 = g1\n this._geomFactory = g0.getFactory()\n }\n static containsProperly() {\n if (arguments.length === 2) {\n const env = arguments[0], p = arguments[1]\n if (env.isNull()) return false\n return p.getX() > env.getMinX() && p.getX() < env.getMaxX() && p.getY() > env.getMinY() && p.getY() < env.getMaxY()\n } else if (arguments.length === 3) {\n const env = arguments[0], p0 = arguments[1], p1 = arguments[2]\n return OverlapUnion.containsProperly(env, p0) && OverlapUnion.containsProperly(env, p1)\n }\n }\n static union(g0, g1) {\n const union = new OverlapUnion(g0, g1)\n return union.union()\n }\n static intersects(env, p0, p1) {\n return env.intersects(p0) || env.intersects(p1)\n }\n static overlapEnvelope(g0, g1) {\n const g0Env = g0.getEnvelopeInternal()\n const g1Env = g1.getEnvelopeInternal()\n const overlapEnv = g0Env.intersection(g1Env)\n return overlapEnv\n }\n static extractBorderSegments(geom, env, segs) {\n geom.apply(new (class {\n get interfaces_() {\n return [CoordinateSequenceFilter]\n }\n filter(seq, i) {\n if (i <= 0) return null\n const p0 = seq.getCoordinate(i - 1)\n const p1 = seq.getCoordinate(i)\n const isBorder = OverlapUnion.intersects(env, p0, p1) && !OverlapUnion.containsProperly(env, p0, p1)\n if (isBorder) {\n const seg = new LineSegment(p0, p1)\n segs.add(seg)\n }\n }\n isDone() {\n return false\n }\n isGeometryChanged() {\n return false\n }\n })())\n }\n static unionBuffer(g0, g1) {\n const factory = g0.getFactory()\n const gColl = factory.createGeometryCollection([g0, g1])\n const union = gColl.buffer(0.0)\n return union\n }\n isBorderSegmentsSame(result, env) {\n const segsBefore = this.extractBorderSegments(this._g0, this._g1, env)\n const segsAfter = new ArrayList()\n OverlapUnion.extractBorderSegments(result, env, segsAfter)\n return this.isEqual(segsBefore, segsAfter)\n }\n extractByEnvelope(env, geom, disjointGeoms) {\n const intersectingGeoms = new ArrayList()\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const elem = geom.getGeometryN(i)\n if (elem.getEnvelopeInternal().intersects(env)) {\n intersectingGeoms.add(elem)\n } else {\n const copy = elem.copy()\n disjointGeoms.add(copy)\n }\n }\n return this._geomFactory.buildGeometry(intersectingGeoms)\n }\n isEqual(segs0, segs1) {\n if (segs0.size() !== segs1.size()) return false\n const segIndex = new HashSet(segs0)\n for (const seg of segs1) \n if (!segIndex.contains(seg)) \n return false\n \n \n return true\n }\n union() {\n const overlapEnv = OverlapUnion.overlapEnvelope(this._g0, this._g1)\n if (overlapEnv.isNull()) {\n const g0Copy = this._g0.copy()\n const g1Copy = this._g1.copy()\n return GeometryCombiner.combine(g0Copy, g1Copy)\n }\n const disjointPolys = new ArrayList()\n const g0Overlap = this.extractByEnvelope(overlapEnv, this._g0, disjointPolys)\n const g1Overlap = this.extractByEnvelope(overlapEnv, this._g1, disjointPolys)\n const unionGeom = this.unionFull(g0Overlap, g1Overlap)\n let result = null\n this._isUnionSafe = this.isBorderSegmentsSame(unionGeom, overlapEnv)\n if (!this._isUnionSafe) \n result = this.unionFull(this._g0, this._g1)\n else \n result = this.combine(unionGeom, disjointPolys)\n \n return result\n }\n combine(unionGeom, disjointPolys) {\n if (disjointPolys.size() <= 0) return unionGeom\n disjointPolys.add(unionGeom)\n const result = GeometryCombiner.combine(disjointPolys)\n return result\n }\n unionFull(geom0, geom1) {\n try {\n return geom0.union(geom1)\n } catch (ex) {\n if (ex instanceof TopologyException) \n return OverlapUnion.unionBuffer(geom0, geom1)\n else throw ex\n } finally {}\n }\n extractBorderSegments(geom0, geom1, env) {\n const segs = new ArrayList()\n OverlapUnion.extractBorderSegments(geom0, env, segs)\n if (geom1 !== null) OverlapUnion.extractBorderSegments(geom1, env, segs)\n return segs\n }\n isUnionOptimized() {\n return this._isUnionSafe\n }\n}\n","import PolygonExtracter from '../../geom/util/PolygonExtracter'\nimport OverlapUnion from './OverlapUnion'\nimport STRtree from '../../index/strtree/STRtree'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Polygonal from '../../geom/Polygonal'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport List from '../../../../../java/util/List'\nexport default class CascadedPolygonUnion {\n constructor() {\n CascadedPolygonUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputPolys = null\n this._geomFactory = null\n const polys = arguments[0]\n this._inputPolys = polys\n if (this._inputPolys === null) this._inputPolys = new ArrayList()\n }\n static restrictToPolygons(g) {\n if (hasInterface(g, Polygonal)) \n return g\n \n const polygons = PolygonExtracter.getPolygons(g)\n if (polygons.size() === 1) return polygons.get(0)\n return g.getFactory().createMultiPolygon(GeometryFactory.toPolygonArray(polygons))\n }\n static getGeometry(list, index) {\n if (index >= list.size()) return null\n return list.get(index)\n }\n static union(polys) {\n const op = new CascadedPolygonUnion(polys)\n return op.union()\n }\n reduceToGeometries(geomTree) {\n const geoms = new ArrayList()\n for (let i = geomTree.iterator(); i.hasNext(); ) {\n const o = i.next()\n let geom = null\n if (hasInterface(o, List)) \n geom = this.unionTree(o)\n else if (o instanceof Geometry) \n geom = o\n \n geoms.add(geom)\n }\n return geoms\n }\n union() {\n if (this._inputPolys === null) throw new IllegalStateException('union() method cannot be called twice')\n if (this._inputPolys.isEmpty()) return null\n this._geomFactory = this._inputPolys.iterator().next().getFactory()\n const index = new STRtree(CascadedPolygonUnion.STRTREE_NODE_CAPACITY)\n for (let i = this._inputPolys.iterator(); i.hasNext(); ) {\n const item = i.next()\n index.insert(item.getEnvelopeInternal(), item)\n }\n this._inputPolys = null\n const itemTree = index.itemsTree()\n const unionAll = this.unionTree(itemTree)\n return unionAll\n }\n binaryUnion() {\n if (arguments.length === 1) {\n const geoms = arguments[0]\n return this.binaryUnion(geoms, 0, geoms.size())\n } else if (arguments.length === 3) {\n const geoms = arguments[0], start = arguments[1], end = arguments[2]\n if (end - start <= 1) {\n const g0 = CascadedPolygonUnion.getGeometry(geoms, start)\n return this.unionSafe(g0, null)\n } else if (end - start === 2) {\n return this.unionSafe(CascadedPolygonUnion.getGeometry(geoms, start), CascadedPolygonUnion.getGeometry(geoms, start + 1))\n } else {\n const mid = Math.trunc((end + start) / 2)\n const g0 = this.binaryUnion(geoms, start, mid)\n const g1 = this.binaryUnion(geoms, mid, end)\n return this.unionSafe(g0, g1)\n }\n }\n }\n repeatedUnion(geoms) {\n let union = null\n for (let i = geoms.iterator(); i.hasNext(); ) {\n const g = i.next()\n if (union === null) union = g.copy(); else union = union.union(g)\n }\n return union\n }\n unionSafe(g0, g1) {\n if (g0 === null && g1 === null) return null\n if (g0 === null) return g1.copy()\n if (g1 === null) return g0.copy()\n return this.unionActual(g0, g1)\n }\n unionActual(g0, g1) {\n const union = OverlapUnion.union(g0, g1)\n \n return CascadedPolygonUnion.restrictToPolygons(union)\n }\n unionTree(geomTree) {\n const geoms = this.reduceToGeometries(geomTree)\n const union = this.binaryUnion(geoms)\n return union\n }\n bufferUnion() {\n if (arguments.length === 1) {\n const geoms = arguments[0]\n const factory = geoms.get(0).getFactory()\n const gColl = factory.buildGeometry(geoms)\n const unionAll = gColl.buffer(0.0)\n return unionAll\n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n const factory = g0.getFactory()\n const gColl = factory.createGeometryCollection([g0, g1])\n const unionAll = gColl.buffer(0.0)\n return unionAll\n }\n }\n}\nCascadedPolygonUnion.STRTREE_NODE_CAPACITY = 4\n","import Geometry from '../../geom/Geometry'\nimport PointGeometryUnion from './PointGeometryUnion'\nimport hasInterface from '../../../../../hasInterface'\nimport Collection from '../../../../../java/util/Collection'\nimport SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp'\nimport InputExtracter from './InputExtracter'\nimport OverlayOp from '../overlay/OverlayOp'\nimport CascadedPolygonUnion from './CascadedPolygonUnion'\nexport default class UnaryUnionOp {\n constructor() {\n UnaryUnionOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFact = null\n this._extracter = null\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n this.extract(geoms)\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this.extract(geom)\n }\n } else if (arguments.length === 2) {\n const geoms = arguments[0], geomFact = arguments[1]\n this._geomFact = geomFact\n this.extract(geoms)\n }\n }\n static union() {\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n const op = new UnaryUnionOp(geoms)\n return op.union()\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const op = new UnaryUnionOp(geom)\n return op.union()\n }\n } else if (arguments.length === 2) {\n const geoms = arguments[0], geomFact = arguments[1]\n const op = new UnaryUnionOp(geoms, geomFact)\n return op.union()\n }\n }\n unionNoOpt(g0) {\n const empty = this._geomFact.createPoint()\n return SnapIfNeededOverlayOp.overlayOp(g0, empty, OverlayOp.UNION)\n }\n unionWithNull(g0, g1) {\n if (g0 === null && g1 === null) return null\n if (g1 === null) return g0\n if (g0 === null) return g1\n return g0.union(g1)\n }\n extract() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n this._extracter = InputExtracter.extract(geoms)\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._extracter = InputExtracter.extract(geom)\n }\n }\n union() {\n if (this._geomFact === null) this._geomFact = this._extracter.getFactory()\n if (this._geomFact === null) \n return null\n \n if (this._extracter.isEmpty()) \n return this._geomFact.createEmpty(this._extracter.getDimension())\n \n const points = this._extracter.getExtract(0)\n const lines = this._extracter.getExtract(1)\n const polygons = this._extracter.getExtract(2)\n let unionPoints = null\n if (points.size() > 0) {\n const ptGeom = this._geomFact.buildGeometry(points)\n unionPoints = this.unionNoOpt(ptGeom)\n }\n let unionLines = null\n if (lines.size() > 0) {\n const lineGeom = this._geomFact.buildGeometry(lines)\n unionLines = this.unionNoOpt(lineGeom)\n }\n let unionPolygons = null\n if (polygons.size() > 0) \n unionPolygons = CascadedPolygonUnion.union(polygons)\n \n const unionLA = this.unionWithNull(unionLines, unionPolygons)\n let union = null\n if (unionPoints === null) union = unionLA; else if (unionLA === null) union = unionPoints; else union = PointGeometryUnion.union(unionPoints, unionLA)\n if (union === null) return this._geomFact.createGeometryCollection()\n return union\n }\n}\n","import LineString from '../geom/LineString'\nimport CoordinateList from '../geom/CoordinateList'\nimport Geometry from '../geom/Geometry'\nimport Coordinate from '../geom/Coordinate'\nimport GeometryEditor from '../geom/util/GeometryEditor'\nimport LinearRing from '../geom/LinearRing'\nexport default class PrecisionReducerCoordinateOperation extends GeometryEditor.CoordinateOperation {\n constructor() {\n super()\n PrecisionReducerCoordinateOperation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._targetPM = null\n this._removeCollapsed = true\n const targetPM = arguments[0], removeCollapsed = arguments[1]\n this._targetPM = targetPM\n this._removeCollapsed = removeCollapsed\n }\n edit() {\n if (arguments.length === 2 && (arguments[1] instanceof Geometry && arguments[0] instanceof Array)) {\n const coordinates = arguments[0], geom = arguments[1]\n if (coordinates.length === 0) return null\n const reducedCoords = new Array(coordinates.length).fill(null)\n for (let i = 0; i < coordinates.length; i++) {\n const coord = new Coordinate(coordinates[i])\n this._targetPM.makePrecise(coord)\n reducedCoords[i] = coord\n }\n const noRepeatedCoordList = new CoordinateList(reducedCoords, false)\n const noRepeatedCoords = noRepeatedCoordList.toCoordinateArray()\n let minLength = 0\n if (geom instanceof LineString) minLength = 2\n if (geom instanceof LinearRing) minLength = 4\n let collapsedCoords = reducedCoords\n if (this._removeCollapsed) collapsedCoords = null\n if (noRepeatedCoords.length < minLength) \n return collapsedCoords\n \n return noRepeatedCoords\n } else {\n return super.edit.apply(this, arguments)\n }\n }\n}\n","import hasInterface from '../../../../hasInterface'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport IsValidOp from '../operation/valid/IsValidOp'\nimport GeometryEditor from '../geom/util/GeometryEditor'\nimport BufferOp from '../operation/buffer/BufferOp'\nimport Polygonal from '../geom/Polygonal'\nimport PrecisionReducerCoordinateOperation from './PrecisionReducerCoordinateOperation'\nexport default class GeometryPrecisionReducer {\n constructor() {\n GeometryPrecisionReducer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._targetPM = null\n this._removeCollapsed = true\n this._changePrecisionModel = false\n this._isPointwise = false\n const pm = arguments[0]\n this._targetPM = pm\n }\n static reduce(g, precModel) {\n const reducer = new GeometryPrecisionReducer(precModel)\n return reducer.reduce(g)\n }\n static reducePointwise(g, precModel) {\n const reducer = new GeometryPrecisionReducer(precModel)\n reducer.setPointwise(true)\n return reducer.reduce(g)\n }\n fixPolygonalTopology(geom) {\n let geomToBuffer = geom\n if (!this._changePrecisionModel) \n geomToBuffer = this.changePM(geom, this._targetPM)\n \n const bufGeom = BufferOp.bufferOp(geomToBuffer, 0)\n return bufGeom\n }\n reducePointwise(geom) {\n let geomEdit = null\n if (this._changePrecisionModel) {\n const newFactory = this.createFactory(geom.getFactory(), this._targetPM)\n geomEdit = new GeometryEditor(newFactory)\n } else {\n geomEdit = new GeometryEditor()\n }\n let finalRemoveCollapsed = this._removeCollapsed\n if (geom.getDimension() >= 2) finalRemoveCollapsed = true\n const reduceGeom = geomEdit.edit(geom, new PrecisionReducerCoordinateOperation(this._targetPM, finalRemoveCollapsed))\n return reduceGeom\n }\n changePM(geom, newPM) {\n const geomEditor = this.createEditor(geom.getFactory(), newPM)\n return geomEditor.edit(geom, new GeometryEditor.NoOpGeometryOperation())\n }\n setRemoveCollapsedComponents(removeCollapsed) {\n this._removeCollapsed = removeCollapsed\n }\n createFactory(inputFactory, pm) {\n const newFactory = new GeometryFactory(pm, inputFactory.getSRID(), inputFactory.getCoordinateSequenceFactory())\n return newFactory\n }\n setChangePrecisionModel(changePrecisionModel) {\n this._changePrecisionModel = changePrecisionModel\n }\n reduce(geom) {\n const reducePW = this.reducePointwise(geom)\n if (this._isPointwise) return reducePW\n if (!hasInterface(reducePW, Polygonal)) return reducePW\n if (IsValidOp.isValid(reducePW)) return reducePW\n return this.fixPolygonalTopology(reducePW)\n }\n setPointwise(isPointwise) {\n this._isPointwise = isPointwise\n }\n createEditor(geomFactory, newPM) {\n if (geomFactory.getPrecisionModel() === newPM) return new GeometryEditor()\n const newFactory = this.createFactory(geomFactory, newPM)\n const geomEdit = new GeometryEditor(newFactory)\n return geomEdit\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport Coordinate from '../geom/Coordinate'\nimport LineSegment from '../geom/LineSegment'\nexport default class DouglasPeuckerLineSimplifier {\n constructor() {\n DouglasPeuckerLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._usePt = null\n this._distanceTolerance = null\n this._seg = new LineSegment()\n const pts = arguments[0]\n this._pts = pts\n }\n static simplify(pts, distanceTolerance) {\n const simp = new DouglasPeuckerLineSimplifier(pts)\n simp.setDistanceTolerance(distanceTolerance)\n return simp.simplify()\n }\n simplifySection(i, j) {\n if (i + 1 === j) \n return null\n \n this._seg.p0 = this._pts[i]\n this._seg.p1 = this._pts[j]\n let maxDistance = -1.0\n let maxIndex = i\n for (let k = i + 1; k < j; k++) {\n const distance = this._seg.distance(this._pts[k])\n if (distance > maxDistance) {\n maxDistance = distance\n maxIndex = k\n }\n }\n if (maxDistance <= this._distanceTolerance) {\n for (let k = i + 1; k < j; k++) \n this._usePt[k] = false\n \n } else {\n this.simplifySection(i, maxIndex)\n this.simplifySection(maxIndex, j)\n }\n }\n setDistanceTolerance(distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\n simplify() {\n this._usePt = new Array(this._pts.length).fill(null)\n for (let i = 0; i < this._pts.length; i++) \n this._usePt[i] = true\n \n this.simplifySection(0, this._pts.length - 1)\n const coordList = new CoordinateList()\n for (let i = 0; i < this._pts.length; i++) \n if (this._usePt[i]) coordList.add(new Coordinate(this._pts[i]))\n \n return coordList.toCoordinateArray()\n }\n}\n","import DouglasPeuckerLineSimplifier from './DouglasPeuckerLineSimplifier'\nimport GeometryTransformer from '../geom/util/GeometryTransformer'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Polygon from '../geom/Polygon'\nimport LinearRing from '../geom/LinearRing'\nimport MultiPolygon from '../geom/MultiPolygon'\nexport default class DouglasPeuckerSimplifier {\n constructor() {\n DouglasPeuckerSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distanceTolerance = null\n this._isEnsureValidTopology = true\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n }\n static simplify(geom, distanceTolerance) {\n const tss = new DouglasPeuckerSimplifier(geom)\n tss.setDistanceTolerance(distanceTolerance)\n return tss.getResultGeometry()\n }\n setEnsureValid(isEnsureValidTopology) {\n this._isEnsureValidTopology = isEnsureValidTopology\n }\n getResultGeometry() {\n if (this._inputGeom.isEmpty()) return this._inputGeom.copy()\n return new DPTransformer(this._isEnsureValidTopology, this._distanceTolerance).transform(this._inputGeom)\n }\n setDistanceTolerance(distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._distanceTolerance = distanceTolerance\n }\n}\nclass DPTransformer extends GeometryTransformer {\n constructor() {\n super()\n DPTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isEnsureValidTopology = true\n this._distanceTolerance = null\n const isEnsureValidTopology = arguments[0], distanceTolerance = arguments[1]\n this._isEnsureValidTopology = isEnsureValidTopology\n this._distanceTolerance = distanceTolerance\n }\n transformPolygon(geom, parent) {\n if (geom.isEmpty()) return null\n const rawGeom = super.transformPolygon.call(this, geom, parent)\n if (parent instanceof MultiPolygon) \n return rawGeom\n \n return this.createValidArea(rawGeom)\n }\n createValidArea(rawAreaGeom) {\n if (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0)\n return rawAreaGeom\n }\n transformCoordinates(coords, parent) {\n const inputPts = coords.toCoordinateArray()\n let newPts = null\n if (inputPts.length === 0) \n newPts = new Array(0).fill(null)\n else \n newPts = DouglasPeuckerLineSimplifier.simplify(inputPts, this._distanceTolerance)\n \n return this._factory.getCoordinateSequenceFactory().create(newPts)\n }\n transformMultiPolygon(geom, parent) {\n const rawGeom = super.transformMultiPolygon.call(this, geom, parent)\n return this.createValidArea(rawGeom)\n }\n transformLinearRing(geom, parent) {\n const removeDegenerateRings = parent instanceof Polygon\n const simpResult = super.transformLinearRing.call(this, geom, parent)\n if (removeDegenerateRings && !(simpResult instanceof LinearRing)) return null\n \n return simpResult\n }\n}\nDouglasPeuckerSimplifier.DPTransformer = DPTransformer\n","import LineSegment from '../geom/LineSegment'\nexport default class TaggedLineSegment extends LineSegment {\n constructor() {\n super()\n TaggedLineSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parent = null\n this._index = null\n if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n TaggedLineSegment.constructor_.call(this, p0, p1, null, -1)\n } else if (arguments.length === 4) {\n const p0 = arguments[0], p1 = arguments[1], parent = arguments[2], index = arguments[3]\n LineSegment.constructor_.call(this, p0, p1)\n this._parent = parent\n this._index = index\n }\n }\n getIndex() {\n return this._index\n }\n getParent() {\n return this._parent\n }\n}\n","import TaggedLineSegment from './TaggedLineSegment'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class TaggedLineString {\n constructor() {\n TaggedLineString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentLine = null\n this._segs = null\n this._resultSegs = new ArrayList()\n this._minimumSize = null\n if (arguments.length === 1) {\n const parentLine = arguments[0]\n TaggedLineString.constructor_.call(this, parentLine, 2)\n } else if (arguments.length === 2) {\n const parentLine = arguments[0], minimumSize = arguments[1]\n this._parentLine = parentLine\n this._minimumSize = minimumSize\n this.init()\n }\n }\n static extractCoordinates(segs) {\n const pts = new Array(segs.size() + 1).fill(null)\n let seg = null\n for (let i = 0; i < segs.size(); i++) {\n seg = segs.get(i)\n pts[i] = seg.p0\n }\n pts[pts.length - 1] = seg.p1\n return pts\n }\n addToResult(seg) {\n this._resultSegs.add(seg)\n }\n asLineString() {\n return this._parentLine.getFactory().createLineString(TaggedLineString.extractCoordinates(this._resultSegs))\n }\n getResultSize() {\n const resultSegsSize = this._resultSegs.size()\n return resultSegsSize === 0 ? 0 : resultSegsSize + 1\n }\n getParent() {\n return this._parentLine\n }\n getSegment(i) {\n return this._segs[i]\n }\n getParentCoordinates() {\n return this._parentLine.getCoordinates()\n }\n getMinimumSize() {\n return this._minimumSize\n }\n asLinearRing() {\n return this._parentLine.getFactory().createLinearRing(TaggedLineString.extractCoordinates(this._resultSegs))\n }\n getSegments() {\n return this._segs\n }\n init() {\n const pts = this._parentLine.getCoordinates()\n this._segs = new Array(pts.length - 1).fill(null)\n for (let i = 0; i < pts.length - 1; i++) {\n const seg = new TaggedLineSegment(pts[i], pts[i + 1], this._parentLine, i)\n this._segs[i] = seg\n }\n }\n getResultCoordinates() {\n return TaggedLineString.extractCoordinates(this._resultSegs)\n }\n}\n","import Quadtree from '../index/quadtree/Quadtree'\nimport ItemVisitor from '../index/ItemVisitor'\nimport LineSegment from '../geom/LineSegment'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Envelope from '../geom/Envelope'\nimport TaggedLineString from './TaggedLineString'\nexport default class LineSegmentIndex {\n constructor() {\n LineSegmentIndex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._index = new Quadtree()\n }\n remove(seg) {\n this._index.remove(new Envelope(seg.p0, seg.p1), seg)\n }\n add() {\n if (arguments[0] instanceof TaggedLineString) {\n const line = arguments[0]\n const segs = line.getSegments()\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n this.add(seg)\n }\n } else if (arguments[0] instanceof LineSegment) {\n const seg = arguments[0]\n this._index.insert(new Envelope(seg.p0, seg.p1), seg)\n }\n }\n query(querySeg) {\n const env = new Envelope(querySeg.p0, querySeg.p1)\n const visitor = new LineSegmentVisitor(querySeg)\n this._index.query(env, visitor)\n const itemsFound = visitor.getItems()\n return itemsFound\n }\n}\nclass LineSegmentVisitor {\n constructor() {\n LineSegmentVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._querySeg = null\n this._items = new ArrayList()\n const querySeg = arguments[0]\n this._querySeg = querySeg\n }\n visitItem(item) {\n const seg = item\n if (Envelope.intersects(seg.p0, seg.p1, this._querySeg.p0, this._querySeg.p1)) this._items.add(item)\n }\n getItems() {\n return this._items\n }\n get interfaces_() {\n return [ItemVisitor]\n }\n}\n","import LineSegment from '../geom/LineSegment'\nimport LineSegmentIndex from './LineSegmentIndex'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nexport default class TaggedLineStringSimplifier {\n constructor() {\n TaggedLineStringSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._inputIndex = new LineSegmentIndex()\n this._outputIndex = new LineSegmentIndex()\n this._line = null\n this._linePts = null\n this._distanceTolerance = 0.0\n const inputIndex = arguments[0], outputIndex = arguments[1]\n this._inputIndex = inputIndex\n this._outputIndex = outputIndex\n }\n static isInLineSection(line, sectionIndex, seg) {\n if (seg.getParent() !== line.getParent()) return false\n const segIndex = seg.getIndex()\n if (segIndex >= sectionIndex[0] && segIndex < sectionIndex[1]) return true\n return false\n }\n flatten(start, end) {\n const p0 = this._linePts[start]\n const p1 = this._linePts[end]\n const newSeg = new LineSegment(p0, p1)\n this.remove(this._line, start, end)\n this._outputIndex.add(newSeg)\n return newSeg\n }\n hasBadIntersection(parentLine, sectionIndex, candidateSeg) {\n if (this.hasBadOutputIntersection(candidateSeg)) return true\n if (this.hasBadInputIntersection(parentLine, sectionIndex, candidateSeg)) return true\n return false\n }\n setDistanceTolerance(distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\n simplifySection(i, j, depth) {\n depth += 1\n const sectionIndex = new Array(2).fill(null)\n if (i + 1 === j) {\n const newSeg = this._line.getSegment(i)\n this._line.addToResult(newSeg)\n return null\n }\n let isValidToSimplify = true\n if (this._line.getResultSize() < this._line.getMinimumSize()) {\n const worstCaseSize = depth + 1\n if (worstCaseSize < this._line.getMinimumSize()) isValidToSimplify = false\n }\n const distance = new Array(1).fill(null)\n const furthestPtIndex = this.findFurthestPoint(this._linePts, i, j, distance)\n if (distance[0] > this._distanceTolerance) isValidToSimplify = false\n const candidateSeg = new LineSegment()\n candidateSeg.p0 = this._linePts[i]\n candidateSeg.p1 = this._linePts[j]\n sectionIndex[0] = i\n sectionIndex[1] = j\n if (this.hasBadIntersection(this._line, sectionIndex, candidateSeg)) isValidToSimplify = false\n if (isValidToSimplify) {\n const newSeg = this.flatten(i, j)\n this._line.addToResult(newSeg)\n return null\n }\n this.simplifySection(i, furthestPtIndex, depth)\n this.simplifySection(furthestPtIndex, j, depth)\n }\n hasBadOutputIntersection(candidateSeg) {\n const querySegs = this._outputIndex.query(candidateSeg)\n for (let i = querySegs.iterator(); i.hasNext(); ) {\n const querySeg = i.next()\n if (this.hasInteriorIntersection(querySeg, candidateSeg)) \n return true\n \n }\n return false\n }\n findFurthestPoint(pts, i, j, maxDistance) {\n const seg = new LineSegment()\n seg.p0 = pts[i]\n seg.p1 = pts[j]\n let maxDist = -1.0\n let maxIndex = i\n for (let k = i + 1; k < j; k++) {\n const midPt = pts[k]\n const distance = seg.distance(midPt)\n if (distance > maxDist) {\n maxDist = distance\n maxIndex = k\n }\n }\n maxDistance[0] = maxDist\n return maxIndex\n }\n simplify(line) {\n this._line = line\n this._linePts = line.getParentCoordinates()\n this.simplifySection(0, this._linePts.length - 1, 0)\n }\n remove(line, start, end) {\n for (let i = start; i < end; i++) {\n const seg = line.getSegment(i)\n this._inputIndex.remove(seg)\n }\n }\n hasInteriorIntersection(seg0, seg1) {\n this._li.computeIntersection(seg0.p0, seg0.p1, seg1.p0, seg1.p1)\n return this._li.isInteriorIntersection()\n }\n hasBadInputIntersection(parentLine, sectionIndex, candidateSeg) {\n const querySegs = this._inputIndex.query(candidateSeg)\n for (let i = querySegs.iterator(); i.hasNext(); ) {\n const querySeg = i.next()\n if (this.hasInteriorIntersection(querySeg, candidateSeg)) {\n if (TaggedLineStringSimplifier.isInLineSection(parentLine, sectionIndex, querySeg)) continue\n return true\n }\n }\n return false\n }\n}\n","import TaggedLineStringSimplifier from './TaggedLineStringSimplifier'\nimport LineSegmentIndex from './LineSegmentIndex'\nexport default class TaggedLinesSimplifier {\n constructor() {\n TaggedLinesSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputIndex = new LineSegmentIndex()\n this._outputIndex = new LineSegmentIndex()\n this._distanceTolerance = 0.0\n }\n setDistanceTolerance(distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\n simplify(taggedLines) {\n for (let i = taggedLines.iterator(); i.hasNext(); ) \n this._inputIndex.add(i.next())\n \n for (let i = taggedLines.iterator(); i.hasNext(); ) {\n const tlss = new TaggedLineStringSimplifier(this._inputIndex, this._outputIndex)\n tlss.setDistanceTolerance(this._distanceTolerance)\n tlss.simplify(i.next())\n }\n }\n}\n","import LineString from '../geom/LineString'\nimport HashMap from '../../../../java/util/HashMap'\nimport GeometryTransformer from '../geom/util/GeometryTransformer'\nimport TaggedLinesSimplifier from './TaggedLinesSimplifier'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport GeometryComponentFilter from '../geom/GeometryComponentFilter'\nimport TaggedLineString from './TaggedLineString'\nexport default class TopologyPreservingSimplifier {\n constructor() {\n TopologyPreservingSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._lineSimplifier = new TaggedLinesSimplifier()\n this._linestringMap = null\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n }\n static simplify(geom, distanceTolerance) {\n const tss = new TopologyPreservingSimplifier(geom)\n tss.setDistanceTolerance(distanceTolerance)\n return tss.getResultGeometry()\n }\n getResultGeometry() {\n if (this._inputGeom.isEmpty()) return this._inputGeom.copy()\n this._linestringMap = new HashMap()\n this._inputGeom.apply(new LineStringMapBuilderFilter(this))\n this._lineSimplifier.simplify(this._linestringMap.values())\n const result = new LineStringTransformer(this._linestringMap).transform(this._inputGeom)\n return result\n }\n setDistanceTolerance(distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._lineSimplifier.setDistanceTolerance(distanceTolerance)\n }\n}\nclass LineStringTransformer extends GeometryTransformer {\n constructor() {\n super()\n LineStringTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linestringMap = null\n const linestringMap = arguments[0]\n this._linestringMap = linestringMap\n }\n transformCoordinates(coords, parent) {\n if (coords.size() === 0) return null\n if (parent instanceof LineString) {\n const taggedLine = this._linestringMap.get(parent)\n return this.createCoordinateSequence(taggedLine.getResultCoordinates())\n }\n return super.transformCoordinates.call(this, coords, parent)\n }\n}\nclass LineStringMapBuilderFilter {\n constructor() {\n LineStringMapBuilderFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.tps = null\n const tps = arguments[0]\n this.tps = tps\n }\n filter(geom) {\n if (geom instanceof LineString) {\n const line = geom\n if (line.isEmpty()) return null\n const minSize = line.isClosed() ? 4 : 2\n const taggedLine = new TaggedLineString(line, minSize)\n this.tps._linestringMap.put(line, taggedLine)\n }\n }\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n}\nTopologyPreservingSimplifier.LineStringTransformer = LineStringTransformer\nTopologyPreservingSimplifier.LineStringMapBuilderFilter = LineStringMapBuilderFilter\n","import CoordinateList from '../geom/CoordinateList'\nimport Coordinate from '../geom/Coordinate'\nimport Double from '../../../../java/lang/Double'\nimport Triangle from '../geom/Triangle'\nexport default class VWLineSimplifier {\n constructor() {\n VWLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pts = null\n this._tolerance = null\n const pts = arguments[0], distanceTolerance = arguments[1]\n this._pts = pts\n this._tolerance = distanceTolerance * distanceTolerance\n }\n static simplify(pts, distanceTolerance) {\n const simp = new VWLineSimplifier(pts, distanceTolerance)\n return simp.simplify()\n }\n simplifyVertex(vwLine) {\n let curr = vwLine\n let minArea = curr.getArea()\n let minVertex = null\n while (curr !== null) {\n const area = curr.getArea()\n if (area < minArea) {\n minArea = area\n minVertex = curr\n }\n curr = curr._next\n }\n if (minVertex !== null && minArea < this._tolerance) \n minVertex.remove()\n \n if (!vwLine.isLive()) return -1\n return minArea\n }\n simplify() {\n const vwLine = VWVertex.buildLine(this._pts)\n let minArea = this._tolerance\n do \n minArea = this.simplifyVertex(vwLine)\n while (minArea < this._tolerance)\n const simp = vwLine.getCoordinates()\n if (simp.length < 2) \n return [simp[0], new Coordinate(simp[0])]\n \n return simp\n }\n}\nclass VWVertex {\n constructor() {\n VWVertex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n this._prev = null\n this._next = null\n this._area = VWVertex.MAX_AREA\n this._isLive = true\n const pt = arguments[0]\n this._pt = pt\n }\n static buildLine(pts) {\n let first = null\n let prev = null\n for (let i = 0; i < pts.length; i++) {\n const v = new VWVertex(pts[i])\n if (first === null) first = v\n v.setPrev(prev)\n if (prev !== null) {\n prev.setNext(v)\n prev.updateArea()\n }\n prev = v\n }\n return first\n }\n getCoordinates() {\n const coords = new CoordinateList()\n let curr = this\n do {\n coords.add(curr._pt, false)\n curr = curr._next\n } while (curr !== null)\n return coords.toCoordinateArray()\n }\n getArea() {\n return this._area\n }\n updateArea() {\n if (this._prev === null || this._next === null) {\n this._area = VWVertex.MAX_AREA\n return null\n }\n this._area = Math.abs(Triangle.area(this._prev._pt, this._pt, this._next._pt))\n }\n remove() {\n const tmpPrev = this._prev\n const tmpNext = this._next\n let result = null\n if (this._prev !== null) {\n this._prev.setNext(tmpNext)\n this._prev.updateArea()\n result = this._prev\n }\n if (this._next !== null) {\n this._next.setPrev(tmpPrev)\n this._next.updateArea()\n if (result === null) result = this._next\n }\n this._isLive = false\n return result\n }\n isLive() {\n return this._isLive\n }\n setPrev(prev) {\n this._prev = prev\n }\n setNext(next) {\n this._next = next\n }\n}\nVWVertex.MAX_AREA = Double.MAX_VALUE\nVWLineSimplifier.VWVertex = VWVertex\n","import GeometryTransformer from '../geom/util/GeometryTransformer'\nimport VWLineSimplifier from './VWLineSimplifier'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Polygon from '../geom/Polygon'\nimport LinearRing from '../geom/LinearRing'\nimport MultiPolygon from '../geom/MultiPolygon'\nexport default class VWSimplifier {\n constructor() {\n VWSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distanceTolerance = null\n this._isEnsureValidTopology = true\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n }\n static simplify(geom, distanceTolerance) {\n const simp = new VWSimplifier(geom)\n simp.setDistanceTolerance(distanceTolerance)\n return simp.getResultGeometry()\n }\n setEnsureValid(isEnsureValidTopology) {\n this._isEnsureValidTopology = isEnsureValidTopology\n }\n getResultGeometry() {\n if (this._inputGeom.isEmpty()) return this._inputGeom.copy()\n return new VWTransformer(this._isEnsureValidTopology, this._distanceTolerance).transform(this._inputGeom)\n }\n setDistanceTolerance(distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._distanceTolerance = distanceTolerance\n }\n}\nclass VWTransformer extends GeometryTransformer {\n constructor() {\n super()\n VWTransformer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isEnsureValidTopology = true\n this._distanceTolerance = null\n const isEnsureValidTopology = arguments[0], distanceTolerance = arguments[1]\n this._isEnsureValidTopology = isEnsureValidTopology\n this._distanceTolerance = distanceTolerance\n }\n transformPolygon(geom, parent) {\n if (geom.isEmpty()) return null\n const rawGeom = super.transformPolygon.call(this, geom, parent)\n if (parent instanceof MultiPolygon) \n return rawGeom\n \n return this.createValidArea(rawGeom)\n }\n createValidArea(rawAreaGeom) {\n if (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0)\n return rawAreaGeom\n }\n transformCoordinates(coords, parent) {\n const inputPts = coords.toCoordinateArray()\n let newPts = null\n if (inputPts.length === 0) \n newPts = new Array(0).fill(null)\n else \n newPts = VWLineSimplifier.simplify(inputPts, this._distanceTolerance)\n \n return this._factory.getCoordinateSequenceFactory().create(newPts)\n }\n transformMultiPolygon(geom, parent) {\n const rawGeom = super.transformMultiPolygon.call(this, geom, parent)\n return this.createValidArea(rawGeom)\n }\n transformLinearRing(geom, parent) {\n const removeDegenerateRings = parent instanceof Polygon\n const simpResult = super.transformLinearRing.call(this, geom, parent)\n if (removeDegenerateRings && !(simpResult instanceof LinearRing)) return null\n \n return simpResult\n }\n}\nVWSimplifier.VWTransformer = VWTransformer\n","import Coordinate from '../geom/Coordinate'\nexport default class SplitSegment {\n constructor() {\n SplitSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._seg = null\n this._segLen = null\n this._splitPt = null\n this._minimumLen = 0.0\n const seg = arguments[0]\n this._seg = seg\n this._segLen = seg.getLength()\n }\n static pointAlongReverse(seg, segmentLengthFraction) {\n const coord = new Coordinate()\n coord.x = seg.p1.x - segmentLengthFraction * (seg.p1.x - seg.p0.x)\n coord.y = seg.p1.y - segmentLengthFraction * (seg.p1.y - seg.p0.y)\n return coord\n }\n splitAt() {\n if (arguments.length === 1) {\n const pt = arguments[0]\n const minFrac = this._minimumLen / this._segLen\n if (pt.distance(this._seg.p0) < this._minimumLen) {\n this._splitPt = this._seg.pointAlong(minFrac)\n return null\n }\n if (pt.distance(this._seg.p1) < this._minimumLen) {\n this._splitPt = SplitSegment.pointAlongReverse(this._seg, minFrac)\n return null\n }\n this._splitPt = pt\n } else if (arguments.length === 2) {\n const length = arguments[0], endPt = arguments[1]\n const actualLen = this.getConstrainedLength(length)\n const frac = actualLen / this._segLen\n if (endPt.equals2D(this._seg.p0)) this._splitPt = this._seg.pointAlong(frac); else this._splitPt = SplitSegment.pointAlongReverse(this._seg, frac)\n }\n }\n setMinimumLength(minLen) {\n this._minimumLen = minLen\n }\n getConstrainedLength(len) {\n if (len < this._minimumLen) return this._minimumLen\n return len\n }\n getSplitPoint() {\n return this._splitPt\n }\n}\n","export default class ConstraintSplitPointFinder {\n findSplitPoint(seg, encroachPt) {}\n}\n","import SplitSegment from './SplitSegment'\nimport ConstraintSplitPointFinder from './ConstraintSplitPointFinder'\nexport default class NonEncroachingSplitPointFinder {\n static projectedSplitPoint(seg, encroachPt) {\n const lineSeg = seg.getLineSegment()\n const projPt = lineSeg.project(encroachPt)\n return projPt\n }\n findSplitPoint(seg, encroachPt) {\n const lineSeg = seg.getLineSegment()\n const segLen = lineSeg.getLength()\n const midPtLen = segLen / 2\n const splitSeg = new SplitSegment(lineSeg)\n const projPt = NonEncroachingSplitPointFinder.projectedSplitPoint(seg, encroachPt)\n const nonEncroachDiam = projPt.distance(encroachPt) * 2 * 0.8\n let maxSplitLen = nonEncroachDiam\n if (maxSplitLen > midPtLen) \n maxSplitLen = midPtLen\n \n splitSeg.setMinimumLength(maxSplitLen)\n splitSeg.splitAt(projPt)\n return splitSeg.getSplitPoint()\n }\n get interfaces_() {\n return [ConstraintSplitPointFinder]\n }\n}\n","import WKTWriter from '../../io/WKTWriter'\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence'\nimport DD from '../../math/DD'\nimport System from '../../../../../java/lang/System'\nimport Triangle from '../../geom/Triangle'\nexport default class TrianglePredicate {\n static triArea(a, b, c) {\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)\n }\n static isInCircleDDNormalized(a, b, c, p) {\n const adx = DD.valueOf(a.x).selfSubtract(p.x)\n const ady = DD.valueOf(a.y).selfSubtract(p.y)\n const bdx = DD.valueOf(b.x).selfSubtract(p.x)\n const bdy = DD.valueOf(b.y).selfSubtract(p.y)\n const cdx = DD.valueOf(c.x).selfSubtract(p.x)\n const cdy = DD.valueOf(c.y).selfSubtract(p.y)\n const abdet = adx.multiply(bdy).selfSubtract(bdx.multiply(ady))\n const bcdet = bdx.multiply(cdy).selfSubtract(cdx.multiply(bdy))\n const cadet = cdx.multiply(ady).selfSubtract(adx.multiply(cdy))\n const alift = adx.multiply(adx).selfAdd(ady.multiply(ady))\n const blift = bdx.multiply(bdx).selfAdd(bdy.multiply(bdy))\n const clift = cdx.multiply(cdx).selfAdd(cdy.multiply(cdy))\n const sum = alift.selfMultiply(bcdet).selfAdd(blift.selfMultiply(cadet)).selfAdd(clift.selfMultiply(abdet))\n const isInCircle = sum.doubleValue() > 0\n return isInCircle\n }\n static checkRobustInCircle(a, b, c, p) {\n const nonRobustInCircle = TrianglePredicate.isInCircleNonRobust(a, b, c, p)\n const isInCircleDD = TrianglePredicate.isInCircleDDSlow(a, b, c, p)\n const isInCircleCC = TrianglePredicate.isInCircleCC(a, b, c, p)\n const circumCentre = Triangle.circumcentre(a, b, c)\n System.out.println('p radius diff a = ' + Math.abs(p.distance(circumCentre) - a.distance(circumCentre)) / a.distance(circumCentre))\n if (nonRobustInCircle !== isInCircleDD || nonRobustInCircle !== isInCircleCC) {\n System.out.println('inCircle robustness failure (double result = ' + nonRobustInCircle + ', DD result = ' + isInCircleDD + ', CC result = ' + isInCircleCC + ')')\n System.out.println(WKTWriter.toLineString(new CoordinateArraySequence([a, b, c, p])))\n System.out.println('Circumcentre = ' + WKTWriter.toPoint(circumCentre) + ' radius = ' + a.distance(circumCentre))\n System.out.println('p radius diff a = ' + Math.abs(p.distance(circumCentre) / a.distance(circumCentre) - 1))\n System.out.println('p radius diff b = ' + Math.abs(p.distance(circumCentre) / b.distance(circumCentre) - 1))\n System.out.println('p radius diff c = ' + Math.abs(p.distance(circumCentre) / c.distance(circumCentre) - 1))\n System.out.println()\n }\n }\n static isInCircleDDFast(a, b, c, p) {\n const aTerm = DD.sqr(a.x).selfAdd(DD.sqr(a.y)).selfMultiply(TrianglePredicate.triAreaDDFast(b, c, p))\n const bTerm = DD.sqr(b.x).selfAdd(DD.sqr(b.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, c, p))\n const cTerm = DD.sqr(c.x).selfAdd(DD.sqr(c.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, p))\n const pTerm = DD.sqr(p.x).selfAdd(DD.sqr(p.y)).selfMultiply(TrianglePredicate.triAreaDDFast(a, b, c))\n const sum = aTerm.selfSubtract(bTerm).selfAdd(cTerm).selfSubtract(pTerm)\n const isInCircle = sum.doubleValue() > 0\n return isInCircle\n }\n static isInCircleCC(a, b, c, p) {\n const cc = Triangle.circumcentre(a, b, c)\n const ccRadius = a.distance(cc)\n const pRadiusDiff = p.distance(cc) - ccRadius\n return pRadiusDiff <= 0\n }\n static isInCircleNormalized(a, b, c, p) {\n const adx = a.x - p.x\n const ady = a.y - p.y\n const bdx = b.x - p.x\n const bdy = b.y - p.y\n const cdx = c.x - p.x\n const cdy = c.y - p.y\n const abdet = adx * bdy - bdx * ady\n const bcdet = bdx * cdy - cdx * bdy\n const cadet = cdx * ady - adx * cdy\n const alift = adx * adx + ady * ady\n const blift = bdx * bdx + bdy * bdy\n const clift = cdx * cdx + cdy * cdy\n const disc = alift * bcdet + blift * cadet + clift * abdet\n return disc > 0\n }\n static isInCircleDDSlow(a, b, c, p) {\n const px = DD.valueOf(p.x)\n const py = DD.valueOf(p.y)\n const ax = DD.valueOf(a.x)\n const ay = DD.valueOf(a.y)\n const bx = DD.valueOf(b.x)\n const by = DD.valueOf(b.y)\n const cx = DD.valueOf(c.x)\n const cy = DD.valueOf(c.y)\n const aTerm = ax.multiply(ax).add(ay.multiply(ay)).multiply(TrianglePredicate.triAreaDDSlow(bx, by, cx, cy, px, py))\n const bTerm = bx.multiply(bx).add(by.multiply(by)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, cx, cy, px, py))\n const cTerm = cx.multiply(cx).add(cy.multiply(cy)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, px, py))\n const pTerm = px.multiply(px).add(py.multiply(py)).multiply(TrianglePredicate.triAreaDDSlow(ax, ay, bx, by, cx, cy))\n const sum = aTerm.subtract(bTerm).add(cTerm).subtract(pTerm)\n const isInCircle = sum.doubleValue() > 0\n return isInCircle\n }\n static isInCircleNonRobust(a, b, c, p) {\n const isInCircle = (a.x * a.x + a.y * a.y) * TrianglePredicate.triArea(b, c, p) - (b.x * b.x + b.y * b.y) * TrianglePredicate.triArea(a, c, p) + (c.x * c.x + c.y * c.y) * TrianglePredicate.triArea(a, b, p) - (p.x * p.x + p.y * p.y) * TrianglePredicate.triArea(a, b, c) > 0\n return isInCircle\n }\n static isInCircleRobust(a, b, c, p) {\n return TrianglePredicate.isInCircleNormalized(a, b, c, p)\n }\n static triAreaDDSlow(ax, ay, bx, by, cx, cy) {\n return bx.subtract(ax).multiply(cy.subtract(ay)).subtract(by.subtract(ay).multiply(cx.subtract(ax)))\n }\n static triAreaDDFast(a, b, c) {\n const t1 = DD.valueOf(b.x).selfSubtract(a.x).selfMultiply(DD.valueOf(c.y).selfSubtract(a.y))\n const t2 = DD.valueOf(b.y).selfSubtract(a.y).selfMultiply(DD.valueOf(c.x).selfSubtract(a.x))\n return t1.selfSubtract(t2)\n }\n}\n","import NotRepresentableException from '../../algorithm/NotRepresentableException'\nimport Coordinate from '../../geom/Coordinate'\nimport TrianglePredicate from './TrianglePredicate'\nimport System from '../../../../../java/lang/System'\nimport HCoordinate from '../../algorithm/HCoordinate'\nexport default class Vertex {\n constructor() {\n Vertex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._p = null\n if (arguments.length === 1) {\n const _p = arguments[0]\n this._p = new Coordinate(_p)\n } else if (arguments.length === 2) {\n const _x = arguments[0], _y = arguments[1]\n this._p = new Coordinate(_x, _y)\n } else if (arguments.length === 3) {\n const _x = arguments[0], _y = arguments[1], _z = arguments[2]\n this._p = new Coordinate(_x, _y, _z)\n }\n }\n static interpolateZ() {\n if (arguments.length === 3) {\n const p = arguments[0], p0 = arguments[1], p1 = arguments[2]\n const segLen = p0.distance(p1)\n const ptLen = p.distance(p0)\n const dz = p1.getZ() - p0.getZ()\n const pz = p0.getZ() + dz * (ptLen / segLen)\n return pz\n } else if (arguments.length === 4) {\n const p = arguments[0], v0 = arguments[1], v1 = arguments[2], v2 = arguments[3]\n const x0 = v0.x\n const y0 = v0.y\n const a = v1.x - x0\n const b = v2.x - x0\n const c = v1.y - y0\n const d = v2.y - y0\n const det = a * d - b * c\n const dx = p.x - x0\n const dy = p.y - y0\n const t = (d * dx - b * dy) / det\n const u = (-c * dx + a * dy) / det\n const z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ())\n return z\n }\n }\n circleCenter(b, c) {\n const a = new Vertex(this.getX(), this.getY())\n const cab = this.bisector(a, b)\n const cbc = this.bisector(b, c)\n const hcc = new HCoordinate(cab, cbc)\n let cc = null\n try {\n cc = new Vertex(hcc.getX(), hcc.getY())\n } catch (nre) {\n if (nre instanceof NotRepresentableException) {\n System.err.println('a: ' + a + ' b: ' + b + ' c: ' + c)\n System.err.println(nre)\n } else {\n throw nre\n }\n } finally {}\n return cc\n }\n dot(v) {\n return this._p.x * v.getX() + this._p.y * v.getY()\n }\n magn() {\n return Math.sqrt(this._p.x * this._p.x + this._p.y * this._p.y)\n }\n getZ() {\n return this._p.getZ()\n }\n bisector(a, b) {\n const dx = b.getX() - a.getX()\n const dy = b.getY() - a.getY()\n const l1 = new HCoordinate(a.getX() + dx / 2.0, a.getY() + dy / 2.0, 1.0)\n const l2 = new HCoordinate(a.getX() - dy + dx / 2.0, a.getY() + dx + dy / 2.0, 1.0)\n return new HCoordinate(l1, l2)\n }\n equals() {\n if (arguments.length === 1) {\n const _x = arguments[0]\n if (this._p.x === _x.getX() && this._p.y === _x.getY()) \n return true\n else \n return false\n \n } else if (arguments.length === 2) {\n const _x = arguments[0], tolerance = arguments[1]\n if (this._p.distance(_x.getCoordinate()) < tolerance) \n return true\n else \n return false\n \n }\n }\n getCoordinate() {\n return this._p\n }\n isInCircle(a, b, c) {\n return TrianglePredicate.isInCircleRobust(a._p, b._p, c._p, this._p)\n }\n interpolateZValue(v0, v1, v2) {\n const x0 = v0.getX()\n const y0 = v0.getY()\n const a = v1.getX() - x0\n const b = v2.getX() - x0\n const c = v1.getY() - y0\n const d = v2.getY() - y0\n const det = a * d - b * c\n const dx = this.getX() - x0\n const dy = this.getY() - y0\n const t = (d * dx - b * dy) / det\n const u = (-c * dx + a * dy) / det\n const z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ())\n return z\n }\n midPoint(a) {\n const xm = (this._p.x + a.getX()) / 2.0\n const ym = (this._p.y + a.getY()) / 2.0\n const zm = (this._p.getZ() + a.getZ()) / 2.0\n return new Vertex(xm, ym, zm)\n }\n rightOf(e) {\n return this.isCCW(e.dest(), e.orig())\n }\n isCCW(b, c) {\n return (b._p.x - this._p.x) * (c._p.y - this._p.y) - (b._p.y - this._p.y) * (c._p.x - this._p.x) > 0\n }\n getX() {\n return this._p.x\n }\n crossProduct(v) {\n return this._p.x * v.getY() - this._p.y * v.getX()\n }\n setZ(_z) {\n this._p.setZ(_z)\n }\n times(c) {\n return new Vertex(c * this._p.x, c * this._p.y)\n }\n cross() {\n return new Vertex(this._p.y, -this._p.x)\n }\n leftOf(e) {\n return this.isCCW(e.orig(), e.dest())\n }\n toString() {\n return 'POINT (' + this._p.x + ' ' + this._p.y + ')'\n }\n sub(v) {\n return new Vertex(this._p.x - v.getX(), this._p.y - v.getY())\n }\n getY() {\n return this._p.y\n }\n classify(p0, p1) {\n const p2 = this\n const a = p1.sub(p0)\n const b = p2.sub(p0)\n const sa = a.crossProduct(b)\n if (sa > 0.0) return Vertex.LEFT\n if (sa < 0.0) return Vertex.RIGHT\n if (a.getX() * b.getX() < 0.0 || a.getY() * b.getY() < 0.0) return Vertex.BEHIND\n if (a.magn() < b.magn()) return Vertex.BEYOND\n if (p0.equals(p2)) return Vertex.ORIGIN\n if (p1.equals(p2)) return Vertex.DESTINATION\n return Vertex.BETWEEN\n }\n sum(v) {\n return new Vertex(this._p.x + v.getX(), this._p.y + v.getY())\n }\n distance(v1, v2) {\n return Math.sqrt(Math.pow(v2.getX() - v1.getX(), 2.0) + Math.pow(v2.getY() - v1.getY(), 2.0))\n }\n circumRadiusRatio(b, c) {\n const x = this.circleCenter(b, c)\n const radius = this.distance(x, b)\n let edgeLength = this.distance(this, b)\n let el = this.distance(b, c)\n if (el < edgeLength) \n edgeLength = el\n \n el = this.distance(c, this)\n if (el < edgeLength) \n edgeLength = el\n \n return radius / edgeLength\n }\n}\nVertex.LEFT = 0\nVertex.RIGHT = 1\nVertex.BEYOND = 2\nVertex.BEHIND = 3\nVertex.BETWEEN = 4\nVertex.ORIGIN = 5\nVertex.DESTINATION = 6\n","import Vertex from './quadedge/Vertex'\nexport default class ConstraintVertex extends Vertex {\n constructor() {\n super()\n ConstraintVertex.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isOnConstraint = null\n this._constraint = null\n const p = arguments[0]\n Vertex.constructor_.call(this, p)\n }\n getConstraint() {\n return this._constraint\n }\n setOnConstraint(isOnConstraint) {\n this._isOnConstraint = isOnConstraint\n }\n merge(other) {\n if (other._isOnConstraint) {\n this._isOnConstraint = true\n this._constraint = other._constraint\n }\n }\n isOnConstraint() {\n return this._isOnConstraint\n }\n setConstraint(constraint) {\n this._isOnConstraint = true\n this._constraint = constraint\n }\n}\n","import WKTWriter from '../../io/WKTWriter'\nimport LineSegment from '../../geom/LineSegment'\nexport default class QuadEdge {\n constructor() {\n QuadEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rot = null\n this._vertex = null\n this._next = null\n this._data = null\n }\n static makeEdge(o, d) {\n const q0 = new QuadEdge()\n const q1 = new QuadEdge()\n const q2 = new QuadEdge()\n const q3 = new QuadEdge()\n q0._rot = q1\n q1._rot = q2\n q2._rot = q3\n q3._rot = q0\n q0.setNext(q0)\n q1.setNext(q3)\n q2.setNext(q2)\n q3.setNext(q1)\n const base = q0\n base.setOrig(o)\n base.setDest(d)\n return base\n }\n static swap(e) {\n const a = e.oPrev()\n const b = e.sym().oPrev()\n QuadEdge.splice(e, a)\n QuadEdge.splice(e.sym(), b)\n QuadEdge.splice(e, a.lNext())\n QuadEdge.splice(e.sym(), b.lNext())\n e.setOrig(a.dest())\n e.setDest(b.dest())\n }\n static splice(a, b) {\n const alpha = a.oNext().rot()\n const beta = b.oNext().rot()\n const t1 = b.oNext()\n const t2 = a.oNext()\n const t3 = beta.oNext()\n const t4 = alpha.oNext()\n a.setNext(t1)\n b.setNext(t2)\n alpha.setNext(t3)\n beta.setNext(t4)\n }\n static connect(a, b) {\n const e = QuadEdge.makeEdge(a.dest(), b.orig())\n QuadEdge.splice(e, a.lNext())\n QuadEdge.splice(e.sym(), b)\n return e\n }\n equalsNonOriented(qe) {\n if (this.equalsOriented(qe)) return true\n if (this.equalsOriented(qe.sym())) return true\n return false\n }\n toLineSegment() {\n return new LineSegment(this._vertex.getCoordinate(), this.dest().getCoordinate())\n }\n dest() {\n return this.sym().orig()\n }\n oNext() {\n return this._next\n }\n equalsOriented(qe) {\n if (this.orig().getCoordinate().equals2D(qe.orig().getCoordinate()) && this.dest().getCoordinate().equals2D(qe.dest().getCoordinate())) return true\n return false\n }\n dNext() {\n return this.sym().oNext().sym()\n }\n lPrev() {\n return this._next.sym()\n }\n rPrev() {\n return this.sym().oNext()\n }\n rot() {\n return this._rot\n }\n oPrev() {\n return this._rot._next._rot\n }\n sym() {\n return this._rot._rot\n }\n setOrig(o) {\n this._vertex = o\n }\n lNext() {\n return this.invRot().oNext().rot()\n }\n getLength() {\n return this.orig().getCoordinate().distance(this.dest().getCoordinate())\n }\n invRot() {\n return this._rot.sym()\n }\n setDest(d) {\n this.sym().setOrig(d)\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n delete() {\n this._rot = null\n }\n orig() {\n return this._vertex\n }\n rNext() {\n return this._rot._next.invRot()\n }\n toString() {\n const p0 = this._vertex.getCoordinate()\n const p1 = this.dest().getCoordinate()\n return WKTWriter.toLineString(p0, p1)\n }\n isLive() {\n return this._rot !== null\n }\n getPrimary() {\n if (this.orig().getCoordinate().compareTo(this.dest().getCoordinate()) <= 0) return this; else return this.sym()\n }\n dPrev() {\n return this.invRot().oNext().invRot()\n }\n setNext(next) {\n this._next = next\n }\n}\n","import QuadEdge from './quadedge/QuadEdge'\nexport default class IncrementalDelaunayTriangulator {\n constructor() {\n IncrementalDelaunayTriangulator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subdiv = null\n this._isUsingTolerance = false\n const subdiv = arguments[0]\n this._subdiv = subdiv\n this._isUsingTolerance = subdiv.getTolerance() > 0.0\n }\n insertSite(v) {\n let e = this._subdiv.locate(v)\n if (this._subdiv.isVertexOfEdge(e, v)) {\n return e\n } else if (this._subdiv.isOnEdge(e, v.getCoordinate())) {\n e = e.oPrev()\n this._subdiv.delete(e.oNext())\n }\n let base = this._subdiv.makeEdge(e.orig(), v)\n QuadEdge.splice(base, e)\n const startEdge = base\n do {\n base = this._subdiv.connect(e, base.sym())\n e = base.oPrev()\n } while (e.lNext() !== startEdge)\n do {\n const t = e.oPrev()\n if (t.dest().rightOf(e) && v.isInCircle(e.orig(), t.dest(), e.dest())) {\n QuadEdge.swap(e)\n e = e.oPrev()\n } else if (e.oNext() === startEdge) {\n return base\n } else {\n e = e.oNext().lPrev()\n }\n } while (true)\n }\n insertSites(vertices) {\n for (let i = vertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n this.insertSite(v)\n }\n }\n}\n","export default class QuadEdgeLocator {\n locate(v) {}\n}\n","import QuadEdgeLocator from './QuadEdgeLocator'\nexport default class LastFoundQuadEdgeLocator {\n constructor() {\n LastFoundQuadEdgeLocator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subdiv = null\n this._lastEdge = null\n const subdiv = arguments[0]\n this._subdiv = subdiv\n this.init()\n }\n init() {\n this._lastEdge = this.findEdge()\n }\n locate(v) {\n if (!this._lastEdge.isLive()) \n this.init()\n \n const e = this._subdiv.locateFromEdge(v, this._lastEdge)\n this._lastEdge = e\n return e\n }\n findEdge() {\n const edges = this._subdiv.getEdges()\n return edges.iterator().next()\n }\n get interfaces_() {\n return [QuadEdgeLocator]\n }\n}\n","import LineSegment from '../../geom/LineSegment'\nimport RuntimeException from '../../../../../java/lang/RuntimeException'\nexport default class LocateFailureException extends RuntimeException {\n constructor() {\n super()\n LocateFailureException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._seg = null\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'string') {\n const msg = arguments[0]\n RuntimeException.constructor_.call(this, msg)\n } else if (arguments[0] instanceof LineSegment) {\n const seg = arguments[0]\n RuntimeException.constructor_.call(this, 'Locate failed to converge (at edge: ' + seg + '). Possible causes include invalid Subdivision topology or very close sites')\n this._seg = new LineSegment(seg)\n }\n } else if (arguments.length === 2) {\n const msg = arguments[0], seg = arguments[1]\n RuntimeException.constructor_.call(this, LocateFailureException.msgWithSpatial(msg, seg))\n this._seg = new LineSegment(seg)\n }\n }\n static msgWithSpatial(msg, seg) {\n if (seg !== null) return msg + ' [ ' + seg + ' ]'\n return msg\n }\n getSegment() {\n return this._seg\n }\n}\n","export default class TriangleVisitor {\n visit(triEdges) {}\n}\n","import QuadEdge from './QuadEdge'\nimport CoordinateList from '../../geom/CoordinateList'\nimport HashSet from '../../../../../java/util/HashSet'\nimport WKTWriter from '../../io/WKTWriter'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Coordinate from '../../geom/Coordinate'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Stack from '../../../../../java/util/Stack'\nimport LastFoundQuadEdgeLocator from './LastFoundQuadEdgeLocator'\nimport LocateFailureException from './LocateFailureException'\nimport Vertex from './Vertex'\nimport System from '../../../../../java/lang/System'\nimport LineSegment from '../../geom/LineSegment'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nimport Triangle from '../../geom/Triangle'\nimport TriangleVisitor from './TriangleVisitor'\nexport default class QuadEdgeSubdivision {\n constructor() {\n QuadEdgeSubdivision.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._visitedKey = 0\n this._quadEdges = new ArrayList()\n this._startingEdge = null\n this._tolerance = null\n this._edgeCoincidenceTolerance = null\n this._frameVertex = new Array(3).fill(null)\n this._frameEnv = null\n this._locator = null\n this._seg = new LineSegment()\n this._triEdges = new Array(3).fill(null)\n const env = arguments[0], tolerance = arguments[1]\n this._tolerance = tolerance\n this._edgeCoincidenceTolerance = tolerance / QuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR\n this.createFrame(env)\n this._startingEdge = this.initSubdiv()\n this._locator = new LastFoundQuadEdgeLocator(this)\n }\n static getTriangleEdges(startQE, triEdge) {\n triEdge[0] = startQE\n triEdge[1] = triEdge[0].lNext()\n triEdge[2] = triEdge[1].lNext()\n if (triEdge[2].lNext() !== triEdge[0]) throw new IllegalArgumentException('Edges do not form a triangle')\n }\n getTriangleVertices(includeFrame) {\n const visitor = new TriangleVertexListVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangleVertices()\n }\n isFrameVertex(v) {\n if (v.equals(this._frameVertex[0])) return true\n if (v.equals(this._frameVertex[1])) return true\n if (v.equals(this._frameVertex[2])) return true\n return false\n }\n isVertexOfEdge(e, v) {\n if (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) \n return true\n \n return false\n }\n connect(a, b) {\n const q = QuadEdge.connect(a, b)\n this._quadEdges.add(q)\n return q\n }\n getVoronoiCellPolygon(qe, geomFact) {\n const cellPts = new ArrayList()\n const startQE = qe\n do {\n const cc = qe.rot().orig().getCoordinate()\n cellPts.add(cc)\n qe = qe.oPrev()\n } while (qe !== startQE)\n const coordList = new CoordinateList()\n coordList.addAll(cellPts, false)\n coordList.closeRing()\n if (coordList.size() < 4) {\n System.out.println(coordList)\n coordList.add(coordList.get(coordList.size() - 1), true)\n }\n const pts = coordList.toCoordinateArray()\n const cellPoly = geomFact.createPolygon(geomFact.createLinearRing(pts))\n const v = startQE.orig()\n cellPoly.setUserData(v.getCoordinate())\n return cellPoly\n }\n setLocator(locator) {\n this._locator = locator\n }\n initSubdiv() {\n const ea = this.makeEdge(this._frameVertex[0], this._frameVertex[1])\n const eb = this.makeEdge(this._frameVertex[1], this._frameVertex[2])\n QuadEdge.splice(ea.sym(), eb)\n const ec = this.makeEdge(this._frameVertex[2], this._frameVertex[0])\n QuadEdge.splice(eb.sym(), ec)\n QuadEdge.splice(ec.sym(), ea)\n return ea\n }\n isFrameBorderEdge(e) {\n const leftTri = new Array(3).fill(null)\n QuadEdgeSubdivision.getTriangleEdges(e, leftTri)\n const rightTri = new Array(3).fill(null)\n QuadEdgeSubdivision.getTriangleEdges(e.sym(), rightTri)\n const vLeftTriOther = e.lNext().dest()\n if (this.isFrameVertex(vLeftTriOther)) return true\n const vRightTriOther = e.sym().lNext().dest()\n if (this.isFrameVertex(vRightTriOther)) return true\n return false\n }\n makeEdge(o, d) {\n const q = QuadEdge.makeEdge(o, d)\n this._quadEdges.add(q)\n return q\n }\n visitTriangles(triVisitor, includeFrame) {\n this._visitedKey++\n const edgeStack = new Stack()\n edgeStack.push(this._startingEdge)\n const visitedEdges = new HashSet()\n while (!edgeStack.empty()) {\n const edge = edgeStack.pop()\n if (!visitedEdges.contains(edge)) {\n const triEdges = this.fetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges)\n if (triEdges !== null) triVisitor.visit(triEdges)\n }\n }\n }\n isFrameEdge(e) {\n if (this.isFrameVertex(e.orig()) || this.isFrameVertex(e.dest())) return true\n return false\n }\n isOnEdge(e, p) {\n this._seg.setCoordinates(e.orig().getCoordinate(), e.dest().getCoordinate())\n const dist = this._seg.distance(p)\n return dist < this._edgeCoincidenceTolerance\n }\n getEnvelope() {\n return new Envelope(this._frameEnv)\n }\n createFrame(env) {\n const deltaX = env.getWidth()\n const deltaY = env.getHeight()\n let offset = 0.0\n if (deltaX > deltaY) \n offset = deltaX * 10.0\n else \n offset = deltaY * 10.0\n \n this._frameVertex[0] = new Vertex((env.getMaxX() + env.getMinX()) / 2.0, env.getMaxY() + offset)\n this._frameVertex[1] = new Vertex(env.getMinX() - offset, env.getMinY() - offset)\n this._frameVertex[2] = new Vertex(env.getMaxX() + offset, env.getMinY() - offset)\n this._frameEnv = new Envelope(this._frameVertex[0].getCoordinate(), this._frameVertex[1].getCoordinate())\n this._frameEnv.expandToInclude(this._frameVertex[2].getCoordinate())\n }\n getTriangleCoordinates(includeFrame) {\n const visitor = new TriangleCoordinatesVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangles()\n }\n getVertices(includeFrame) {\n const vertices = new HashSet()\n for (let i = this._quadEdges.iterator(); i.hasNext(); ) {\n const qe = i.next()\n const v = qe.orig()\n if (includeFrame || !this.isFrameVertex(v)) vertices.add(v)\n const vd = qe.dest()\n if (includeFrame || !this.isFrameVertex(vd)) vertices.add(vd)\n }\n return vertices\n }\n fetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges) {\n let curr = edge\n let edgeCount = 0\n let isFrame = false\n do {\n this._triEdges[edgeCount] = curr\n if (this.isFrameEdge(curr)) isFrame = true\n const sym = curr.sym()\n if (!visitedEdges.contains(sym)) edgeStack.push(sym)\n visitedEdges.add(curr)\n edgeCount++\n curr = curr.lNext()\n } while (curr !== edge)\n if (isFrame && !includeFrame) return null\n return this._triEdges\n }\n getEdges() {\n if (arguments.length === 0) {\n return this._quadEdges\n } else if (arguments.length === 1) {\n const geomFact = arguments[0]\n const quadEdges = this.getPrimaryEdges(false)\n const edges = new Array(quadEdges.size()).fill(null)\n let i = 0\n for (let it = quadEdges.iterator(); it.hasNext(); ) {\n const qe = it.next()\n edges[i++] = geomFact.createLineString([qe.orig().getCoordinate(), qe.dest().getCoordinate()])\n }\n return geomFact.createMultiLineString(edges)\n }\n }\n getVertexUniqueEdges(includeFrame) {\n const edges = new ArrayList()\n const visitedVertices = new HashSet()\n for (let i = this._quadEdges.iterator(); i.hasNext(); ) {\n const qe = i.next()\n const v = qe.orig()\n if (!visitedVertices.contains(v)) {\n visitedVertices.add(v)\n if (includeFrame || !this.isFrameVertex(v)) \n edges.add(qe)\n \n }\n const qd = qe.sym()\n const vd = qd.orig()\n if (!visitedVertices.contains(vd)) {\n visitedVertices.add(vd)\n if (includeFrame || !this.isFrameVertex(vd)) \n edges.add(qd)\n \n }\n }\n return edges\n }\n getTriangleEdges(includeFrame) {\n const visitor = new TriangleEdgesListVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangleEdges()\n }\n getPrimaryEdges(includeFrame) {\n this._visitedKey++\n const edges = new ArrayList()\n const edgeStack = new Stack()\n edgeStack.push(this._startingEdge)\n const visitedEdges = new HashSet()\n while (!edgeStack.empty()) {\n const edge = edgeStack.pop()\n if (!visitedEdges.contains(edge)) {\n const priQE = edge.getPrimary()\n if (includeFrame || !this.isFrameEdge(priQE)) edges.add(priQE)\n edgeStack.push(edge.oNext())\n edgeStack.push(edge.sym().oNext())\n visitedEdges.add(edge)\n visitedEdges.add(edge.sym())\n }\n }\n return edges\n }\n delete(e) {\n QuadEdge.splice(e, e.oPrev())\n QuadEdge.splice(e.sym(), e.sym().oPrev())\n const eSym = e.sym()\n const eRot = e.rot()\n const eRotSym = e.rot().sym()\n this._quadEdges.remove(e)\n this._quadEdges.remove(eSym)\n this._quadEdges.remove(eRot)\n this._quadEdges.remove(eRotSym)\n e.delete()\n eSym.delete()\n eRot.delete()\n eRotSym.delete()\n }\n locateFromEdge(v, startEdge) {\n let iter = 0\n const maxIter = this._quadEdges.size()\n let e = startEdge\n while (true) {\n iter++\n if (iter > maxIter) \n throw new LocateFailureException(e.toLineSegment())\n \n if (v.equals(e.orig()) || v.equals(e.dest())) \n break\n else if (v.rightOf(e)) \n e = e.sym()\n else if (!v.rightOf(e.oNext())) \n e = e.oNext()\n else if (!v.rightOf(e.dPrev())) \n e = e.dPrev()\n else \n break\n \n }\n return e\n }\n getTolerance() {\n return this._tolerance\n }\n getVoronoiCellPolygons(geomFact) {\n this.visitTriangles(new TriangleCircumcentreVisitor(), true)\n const cells = new ArrayList()\n const edges = this.getVertexUniqueEdges(false)\n for (let i = edges.iterator(); i.hasNext(); ) {\n const qe = i.next()\n cells.add(this.getVoronoiCellPolygon(qe, geomFact))\n }\n return cells\n }\n getVoronoiDiagram(geomFact) {\n const vorCells = this.getVoronoiCellPolygons(geomFact)\n return geomFact.createGeometryCollection(GeometryFactory.toGeometryArray(vorCells))\n }\n getTriangles(geomFact) {\n const triPtsList = this.getTriangleCoordinates(false)\n const tris = new Array(triPtsList.size()).fill(null)\n let i = 0\n for (let it = triPtsList.iterator(); it.hasNext(); ) {\n const triPt = it.next()\n tris[i++] = geomFact.createPolygon(geomFact.createLinearRing(triPt))\n }\n return geomFact.createGeometryCollection(tris)\n }\n insertSite(v) {\n let e = this.locate(v)\n if (v.equals(e.orig(), this._tolerance) || v.equals(e.dest(), this._tolerance)) \n return e\n \n let base = this.makeEdge(e.orig(), v)\n QuadEdge.splice(base, e)\n const startEdge = base\n do {\n base = this.connect(e, base.sym())\n e = base.oPrev()\n } while (e.lNext() !== startEdge)\n return startEdge\n }\n locate() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Vertex) {\n const v = arguments[0]\n return this._locator.locate(v)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this._locator.locate(new Vertex(p))\n }\n } else if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n const e = this._locator.locate(new Vertex(p0))\n if (e === null) return null\n let base = e\n if (e.dest().getCoordinate().equals2D(p0)) base = e.sym()\n let locEdge = base\n do {\n if (locEdge.dest().getCoordinate().equals2D(p1)) return locEdge\n locEdge = locEdge.oNext()\n } while (locEdge !== base)\n return null\n }\n }\n}\nclass TriangleCircumcentreVisitor {\n visit(triEdges) {\n const a = triEdges[0].orig().getCoordinate()\n const b = triEdges[1].orig().getCoordinate()\n const c = triEdges[2].orig().getCoordinate()\n const cc = Triangle.circumcentreDD(a, b, c)\n const ccVertex = new Vertex(cc)\n for (let i = 0; i < 3; i++) \n triEdges[i].rot().setOrig(ccVertex)\n \n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nclass TriangleEdgesListVisitor {\n constructor() {\n TriangleEdgesListVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._triList = new ArrayList()\n }\n getTriangleEdges() {\n return this._triList\n }\n visit(triEdges) {\n this._triList.add(triEdges)\n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nclass TriangleVertexListVisitor {\n constructor() {\n TriangleVertexListVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._triList = new ArrayList()\n }\n visit(triEdges) {\n this._triList.add([triEdges[0].orig(), triEdges[1].orig(), triEdges[2].orig()])\n }\n getTriangleVertices() {\n return this._triList\n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nclass TriangleCoordinatesVisitor {\n constructor() {\n TriangleCoordinatesVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._coordList = new CoordinateList()\n this._triCoords = new ArrayList()\n }\n checkTriangleSize(pts) {\n let loc = ''\n if (pts.length >= 2) loc = WKTWriter.toLineString(pts[0], pts[1]); else \n if (pts.length >= 1) loc = WKTWriter.toPoint(pts[0])\n \n }\n visit(triEdges) {\n this._coordList.clear()\n for (let i = 0; i < 3; i++) {\n const v = triEdges[i].orig()\n this._coordList.add(v.getCoordinate())\n }\n if (this._coordList.size() > 0) {\n this._coordList.closeRing()\n const pts = this._coordList.toCoordinateArray()\n if (pts.length !== 4) \n return null\n \n this._triCoords.add(pts)\n }\n }\n getTriangles() {\n return this._triCoords\n }\n get interfaces_() {\n return [TriangleVisitor]\n }\n}\nQuadEdgeSubdivision.TriangleCircumcentreVisitor = TriangleCircumcentreVisitor\nQuadEdgeSubdivision.TriangleEdgesListVisitor = TriangleEdgesListVisitor\nQuadEdgeSubdivision.TriangleVertexListVisitor = TriangleVertexListVisitor\nQuadEdgeSubdivision.TriangleCoordinatesVisitor = TriangleCoordinatesVisitor\nQuadEdgeSubdivision.EDGE_COINCIDENCE_TOL_FACTOR = 1000\n","import Coordinate from '../geom/Coordinate'\nimport LineSegment from '../geom/LineSegment'\nexport default class Segment {\n constructor() {\n Segment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ls = null\n this._data = null\n if (arguments.length === 2) {\n const p0 = arguments[0], p1 = arguments[1]\n this._ls = new LineSegment(p0, p1)\n } else if (arguments.length === 3) {\n const p0 = arguments[0], p1 = arguments[1], data = arguments[2]\n this._ls = new LineSegment(p0, p1)\n this._data = data\n } else if (arguments.length === 6) {\n const x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5]\n Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2))\n } else if (arguments.length === 7) {\n const x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5], data = arguments[6]\n Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data)\n }\n }\n getLineSegment() {\n return this._ls\n }\n getEndZ() {\n const p = this._ls.getCoordinate(1)\n return p.getZ()\n }\n getStartZ() {\n const p = this._ls.getCoordinate(0)\n return p.getZ()\n }\n intersection(s) {\n return this._ls.intersection(s.getLineSegment())\n }\n getStart() {\n return this._ls.getCoordinate(0)\n }\n getEnd() {\n return this._ls.getCoordinate(1)\n }\n getEndY() {\n const p = this._ls.getCoordinate(1)\n return p.y\n }\n getStartX() {\n const p = this._ls.getCoordinate(0)\n return p.x\n }\n equalsTopo(s) {\n return this._ls.equalsTopo(s.getLineSegment())\n }\n getStartY() {\n const p = this._ls.getCoordinate(0)\n return p.y\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n getEndX() {\n const p = this._ls.getCoordinate(1)\n return p.x\n }\n toString() {\n return this._ls.toString()\n }\n}\n","import WKTWriter from '../io/WKTWriter'\nimport Coordinate from '../geom/Coordinate'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nexport default class ConstraintEnforcementException extends RuntimeException {\n constructor() {\n super()\n ConstraintEnforcementException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n if (arguments.length === 1) {\n const msg = arguments[0]\n RuntimeException.constructor_.call(this, msg)\n } else if (arguments.length === 2) {\n const msg = arguments[0], pt = arguments[1]\n RuntimeException.constructor_.call(this, ConstraintEnforcementException.msgWithCoord(msg, pt))\n this._pt = new Coordinate(pt)\n }\n }\n static msgWithCoord(msg, pt) {\n if (pt !== null) return msg + ' [ ' + WKTWriter.toPoint(pt) + ' ]'\n return msg\n }\n getCoordinate() {\n return this._pt\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory'\nimport NonEncroachingSplitPointFinder from './NonEncroachingSplitPointFinder'\nimport ConstraintVertex from './ConstraintVertex'\nimport Coordinate from '../geom/Coordinate'\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator'\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision'\nimport Double from '../../../../java/lang/Double'\nimport LastFoundQuadEdgeLocator from './quadedge/LastFoundQuadEdgeLocator'\nimport Segment from './Segment'\nimport ConvexHull from '../algorithm/ConvexHull'\nimport KdTree from '../index/kdtree/KdTree'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport ConstraintEnforcementException from './ConstraintEnforcementException'\nimport Envelope from '../geom/Envelope'\nexport default class ConformingDelaunayTriangulator {\n constructor() {\n ConformingDelaunayTriangulator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._initialVertices = null\n this._segVertices = null\n this._segments = new ArrayList()\n this._subdiv = null\n this._incDel = null\n this._convexHull = null\n this._splitFinder = new NonEncroachingSplitPointFinder()\n this._kdt = null\n this._vertexFactory = null\n this._computeAreaEnv = null\n this._splitPt = null\n this._tolerance = null\n const initialVertices = arguments[0], tolerance = arguments[1]\n this._initialVertices = new ArrayList(initialVertices)\n this._tolerance = tolerance\n this._kdt = new KdTree(tolerance)\n }\n static computeVertexEnvelope(vertices) {\n const env = new Envelope()\n for (let i = vertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n env.expandToInclude(v.getCoordinate())\n }\n return env\n }\n getInitialVertices() {\n return this._initialVertices\n }\n getKDT() {\n return this._kdt\n }\n enforceConstraints() {\n this.addConstraintVertices()\n let count = 0\n let splits = 0\n do {\n splits = this.enforceGabriel(this._segments)\n count++\n } while (splits > 0 && count < ConformingDelaunayTriangulator.MAX_SPLIT_ITER)\n if (count === ConformingDelaunayTriangulator.MAX_SPLIT_ITER) \n throw new ConstraintEnforcementException('Too many splitting iterations while enforcing constraints. Last split point was at: ', this._splitPt)\n \n }\n insertSites(vertices) {\n for (let i = vertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n this.insertSite(v)\n }\n }\n getVertexFactory() {\n return this._vertexFactory\n }\n getPointArray() {\n const pts = new Array(this._initialVertices.size() + this._segVertices.size()).fill(null)\n let index = 0\n for (let i = this._initialVertices.iterator(); i.hasNext(); ) {\n const v = i.next()\n pts[index++] = v.getCoordinate()\n }\n for (let i2 = this._segVertices.iterator(); i2.hasNext(); ) {\n const v = i2.next()\n pts[index++] = v.getCoordinate()\n }\n return pts\n }\n setConstraints(segments, segVertices) {\n this._segments = segments\n this._segVertices = segVertices\n }\n computeConvexHull() {\n const fact = new GeometryFactory()\n const coords = this.getPointArray()\n const hull = new ConvexHull(coords, fact)\n this._convexHull = hull.getConvexHull()\n }\n addConstraintVertices() {\n this.computeConvexHull()\n this.insertSites(this._segVertices)\n }\n findNonGabrielPoint(seg) {\n const p = seg.getStart()\n const q = seg.getEnd()\n const midPt = new Coordinate((p.x + q.x) / 2.0, (p.y + q.y) / 2.0)\n const segRadius = p.distance(midPt)\n const env = new Envelope(midPt)\n env.expandBy(segRadius)\n const result = this._kdt.query(env)\n let closestNonGabriel = null\n let minDist = Double.MAX_VALUE\n for (let i = result.iterator(); i.hasNext(); ) {\n const nextNode = i.next()\n const testPt = nextNode.getCoordinate()\n if (testPt.equals2D(p) || testPt.equals2D(q)) continue\n const testRadius = midPt.distance(testPt)\n if (testRadius < segRadius) {\n const testDist = testRadius\n if (closestNonGabriel === null || testDist < minDist) {\n closestNonGabriel = testPt\n minDist = testDist\n }\n }\n }\n return closestNonGabriel\n }\n getConstraintSegments() {\n return this._segments\n }\n setSplitPointFinder(splitFinder) {\n this._splitFinder = splitFinder\n }\n getConvexHull() {\n return this._convexHull\n }\n getTolerance() {\n return this._tolerance\n }\n enforceGabriel(segsToInsert) {\n const newSegments = new ArrayList()\n let splits = 0\n const segsToRemove = new ArrayList()\n for (let i = segsToInsert.iterator(); i.hasNext(); ) {\n const seg = i.next()\n const encroachPt = this.findNonGabrielPoint(seg)\n if (encroachPt === null) continue\n this._splitPt = this._splitFinder.findSplitPoint(seg, encroachPt)\n const splitVertex = this.createVertex(this._splitPt, seg)\n const insertedVertex = this.insertSite(splitVertex)\n if (!insertedVertex.getCoordinate().equals2D(this._splitPt)) {}\n const s1 = new Segment(seg.getStartX(), seg.getStartY(), seg.getStartZ(), splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getData())\n const s2 = new Segment(splitVertex.getX(), splitVertex.getY(), splitVertex.getZ(), seg.getEndX(), seg.getEndY(), seg.getEndZ(), seg.getData())\n newSegments.add(s1)\n newSegments.add(s2)\n segsToRemove.add(seg)\n splits = splits + 1\n }\n segsToInsert.removeAll(segsToRemove)\n segsToInsert.addAll(newSegments)\n return splits\n }\n createVertex() {\n if (arguments.length === 1) {\n const p = arguments[0]\n let v = null\n if (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, null); else v = new ConstraintVertex(p)\n return v\n } else if (arguments.length === 2) {\n const p = arguments[0], seg = arguments[1]\n let v = null\n if (this._vertexFactory !== null) v = this._vertexFactory.createVertex(p, seg); else v = new ConstraintVertex(p)\n v.setOnConstraint(true)\n return v\n }\n }\n getSubdivision() {\n return this._subdiv\n }\n computeBoundingBox() {\n const vertexEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._initialVertices)\n const segEnv = ConformingDelaunayTriangulator.computeVertexEnvelope(this._segVertices)\n const allPointsEnv = new Envelope(vertexEnv)\n allPointsEnv.expandToInclude(segEnv)\n const deltaX = allPointsEnv.getWidth() * 0.2\n const deltaY = allPointsEnv.getHeight() * 0.2\n const delta = Math.max(deltaX, deltaY)\n this._computeAreaEnv = new Envelope(allPointsEnv)\n this._computeAreaEnv.expandBy(delta)\n }\n setVertexFactory(vertexFactory) {\n this._vertexFactory = vertexFactory\n }\n formInitialDelaunay() {\n this.computeBoundingBox()\n this._subdiv = new QuadEdgeSubdivision(this._computeAreaEnv, this._tolerance)\n this._subdiv.setLocator(new LastFoundQuadEdgeLocator(this._subdiv))\n this._incDel = new IncrementalDelaunayTriangulator(this._subdiv)\n this.insertSites(this._initialVertices)\n }\n insertSite() {\n if (arguments[0] instanceof ConstraintVertex) {\n const v = arguments[0]\n const kdnode = this._kdt.insert(v.getCoordinate(), v)\n if (!kdnode.isRepeated()) {\n this._incDel.insertSite(v)\n } else {\n const snappedV = kdnode.getData()\n snappedV.merge(v)\n return snappedV\n }\n return v\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.insertSite(this.createVertex(p))\n }\n }\n}\nConformingDelaunayTriangulator.MAX_SPLIT_ITER = 99\n","import CoordinateList from '../geom/CoordinateList'\nimport Geometry from '../geom/Geometry'\nimport Arrays from '../../../../java/util/Arrays'\nimport hasInterface from '../../../../hasInterface'\nimport Collection from '../../../../java/util/Collection'\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator'\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision'\nimport Vertex from './quadedge/Vertex'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport Envelope from '../geom/Envelope'\nexport default class DelaunayTriangulationBuilder {\n constructor() {\n DelaunayTriangulationBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._siteCoords = null\n this._tolerance = 0.0\n this._subdiv = null\n }\n static extractUniqueCoordinates(geom) {\n if (geom === null) return new CoordinateList()\n const coords = geom.getCoordinates()\n return DelaunayTriangulationBuilder.unique(coords)\n }\n static envelope(coords) {\n const env = new Envelope()\n for (let i = coords.iterator(); i.hasNext(); ) {\n const coord = i.next()\n env.expandToInclude(coord)\n }\n return env\n }\n static unique(coords) {\n const coordsCopy = CoordinateArrays.copyDeep(coords)\n Arrays.sort(coordsCopy)\n const coordList = new CoordinateList(coordsCopy, false)\n return coordList\n }\n static toVertices(coords) {\n const verts = new ArrayList()\n for (let i = coords.iterator(); i.hasNext(); ) {\n const coord = i.next()\n verts.add(new Vertex(coord))\n }\n return verts\n }\n create() {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n const vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords)\n this._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance)\n const triangulator = new IncrementalDelaunayTriangulator(this._subdiv)\n triangulator.insertSites(vertices)\n }\n setTolerance(tolerance) {\n this._tolerance = tolerance\n }\n setSites() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n } else if (hasInterface(arguments[0], Collection)) {\n const coords = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords))\n }\n }\n getEdges(geomFact) {\n this.create()\n return this._subdiv.getEdges(geomFact)\n }\n getSubdivision() {\n this.create()\n return this._subdiv\n }\n getTriangles(geomFact) {\n this.create()\n return this._subdiv.getTriangles(geomFact)\n }\n}\n","import ConformingDelaunayTriangulator from './ConformingDelaunayTriangulator'\nimport ConstraintVertex from './ConstraintVertex'\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder'\nimport Segment from './Segment'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class ConformingDelaunayTriangulationBuilder {\n constructor() {\n ConformingDelaunayTriangulationBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._siteCoords = null\n this._constraintLines = null\n this._tolerance = 0.0\n this._subdiv = null\n this._constraintVertexMap = new TreeMap()\n }\n static createConstraintSegments() {\n if (arguments.length === 1) {\n const geom = arguments[0]\n const lines = LinearComponentExtracter.getLines(geom)\n const constraintSegs = new ArrayList()\n for (let i = lines.iterator(); i.hasNext(); ) {\n const line = i.next()\n ConformingDelaunayTriangulationBuilder.createConstraintSegments(line, constraintSegs)\n }\n return constraintSegs\n } else if (arguments.length === 2) {\n const line = arguments[0], constraintSegs = arguments[1]\n const coords = line.getCoordinates()\n for (let i = 1; i < coords.length; i++) \n constraintSegs.add(new Segment(coords[i - 1], coords[i]))\n \n }\n }\n createSiteVertices(coords) {\n const verts = new ArrayList()\n for (let i = coords.iterator(); i.hasNext(); ) {\n const coord = i.next()\n if (this._constraintVertexMap.containsKey(coord)) continue\n verts.add(new ConstraintVertex(coord))\n }\n return verts\n }\n create() {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n let segments = new ArrayList()\n if (this._constraintLines !== null) {\n siteEnv.expandToInclude(this._constraintLines.getEnvelopeInternal())\n this.createVertices(this._constraintLines)\n segments = ConformingDelaunayTriangulationBuilder.createConstraintSegments(this._constraintLines)\n }\n const sites = this.createSiteVertices(this._siteCoords)\n const cdt = new ConformingDelaunayTriangulator(sites, this._tolerance)\n cdt.setConstraints(segments, new ArrayList(this._constraintVertexMap.values()))\n cdt.formInitialDelaunay()\n cdt.enforceConstraints()\n this._subdiv = cdt.getSubdivision()\n }\n setTolerance(tolerance) {\n this._tolerance = tolerance\n }\n setConstraints(constraintLines) {\n this._constraintLines = constraintLines\n }\n setSites(geom) {\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n }\n getEdges(geomFact) {\n this.create()\n return this._subdiv.getEdges(geomFact)\n }\n getSubdivision() {\n this.create()\n return this._subdiv\n }\n getTriangles(geomFact) {\n this.create()\n return this._subdiv.getTriangles(geomFact)\n }\n createVertices(geom) {\n const coords = geom.getCoordinates()\n for (let i = 0; i < coords.length; i++) {\n const v = new ConstraintVertex(coords[i])\n this._constraintVertexMap.put(coords[i], v)\n }\n }\n}\n","import Geometry from '../geom/Geometry'\nimport hasInterface from '../../../../hasInterface'\nimport GeometryFactory from '../geom/GeometryFactory'\nimport Collection from '../../../../java/util/Collection'\nimport IncrementalDelaunayTriangulator from './IncrementalDelaunayTriangulator'\nimport QuadEdgeSubdivision from './quadedge/QuadEdgeSubdivision'\nimport DelaunayTriangulationBuilder from './DelaunayTriangulationBuilder'\nimport CoordinateArrays from '../geom/CoordinateArrays'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport OverlayOp from '../operation/overlay/OverlayOp'\nexport default class VoronoiDiagramBuilder {\n constructor() {\n VoronoiDiagramBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._siteCoords = null\n this._tolerance = 0.0\n this._subdiv = null\n this._clipEnv = null\n this._diagramEnv = null\n }\n static clipGeometryCollection(geom, clipEnv) {\n const clipPoly = geom.getFactory().toGeometry(clipEnv)\n const clipped = new ArrayList()\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const g = geom.getGeometryN(i)\n let result = null\n if (clipEnv.contains(g.getEnvelopeInternal())) {\n result = g\n } else if (clipEnv.intersects(g.getEnvelopeInternal())) {\n result = OverlayOp.intersection(clipPoly, g)\n result.setUserData(g.getUserData())\n }\n if (result !== null && !result.isEmpty()) \n clipped.add(result)\n \n }\n return geom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(clipped))\n }\n create() {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n this._diagramEnv = this._clipEnv\n if (this._diagramEnv === null) {\n this._diagramEnv = siteEnv\n const expandBy = this._diagramEnv.getDiameter()\n this._diagramEnv.expandBy(expandBy)\n }\n const vertices = DelaunayTriangulationBuilder.toVertices(this._siteCoords)\n this._subdiv = new QuadEdgeSubdivision(siteEnv, this._tolerance)\n const triangulator = new IncrementalDelaunayTriangulator(this._subdiv)\n triangulator.insertSites(vertices)\n }\n getDiagram(geomFact) {\n this.create()\n const polys = this._subdiv.getVoronoiDiagram(geomFact)\n return VoronoiDiagramBuilder.clipGeometryCollection(polys, this._diagramEnv)\n }\n setTolerance(tolerance) {\n this._tolerance = tolerance\n }\n setSites() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n } else if (hasInterface(arguments[0], Collection)) {\n const coords = arguments[0]\n this._siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords))\n }\n }\n setClipEnvelope(clipEnv) {\n this._clipEnv = clipEnv\n }\n getSubdivision() {\n this.create()\n return this._subdiv\n }\n}\n","import hasInterface from '../../../../hasInterface'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Lineal from '../geom/Lineal'\nexport default class LinearIterator {\n constructor() {\n LinearIterator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n this._numLines = null\n this._currentLine = null\n this._componentIndex = 0\n this._vertexIndex = 0\n if (arguments.length === 1) {\n const linear = arguments[0]\n LinearIterator.constructor_.call(this, linear, 0, 0)\n } else if (arguments.length === 2) {\n const linear = arguments[0], start = arguments[1]\n LinearIterator.constructor_.call(this, linear, start.getComponentIndex(), LinearIterator.segmentEndVertexIndex(start))\n } else if (arguments.length === 3) {\n const linearGeom = arguments[0], componentIndex = arguments[1], vertexIndex = arguments[2]\n if (!hasInterface(linearGeom, Lineal)) throw new IllegalArgumentException('Lineal geometry is required')\n this._linearGeom = linearGeom\n this._numLines = linearGeom.getNumGeometries()\n this._componentIndex = componentIndex\n this._vertexIndex = vertexIndex\n this.loadCurrentLine()\n }\n }\n static segmentEndVertexIndex(loc) {\n if (loc.getSegmentFraction() > 0.0) return loc.getSegmentIndex() + 1\n return loc.getSegmentIndex()\n }\n getComponentIndex() {\n return this._componentIndex\n }\n getLine() {\n return this._currentLine\n }\n getVertexIndex() {\n return this._vertexIndex\n }\n getSegmentEnd() {\n if (this._vertexIndex < this.getLine().getNumPoints() - 1) return this._currentLine.getCoordinateN(this._vertexIndex + 1)\n return null\n }\n next() {\n if (!this.hasNext()) return null\n this._vertexIndex++\n if (this._vertexIndex >= this._currentLine.getNumPoints()) {\n this._componentIndex++\n this.loadCurrentLine()\n this._vertexIndex = 0\n }\n }\n loadCurrentLine() {\n if (this._componentIndex >= this._numLines) {\n this._currentLine = null\n return null\n }\n this._currentLine = this._linearGeom.getGeometryN(this._componentIndex)\n }\n getSegmentStart() {\n return this._currentLine.getCoordinateN(this._vertexIndex)\n }\n isEndOfLine() {\n if (this._componentIndex >= this._numLines) return false\n if (this._vertexIndex < this._currentLine.getNumPoints() - 1) return false\n return true\n }\n hasNext() {\n if (this._componentIndex >= this._numLines) return false\n if (this._componentIndex === this._numLines - 1 && this._vertexIndex >= this._currentLine.getNumPoints()) return false\n return true\n }\n}\n","import LinearIterator from './LinearIterator'\nimport Double from '../../../../java/lang/Double'\nimport LineSegment from '../geom/LineSegment'\nimport Assert from '../util/Assert'\nexport default class LengthIndexOfPoint {\n constructor() {\n LengthIndexOfPoint.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static indexOf(linearGeom, inputPt) {\n const locater = new LengthIndexOfPoint(linearGeom)\n return locater.indexOf(inputPt)\n }\n static indexOfAfter(linearGeom, inputPt, minIndex) {\n const locater = new LengthIndexOfPoint(linearGeom)\n return locater.indexOfAfter(inputPt, minIndex)\n }\n indexOf(inputPt) {\n return this.indexOfFromStart(inputPt, -1.0)\n }\n indexOfFromStart(inputPt, minIndex) {\n let minDistance = Double.MAX_VALUE\n let ptMeasure = minIndex\n let segmentStartMeasure = 0.0\n const seg = new LineSegment()\n const it = new LinearIterator(this._linearGeom)\n while (it.hasNext()) {\n if (!it.isEndOfLine()) {\n seg.p0 = it.getSegmentStart()\n seg.p1 = it.getSegmentEnd()\n const segDistance = seg.distance(inputPt)\n const segMeasureToPt = this.segmentNearestMeasure(seg, inputPt, segmentStartMeasure)\n if (segDistance < minDistance && segMeasureToPt > minIndex) {\n ptMeasure = segMeasureToPt\n minDistance = segDistance\n }\n segmentStartMeasure += seg.getLength()\n }\n it.next()\n }\n return ptMeasure\n }\n indexOfAfter(inputPt, minIndex) {\n if (minIndex < 0.0) return this.indexOf(inputPt)\n const endIndex = this._linearGeom.getLength()\n if (endIndex < minIndex) return endIndex\n const closestAfter = this.indexOfFromStart(inputPt, minIndex)\n Assert.isTrue(closestAfter >= minIndex, 'computed index is before specified minimum index')\n return closestAfter\n }\n segmentNearestMeasure(seg, inputPt, segmentStartMeasure) {\n const projFactor = seg.projectionFactor(inputPt)\n if (projFactor <= 0.0) return segmentStartMeasure\n if (projFactor <= 1.0) return segmentStartMeasure + projFactor * seg.getLength()\n return segmentStartMeasure + seg.getLength()\n }\n}\n","import Coordinate from '../geom/Coordinate'\nimport LineSegment from '../geom/LineSegment'\nimport Comparable from '../../../../java/lang/Comparable'\nexport default class LinearLocation {\n constructor() {\n LinearLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._componentIndex = 0\n this._segmentIndex = 0\n this._segmentFraction = 0.0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const loc = arguments[0]\n this._componentIndex = loc._componentIndex\n this._segmentIndex = loc._segmentIndex\n this._segmentFraction = loc._segmentFraction\n } else if (arguments.length === 2) {\n const segmentIndex = arguments[0], segmentFraction = arguments[1]\n LinearLocation.constructor_.call(this, 0, segmentIndex, segmentFraction)\n } else if (arguments.length === 3) {\n const componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2]\n this._componentIndex = componentIndex\n this._segmentIndex = segmentIndex\n this._segmentFraction = segmentFraction\n this.normalize()\n } else if (arguments.length === 4) {\n const componentIndex = arguments[0], segmentIndex = arguments[1], segmentFraction = arguments[2], doNormalize = arguments[3]\n this._componentIndex = componentIndex\n this._segmentIndex = segmentIndex\n this._segmentFraction = segmentFraction\n if (doNormalize) this.normalize()\n }\n }\n static getEndLocation(linear) {\n const loc = new LinearLocation()\n loc.setToEnd(linear)\n return loc\n }\n static pointAlongSegmentByFraction(p0, p1, frac) {\n if (frac <= 0.0) return p0\n if (frac >= 1.0) return p1\n const x = (p1.x - p0.x) * frac + p0.x\n const y = (p1.y - p0.y) * frac + p0.y\n const z = (p1.getZ() - p0.getZ()) * frac + p0.getZ()\n return new Coordinate(x, y, z)\n }\n static compareLocationValues(componentIndex0, segmentIndex0, segmentFraction0, componentIndex1, segmentIndex1, segmentFraction1) {\n if (componentIndex0 < componentIndex1) return -1\n if (componentIndex0 > componentIndex1) return 1\n if (segmentIndex0 < segmentIndex1) return -1\n if (segmentIndex0 > segmentIndex1) return 1\n if (segmentFraction0 < segmentFraction1) return -1\n if (segmentFraction0 > segmentFraction1) return 1\n return 0\n }\n static numSegments(line) {\n const npts = line.getNumPoints()\n if (npts <= 1) return 0\n return npts - 1\n }\n getSegmentIndex() {\n return this._segmentIndex\n }\n getComponentIndex() {\n return this._componentIndex\n }\n isEndpoint(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const nseg = LinearLocation.numSegments(lineComp)\n return this._segmentIndex >= nseg || this._segmentIndex === nseg - 1 && this._segmentFraction >= 1.0\n }\n isValid(linearGeom) {\n if (this._componentIndex < 0 || this._componentIndex >= linearGeom.getNumGeometries()) return false\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n if (this._segmentIndex < 0 || this._segmentIndex > lineComp.getNumPoints()) return false\n if (this._segmentIndex === lineComp.getNumPoints() && this._segmentFraction !== 0.0) return false\n if (this._segmentFraction < 0.0 || this._segmentFraction > 1.0) return false\n return true\n }\n normalize() {\n if (this._segmentFraction < 0.0) \n this._segmentFraction = 0.0\n \n if (this._segmentFraction > 1.0) \n this._segmentFraction = 1.0\n \n if (this._componentIndex < 0) {\n this._componentIndex = 0\n this._segmentIndex = 0\n this._segmentFraction = 0.0\n }\n if (this._segmentIndex < 0) {\n this._segmentIndex = 0\n this._segmentFraction = 0.0\n }\n if (this._segmentFraction === 1.0) {\n this._segmentFraction = 0.0\n this._segmentIndex += 1\n }\n }\n toLowest(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const nseg = LinearLocation.numSegments(lineComp)\n if (this._segmentIndex < nseg) return this\n return new LinearLocation(this._componentIndex, nseg - 1, 1.0, false)\n }\n getCoordinate(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const p0 = lineComp.getCoordinateN(this._segmentIndex)\n if (this._segmentIndex >= LinearLocation.numSegments(lineComp)) return p0\n const p1 = lineComp.getCoordinateN(this._segmentIndex + 1)\n return LinearLocation.pointAlongSegmentByFraction(p0, p1, this._segmentFraction)\n }\n getSegmentFraction() {\n return this._segmentFraction\n }\n getSegment(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const p0 = lineComp.getCoordinateN(this._segmentIndex)\n if (this._segmentIndex >= LinearLocation.numSegments(lineComp)) {\n const prev = lineComp.getCoordinateN(lineComp.getNumPoints() - 2)\n return new LineSegment(prev, p0)\n }\n const p1 = lineComp.getCoordinateN(this._segmentIndex + 1)\n return new LineSegment(p0, p1)\n }\n clamp(linear) {\n if (this._componentIndex >= linear.getNumGeometries()) {\n this.setToEnd(linear)\n return null\n }\n if (this._segmentIndex >= linear.getNumPoints()) {\n const line = linear.getGeometryN(this._componentIndex)\n this._segmentIndex = LinearLocation.numSegments(line)\n this._segmentFraction = 1.0\n }\n }\n setToEnd(linear) {\n this._componentIndex = linear.getNumGeometries() - 1\n const lastLine = linear.getGeometryN(this._componentIndex)\n this._segmentIndex = LinearLocation.numSegments(lastLine)\n this._segmentFraction = 0.0\n }\n compareTo(o) {\n const other = o\n if (this._componentIndex < other._componentIndex) return -1\n if (this._componentIndex > other._componentIndex) return 1\n if (this._segmentIndex < other._segmentIndex) return -1\n if (this._segmentIndex > other._segmentIndex) return 1\n if (this._segmentFraction < other._segmentFraction) return -1\n if (this._segmentFraction > other._segmentFraction) return 1\n return 0\n }\n copy() {\n return new LinearLocation(this._componentIndex, this._segmentIndex, this._segmentFraction)\n }\n toString() {\n return 'LinearLoc[' + this._componentIndex + ', ' + this._segmentIndex + ', ' + this._segmentFraction + ']'\n }\n isOnSameSegment(loc) {\n if (this._componentIndex !== loc._componentIndex) return false\n if (this._segmentIndex === loc._segmentIndex) return true\n if (loc._segmentIndex - this._segmentIndex === 1 && loc._segmentFraction === 0.0) return true\n if (this._segmentIndex - loc._segmentIndex === 1 && this._segmentFraction === 0.0) return true\n return false\n }\n snapToVertex(linearGeom, minDistance) {\n if (this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0) return null\n const segLen = this.getSegmentLength(linearGeom)\n const lenToStart = this._segmentFraction * segLen\n const lenToEnd = segLen - lenToStart\n if (lenToStart <= lenToEnd && lenToStart < minDistance) \n this._segmentFraction = 0.0\n else if (lenToEnd <= lenToStart && lenToEnd < minDistance) \n this._segmentFraction = 1.0\n \n }\n compareLocationValues(componentIndex1, segmentIndex1, segmentFraction1) {\n if (this._componentIndex < componentIndex1) return -1\n if (this._componentIndex > componentIndex1) return 1\n if (this._segmentIndex < segmentIndex1) return -1\n if (this._segmentIndex > segmentIndex1) return 1\n if (this._segmentFraction < segmentFraction1) return -1\n if (this._segmentFraction > segmentFraction1) return 1\n return 0\n }\n getSegmentLength(linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n let segIndex = this._segmentIndex\n if (this._segmentIndex >= LinearLocation.numSegments(lineComp)) segIndex = lineComp.getNumPoints() - 2\n const p0 = lineComp.getCoordinateN(segIndex)\n const p1 = lineComp.getCoordinateN(segIndex + 1)\n return p0.distance(p1)\n }\n isVertex() {\n return this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import LinearIterator from './LinearIterator'\nimport LinearLocation from './LinearLocation'\nimport Double from '../../../../java/lang/Double'\nimport LineSegment from '../geom/LineSegment'\nimport Assert from '../util/Assert'\nexport default class LocationIndexOfPoint {\n constructor() {\n LocationIndexOfPoint.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static indexOf(linearGeom, inputPt) {\n const locater = new LocationIndexOfPoint(linearGeom)\n return locater.indexOf(inputPt)\n }\n static indexOfAfter(linearGeom, inputPt, minIndex) {\n const locater = new LocationIndexOfPoint(linearGeom)\n return locater.indexOfAfter(inputPt, minIndex)\n }\n indexOf(inputPt) {\n return this.indexOfFromStart(inputPt, null)\n }\n indexOfFromStart(inputPt, minIndex) {\n let minDistance = Double.MAX_VALUE\n let minComponentIndex = 0\n let minSegmentIndex = 0\n let minFrac = -1.0\n const seg = new LineSegment()\n for (let it = new LinearIterator(this._linearGeom); it.hasNext(); it.next()) \n if (!it.isEndOfLine()) {\n seg.p0 = it.getSegmentStart()\n seg.p1 = it.getSegmentEnd()\n const segDistance = seg.distance(inputPt)\n const segFrac = seg.segmentFraction(inputPt)\n const candidateComponentIndex = it.getComponentIndex()\n const candidateSegmentIndex = it.getVertexIndex()\n if (segDistance < minDistance) \n if (minIndex === null || minIndex.compareLocationValues(candidateComponentIndex, candidateSegmentIndex, segFrac) < 0) {\n minComponentIndex = candidateComponentIndex\n minSegmentIndex = candidateSegmentIndex\n minFrac = segFrac\n minDistance = segDistance\n }\n \n }\n \n if (minDistance === Double.MAX_VALUE) \n return new LinearLocation(minIndex)\n \n const loc = new LinearLocation(minComponentIndex, minSegmentIndex, minFrac)\n return loc\n }\n indexOfAfter(inputPt, minIndex) {\n if (minIndex === null) return this.indexOf(inputPt)\n const endLoc = LinearLocation.getEndLocation(this._linearGeom)\n if (endLoc.compareTo(minIndex) <= 0) return endLoc\n const closestAfter = this.indexOfFromStart(inputPt, minIndex)\n Assert.isTrue(closestAfter.compareTo(minIndex) >= 0, 'computed location is before specified minimum location')\n return closestAfter\n }\n}\n","import LocationIndexOfPoint from './LocationIndexOfPoint'\nexport default class LocationIndexOfLine {\n constructor() {\n LocationIndexOfLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static indicesOf(linearGeom, subLine) {\n const locater = new LocationIndexOfLine(linearGeom)\n return locater.indicesOf(subLine)\n }\n indicesOf(subLine) {\n const startPt = subLine.getGeometryN(0).getCoordinateN(0)\n const lastLine = subLine.getGeometryN(subLine.getNumGeometries() - 1)\n const endPt = lastLine.getCoordinateN(lastLine.getNumPoints() - 1)\n const locPt = new LocationIndexOfPoint(this._linearGeom)\n const subLineLoc = new Array(2).fill(null)\n subLineLoc[0] = locPt.indexOf(startPt)\n if (subLine.getLength() === 0.0) \n subLineLoc[1] = subLineLoc[0].copy()\n else \n subLineLoc[1] = locPt.indexOfAfter(endPt, subLineLoc[0])\n \n return subLineLoc\n }\n}\n","import LinearIterator from './LinearIterator'\nimport LinearLocation from './LinearLocation'\nexport default class LengthLocationMap {\n constructor() {\n LengthLocationMap.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n static getLength(linearGeom, loc) {\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLength(loc)\n }\n static getLocation() {\n if (arguments.length === 2) {\n const linearGeom = arguments[0], length = arguments[1]\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLocation(length)\n } else if (arguments.length === 3) {\n const linearGeom = arguments[0], length = arguments[1], resolveLower = arguments[2]\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLocation(length, resolveLower)\n }\n }\n getLength(loc) {\n let totalLength = 0.0\n const it = new LinearIterator(this._linearGeom)\n while (it.hasNext()) {\n if (!it.isEndOfLine()) {\n const p0 = it.getSegmentStart()\n const p1 = it.getSegmentEnd()\n const segLen = p1.distance(p0)\n if (loc.getComponentIndex() === it.getComponentIndex() && loc.getSegmentIndex() === it.getVertexIndex()) \n return totalLength + segLen * loc.getSegmentFraction()\n \n totalLength += segLen\n }\n it.next()\n }\n return totalLength\n }\n resolveHigher(loc) {\n if (!loc.isEndpoint(this._linearGeom)) return loc\n let compIndex = loc.getComponentIndex()\n if (compIndex >= this._linearGeom.getNumGeometries() - 1) return loc\n do \n compIndex++\n while (compIndex < this._linearGeom.getNumGeometries() - 1 && this._linearGeom.getGeometryN(compIndex).getLength() === 0)\n return new LinearLocation(compIndex, 0, 0.0)\n }\n getLocation() {\n if (arguments.length === 1) {\n const length = arguments[0]\n return this.getLocation(length, true)\n } else if (arguments.length === 2) {\n const length = arguments[0], resolveLower = arguments[1]\n let forwardLength = length\n if (length < 0.0) {\n const lineLen = this._linearGeom.getLength()\n forwardLength = lineLen + length\n }\n const loc = this.getLocationForward(forwardLength)\n if (resolveLower) \n return loc\n \n return this.resolveHigher(loc)\n }\n }\n getLocationForward(length) {\n if (length <= 0.0) return new LinearLocation()\n let totalLength = 0.0\n const it = new LinearIterator(this._linearGeom)\n while (it.hasNext()) {\n if (it.isEndOfLine()) {\n if (totalLength === length) {\n const compIndex = it.getComponentIndex()\n const segIndex = it.getVertexIndex()\n return new LinearLocation(compIndex, segIndex, 0.0)\n }\n } else {\n const p0 = it.getSegmentStart()\n const p1 = it.getSegmentEnd()\n const segLen = p1.distance(p0)\n if (totalLength + segLen > length) {\n const frac = (length - totalLength) / segLen\n const compIndex = it.getComponentIndex()\n const segIndex = it.getVertexIndex()\n return new LinearLocation(compIndex, segIndex, frac)\n }\n totalLength += segLen\n }\n it.next()\n }\n return LinearLocation.getEndLocation(this._linearGeom)\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class LinearGeometryBuilder {\n constructor() {\n LinearGeometryBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFact = null\n this._lines = new ArrayList()\n this._coordList = null\n this._ignoreInvalidLines = false\n this._fixInvalidLines = false\n this._lastPt = null\n const geomFact = arguments[0]\n this._geomFact = geomFact\n }\n getGeometry() {\n this.endLine()\n return this._geomFact.buildGeometry(this._lines)\n }\n getLastCoordinate() {\n return this._lastPt\n }\n endLine() {\n if (this._coordList === null) \n return null\n \n if (this._ignoreInvalidLines && this._coordList.size() < 2) {\n this._coordList = null\n return null\n }\n const rawPts = this._coordList.toCoordinateArray()\n let pts = rawPts\n if (this._fixInvalidLines) pts = this.validCoordinateSequence(rawPts)\n this._coordList = null\n let line = null\n try {\n line = this._geomFact.createLineString(pts)\n } catch (ex) {\n if (ex instanceof IllegalArgumentException) {\n if (!this._ignoreInvalidLines) throw ex\n } else {\n throw ex\n }\n } finally {}\n if (line !== null) this._lines.add(line)\n }\n setFixInvalidLines(fixInvalidLines) {\n this._fixInvalidLines = fixInvalidLines\n }\n add() {\n if (arguments.length === 1) {\n const pt = arguments[0]\n this.add(pt, true)\n } else if (arguments.length === 2) {\n const pt = arguments[0], allowRepeatedPoints = arguments[1]\n if (this._coordList === null) this._coordList = new CoordinateList()\n this._coordList.add(pt, allowRepeatedPoints)\n this._lastPt = pt\n }\n }\n setIgnoreInvalidLines(ignoreInvalidLines) {\n this._ignoreInvalidLines = ignoreInvalidLines\n }\n validCoordinateSequence(pts) {\n if (pts.length >= 2) return pts\n const validPts = [pts[0], pts[0]]\n return validPts\n }\n}\n","import CoordinateList from '../geom/CoordinateList'\nimport hasInterface from '../../../../hasInterface'\nimport LinearIterator from './LinearIterator'\nimport Lineal from '../geom/Lineal'\nimport Assert from '../util/Assert'\nimport LinearGeometryBuilder from './LinearGeometryBuilder'\nexport default class ExtractLineByLocation {\n constructor() {\n ExtractLineByLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n static extract(line, start, end) {\n const ls = new ExtractLineByLocation(line)\n return ls.extract(start, end)\n }\n computeLinear(start, end) {\n const builder = new LinearGeometryBuilder(this._line.getFactory())\n builder.setFixInvalidLines(true)\n if (!start.isVertex()) builder.add(start.getCoordinate(this._line))\n for (let it = new LinearIterator(this._line, start); it.hasNext(); it.next()) {\n if (end.compareLocationValues(it.getComponentIndex(), it.getVertexIndex(), 0.0) < 0) break\n const pt = it.getSegmentStart()\n builder.add(pt)\n if (it.isEndOfLine()) builder.endLine()\n }\n if (!end.isVertex()) builder.add(end.getCoordinate(this._line))\n return builder.getGeometry()\n }\n computeLine(start, end) {\n const coordinates = this._line.getCoordinates()\n const newCoordinates = new CoordinateList()\n let startSegmentIndex = start.getSegmentIndex()\n if (start.getSegmentFraction() > 0.0) startSegmentIndex += 1\n let lastSegmentIndex = end.getSegmentIndex()\n if (end.getSegmentFraction() === 1.0) lastSegmentIndex += 1\n if (lastSegmentIndex >= coordinates.length) lastSegmentIndex = coordinates.length - 1\n if (!start.isVertex()) newCoordinates.add(start.getCoordinate(this._line))\n for (let i = startSegmentIndex; i <= lastSegmentIndex; i++) \n newCoordinates.add(coordinates[i])\n \n if (!end.isVertex()) newCoordinates.add(end.getCoordinate(this._line))\n if (newCoordinates.size() <= 0) newCoordinates.add(start.getCoordinate(this._line))\n let newCoordinateArray = newCoordinates.toCoordinateArray()\n if (newCoordinateArray.length <= 1) \n newCoordinateArray = [newCoordinateArray[0], newCoordinateArray[0]]\n \n return this._line.getFactory().createLineString(newCoordinateArray)\n }\n extract(start, end) {\n if (end.compareTo(start) < 0) \n return this.reverse(this.computeLinear(end, start))\n \n return this.computeLinear(start, end)\n }\n reverse(linear) {\n if (hasInterface(linear, Lineal)) return linear.reverse()\n Assert.shouldNeverReachHere('non-linear geometry encountered')\n return null\n }\n}\n","import LengthIndexOfPoint from './LengthIndexOfPoint'\nimport LocationIndexOfLine from './LocationIndexOfLine'\nimport LengthLocationMap from './LengthLocationMap'\nimport ExtractLineByLocation from './ExtractLineByLocation'\nexport default class LengthIndexedLine {\n constructor() {\n LengthIndexedLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n }\n clampIndex(index) {\n const posIndex = this.positiveIndex(index)\n const startIndex = this.getStartIndex()\n if (posIndex < startIndex) return startIndex\n const endIndex = this.getEndIndex()\n if (posIndex > endIndex) return endIndex\n return posIndex\n }\n locationOf() {\n if (arguments.length === 1) {\n const index = arguments[0]\n return LengthLocationMap.getLocation(this._linearGeom, index)\n } else if (arguments.length === 2) {\n const index = arguments[0], resolveLower = arguments[1]\n return LengthLocationMap.getLocation(this._linearGeom, index, resolveLower)\n }\n }\n project(pt) {\n return LengthIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n positiveIndex(index) {\n if (index >= 0.0) return index\n return this._linearGeom.getLength() + index\n }\n extractPoint() {\n if (arguments.length === 1) {\n const index = arguments[0]\n const loc = LengthLocationMap.getLocation(this._linearGeom, index)\n return loc.getCoordinate(this._linearGeom)\n } else if (arguments.length === 2) {\n const index = arguments[0], offsetDistance = arguments[1]\n const loc = LengthLocationMap.getLocation(this._linearGeom, index)\n const locLow = loc.toLowest(this._linearGeom)\n return locLow.getSegment(this._linearGeom).pointAlongOffset(locLow.getSegmentFraction(), offsetDistance)\n }\n }\n isValidIndex(index) {\n return index >= this.getStartIndex() && index <= this.getEndIndex()\n }\n getEndIndex() {\n return this._linearGeom.getLength()\n }\n getStartIndex() {\n return 0.0\n }\n indexOfAfter(pt, minIndex) {\n return LengthIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex)\n }\n extractLine(startIndex, endIndex) {\n const startIndex2 = this.clampIndex(startIndex)\n const endIndex2 = this.clampIndex(endIndex)\n const resolveStartLower = startIndex2 === endIndex2\n const startLoc = this.locationOf(startIndex2, resolveStartLower)\n const endLoc = this.locationOf(endIndex2)\n return ExtractLineByLocation.extract(this._linearGeom, startLoc, endLoc)\n }\n indexOf(pt) {\n return LengthIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n indicesOf(subLine) {\n const locIndex = LocationIndexOfLine.indicesOf(this._linearGeom, subLine)\n const index = [LengthLocationMap.getLength(this._linearGeom, locIndex[0]), LengthLocationMap.getLength(this._linearGeom, locIndex[1])]\n return index\n }\n}\n","import LineString from '../geom/LineString'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport LinearLocation from './LinearLocation'\nimport LocationIndexOfPoint from './LocationIndexOfPoint'\nimport LocationIndexOfLine from './LocationIndexOfLine'\nimport ExtractLineByLocation from './ExtractLineByLocation'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class LocationIndexedLine {\n constructor() {\n LocationIndexedLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n this.checkGeometryType()\n }\n clampIndex(index) {\n const loc = index.copy()\n loc.clamp(this._linearGeom)\n return loc\n }\n project(pt) {\n return LocationIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n checkGeometryType() {\n if (!(this._linearGeom instanceof LineString || this._linearGeom instanceof MultiLineString)) throw new IllegalArgumentException('Input geometry must be linear')\n }\n extractPoint() {\n if (arguments.length === 1) {\n const index = arguments[0]\n return index.getCoordinate(this._linearGeom)\n } else if (arguments.length === 2) {\n const index = arguments[0], offsetDistance = arguments[1]\n const indexLow = index.toLowest(this._linearGeom)\n return indexLow.getSegment(this._linearGeom).pointAlongOffset(indexLow.getSegmentFraction(), offsetDistance)\n }\n }\n isValidIndex(index) {\n return index.isValid(this._linearGeom)\n }\n getEndIndex() {\n return LinearLocation.getEndLocation(this._linearGeom)\n }\n getStartIndex() {\n return new LinearLocation()\n }\n indexOfAfter(pt, minIndex) {\n return LocationIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex)\n }\n extractLine(startIndex, endIndex) {\n return ExtractLineByLocation.extract(this._linearGeom, startIndex, endIndex)\n }\n indexOf(pt) {\n return LocationIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n indicesOf(subLine) {\n return LocationIndexOfLine.indicesOf(this._linearGeom, subLine)\n }\n}\n","import ArrayList from '../../../../java/util/ArrayList'\nexport default class CollectionUtil {\n static transform(coll, func) {\n const result = new ArrayList()\n for (let i = coll.iterator(); i.hasNext(); ) \n result.add(func.execute(i.next()))\n \n return result\n }\n static select(collection, func) {\n const result = new ArrayList()\n for (let i = collection.iterator(); i.hasNext(); ) {\n const item = i.next()\n if (Boolean.TRUE.equals(func.execute(item))) \n result.add(item)\n \n }\n return result\n }\n static apply(coll, func) {\n for (let i = coll.iterator(); i.hasNext(); ) \n func.execute(i.next())\n \n }\n}\nfunction Function() {}\nCollectionUtil.Function = Function\n","import CoordinateFilter from '../geom/CoordinateFilter'\nexport default class CoordinateArrayFilter {\n constructor() {\n CoordinateArrayFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.pts = null\n this.n = 0\n const size = arguments[0]\n this.pts = new Array(size).fill(null)\n }\n filter(coord) {\n this.pts[this.n++] = coord\n }\n getCoordinates() {\n return this.pts\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\n","import CoordinateFilter from '../geom/CoordinateFilter'\nexport default class CoordinateCountFilter {\n constructor() {\n CoordinateCountFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._n = 0\n }\n filter(coord) {\n this._n++\n }\n getCount() {\n return this._n\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\n","import HashMap from '../../../../java/util/HashMap'\nexport default class ObjectCounter {\n constructor() {\n ObjectCounter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._counts = new HashMap()\n }\n count(o) {\n const counter = this._counts.get(o)\n if (counter === null) return 0; else return counter.count()\n }\n add(o) {\n const counter = this._counts.get(o)\n if (counter === null) this._counts.put(o, new Counter(1)); else counter.increment()\n }\n}\nclass Counter {\n constructor() {\n Counter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.count = 0\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const count = arguments[0]\n this.count = count\n }\n }\n count() {\n return this.count\n }\n increment() {\n this.count++\n }\n}\nObjectCounter.Counter = Counter\n","export default function PrintStream() {}\n","export default function StringReader() {}\n","export default function ByteArrayOutputStream() {}\n","import Exception from '../lang/Exception'\n\nexport default class IOException extends Exception { }","export default function LineNumberReader() {}\n","import PrintStream from '../../../../java/io/PrintStream'\nimport StringReader from '../../../../java/io/StringReader'\nimport System from '../../../../java/lang/System'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport ByteArrayOutputStream from '../../../../java/io/ByteArrayOutputStream'\nimport Assert from './Assert'\nimport IOException from '../../../../java/io/IOException'\nimport LineNumberReader from '../../../../java/io/LineNumberReader'\nexport default class StringUtil {\n static chars(c, n) {\n const ch = new Array(n).fill(null)\n for (let i = 0; i < n; i++) \n ch[i] = c\n \n return new String(ch)\n }\n static getStackTrace() {\n if (arguments.length === 1) {\n const t = arguments[0]\n const os = new ByteArrayOutputStream()\n const ps = new PrintStream(os)\n t.printStackTrace(ps)\n return os.toString()\n } else if (arguments.length === 2) {\n const t = arguments[0], depth = arguments[1]\n let stackTrace = ''\n const stringReader = new StringReader(StringUtil.getStackTrace(t))\n const lineNumberReader = new LineNumberReader(stringReader)\n for (let i = 0; i < depth; i++) \n try {\n stackTrace += lineNumberReader.readLine() + StringUtil.NEWLINE\n } catch (e) {\n if (e instanceof IOException) \n Assert.shouldNeverReachHere()\n else throw e\n } finally {}\n \n return stackTrace\n }\n }\n static spaces(n) {\n return StringUtil.chars(' ', n)\n }\n static split(s, separator) {\n const separatorlen = separator.length\n const tokenList = new ArrayList()\n let tmpString = '' + s\n let pos = tmpString.indexOf(separator)\n while (pos >= 0) {\n const token = tmpString.substring(0, pos)\n tokenList.add(token)\n tmpString = tmpString.substring(pos + separatorlen)\n pos = tmpString.indexOf(separator)\n }\n if (tmpString.length > 0) tokenList.add(tmpString)\n const res = new Array(tokenList.size()).fill(null)\n for (let i = 0; i < res.length; i++) \n res[i] = tokenList.get(i)\n \n return res\n }\n}\nStringUtil.NEWLINE = System.getProperty('line.separator')\n","import SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp'\nimport OverlayOp from '../overlay/OverlayOp'\nexport default class UnionOp {\n get interfaces_() {\n return []\n }\n\n getClass() {\n return UnionOp\n }\n\n static union(g, other) {\n if (g.isEmpty() || other.isEmpty()) {\n if (g.isEmpty() && other.isEmpty()) return OverlayOp.createEmptyResult(OverlayOp.UNION, g, other, g.getFactory())\n if (g.isEmpty()) return other.copy()\n if (other.isEmpty()) return g.copy()\n }\n g.checkNotGeometryCollection(g)\n g.checkNotGeometryCollection(other)\n return SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.UNION)\n }\n}\n","import WKTWriter from './io/WKTWriter'\nimport IsValidOp from './operation/valid/IsValidOp'\nimport InteriorPointArea from './algorithm/InteriorPointArea'\nimport UnaryUnionOp from './operation/union/UnaryUnionOp'\nimport UnionOp from './operation/union/UnionOp'\nimport InteriorPointLine from './algorithm/InteriorPointLine'\nimport IsSimpleOp from './operation/IsSimpleOp'\nimport BufferOp from './operation/buffer/BufferOp'\nimport ConvexHull from './algorithm/ConvexHull'\nimport Centroid from './algorithm/Centroid'\nimport RelateOp from './operation/relate/RelateOp'\nimport InteriorPointPoint from './algorithm/InteriorPointPoint'\nimport DistanceOp from './operation/distance/DistanceOp'\nimport OverlayOp from './operation/overlay/OverlayOp'\nimport BoundaryOp from './operation/BoundaryOp'\nimport Geometry from './geom/Geometry'\nimport LineString from './geom/LineString'\nimport MultiLineString from './geom/MultiLineString'\n\nLineString.prototype.getBoundary = function() {\n return BoundaryOp.getBoundary(this)\n}\n\nMultiLineString.prototype.getBoundary = function() {\n return BoundaryOp.getBoundary(this)\n}\n\nGeometry.prototype.equalsTopo = function(g) {\n return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.equals = function(g) {\n if (g === null) return false\n return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.union = function() {\n if (arguments.length === 0) {\n return UnaryUnionOp.union(this)\n } else if (arguments.length === 1) {\n const other = arguments[0]\n return UnionOp.union(this, other)\n }\n}\nGeometry.prototype.isValid = function() {\n return IsValidOp.isValid(this)\n}\nGeometry.prototype.intersection = function(other) {\n return OverlayOp.intersection(this, other)\n}\nGeometry.prototype.covers = function(g) {\n return RelateOp.covers(this, g)\n}\nGeometry.prototype.coveredBy = function(g) {\n return RelateOp.covers(g, this)\n}\nGeometry.prototype.touches = function(g) {\n return RelateOp.touches(this, g)\n}\nGeometry.prototype.intersects = function(g) {\n return RelateOp.intersects(this, g)\n}\nGeometry.prototype.within = function(g) {\n return RelateOp.contains(g, this)\n}\nGeometry.prototype.overlaps = function(g) {\n return RelateOp.overlaps(this, g)\n}\nGeometry.prototype.disjoint = function(g) {\n return RelateOp.disjoint(this, g)\n}\nGeometry.prototype.crosses = function(g) {\n return RelateOp.crosses(this, g)\n}\nGeometry.prototype.buffer = function() {\n if (arguments.length === 1) {\n const distance = arguments[0]\n return BufferOp.bufferOp(this, distance)\n } else if (arguments.length === 2) {\n const distance = arguments[0]; const quadrantSegments = arguments[1]\n return BufferOp.bufferOp(this, distance, quadrantSegments)\n } else if (arguments.length === 3) {\n const distance = arguments[0]; const quadrantSegments = arguments[1]; const endCapStyle = arguments[2]\n return BufferOp.bufferOp(this, distance, quadrantSegments, endCapStyle)\n }\n}\nGeometry.prototype.convexHull = function() {\n return new ConvexHull(this).getConvexHull()\n}\nGeometry.prototype.relate = function() {\n if (arguments.length === 1) {\n const geometry = arguments[0]\n return RelateOp.relate(this, geometry)\n } else if (arguments.length === 2) {\n const geometry = arguments[0]; const intersectionPattern = arguments[1]\n return RelateOp.relate(this, geometry).matches(intersectionPattern)\n }\n}\nGeometry.prototype.getCentroid = function() {\n if (this.isEmpty()) return this._factory.createPoint()\n const centPt = Centroid.getCentroid(this)\n return this.createPointFromInternalCoord(centPt, this)\n}\nGeometry.prototype.getInteriorPoint = function() {\n if (this.isEmpty()) return this._factory.createPoint()\n let intPt = null\n const dim = this.getDimension()\n if (dim === 0)\n intPt = new InteriorPointPoint(this)\n else if (dim === 1)\n intPt = new InteriorPointLine(this)\n else intPt = new InteriorPointArea(this)\n\n const interiorPt = intPt.getInteriorPoint()\n return this.createPointFromInternalCoord(interiorPt, this)\n}\nGeometry.prototype.symDifference = function(other) {\n return OverlayOp.symDifference(this, other)\n}\nGeometry.prototype.createPointFromInternalCoord = function(coord, exemplar) {\n exemplar.getPrecisionModel().makePrecise(coord)\n return exemplar.getFactory().createPoint(coord)\n}\nGeometry.prototype.toText = function() {\n const writer = new WKTWriter()\n return writer.write(this)\n}\nGeometry.prototype.toString = function() {\n this.toText()\n}\nGeometry.prototype.contains = function(g) {\n return RelateOp.contains(this, g)\n}\nGeometry.prototype.difference = function(other) {\n return OverlayOp.difference(this, other)\n}\nGeometry.prototype.isSimple = function() {\n const op = new IsSimpleOp(this)\n return op.isSimple()\n}\nGeometry.prototype.isWithinDistance = function(geom, distance) {\n const envDist = this.getEnvelopeInternal().distance(geom.getEnvelopeInternal())\n if (envDist > distance) return false\n return DistanceOp.isWithinDistance(this, geom, distance)\n}\nGeometry.prototype.distance = function(g) {\n return DistanceOp.distance(this, g)\n}\n","import * as geom from './org/locationtech/jts/geom'\nimport * as algorithm from './org/locationtech/jts/algorithm'\nimport * as densify from './org/locationtech/jts/densify'\nimport * as dissolve from './org/locationtech/jts/dissolve'\nimport * as geomgraph from './org/locationtech/jts/geomgraph'\nimport * as index from './org/locationtech/jts/index'\nimport * as io from './org/locationtech/jts/io'\nimport * as noding from './org/locationtech/jts/noding'\nimport * as operation from './org/locationtech/jts/operation'\nimport * as precision from './org/locationtech/jts/precision'\nimport * as simplify from './org/locationtech/jts/simplify'\nimport * as triangulate from './org/locationtech/jts/triangulate'\nimport * as linearref from './org/locationtech/jts/linearref'\nimport * as util from './org/locationtech/jts/util'\n\nimport './org/locationtech/jts/monkey'\n\nconst version = 'npm_package_version (git_hash)'\nexport {\n version,\n algorithm,\n densify,\n dissolve,\n geom,\n geomgraph,\n index,\n io,\n noding,\n operation,\n precision,\n simplify,\n triangulate,\n linearref,\n util\n}\n"],"names":["NumberUtil","equalsWithTolerance","x1","x2","tolerance","Math","abs","Exception","Error","constructor","message","name","Object","keys","toString","IllegalArgumentException","Long","high","low","toBinaryString","i","mask","result","Double","NaN","isNaN","n","Number","isInfinite","isFinite","MAX_VALUE","Float64Array","Int32Array","EXP_BIT_MASK","SIGNIF_BIT_MASK","f64buf","i32buf","buffer","doubleToLongBits","value","longBitsToDouble","bits","BIAS","log2","floor","pow","MAX_REL_BITS_INTEGER","x","y","f","skip","sign","exp","NEGATIVE_INFINITY","Infinity","fract","Comparable","Clonable","Comparator","Serializable","RuntimeException","AssertionFailedException","constructor_","apply","arguments","length","call","Assert","shouldNeverReachHere","isTrue","assertion","equals","expectedValue","actualValue","kBuf","ArrayBuffer","kBufAsF64","kBufAsI32","Coordinate","z","c","getZ","NULL_ORDINATE","hashCode","getM","setOrdinate","ordinateIndex","X","Y","Z","setZ","equals2D","other","setM","m","M","getOrdinate","equals3D","equalInZ","setX","compareTo","o","getX","clone","coord","e","CloneNotSupportedException","copy","distance3D","dx","dy","dz","sqrt","getY","setY","distance","setCoordinate","interfaces_","Cloneable","DimensionalComparator","_dimensionsToTest","dimensionsToTest","compare","a","b","c1","c2","compX","compY","compZ","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","join","encodeMultiPointGeometry","ii","encodeGeometryCollectionGeometry","encode","encodeLineStringGeometry","encodeMultiLineStringGeometry","encodePolygonGeometry","encodeMultiPolygonGeometry","encodeGeometryLayout","GeometryEncoder","geometryEncoder","enc","WKTParser","geometryFactory","read","parser","write","WKTWriter","toLineString","LineIntersector","_result","_inputLines","_intPt","_intLineIndex","_isProper","_pa","_pb","computeEdgeDistance","pdx","pdy","nonRobustComputeEdgeDistance","getIndexAlongSegment","segmentIndex","intIndex","computeIntLineIndex","getTopologySummary","catBuilder","isEndPoint","isCollinear","computeIntersection","p3","p4","computeIntersect","getIntersectionNum","dist0","getEdgeDistance","dist1","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","inputLineIndex","getIntersection","NO_INTERSECTION","COLLINEAR_INTERSECTION","getEndpoint","ptIndex","isIntersection","getIntersectionAlongSegment","DONT_INTERSECT","DO_INTERSECT","POINT_INTERSECTION","RobustLineIntersector","nearestEndpoint","nearestPt","minDist","isInSegmentEnvelopes","intPt","env0","env1","intersectionSafe","checkDD","intPtDD","isIn","out","println","computeCollinearIntersection","p1q1p2","p1q2p2","q1p1q2","q1p2q2","Pq1","Pq2","Qp1","Qp2","collinear","LineSegment","ls","midPoint","minX","seg","orient0","orient1","geomFactory","isVertical","li","project","projectionFactor","pf0","pf1","newp0","newp1","angle","atan2","distancePerpendicular","minY","closestPoints","closestPt","close00","closestPoint","close01","close10","close11","factor","maxX","comp0","temp","equalsTopo","lineIntersection","maxY","pointAlongOffset","segmentLengthFraction","offsetDistance","segx","segy","ux","uy","offsetx","offsety","setCoordinates","segmentFraction","inputPt","segFrac","isHorizontal","reflect","A2plusB2","A2subB2","rx","ry","pointAlong","bits0","hash0","bits1","hash1","Location","toLocationSymbol","locationValue","EXTERIOR","BOUNDARY","INTERIOR","NONE","IntersectionMatrix","_matrix","setAll","elements","matches","actualDimensionValue","requiredDimensionSymbol","actualDimensionSymbols","requiredDimensionSymbols","isIntersects","isDisjoint","isCovers","hasPointInCommon","isCoveredBy","dimensionSymbols","row","col","column","isContains","setAtLeast","minimumDimensionSymbols","minimumDimensionValue","setAtLeastIfValid","isWithin","isTouches","dimensionOfGeometryA","dimensionOfGeometryB","isOverlaps","isEquals","builder","ai","bi","transpose","im","isCrosses","Angle","toDegrees","radians","PI_TIMES_2","isAcute","dx0","dy0","dotprod","isObtuse","interiorAngle","anglePrev","angleNext","normalizePositive","angleBetween","tip1","tail","tip2","a1","a2","diff","ang1","ang2","delAngle","toRadians","angleDegrees","getTurn","crossproduct","sin","angleBetweenOriented","angDel","PI_OVER_2","PI_OVER_4","NotRepresentableException","HCoordinate","_x","_y","_w","Triangle","signedArea","m00","m01","m10","m11","interpolateZ","v0","longestSideLength","lenAB","lenBC","lenCA","maxLen","circumcentreDD","ay","bx","by","asqr","bsqr","numx","numy","ccx","ccy","circumcentre","cx","cy","perpendicularBisector","l1","l2","angleBisector","len0","frac","splitPt","area3D","uz","vx","vy","vz","crossx","crossy","crossz","absSq","centroid","inCentre","len1","circum","inCentreX","inCentreY","NoninvertibleTransformationException","msg","AffineTransformation","_m00","_m01","_m02","_m10","_m11","_m12","setToIdentity","matrix","trans","setTransformation","m02","m12","translationInstance","setToTranslation","shearInstance","xShear","yShear","setToShear","reflectionInstance","setToReflection","rotationInstance","theta","cos","sinTheta","cosTheta","setToRotation","scaleInstance","xScale","yScale","setToScale","setToReflectionBasic","c2s2","getInverse","getDeterminant","im00","im10","im01","im11","im02","im12","compose","mp00","mp01","mp02","mp10","mp11","mp12","isIdentity","getMatrixEntries","transform","rotate","composeBefore","shear","g2","xp","yp","Matrix","solve","maxElementRow","swapRows","rowFactor","solution","AffineTransformationBuilder","_src0","_src1","_src2","_dest0","_dest1","_dest2","src0","src1","src2","dest0","dest1","dest2","compute","row0","row1","getTransformation","isSolvable","AffineTransformationFactory","createFromBaseLines","rotPt","ang","srcDist","destDist","createFromControlVectors","ComponentCoordinateExtracter","_coords","coords","GeometryCollectionMapper","_mapOp","mapOp","op","mapper","mapped","GeometryCombiner","_geomFactory","_skipEmpty","_inputGeoms","geoms","extractFactory","combine","combiner","g0","g1","createList","obj0","obj1","list","obj2","extractElements","elems","elemGeom","GeometryEditor","_isUserDataCopied","setCopyUserData","isUserDataCopied","edit","operation","editInternal","editGeometryCollection","editPolygon","collection","collectionForType","newPolygon","hole","GeometryEditorOperation","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","GeometryExtracter","_geometryType","_comps","geometryType","comps","isOfType","GeometryMapper","MapOp","gr","GeometryTransformer","_inputGeom","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformPoint","parent","transformCoordinates","transformPolygon","isAllValidLinearRings","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transGeomList","transformGeom","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","inputGeom","seqSize","LineStringExtracter","getGeometry","getLines","lines","LinearComponentExtracter","_lines","_isForcedToLineString","isForcedToLineString","forceToLineString","setForceToLineString","Collections","reverseOrder","l","pos","alen","singletonList","PointExtracter","_pts","getPoints","PolygonExtracter","getPolygons","ShortCircuitedGeometryVisitor","_isDone","applyTo","visit","GeometricShapeFactory","_geomFact","_precModel","_dim","Dimensions","_nPts","_rotationAngle","geomFact","createSupercircle","power","recipPow","radius","getMinSize","getCentre","r4","xyInt","nSegsInOct","totPts","xInc","x4","coordTrans","setNumPoints","setBase","base","setRotation","setWidth","width","createEllipse","xRadius","yRadius","centreX","centreY","iPt","createSquircle","setEnvelope","setCentre","createArc","startAng","angExtent","angSize","angInc","createArcPolygon","createRectangle","ipt","nSide","XsegLen","YsegLen","createCircle","setHeight","height","setSize","getBase","SineStarFactory","_numArms","_armLengthRatio","origin","nArms","armLengthRatio","gsf","setArmLengthRatio","setNumArms","createSineStar","numArms","armRatio","armMaxLen","insideRadius","ptArcFrac","armAngFrac","armAng","armLenFrac","curveRadius","PointPairDistance","_pt","_distance","_isNull","setMinimum","ptDist","initialize","getDistance","setMaximum","DistanceToPoint","computeDistance","tempSegment","segment","DiscreteHausdorffDistance","_g0","_g1","_ptDist","_densifyFrac","densifyFrac","setDensifyFraction","computeOrientedDistance","discreteGeom","distFilter","MaxPointDistanceFilter","getMaxPointDistance","fracFilter","MaxDensifiedByFractionDistanceFilter","orientedDistance","_maxPtDist","_minPtDist","_euclideanDist","_geom","_numSubSegs","fraction","delx","dely","ItemVisitor","visitItem","item","PointOnGeometryLocator","locate","IntervalRTreeNode","_min","POSITIVE_INFINITY","_max","getMin","queryMin","queryMax","getMax","NodeComparator","mid1","mid2","IntervalRTreeLeafNode","_item","query","visitor","IntervalRTreeBranchNode","_node1","_node2","buildExtent","SortedPackedIntervalRTree","_leaves","_root","_level","buildTree","buildLevel","insert","buildRoot","printNode","node","ArrayListVisitor","_items","getItems","RayCrossingCounter","_p","_crossingCount","_isPointOnSegment","locatePointInRing","counter","countSegment","isOnSegment","getLocation","minx","maxx","orient","isPointInPolygon","IndexedPointInAreaLocator","_index","IntervalIndexedGeometry","rcc","SegmentVisitor","_counter","_isEmpty","addLine","PointLocation","isOnLine","lineIntersector","locateInRing","isInRing","GeometryCollectionIterator","_parent","_atStart","_subcollectionIterator","isAtomic","getName","SimplePointInAreaLocator","locatePointInPolygon","shellLoc","holeLoc","containsPointInPolygon","locateInGeometry","geomi","loc","isContained","SimilarityMeasure","measure","AreaSimilarityMeasure","areaInt","areaUnion","union","HausdorffSimilarityMeasure","diagonalSize","hgt","DENSIFY_FRACTION","envSize","SimilarityMeasureCombiner","measure1","measure2","Centroid","_areaBasePt","_triangleCent3","_areasum2","_cg3","_lineCentSum","_totalLength","_ptCount","_ptCentSum","area2","centroid3","getCentroid","cent","setAreaBasePoint","basePt","addPoint","addLineSegments","lineLen","segmentLen","addHole","isPositiveArea","addTriangle","addShell","EmptyStackException","Stack","pop","peek","empty","search","UniqueCoordinateArrayFilter","_coordSet","_list","filterCoordinates","ConvexHull","_inputPts","extractCoordinates","preSort","RadialComparator","computeOctRing","inputPts","octPts","computeOctPts","lineOrPolygon","cleanRing","linearRing","cleanedRing","previousDistinctCoordinate","currentCoordinate","nextCoordinate","isBetween","cleanedRingCoordinates","c3","reduce","polyPts","reducedSet","reducedPts","padArray3","getConvexHull","sortedPts","cHS","grahamScan","cH","pad","stack","ps","_origin","polarCompare","dxp","dyp","dxq","dyq","oq","InteriorPointArea","_interiorPoint","_maxWidth","process","getInteriorPoint","avg","processPolygon","intPtPoly","InteriorPointPolygon","_polygon","_interiorPointY","_interiorSectionWidth","ScanLineYOrdinateFinder","getScanLineY","isEdgeCrossingCounted","scanY","intersectsHorizontalLine","segDX","segDY","findBestMidpoint","crossings","DoubleComparator","interiorPointX","scanRing","ptPrev","addEdgeCrossing","_poly","_centreY","_hiY","_loY","finder","updateInterval","scanLineY","InteriorPointLine","_centroid","_minDistance","addInterior","addEndpoints","InteriorPointPoint","BoundaryNodeRule","isInBoundary","boundaryCount","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","PointLocator","_boundaryRule","_isIn","_numBoundaries","boundaryRule","locateInPolygonRing","updateLocationInfo","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","ml","mpoly","ptCoord","MinimumBoundingCircle","_input","_extremalPts","_centre","_radius","farthestPoints","dist01","dist12","dist20","pointWitMinAngleWithX","minSin","minAngPt","lowestPoint","pointWithMinAngleWithSegment","Q","minAng","getRadius","getExtremalPoints","computeCirclePoints","hullPts","R","computeCentre","getCircle","centrePoint","getMaximumDiameter","maxDiameter","MinimumDiameter","_isConvex","_convexHullPts","_minBaseSeg","_minWidthPt","_minPtIndex","_minWidth","isConvex","nextIndex","computeC","getMinimumDiameter","getMinimumRectangle","computeSegmentForLine","getWidthCoordinate","computeMinimumDiameter","getSupportingSegment","computeWidthConvex","convexGeom","computeConvexRingMinDiameter","currMaxIndex","findMaxPerpDistance","startIndex","maxPerpDistance","nextPerpDistance","maxIndex","minPara","maxPara","minPerp","maxPerp","paraC","perpC","maxPerpLine","minPerpLine","maxParaLine","minParaLine","Densifier","_distanceTolerance","densifyPoints","distanceTolerance","precModel","densifiedSegCount","densifiedSegLen","segFract","densify","densifier","setDistanceTolerance","getResultGeometry","DensifyTransformer","roughGeom","createValidArea","newPts","roughAreaGeom","Quadrant","isNorthern","quad","NE","NW","isOpposite","quad1","quad2","commonHalfPlane","isInHalfPlane","halfPlane","SE","SW","quadrant","HalfEdge","_orig","_sym","_next","orig","e0","e1","link","find","oNext","isEdgesSorted","lowest","findLowest","eNext","isSorted","directionY","directionPt","eAdd","insertAfter","ePrev","insertionEdge","save","setNext","sym","degree","compareAngularDirection","directionX","quadrant2","prevNode","toStringNode","sb","format","setSym","toStringNodeEdge","MarkHalfEdge","_isMarked","setMarkBoth","isMarked","setMark","markBoth","mark","EdgeGraph","_vertexMap","isValidEdge","cmp","eAdj","eAdjDest","createEdge","addEdge","eSame","getVertexEdges","findEdge","DissolveHalfEdge","_isStart","setStart","isStart","DissolveEdgeGraph","LineDissolver","_graph","_nodeEdgeStack","_ringStartEdge","dissolve","getResult","updateRingStartEdge","computeResult","eNode","stackEdges","buildLines","buildRing","eStartRing","buildLine","eStart","edges","component","lineString","doneStart","Position","opposite","ON","MonotoneChain","mce","chainIndex","computeIntersections","mc","si","computeIntersectsForChain","SweepLineEvent","_label","_xValue","_eventType","_insertEvent","_deleteEventIndex","_obj","insertEvent","DELETE","label","INSERT","isDelete","setDeleteEventIndex","deleteEventIndex","getObject","pe","getInsertEvent","isInsert","isSameLabel","ev","getDeleteEventIndex","EdgeSetIntersector","SegmentIntersector","_hasIntersection","_hasProper","_hasProperInterior","_properIntersectionPoint","_li","_includeProper","_recordIsolated","_isSelfIntersection","_numIntersections","numTests","_bdyNodes","_isDoneWhenProperInt","includeProper","recordIsolated","isAdjacentSegments","isTrivialIntersection","segIndex0","segIndex1","maxSegIndex","getProperIntersectionPoint","setIsDoneIfProperInt","isDoneWhenProperInt","hasProperInteriorIntersection","isBoundaryPointInternal","bdyNodes","hasProperIntersection","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","addIntersections","p00","p01","p10","p11","setIsolated","SimpleMCSweepLineIntersector","events","nOverlaps","prepareEvents","processOverlaps","edges0","edges1","addEdges","testAllSegments","edge","edgeSet","getMonotoneChainEdge","getStartIndexes","ev0","mc0","ev1","mc1","TopologyLocation","location","on","gl","left","right","setAllLocations","locValue","setAllLocationsIfNull","isLine","merge","newLoc","getLocations","flip","setLocations","posIndex","isArea","isAnyNull","setLocation","locIndex","isEqualOnSide","allPositionsEqual","Label","elt","onLoc","lbl","geomIndex","leftLoc","rightLoc","toLineLabel","lineLabel","getGeometryCount","count","side","toLine","EdgeIntersection","getSegmentIndex","print","maxSegmentIndex","SortedMap","BLACK","RED","colorOf","color","parentOf","setColor","leftOf","rightOf","TreeMap","root_","size_","getValue","getKey","oldValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","containsKey","EdgeIntersectionList","_nodeMap","ei","addSplitEdges","edgeList","eiPrev","newEdge","createSplitEdge","ei0","ei1","lastSegStartPt","useIntPt1","Edge","eiNew","IntArrayList","_data","_size","initialCapacity","capacity","MonotoneChainIndexer","toIntArray","getChainStartIndices","startIndexList","findChainEnd","chainQuad","OLDgetChainStartIndices","MonotoneChainEdge","mcb","chainIndex0","chainIndex1","start0","end0","start1","end1","overlaps","mid0","computeIntersects","Depth","_depth","NULL_VALUE","depthAtLocation","getDepth","setDepth","depthValue","minDepth","newValue","getDelta","GraphComponent","_isInResult","_isCovered","_isCoveredSet","_isVisited","setVisited","isVisited","setInResult","isInResult","isCovered","isCoveredSet","setLabel","getLabel","setCovered","updateIM","computeIM","_env","eiList","_mce","_isIsolated","_depthDelta","getCollapsedEdge","newe","isIsolated","setName","isEqualForward","isEqualReverse","iRev","isCollapsed","getMaximumSegmentIndex","getDepthDelta","printReverse","addIntersection","normalizedSegmentIndex","nextSegIndex","nextPt","isPointwiseEqual","setDepthDelta","depthDelta","getEdgeIntersectionList","Node","_coord","_edges","isIncidentEdgeInResult","getEdges","de","getEdge","computeMergedLocation","label2","eltIndex","nLoc","argIndex","onLocation","mergeLabel","thisLoc","setNode","setLabelBoundary","NodeMap","nodeMap","nodeFact","addNode","createNode","getBoundaryNodes","EdgeEnd","_edge","_node","_p0","_p1","_dx","_dy","_quadrant","compareDirection","getDy","className","lastDotPos","lastIndexOf","getDirectedCoordinate","getDx","getQuadrant","getNode","computeLabel","boundaryNodeRule","TopologyException","DirectedEdge","_isForward","_nextMin","_edgeRing","_minEdgeRing","computeDirectedLabel","depthFactor","currLocation","nextLocation","getNextMin","getNext","depthVal","isInteriorAreaEdge","setNextMin","nextMin","setMinEdgeRing","minEdgeRing","isLineEdge","isExteriorIfArea0","isExteriorIfArea1","setEdgeRing","edgeRing","getMinEdgeRing","getSym","printEdge","setVisitedEdge","setEdgeDepths","depth","directionFactor","oppositePos","delta","oppositeDepth","getEdgeRing","NodeFactory","PlanarGraph","_nodes","_edgeEndList","linkResultDirectedEdges","nodes","nodeit","printEdges","getNodeIterator","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","debugPrint","getEdgeIterator","findEdgeInSameDirection","eCoord","insertEdge","findEdgeEnd","ee","edgesToAdd","de1","de2","getNodes","GeometryGraph","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_invalidPoint","_areaPtLocator","_ptLocator","parentGeom","determineBoundary","insertBoundaryPoint","computeSelfNodes","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","computeAllSegments","addSelfIntersectionNodes","computeSplitEdges","edgelist","computeEdgeIntersections","getBoundaryNodeRule","hasTooFewPoints","insertPoint","addPolygon","addPolygonRing","addLineString","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","lr","cwLeft","cwRight","eLoc","eiIt","addCollection","KdNodeVisitor","KdNode","_left","_right","_count","data","isRepeated","getRight","setLeft","getData","getCount","getLeft","increment","setRight","KdTree","_numberOfNodes","_tolerance","toCoordinates","kdnodes","includeRepeated","matchNode","findBestMatchNode","insertExact","queryEnv","queryNode","currentNode","odd","discriminant","searchLeft","searchRight","BestMatchVisitor","queryEnvelope","leafNode","isOddLevel","isLessThan","isInTolerance","_matchNode","_matchDist","update","NodeBase","_subnode","getSubnodeIndex","centrex","centrey","subnodeIndex","hasChildren","isPrunable","hasItems","addAllItems","resultItems","getNodeCount","subSize","addAllItemsFromOverlapping","searchEnv","isSearchMatch","visitItems","itemEnv","found","maxSubDepth","sqd","DoubleBits","exponent","CVTFWD","powerOf2","NumW","Qty","Sign","Expo","Mant","Bin","Inf","ExW","Key","computeKey","computeQuadLevel","dMax","level","getLevel","quadSize","getPoint","_centrex","_centrey","createExpanded","addEnv","expandEnv","largerNode","insertNode","getSubnode","createSubnode","miny","maxy","sqEnv","childNode","IntervalSize","isZeroWidth","maxAbs","scaledInterval","MIN_BINARY_EXPONENT","Root","insertContained","tree","isZeroX","isZeroY","SpatialIndex","Quadtree","_minExtent","ensureExtent","collectStats","insertEnv","queryAll","foundItems","posEnv","delX","delY","Boundable","getBounds","ItemBoundable","_bounds","bounds","getItem","PriorityQueue","poll","minItem","reorder","child","AbstractNode","_childBoundables","getChildBoundables","addChildBoundable","childBoundable","computeBounds","EnvelopeDistance","maxDistance","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","maximumDistance","env2","minMaxDistance","aminx","aminy","amaxx","amaxy","bminx","bminy","bmaxx","bmaxy","BoundablePair","_boundable1","_boundable2","_itemDistance","boundable1","boundable2","itemDistance","isComposite","expandToQueue","priQ","isComp1","isComp2","expand","isLeaves","nd","bndComposite","bndOther","isFlipped","children","bp","getBoundable","AbstractSTRtree","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","nodeCapacity","compareDoubles","queryInternal","searchBounds","childBoundables","getIntersectsOp","getNodeCapacity","lastNode","build","removeItem","childToRemove","itemsTree","valuesTree","valuesTreeForNode","valuesTreeForChild","boundablesAtLevel","boundables","top","boundable","createHigherLevels","getRoot","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","IntersectsOp","ItemDistance","item1","item2","STRtree","kNearestNeighbors","items","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","nearestNeighbourK","initBndPair","distanceLowerBound","bndPair","pairDistance","bp1","bp2","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","yComparator","minLeafCount","xComparator","nearestNeighbour","itemDist","minPair","bnd","isWithinDistance","distanceUpperBound","aBounds","bBounds","geometryTypes","GeoJSONParser","json","JSON","Feature","feature","bbox","FeatureCollection","featureCollection","features","sub","multipoint","geoJson","linestring","multilinestring","shellGeoJson","holeGeoJson","multipolygon","GeoJSONReader","GeoJSONWriter","WKTReader","p2c","OL3Parser","olReference","ol","inject","convertFromPoint","convertFromLineString","convertFromLinearRing","convertFromPolygon","convertFromMultiPoint","convertFromMultiLineString","convertFromMultiPolygon","convertFromCollection","getLinearRings","multiPoint","multiLineString","getLineStrings","multiPolygon","getGeometries","convertToPoint","convertToLineString","convertToLinearRing","convertToPolygon","convertToMultiPoint","convertToMultiLineString","convertToMultiPolygon","convertToCollection","geometryCollection","SegmentPointComparator","relativeSign","octant","xSign","ySign","compareValue","compareSign0","compareSign1","SegmentNode","_segString","_segmentOctant","_isInterior","segString","segmentOctant","isInterior","SegmentNodeList","getSplitCoordinates","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","createSplitEdgePts","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","NodedSegmentString","getSegmentOctant","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","pt0","splitn","splitnPts","ptn","Octant","adx","ady","SegmentString","setData","NodableSegmentString","_nodeList","getNodedSubstrings","segStrings","resultEdgelist","ss","getNodeList","safeOctant","addIntersectionNode","MonotoneChainOverlapAction","_overlapSeg1","_overlapSeg2","overlap","mc2","start2","getLineSegment","_start","_end","_context","_id","context","computeSelect","mcs","select","computeOverlaps","mco","setId","id","getEndIndex","getStartIndex","getContext","getId","MonotoneChainBuilder","safeStart","getChains","mcList","chainStart","chainEnd","Noder","computeNodes","SinglePassNoder","_segInt","segInt","setSegmentIntersector","MCIndexNoder","_monoChains","_idCounter","_nodedSegStrings","_nOverlaps","getMonotoneChains","getIndex","segStr","segChains","inputSegStrings","intersectChains","overlapAction","SegmentOverlapAction","queryChain","overlapChains","testChain","_si","ss1","ss2","processIntersections","ScaledNoder","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","noder","scaleFactor","isIntegerPrecision","rescale","nodedSegmentStrings","roundPts","roundPtsNoDup","splitSS","intSegStrings","BoundaryOp","_bnRule","_endpointMap","bnRule","bop","boundaryMultiLineString","mLine","getEmptyMultiPoint","bdyPts","computeBoundaryCoordinates","boundaryLineString","closedEndpointOnBoundary","addEndpoint","valence","Counter","IsSimpleOp","_isClosedEndpointsInInterior","_nonSimpleLocation","isSimpleMultiPoint","mp","isSimplePolygonal","isSimpleLinearGeometry","hasClosedEndpointIntersection","graph","endPoints","eiInfo","getNonSimpleLocation","hasNonEndpointIntersection","EndpointInfo","computeSimple","isSimpleGeometryCollection","BufferParameters","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","quadrantSegments","setQuadrantSegments","endCapStyle","setEndCapStyle","joinStyle","mitreLimit","setJoinStyle","setMitreLimit","bufferDistanceError","quadSegs","alpha","getEndCapStyle","isSingleSided","JOIN_BEVEL","JOIN_MITRE","getJoinStyle","setSimplifyFactor","simplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","CAP_FLAT","CAP_SQUARE","RightmostEdgeFinder","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","pPrev","pNext","orientation","usePrev","findRightmostEdgeAtNode","star","getRightmostEdge","dirEdgeList","rightmostSide","LinkedList","addLast","removeFirst","shift","BufferSubgraph","_finder","_dirEdgeList","_rightMostCoord","clearVisitedEdges","getRightmostCoordinate","computeNodeDepth","startEdge","computeDepths","copySymDepths","computeDepth","outsideDepth","addReachable","findResultEdges","nodesVisited","nodeQueue","startNode","adjNode","edgeEnv","dirEdge","nodeStack","symNode","getDirectedEdges","EdgeRing","_startDe","_maxNodeDegree","_ring","_isHole","_geometryFactory","computePoints","computeRing","isFirstEdge","addPoints","getLinearRing","computeMaxNodeDegree","getOutgoingDegree","isHole","containsPoint","isShell","getMaxNodeDegree","getShell","deLabel","setShell","toPolygon","holeLR","MinimalEdgeRing","er","MaximalEdgeRing","buildMinimalRings","minEdgeRings","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","PolygonBuilder","_shellList","findEdgeRingContaining","testEr","shellList","testRing","testEnv","minShell","minShellEnv","tryShell","tryShellRing","tryShellEnv","sortShellsAndHoles","edgeRings","freeHoleList","computePolygons","resultPolyList","placeFreeHoles","buildMinimalEdgeRings","maxEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","dirEdges","shellCount","BufferInputLineSimplifier","_inputLine","_distanceTol","_isDeleted","_angleOrientation","inputLine","simplify","distanceTol","simp","isDeletable","i0","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","midIndex","findNextNonDeletedIndex","lastIndex","isMiddleVertexDeleted","isShallowConcavity","isAngleToSimplify","NUM_PTS_TO_CHECK","collapseLine","INIT","KEEP","OffsetSegmentString","_ptList","_minimimVertexDistance","COORDINATE_ARRAY_TYPE","addPt","bufPt","isRedundant","addPts","lastPt","startPt","setMinimumVertexDistance","minimimVertexDistance","OffsetSegmentGenerator","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_bufParams","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","bufParams","MAX_CLOSING_SEG_LEN_FACTOR","addNextSegment","addStartPoint","computeOffsetSegment","outsideTurn","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","offsetL","offsetR","addDirectedFillet","squareCapSideOffset","squareCapLOffset","squareCapROffset","addMitreJoin","offset0","offset1","mitreRatio","addLimitedMitreJoin","OFFSET_SEGMENT_SEPARATION_FACTOR","addBevelJoin","addCornerFillet","createSquare","addSegments","addFirstSegment","startAngle","endAngle","addLastSegment","initSideSegments","s1","s2","ang0","angDiff","angDiffHalf","midAng","mitreMidAng","mitreDist","bevelDelta","bevelHalfLen","bevelMidX","bevelMidY","bevelMidPt","mitreMidLine","bevelEndLeft","bevelEndRight","totalAngle","nSegs","angleInc","offset","sideSign","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","numInt","hasNarrowConcaveAngle","OffsetCurveBuilder","copyCoordinates","getOffsetCurve","isRightSide","posDistance","segGen","getSegGen","computePointCurve","computeOffsetCurve","curvePts","computeSingleSidedBufferCurve","distTol","simplifyTolerance","simp2","simp1","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","isLineOffsetEmpty","lineCoord","getBufferParameters","bufDistance","getRingCurve","SubgraphDepthLocater","_subgraphs","_seg","subgraphs","findStabbedSegments","stabbingRayLeftPt","stabbedSegments","bsg","ds","DepthSegment","_leftDepth","_upwardSeg","orientIndex","compareX","seg0","seg1","compare0","OffsetCurveSetBuilder","_curveBuilder","_curveList","curveBuilder","addRingSide","cwLeftLoc","cwRightLoc","curve","addCurve","addRingBothSides","offsetSide","shellCoord","isErodedCompletely","holeCoord","isTriangleErodedCompletely","triangleCoord","bufferDistance","tri","distToCentre","getCurves","ringCoord","envMinDimension","EdgeEndStar","_edgeMap","_edgeList","_ptInAreaLocation","getNextCW","iNextCW","propagateSideLabels","startLoc","currLoc","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","checkAreaLabelsConsistent","lastEdgeIndex","startLabel","findIndex","eSearch","computeLabelling","hasDimensionalCollapseEdge","getDegree","insertEdgeEnd","DirectedEdgeStar","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","firstOut","incoming","state","nextOut","nextIn","de0","deLast","quad0","updateLabelling","nodeLabel","prevOut","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","currDepth","nextDe","mergeSymLabels","findCoveredLineEdges","eLabel","OverlayNodeFactory","OrientedCoordinateArray","_orientation","compareOriented","orientation1","orientation2","limit1","limit2","compPt","done1","done2","oca","EdgeList","_ocaMap","edgeColl","findEdgeIndex","findEqualEdge","matchEdge","IntersectionAdder","_hasInterior","numIntersections","numInteriorIntersections","numProperIntersections","getLineIntersector","hasInteriorIntersection","BufferBuilder","_workingPrecisionModel","_workingNoder","lLoc","rLoc","convertSegStrings","setWorkingPrecisionModel","insertUniqueEdge","existingEdge","existingLabel","labelToMerge","mergeDelta","existingDelta","newDelta","buildSubgraphs","subgraphList","polyBuilder","processedGraphs","subgraph","locater","createSubgraphs","createEmptyResultGeometry","emptyGeom","getNoder","curveSetBuilder","bufferSegStrList","computeNodedEdges","resultGeom","nodedSegStrings","oldLabel","setNoder","NodingValidator","_segStrings","checkEndPtVertexIntersections","checkInteriorIntersections","ss0","pts0","checkValid","checkCollapses","checkCollapse","HotPixel","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_corner","_safeEnv","initCorners","intersectsScaled","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersectsToleranceSquare","copyScaled","pScaled","getSafeEnvelope","safeTolerance","SAFE_ENV_EXPANSION_FACTOR","intersectsPixelClosure","intersectsLeft","intersectsBottom","addSnappedNode","segIndex","MonotoneChainSelectAction","selectedSegment","MCIndexPointSnapper","snap","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","InteriorIntersectionFinderAdder","_interiorIntersections","getInteriorIntersections","MCIndexSnapRounder","_pm","_pointSnapper","checkCorrectness","inputSegmentStrings","resultSegStrings","nv","printStackTrace","snapRound","intersections","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","snapPts","snapPt","BufferOp","_argGeom","_resultGeometry","_saveException","bufferOp","gBuf","geomBuf","bufOp","params","precisionScaleFactor","maxPrecisionDigits","envMax","expandByDistance","bufEnvMax","bufEnvPrecisionDigits","minUnitLog10","bufferFixedPrecision","fixedPM","bufBuilder","bufferReducedPrecision","precDigits","MAX_PRECISION_DIGITS","precisionDigits","sizeBasedScaleFactor","computeGeometry","bufferOriginalPrecision","argPM","CAP_BUTT","GeometryLocation","_component","_segIndex","INSIDE_AREA","isInsideArea","toPoint","getGeometryComponent","ConnectedElementLocationFilter","_locations","locations","DistanceOp","_terminateDistance","_minDistanceLocation","terminateDistance","distOp","envDist","nearestPoints","computeContainmentDistance","locPtPoly","polyGeomIndex","polyGeom","locationsIndex","polys","insideLocs","locs","ptLoc","computeMinDistanceLinesPoints","locGeom","computeMinDistance","computeFacetDistance","lines0","lines1","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPts","coord0","segClosestPoint","line0","line1","segEnv0","segEnv1","points0","points1","pt1","EdgeString","_directedEdges","forwardDirectedEdges","reverseDirectedEdges","coordinateList","directedEdge","getEdgeDirection","getLine","getComponentWithVisitedState","visitedState","visited","setMarked","marked","setContext","_from","_to","_edgeDirection","_angle","edgeDirection","toEdges","isRemoved","getDirectionPt","getAngle","getFromNode","setEdge","getToNode","LineMergeDirectedEdge","getOutEdges","_dirEdge","setDirectedEdges","addOutEdge","getDirEdge","fromNode","getOppositeNode","_outEdges","_sorted","getNextEdge","sortEdges","getNextCWEdge","modi","_deStar","deStar","getEdgesBetween","node0","node1","commonEdges","retainAll","LineMergeEdge","_line","_dirEdges","findNodesOfDegree","nodesFound","nodeIterator","dirEdgeIterator","edgeIterator","outEdges","findNode","LineMergeGraph","startCoordinate","endCoordinate","endNode","directedEdge0","directedEdge1","LineMerger","_mergedLineStrings","_edgeStrings","buildEdgeStringsForUnprocessedNodes","buildEdgeStringsStartingAt","buildEdgeStringsForNonDegree2Nodes","buildEdgeStringsForObviousStartNodes","getMergedLineStrings","buildEdgeStringStartingWith","buildEdgeStringsForIsolatedLoops","edgeString","Subgraph","_parentGraph","parentGraph","getParent","ConnectedSubgraphFinder","findSubgraph","getConnectedSubgraphs","toNode","LineSequencer","_lineCount","_isRun","_sequencedGeometry","_isSequenceable","findUnvisitedBestOrientedDE","wellOrientedDE","unvisitedDE","findLowestDegreeNode","minDegree","minDegreeNode","isSequenced","mls","prevSubgraphNodes","currNodes","revPts","sequence","sequencer","getSequencedLineStrings","hasSequence","oddDegreeCount","computeSequence","sequences","findSequences","buildSequencedGeometry","finalLineCount","csFinder","findSequence","addReverseSubpath","lit","expectedClosed","unvisitedOutDE","startDE","startDESym","listIterator","hasPrevious","previous","orientedSeq","newSeq","addFirst","endEdge","flipSeq","hasDegree1Node","hasObviousStartNode","lineToAdd","isSequenceable","LineStringSnapper","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","srcLine","snapTolerance","srcPts","snapVertices","srcCoords","srcPt","snapVert","findSnapForVertex","snapTo","snapSegments","distinctPtCount","findSegmentIndexToSnap","snapIndex","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","GeometrySnapper","_srcGeom","srcGeom","snapGeom","snapper0","snapper1","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","fixedSnapTol","minDimension","snapTol","SNAP_PRECISION_FACTOR","snapToSelf","cleanResult","extractTargetCoordinates","snapTrans","SnapTransformer","snappedGeom","computeSnapTolerance","ringPts","minSegLen","computeMinimumSegmentLength","ptSet","segLen","_snapPts","_isSelfSnap","isSelfSnap","snapLine","snapper","BasicSegmentString","NodingIntersectionFinder","_findAllIntersections","_isCheckEndSegmentsOnly","_keepIntersections","_isInteriorIntersectionsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","createAllIntersectionsFinder","setFindAllIntersections","isInteriorVertexIntersection","isEnd0","isEnd1","isEnd00","isEnd01","isEnd10","isEnd11","createInteriorIntersectionCounter","setInteriorIntersectionsOnly","setKeepIntersections","createIntersectionCounter","isEndSegment","createAnyIntersectionFinder","createInteriorIntersectionsFinder","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","findAllIntersections","keepIntersections","isSameSegString","isSameSegment","isEndSegPresent","isInteriorInt","isInteriorVertexInt","isAdjacentSegment","isInteriorIntersectionsOnly","FastNodingValidator","_isValid","execute","getErrorMessage","intSegs","EdgeNodingValidator","_nv","toSegmentStrings","validator","LineBuilder","_op","_lineEdgesList","_resultLineList","ptLocator","collectLines","opCode","getGraph","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","targetIndex","getArgGeometry","OverlayOp","isResultOfOp","isCoveredByA","labelIsolatedLines","edgesList","INTERSECTION","PointBuilder","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","CommonBits","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","numBits","signExpBits","numSignExp","numCommonMostSigMantissaBits","zeroLowerBits","numStr","padStr","bitStr","getBit","nBits","prop","num1","num2","CommonBitsRemover","_commonCoord","_ccFilter","CommonCoordinateFilter","addCommonBits","Translater","removeCommonBits","invCoord","getCommonCoordinate","_commonBitsX","_commonBitsY","SnapOverlayOp","_cbr","overlayOp","UNION","symDifference","SYMDIFFERENCE","difference","DIFFERENCE","selfSnap","remGeom","prepareResult","prepGeom","SnapIfNeededOverlayOp","isSuccess","savedException","GeometryGraphOperation","_resultPrecisionModel","_arg","setComputationPrecision","_resultGeom","_resultPolyList","geom1","gov","geomOv","createEmptyResult","resultDimension","dim0","dim1","overlayOpCode","resultDim","loc0","loc1","cancelDuplicateResultEdges","resultPointList","resultLineList","opcode","replaceCollapsedEdges","newEdges","updateNodeLabelling","computeOverlay","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","lineBuilder","pointBuilder","labelIncompleteNode","graphNode","newNode","ni","PolygonizeDirectedEdge","setRing","getRing","PolygonizeEdge","ConnectedInteriorTester","_geomGraph","_disconnectedRingcoord","findDifferentPoint","visitInteriorRing","intDe","visitLinkedDirectedEdges","visitShellInteriors","setInteriorEdgesInResult","startDe","buildEdgeRings","hasUnvisitedShellEdge","isInteriorsConnected","EdgeEndBuilder","createEdgeEndForNext","eiCurr","eiNext","createEdgeEndForPrev","computeEdgeEnds","EdgeEndBundle","_edgeEnds","computeLabelOn","foundInterior","computeLabelSide","computeLabelSides","EdgeEndBundleStar","esb","eb","RelateNode","updateIMFromEdges","RelateNodeFactory","RelateNodeGraph","insertEdgeEnds","copyNodesAndLabels","nodeIt","computeIntersectionNodes","eeBuilder","eeList","edgeIt","ConsistentAreaTester","_nodeGraph","isNodeEdgeAreaLabelsConsistent","hasDuplicateRings","eeb","isNodeConsistentArea","intersector","IndexedNestedRingTester","_rings","_totalEnv","_nestedPt","buildIndex","getNestedPoint","isNonNested","innerRing","innerRingPts","results","searchRing","searchRingPts","innerRingPt","IsValidOp","findPtNotNode","isInside","TopologyValidationError","_errorType","errorType","getErrorType","getMessage","errMsg","locStr","ERROR","REPEATED_POINT","HOLE_OUTSIDE_SHELL","NESTED_HOLES","DISCONNECTED_INTERIOR","SELF_INTERSECTION","RING_SELF_INTERSECTION","NESTED_SHELLS","DUPLICATE_RINGS","TOO_FEW_POINTS","INVALID_COORDINATE","RING_NOT_CLOSED","_parentGeometry","_isSelfTouchingRingFormingHoleValid","_validErr","parentGeometry","testCoords","searchEdge","isValidOp","checkInvalidCoordinates","checkHolesNotNested","nestedTester","innerHole","checkConsistentArea","cat","isValidArea","checkShellInsideHole","shellPts","holePts","shellPt","insideHole","holePt","insideShell","checkNoSelfIntersectingRings","checkNoSelfIntersectingRing","checkConnectedInteriors","cit","nodeSet","isFirst","checkHolesInShell","isShellEmpty","pir","outside","checkTooFewPoints","getValidationError","checkClosedRing","checkClosedRings","checkShellsNotNested","setSelfTouchingRingFormingHoleValid","checkShellNotNested","polyShell","insidePolyShell","badNestedPt","_deList","_lowestEdge","_locator","_ringPts","_isProcessed","_isIncludedSet","_isIncluded","findDirEdgesInRing","erList","minRing","minRingEnv","tryEdgeRing","tryRing","isIncluded","isIncludedSet","getLocator","isOuterHole","hasShell","getPolygon","isProcessed","holeER","setIncluded","getOuterHole","adjRing","computeHole","isOuterShell","getLineString","updateIncluded","adjShell","setProcessed","EnvelopeComparator","r0","r1","PolygonizeGraph","findLabeledEdgeRings","edgeRingStarts","currLabel","getDegreeNonDeleted","deleteAllEdges","computeNextCWEdges","prevDE","outDE","computeNextCCWEdges","firstOutDE","prevInDE","inDE","findIntersectionNodes","intNodes","findEdgeRing","computeDepthParity","iNode","linePts","endPt","nStart","nEnd","deleteCutEdges","cutLines","getEdgeRings","maximalRings","convertMaximalToMinimalEdgeRings","edgeRingList","ringEdges","deleteDangles","nodesToRemove","dangleLines","nodeOutEdges","HoleAssigner","_shells","_shellIndex","shells","assignHolesToShells","assigner","holeList","assignHoleToShell","queryOverlappingShells","ringEnv","findShellContaining","candidateShells","Polygonizer","_lineStringAdder","LineStringAdder","_dangles","_cutEdges","_invalidRingLines","_holeList","_polyList","_isCheckingRingsValid","_extractOnlyPolygonal","extractOnlyPolygonal","extractPolygons","includeAll","polyList","findOuterShells","outerHoleER","findDisjointShells","isMoreToScan","polygonize","getInvalidRingLines","findValidRings","validEdgeRingList","invalidRingList","findShellsAndHoles","getDangles","getCutEdges","setCheckRingsValid","isCheckingRingsValid","RelateComputer","_im","_isolatedEdges","arg","computeProperIntersectionIM","dimA","dimB","hasProper","hasProperInterior","labelIsolatedEdges","thisIndex","labelIsolatedEdge","target","computeDisjointIM","labelIsolatedNodes","ee0","ee1","labelNodeEdges","labelIntersectionNodes","labelIsolatedNode","ga","gb","RectangleContains","_rectEnv","rectangle","rc","isContainedInBoundary","isPointContainedInBoundary","isLineStringContainedInBoundary","isLineSegmentContainedInBoundary","RectangleLineIntersector","_diagUp0","_diagUp1","_diagDown0","_diagDown1","rectEnv","segEnv","isSegUpwards","RectangleIntersects","_rectangle","rp","EnvelopeIntersectsVisitor","ecpVisitor","GeometryContainsPointVisitor","riVisitor","RectangleIntersectsSegmentVisitor","_intersects","elementEnv","_rectSeq","_containsPoint","rectPt","_rectIntersector","checkIntersectionWithLineStrings","testLine","checkIntersectionWithSegments","seq1","RelateOp","_relate","getIntersectionMatrix","touches","relate","relOp","crosses","PointGeometryUnion","_pointGeom","_otherGeom","pointGeom","unioner","exteriorCoords","ptComp","InputExtracter","_polygons","extracter","recordDimension","getExtract","OverlapUnion","_isUnionSafe","containsProperly","overlapEnvelope","g0Env","g1Env","overlapEnv","extractBorderSegments","segs","isBorder","unionBuffer","gColl","isBorderSegmentsSame","segsBefore","segsAfter","extractByEnvelope","disjointGeoms","intersectingGeoms","elem","segs0","segs1","g0Copy","g1Copy","disjointPolys","g0Overlap","g1Overlap","unionGeom","unionFull","isUnionOptimized","CascadedPolygonUnion","_inputPolys","restrictToPolygons","reduceToGeometries","geomTree","unionTree","STRTREE_NODE_CAPACITY","itemTree","unionAll","binaryUnion","unionSafe","repeatedUnion","unionActual","bufferUnion","UnaryUnionOp","_extracter","unionNoOpt","unionWithNull","unionPoints","ptGeom","unionLines","lineGeom","unionPolygons","unionLA","PrecisionReducerCoordinateOperation","_targetPM","_removeCollapsed","targetPM","removeCollapsed","reducedCoords","noRepeatedCoordList","noRepeatedCoords","minLength","collapsedCoords","GeometryPrecisionReducer","_changePrecisionModel","_isPointwise","reducer","reducePointwise","setPointwise","fixPolygonalTopology","geomToBuffer","changePM","bufGeom","geomEdit","newFactory","createFactory","finalRemoveCollapsed","reduceGeom","newPM","geomEditor","createEditor","setRemoveCollapsedComponents","inputFactory","setChangePrecisionModel","changePrecisionModel","reducePW","isPointwise","DouglasPeuckerLineSimplifier","_usePt","simplifySection","DouglasPeuckerSimplifier","_isEnsureValidTopology","tss","setEnsureValid","isEnsureValidTopology","DPTransformer","rawGeom","rawAreaGeom","removeDegenerateRings","simpResult","TaggedLineSegment","TaggedLineString","_parentLine","_segs","_resultSegs","_minimumSize","parentLine","minimumSize","addToResult","asLineString","getResultSize","resultSegsSize","getSegment","getParentCoordinates","getMinimumSize","asLinearRing","getSegments","getResultCoordinates","LineSegmentIndex","querySeg","LineSegmentVisitor","itemsFound","_querySeg","TaggedLineStringSimplifier","_inputIndex","_outputIndex","_linePts","inputIndex","outputIndex","isInLineSection","sectionIndex","flatten","newSeg","hasBadIntersection","candidateSeg","hasBadOutputIntersection","hasBadInputIntersection","isValidToSimplify","worstCaseSize","furthestPtIndex","findFurthestPoint","querySegs","maxDist","midPt","TaggedLinesSimplifier","taggedLines","tlss","TopologyPreservingSimplifier","_lineSimplifier","_linestringMap","LineStringMapBuilderFilter","LineStringTransformer","linestringMap","taggedLine","tps","minSize","VWLineSimplifier","simplifyVertex","vwLine","curr","minArea","minVertex","isLive","VWVertex","_prev","_area","MAX_AREA","_isLive","first","v","setPrev","updateArea","tmpPrev","tmpNext","VWSimplifier","VWTransformer","SplitSegment","_segLen","_splitPt","_minimumLen","pointAlongReverse","splitAt","minFrac","actualLen","getConstrainedLength","setMinimumLength","minLen","getSplitPoint","ConstraintSplitPointFinder","findSplitPoint","encroachPt","NonEncroachingSplitPointFinder","projectedSplitPoint","lineSeg","projPt","midPtLen","splitSeg","nonEncroachDiam","maxSplitLen","TrianglePredicate","triArea","isInCircleDDNormalized","bdx","bdy","cdx","cdy","abdet","bcdet","cadet","alift","blift","clift","isInCircle","checkRobustInCircle","nonRobustInCircle","isInCircleNonRobust","isInCircleDD","isInCircleDDSlow","isInCircleCC","circumCentre","isInCircleDDFast","aTerm","triAreaDDFast","bTerm","cTerm","pTerm","cc","ccRadius","pRadiusDiff","isInCircleNormalized","triAreaDDSlow","isInCircleRobust","t1","t2","Vertex","_z","ptLen","pz","circleCenter","cab","bisector","cbc","hcc","nre","err","dot","magn","interpolateZValue","xm","ym","zm","crossProduct","times","cross","classify","sa","BEHIND","BEYOND","ORIGIN","DESTINATION","BETWEEN","circumRadiusRatio","edgeLength","el","ConstraintVertex","_isOnConstraint","_constraint","getConstraint","setOnConstraint","isOnConstraint","setConstraint","constraint","QuadEdge","_rot","_vertex","makeEdge","q0","q3","setOrig","setDest","oPrev","lNext","rot","beta","t3","t4","connect","equalsNonOriented","qe","equalsOriented","toLineSegment","dNext","lPrev","rPrev","invRot","delete","rNext","getPrimary","dPrev","IncrementalDelaunayTriangulator","_subdiv","_isUsingTolerance","subdiv","getTolerance","insertSite","isVertexOfEdge","isOnEdge","insertSites","vertices","QuadEdgeLocator","LastFoundQuadEdgeLocator","_lastEdge","locateFromEdge","LocateFailureException","msgWithSpatial","TriangleVisitor","triEdges","QuadEdgeSubdivision","_visitedKey","_quadEdges","_startingEdge","_edgeCoincidenceTolerance","_frameVertex","_frameEnv","_triEdges","EDGE_COINCIDENCE_TOL_FACTOR","createFrame","initSubdiv","getTriangleEdges","startQE","triEdge","getTriangleVertices","includeFrame","TriangleVertexListVisitor","visitTriangles","isFrameVertex","getVoronoiCellPolygon","cellPts","cellPoly","setLocator","locator","ea","ec","isFrameBorderEdge","leftTri","rightTri","vLeftTriOther","vRightTriOther","triVisitor","edgeStack","visitedEdges","fetchTriangleToVisit","isFrameEdge","getTriangleCoordinates","TriangleCoordinatesVisitor","getTriangles","getVertices","vd","edgeCount","isFrame","quadEdges","getPrimaryEdges","getVertexUniqueEdges","visitedVertices","qd","TriangleEdgesListVisitor","priQE","eSym","eRot","eRotSym","iter","maxIter","getVoronoiCellPolygons","TriangleCircumcentreVisitor","cells","getVoronoiDiagram","vorCells","triPtsList","tris","triPt","locEdge","ccVertex","_triList","_coordList","_triCoords","checkTriangleSize","Segment","_ls","z1","z2","getEndZ","getStartZ","getStart","getEnd","getEndY","getStartX","getStartY","getEndX","ConstraintEnforcementException","msgWithCoord","ConformingDelaunayTriangulator","_initialVertices","_segVertices","_segments","_incDel","_convexHull","_splitFinder","_kdt","_vertexFactory","_computeAreaEnv","initialVertices","computeVertexEnvelope","getInitialVertices","getKDT","enforceConstraints","addConstraintVertices","splits","enforceGabriel","MAX_SPLIT_ITER","getVertexFactory","getPointArray","setConstraints","segments","segVertices","computeConvexHull","hull","findNonGabrielPoint","segRadius","closestNonGabriel","nextNode","testRadius","testDist","getConstraintSegments","setSplitPointFinder","splitFinder","segsToInsert","newSegments","segsToRemove","splitVertex","createVertex","insertedVertex","removeAll","getSubdivision","computeBoundingBox","vertexEnv","allPointsEnv","setVertexFactory","vertexFactory","formInitialDelaunay","kdnode","snappedV","DelaunayTriangulationBuilder","_siteCoords","extractUniqueCoordinates","unique","coordsCopy","toVertices","verts","siteEnv","triangulator","setTolerance","setSites","ConformingDelaunayTriangulationBuilder","_constraintLines","_constraintVertexMap","createConstraintSegments","constraintSegs","createSiteVertices","createVertices","sites","cdt","constraintLines","VoronoiDiagramBuilder","_clipEnv","_diagramEnv","clipGeometryCollection","clipEnv","clipPoly","clipped","getDiagram","setClipEnvelope","LinearIterator","_linearGeom","_numLines","_currentLine","_componentIndex","_vertexIndex","linear","getComponentIndex","segmentEndVertexIndex","linearGeom","componentIndex","loadCurrentLine","getSegmentFraction","getVertexIndex","getSegmentEnd","getSegmentStart","isEndOfLine","LengthIndexOfPoint","indexOfAfter","minIndex","indexOfFromStart","ptMeasure","segmentStartMeasure","segDistance","segMeasureToPt","segmentNearestMeasure","closestAfter","projFactor","LinearLocation","_segmentIndex","_segmentFraction","doNormalize","getEndLocation","setToEnd","pointAlongSegmentByFraction","compareLocationValues","componentIndex0","segmentIndex0","segmentFraction0","componentIndex1","segmentIndex1","segmentFraction1","numSegments","isEndpoint","lineComp","nseg","toLowest","lastLine","isOnSameSegment","snapToVertex","getSegmentLength","lenToStart","lenToEnd","isVertex","LocationIndexOfPoint","minComponentIndex","minSegmentIndex","candidateComponentIndex","candidateSegmentIndex","endLoc","LocationIndexOfLine","indicesOf","subLine","locPt","subLineLoc","LengthLocationMap","resolveLower","totalLength","resolveHigher","compIndex","forwardLength","getLocationForward","LinearGeometryBuilder","_ignoreInvalidLines","_fixInvalidLines","_lastPt","endLine","getLastCoordinate","rawPts","validCoordinateSequence","setFixInvalidLines","fixInvalidLines","allowRepeatedPoints","setIgnoreInvalidLines","ignoreInvalidLines","validPts","ExtractLineByLocation","computeLinear","computeLine","startSegmentIndex","lastSegmentIndex","newCoordinateArray","LengthIndexedLine","clampIndex","positiveIndex","locationOf","extractPoint","locLow","isValidIndex","extractLine","startIndex2","endIndex2","resolveStartLower","LocationIndexedLine","checkGeometryType","indexLow","CollectionUtil","func","Boolean","Function","CoordinateArrayFilter","CoordinateCountFilter","_n","ObjectCounter","_counts","PrintStream","StringReader","ByteArrayOutputStream","IOException","LineNumberReader","StringUtil","chars","String","getStackTrace","os","stackTrace","stringReader","lineNumberReader","readLine","NEWLINE","spaces","split","separator","separatorlen","tokenList","tmpString","UnionOp","prototype","coveredBy","within","intersectionPattern","centPt","interiorPt","toText","writer","version"],"mappings":"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"}