{"version":3,"file":"jsts.js","sources":["../src/org/locationtech/jts/util/NumberUtil.js","../src/java/lang/IllegalArgumentException.js","../src/java/lang/Long.js","../src/java/lang/Double.js","../src/java/lang/Comparable.js","../src/java/lang/Cloneable.js","../src/java/util/Comparator.js","../src/java/io/Serializable.js","../src/java/lang/RuntimeException.js","../src/org/locationtech/jts/util/AssertionFailedException.js","../src/org/locationtech/jts/util/Assert.js","../src/org/locationtech/jts/geom/Coordinate.js","../src/hasInterface.js","../src/java/util/Collection.js","../src/java/util/IndexOutOfBoundsException.js","../src/java/util/List.js","../src/java/util/NoSuchElementException.js","../src/java/util/ArrayList.js","../src/org/locationtech/jts/geom/CoordinateList.js","../src/org/locationtech/jts/geom/Envelope.js","../src/java/lang/Exception.js","../src/org/locationtech/jts/algorithm/NotRepresentableException.js","../src/java/lang/StringBuffer.js","../src/java/lang/Integer.js","../src/java/lang/Character.js","../src/org/locationtech/jts/math/DD.js","../src/org/locationtech/jts/algorithm/CGAlgorithmsDD.js","../src/org/locationtech/jts/algorithm/Orientation.js","../src/java/lang/System.js","../src/org/locationtech/jts/algorithm/HCoordinate.js","../src/org/locationtech/jts/math/MathUtil.js","../src/org/locationtech/jts/algorithm/Distance.js","../src/org/locationtech/jts/geom/CoordinateSequence.js","../src/org/locationtech/jts/geom/CoordinateSequenceFactory.js","../src/org/locationtech/jts/geom/GeometryComponentFilter.js","../src/org/locationtech/jts/geom/Geometry.js","../src/org/locationtech/jts/geom/CoordinateFilter.js","../src/org/locationtech/jts/algorithm/BoundaryNodeRule.js","../src/org/locationtech/jts/geom/CoordinateArrays.js","../src/java/util/Map.js","../src/java/util/SortedMap.js","../src/java/util/OperationNotSupported.js","../src/java/util/Set.js","../src/java/util/HashSet.js","../src/java/util/TreeMap.js","../src/org/locationtech/jts/geom/Lineal.js","../src/java/util/SortedSet.js","../src/java/util/TreeSet.js","../src/java/util/Arrays.js","../src/org/locationtech/jts/geom/Dimension.js","../src/org/locationtech/jts/geom/GeometryFilter.js","../src/org/locationtech/jts/geom/CoordinateSequenceFilter.js","../src/org/locationtech/jts/geom/GeometryCollection.js","../src/org/locationtech/jts/geom/MultiLineString.js","../src/org/locationtech/jts/operation/BoundaryOp.js","../src/org/locationtech/jts/algorithm/Length.js","../src/java/io/PrintStream.js","../src/java/io/StringReader.js","../src/java/text/DecimalFormat.js","../src/java/io/ByteArrayOutputStream.js","../src/java/io/IOException.js","../src/java/io/LineNumberReader.js","../src/org/locationtech/jts/util/StringUtil.js","../src/java/lang/StringBuilder.js","../src/org/locationtech/jts/geom/CoordinateSequences.js","../src/org/locationtech/jts/geom/LineString.js","../src/org/locationtech/jts/geom/Puntal.js","../src/org/locationtech/jts/geom/Point.js","../src/org/locationtech/jts/algorithm/Area.js","../src/org/locationtech/jts/geom/Polygonal.js","../src/org/locationtech/jts/geom/Polygon.js","../src/org/locationtech/jts/geom/MultiPoint.js","../src/org/locationtech/jts/geom/LinearRing.js","../src/org/locationtech/jts/geom/MultiPolygon.js","../src/org/locationtech/jts/geom/util/GeometryEditor.js","../src/org/locationtech/jts/geom/impl/CoordinateArraySequence.js","../src/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js","../src/java/util/HashMap.js","../src/org/locationtech/jts/geom/PrecisionModel.js","../src/org/locationtech/jts/geom/GeometryFactory.js","../src/org/locationtech/jts/io/WKTParser.js","../src/org/locationtech/jts/io/WKTWriter.js","../src/org/locationtech/jts/algorithm/LineIntersector.js","../src/org/locationtech/jts/algorithm/RobustLineIntersector.js","../src/org/locationtech/jts/geom/LineSegment.js","../src/org/locationtech/jts/geom/Location.js","../src/org/locationtech/jts/geom/IntersectionMatrix.js","../src/org/locationtech/jts/algorithm/Angle.js","../src/org/locationtech/jts/geom/Triangle.js","../src/org/locationtech/jts/geom/util/NoninvertibleTransformationException.js","../src/org/locationtech/jts/geom/util/AffineTransformation.js","../src/org/locationtech/jts/math/Matrix.js","../src/org/locationtech/jts/geom/util/AffineTransformationBuilder.js","../src/org/locationtech/jts/geom/util/AffineTransformationFactory.js","../src/org/locationtech/jts/geom/util/ComponentCoordinateExtracter.js","../src/org/locationtech/jts/geom/util/GeometryCollectionMapper.js","../src/org/locationtech/jts/geom/util/GeometryCombiner.js","../src/org/locationtech/jts/geom/util/GeometryExtracter.js","../src/org/locationtech/jts/geom/util/MapOp.js","../src/org/locationtech/jts/geom/util/GeometryMapper.js","../src/org/locationtech/jts/geom/util/GeometryTransformer.js","../src/org/locationtech/jts/geom/util/LineStringExtracter.js","../src/org/locationtech/jts/geom/util/LinearComponentExtracter.js","../src/java/util/Collections.js","../src/org/locationtech/jts/geom/util/PointExtracter.js","../src/org/locationtech/jts/geom/util/PolygonExtracter.js","../src/org/locationtech/jts/geom/util/ShortCircuitedGeometryVisitor.js","../src/org/locationtech/jts/util/GeometricShapeFactory.js","../src/org/locationtech/jts/geom/util/SineStarFactory.js","../src/org/locationtech/jts/algorithm/distance/PointPairDistance.js","../src/org/locationtech/jts/algorithm/distance/DistanceToPoint.js","../src/org/locationtech/jts/algorithm/distance/DiscreteHausdorffDistance.js","../src/org/locationtech/jts/index/ItemVisitor.js","../src/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeNode.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeLeafNode.js","../src/org/locationtech/jts/index/intervalrtree/IntervalRTreeBranchNode.js","../src/org/locationtech/jts/index/intervalrtree/SortedPackedIntervalRTree.js","../src/org/locationtech/jts/index/ArrayListVisitor.js","../src/org/locationtech/jts/algorithm/RayCrossingCounter.js","../src/org/locationtech/jts/algorithm/locate/IndexedPointInAreaLocator.js","../src/org/locationtech/jts/algorithm/PointLocation.js","../src/java/util/Iterator.js","../src/org/locationtech/jts/geom/GeometryCollectionIterator.js","../src/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js","../src/org/locationtech/jts/algorithm/match/SimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/AreaSimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/HausdorffSimilarityMeasure.js","../src/org/locationtech/jts/algorithm/match/SimilarityMeasureCombiner.js","../src/org/locationtech/jts/algorithm/Centroid.js","../src/java/util/EmptyStackException.js","../src/java/util/Stack.js","../src/org/locationtech/jts/util/UniqueCoordinateArrayFilter.js","../src/org/locationtech/jts/algorithm/ConvexHull.js","../src/org/locationtech/jts/algorithm/InteriorPointArea.js","../src/org/locationtech/jts/algorithm/InteriorPointLine.js","../src/org/locationtech/jts/algorithm/InteriorPointPoint.js","../src/org/locationtech/jts/algorithm/PointLocator.js","../src/org/locationtech/jts/algorithm/MinimumBoundingCircle.js","../src/org/locationtech/jts/algorithm/MinimumDiameter.js","../src/org/locationtech/jts/densify/Densifier.js","../src/org/locationtech/jts/geomgraph/Quadrant.js","../src/org/locationtech/jts/edgegraph/HalfEdge.js","../src/org/locationtech/jts/edgegraph/MarkHalfEdge.js","../src/org/locationtech/jts/edgegraph/EdgeGraph.js","../src/org/locationtech/jts/dissolve/DissolveHalfEdge.js","../src/org/locationtech/jts/dissolve/DissolveEdgeGraph.js","../src/org/locationtech/jts/dissolve/LineDissolver.js","../src/org/locationtech/jts/geomgraph/Position.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChain.js","../src/org/locationtech/jts/geomgraph/index/SweepLineEvent.js","../src/org/locationtech/jts/geomgraph/index/EdgeSetIntersector.js","../src/org/locationtech/jts/geomgraph/index/SegmentIntersector.js","../src/org/locationtech/jts/geomgraph/index/SimpleMCSweepLineIntersector.js","../src/org/locationtech/jts/geomgraph/TopologyLocation.js","../src/org/locationtech/jts/geomgraph/Label.js","../src/org/locationtech/jts/geomgraph/EdgeIntersection.js","../src/org/locationtech/jts/geomgraph/EdgeIntersectionList.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js","../src/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js","../src/org/locationtech/jts/geomgraph/Depth.js","../src/org/locationtech/jts/geomgraph/GraphComponent.js","../src/org/locationtech/jts/geomgraph/Edge.js","../src/org/locationtech/jts/geomgraph/Node.js","../src/org/locationtech/jts/geomgraph/NodeMap.js","../src/org/locationtech/jts/geomgraph/EdgeEnd.js","../src/org/locationtech/jts/geom/TopologyException.js","../src/org/locationtech/jts/geomgraph/DirectedEdge.js","../src/org/locationtech/jts/geomgraph/NodeFactory.js","../src/org/locationtech/jts/geomgraph/PlanarGraph.js","../src/org/locationtech/jts/geomgraph/GeometryGraph.js","../src/org/locationtech/jts/index/kdtree/KdNodeVisitor.js","../src/org/locationtech/jts/index/kdtree/KdNode.js","../src/org/locationtech/jts/index/kdtree/KdTree.js","../src/org/locationtech/jts/index/quadtree/NodeBase.js","../src/org/locationtech/jts/index/quadtree/DoubleBits.js","../src/org/locationtech/jts/index/quadtree/Key.js","../src/org/locationtech/jts/index/quadtree/Node.js","../src/org/locationtech/jts/index/quadtree/IntervalSize.js","../src/org/locationtech/jts/index/quadtree/Root.js","../src/org/locationtech/jts/index/SpatialIndex.js","../src/org/locationtech/jts/index/quadtree/Quadtree.js","../src/org/locationtech/jts/index/strtree/Boundable.js","../src/org/locationtech/jts/index/strtree/ItemBoundable.js","../src/org/locationtech/jts/util/PriorityQueue.js","../src/org/locationtech/jts/index/strtree/AbstractNode.js","../src/org/locationtech/jts/index/strtree/BoundablePair.js","../src/org/locationtech/jts/index/strtree/AbstractSTRtree.js","../src/org/locationtech/jts/index/strtree/ItemDistance.js","../src/org/locationtech/jts/index/strtree/STRtree.js","../src/org/locationtech/jts/io/GeoJSONParser.js","../src/org/locationtech/jts/io/GeoJSONReader.js","../src/org/locationtech/jts/io/GeoJSONWriter.js","../src/org/locationtech/jts/io/WKTReader.js","../src/org/locationtech/jts/io/OL3Parser.js","../src/org/locationtech/jts/noding/SegmentPointComparator.js","../src/org/locationtech/jts/noding/SegmentNode.js","../src/org/locationtech/jts/noding/SegmentNodeList.js","../src/org/locationtech/jts/noding/Octant.js","../src/org/locationtech/jts/noding/SegmentString.js","../src/org/locationtech/jts/noding/NodableSegmentString.js","../src/org/locationtech/jts/noding/NodedSegmentString.js","../src/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js","../src/org/locationtech/jts/index/chain/MonotoneChain.js","../src/org/locationtech/jts/index/chain/MonotoneChainBuilder.js","../src/org/locationtech/jts/noding/Noder.js","../src/org/locationtech/jts/noding/SinglePassNoder.js","../src/org/locationtech/jts/noding/MCIndexNoder.js","../src/org/locationtech/jts/noding/ScaledNoder.js","../src/org/locationtech/jts/operation/IsSimpleOp.js","../src/org/locationtech/jts/operation/buffer/BufferParameters.js","../src/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js","../src/java/util/LinkedList.js","../src/org/locationtech/jts/operation/buffer/BufferSubgraph.js","../src/org/locationtech/jts/geomgraph/EdgeRing.js","../src/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js","../src/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js","../src/org/locationtech/jts/operation/overlay/PolygonBuilder.js","../src/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js","../src/org/locationtech/jts/operation/buffer/OffsetSegmentString.js","../src/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js","../src/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js","../src/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js","../src/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js","../src/org/locationtech/jts/geomgraph/EdgeEndStar.js","../src/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","../src/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js","../src/org/locationtech/jts/noding/OrientedCoordinateArray.js","../src/org/locationtech/jts/geomgraph/EdgeList.js","../src/org/locationtech/jts/noding/SegmentIntersector.js","../src/org/locationtech/jts/noding/IntersectionAdder.js","../src/org/locationtech/jts/operation/buffer/BufferBuilder.js","../src/org/locationtech/jts/noding/NodingValidator.js","../src/org/locationtech/jts/noding/snapround/HotPixel.js","../src/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js","../src/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js","../src/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js","../src/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js","../src/org/locationtech/jts/operation/buffer/BufferOp.js","../src/org/locationtech/jts/operation/distance/GeometryLocation.js","../src/org/locationtech/jts/operation/distance/ConnectedElementLocationFilter.js","../src/org/locationtech/jts/operation/distance/DistanceOp.js","../src/org/locationtech/jts/operation/linemerge/EdgeString.js","../src/org/locationtech/jts/planargraph/GraphComponent.js","../src/org/locationtech/jts/planargraph/DirectedEdge.js","../src/org/locationtech/jts/operation/linemerge/LineMergeDirectedEdge.js","../src/org/locationtech/jts/planargraph/Edge.js","../src/org/locationtech/jts/planargraph/DirectedEdgeStar.js","../src/org/locationtech/jts/planargraph/Node.js","../src/org/locationtech/jts/operation/linemerge/LineMergeEdge.js","../src/org/locationtech/jts/planargraph/NodeMap.js","../src/org/locationtech/jts/planargraph/PlanarGraph.js","../src/org/locationtech/jts/operation/linemerge/LineMergeGraph.js","../src/org/locationtech/jts/operation/linemerge/LineMerger.js","../src/org/locationtech/jts/operation/overlay/snap/LineStringSnapper.js","../src/org/locationtech/jts/operation/overlay/snap/GeometrySnapper.js","../src/org/locationtech/jts/noding/BasicSegmentString.js","../src/org/locationtech/jts/noding/InteriorIntersectionFinder.js","../src/org/locationtech/jts/noding/FastNodingValidator.js","../src/org/locationtech/jts/geomgraph/EdgeNodingValidator.js","../src/org/locationtech/jts/operation/overlay/LineBuilder.js","../src/org/locationtech/jts/operation/overlay/PointBuilder.js","../src/org/locationtech/jts/precision/CommonBits.js","../src/org/locationtech/jts/precision/CommonBitsRemover.js","../src/org/locationtech/jts/operation/overlay/snap/SnapOverlayOp.js","../src/org/locationtech/jts/operation/overlay/snap/SnapIfNeededOverlayOp.js","../src/org/locationtech/jts/operation/GeometryGraphOperation.js","../src/org/locationtech/jts/operation/overlay/OverlayOp.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeDirectedEdge.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeEdge.js","../src/org/locationtech/jts/operation/valid/ConnectedInteriorTester.js","../src/org/locationtech/jts/operation/relate/EdgeEndBuilder.js","../src/org/locationtech/jts/operation/relate/EdgeEndBundle.js","../src/org/locationtech/jts/operation/relate/EdgeEndBundleStar.js","../src/org/locationtech/jts/operation/relate/RelateNode.js","../src/org/locationtech/jts/operation/relate/RelateNodeFactory.js","../src/org/locationtech/jts/operation/relate/RelateNodeGraph.js","../src/org/locationtech/jts/operation/valid/ConsistentAreaTester.js","../src/org/locationtech/jts/operation/valid/IndexedNestedRingTester.js","../src/org/locationtech/jts/operation/valid/TopologyValidationError.js","../src/org/locationtech/jts/operation/valid/IsValidOp.js","../src/org/locationtech/jts/operation/polygonize/EdgeRing.js","../src/org/locationtech/jts/operation/polygonize/PolygonizeGraph.js","../src/org/locationtech/jts/operation/polygonize/Polygonizer.js","../src/org/locationtech/jts/operation/relate/RelateComputer.js","../src/org/locationtech/jts/operation/predicate/RectangleContains.js","../src/org/locationtech/jts/algorithm/RectangleLineIntersector.js","../src/org/locationtech/jts/operation/predicate/RectangleIntersects.js","../src/org/locationtech/jts/operation/relate/RelateOp.js","../src/org/locationtech/jts/operation/union/PointGeometryUnion.js","../src/org/locationtech/jts/operation/union/CascadedPolygonUnion.js","../src/org/locationtech/jts/operation/union/UnaryUnionOp.js","../src/org/locationtech/jts/precision/PrecisionReducerCoordinateOperation.js","../src/org/locationtech/jts/precision/GeometryPrecisionReducer.js","../src/org/locationtech/jts/simplify/DouglasPeuckerLineSimplifier.js","../src/org/locationtech/jts/simplify/DouglasPeuckerSimplifier.js","../src/org/locationtech/jts/simplify/TaggedLineSegment.js","../src/org/locationtech/jts/simplify/TaggedLineString.js","../src/org/locationtech/jts/simplify/LineSegmentIndex.js","../src/org/locationtech/jts/simplify/TaggedLineStringSimplifier.js","../src/org/locationtech/jts/simplify/TaggedLinesSimplifier.js","../src/org/locationtech/jts/simplify/TopologyPreservingSimplifier.js","../src/org/locationtech/jts/simplify/VWLineSimplifier.js","../src/org/locationtech/jts/simplify/VWSimplifier.js","../src/org/locationtech/jts/triangulate/SplitSegment.js","../src/org/locationtech/jts/triangulate/ConstraintSplitPointFinder.js","../src/org/locationtech/jts/triangulate/NonEncroachingSplitPointFinder.js","../src/org/locationtech/jts/triangulate/quadedge/TrianglePredicate.js","../src/org/locationtech/jts/triangulate/quadedge/Vertex.js","../src/org/locationtech/jts/triangulate/ConstraintVertex.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdge.js","../src/org/locationtech/jts/triangulate/IncrementalDelaunayTriangulator.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdgeLocator.js","../src/org/locationtech/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.js","../src/org/locationtech/jts/triangulate/quadedge/LocateFailureException.js","../src/org/locationtech/jts/triangulate/quadedge/TriangleVisitor.js","../src/org/locationtech/jts/triangulate/quadedge/QuadEdgeSubdivision.js","../src/org/locationtech/jts/triangulate/Segment.js","../src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulator.js","../src/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.js","../src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulationBuilder.js","../src/org/locationtech/jts/triangulate/VoronoiDiagramBuilder.js","../src/org/locationtech/jts/linearref/LinearLocation.js","../src/org/locationtech/jts/linearref/LinearIterator.js","../src/org/locationtech/jts/linearref/LocationIndexOfPoint.js","../src/org/locationtech/jts/linearref/LocationIndexOfLine.js","../src/org/locationtech/jts/linearref/LinearGeometryBuilder.js","../src/org/locationtech/jts/linearref/ExtractLineByLocation.js","../src/org/locationtech/jts/linearref/LocationIndexedLine.js","../src/org/locationtech/jts/linearref/LengthIndexOfPoint.js","../src/org/locationtech/jts/linearref/LengthLocationMap.js","../src/org/locationtech/jts/linearref/LengthIndexedLine.js","../src/org/locationtech/jts/util/CollectionUtil.js","../src/org/locationtech/jts/util/CoordinateArrayFilter.js","../src/org/locationtech/jts/util/CoordinateCountFilter.js","../src/org/locationtech/jts/util/ObjectCounter.js","../src/org/locationtech/jts/operation/union/UnionOp.js","../src/org/locationtech/jts/monkey.js","../src/jsts.js"],"sourcesContent":["export default class NumberUtil {\n constructor () {\n NumberUtil.constructor_.apply(this, arguments)\n }\n\n static equalsWithTolerance (x1, x2, tolerance) {\n return Math.abs(x1 - x2) <= tolerance\n }\n\n getClass () {\n return NumberUtil\n }\n\n get interfaces_ () {\n return []\n }\n}\nNumberUtil.constructor_ = function () {}\n","export default function IllegalArgumentException (message) {\n this.message = message\n}\n","export default function Long (high, low) {\n this.low = low | 0\n this.high = high | 0\n}\n\nLong.toBinaryString = function (i) {\n let mask\n let result = ''\n for (mask = 0x80000000; mask > 0; mask >>>= 1) { result += (i.high & mask) === mask ? '1' : '0' }\n for (mask = 0x80000000; mask > 0; mask >>>= 1) { result += (i.low & mask) === mask ? '1' : '0' }\n return result\n}\n","import Long from './Long'\n\nexport default function Double () { }\n\nDouble.isNaN = n => Number.isNaN(n)\nDouble.isInfinite = n => !Number.isFinite(n)\nDouble.MAX_VALUE = Number.MAX_VALUE\n\nif (typeof Float64Array === 'function' &&\n typeof Int32Array === 'function') {\n // Simple and fast conversion between double and long bits\n // using TypedArrays and ArrayViewBuffers.\n (function () {\n const EXP_BIT_MASK = 0x7ff00000\n const SIGNIF_BIT_MASK = 0xFFFFF\n const f64buf = new Float64Array(1)\n const i32buf = new Int32Array(f64buf.buffer)\n Double.doubleToLongBits = function (value) {\n f64buf[0] = value\n let low = i32buf[0] | 0\n let high = i32buf[1] | 0\n // Check for NaN based on values of bit fields, maximum\n // exponent and nonzero significand.\n if (((high & EXP_BIT_MASK) === EXP_BIT_MASK) &&\n ((high & SIGNIF_BIT_MASK) !== 0) &&\n (low !== 0)) {\n low = 0 | 0\n high = 0x7ff80000 | 0\n }\n return new Long(high, low)\n }\n Double.longBitsToDouble = function (bits) {\n i32buf[0] = bits.low\n i32buf[1] = bits.high\n return f64buf[0]\n }\n })()\n} else {\n // More complex and slower fallback implementation using\n // math and the divide-by-two and multiply-by-two algorithms.\n (function () {\n const BIAS = 1023\n const log2 = Math.log2\n const floor = Math.floor\n const pow = Math.pow\n const MAX_REL_BITS_INTEGER = (function () {\n for (let i = 53; i > 0; i--) {\n const bits = pow(2, i) - 1\n if (floor(log2(bits)) + 1 === i) {\n return bits\n }\n }\n return 0\n })()\n Double.doubleToLongBits = function (value) {\n let x, y, f, bits, skip\n let sign, exp, high, low\n\n // Get the sign bit and absolute value.\n if (value < 0 || 1 / value === Number.NEGATIVE_INFINITY) {\n sign = (1 << 31)\n value = (-value)\n } else {\n sign = 0\n }\n\n // Handle some special values.\n if (value === 0) {\n // Handle zeros (+/-0).\n low = 0 | 0\n high = sign // exponent: 00..00, significand: 00..00\n return new Long(high, low)\n }\n\n if (value === Infinity) {\n // Handle infinity (only positive values for value possible).\n low = 0 | 0\n high = sign | 0x7ff00000 // exponent: 11..11, significand: 00..00\n return new Long(high, low)\n }\n\n if (value !== value) { // eslint-disable-line\n // Handle NaNs (boiled down to only one distinct NaN).\n low = 0 | 0\n high = 0x7ff80000 // exponent: 11..11, significand: 10..00\n return new Long(high, low)\n }\n\n // Preinitialize variables, that are not neccessarily set by\n // the algorithm.\n bits = 0\n low = 0 | 0\n\n // Get the (always positive) integer part of value.\n x = floor(value)\n\n // Process the integer part if it's greater than 1. Zero requires\n // no bits at all, 1 represents the implicit (hidden) leading bit,\n // which must not be written as well.\n if (x > 1) {\n // If we can reliably determine the number of bits required for\n // the integer part,\n if (x <= MAX_REL_BITS_INTEGER) {\n // get the number of bits required to represent it minus 1\n bits = floor(log2(x)) /* + 1 - 1 */\n // and simply copy/shift the integer bits into low and high.\n // That's much faster than the divide-by-two algorithm (saves\n // up to ~60%).\n // We always need to mask out the most significant bit, which\n // is the implicit (aka hidden) bit.\n if (bits <= 20) {\n // The simple case in which the integer fits into the\n // lower 20 bits of the high word is worth to be handled\n // separately (saves ~25%).\n low = 0 | 0\n high = (x << (20 - bits)) & 0xfffff\n } else {\n // Here, the integer part is split into low and high.\n // Since its value may require more than 32 bits, we\n // cannot use bitwise operators (which implicitly cast\n // to Int32), but use arithmetic operators % and / to\n // get low and high parts. The uppper 20 bits go to high,\n // the remaining bits (in f) to low.\n f = bits - 20\n // Like (1 << f) but safe with even more than 32 bits.\n y = pow(2, f)\n low = (x % y) << (32 - f)\n high = (x / y) & 0xfffff\n }\n } else {\n // For greater values, we must use the much slower divide-by-two\n // algorithm. Bits are generated from right to left, that is from\n // least to most significant bit. For each bit, we left-shift both\n // low and high by one and carry bit #0 from high to #31 in low.\n // The next bit is then copied into bit #19 in high, the leftmost\n // bit of the double's significand.\n\n // Preserve x for later user, so work with f.\n f = x\n low = 0 | 0\n while (true) {\n y = f / 2\n f = floor(y)\n if (f === 0) {\n // We just found the most signigicant (1-)bit, which\n // is the implicit bit and so, not stored in the double\n // value. So, it's time to leave the loop.\n break\n }\n // Count this bit, shift low and carry bit #0 from high.\n bits++\n low >>>= 1\n low |= (high & 0x1) << 31\n // Shift high.\n high >>>= 1\n if (y !== f) {\n // Copy the new bit into bit #19 in high (only required if 1).\n high |= 0x80000\n }\n }\n }\n }\n\n // Bias the exponent.\n exp = bits + BIAS\n\n // If the integer part is zero, we've not yet seen the implicit\n // leading bit. Variable skip is later used while processing the\n // fractional part (if any).\n skip = (x === 0)\n\n // Get fraction only into x.\n x = value - x\n\n // If some significand bits are still left to be filled and\n // the fractional part is not zero, convert the fraction using\n // the multiply-by-2 algorithm.\n if (bits < 52 && x !== 0) {\n // Initialize 'buffer' f, into which newly created bits get\n // shifted from right to left.\n f = 0\n\n while (true) {\n y = x * 2\n if (y >= 1) {\n // This is a new 1-bit. Add and count this bit, if not\n // prohibited by skip.\n x = y - 1\n if (!skip) {\n f <<= 1\n f |= 1\n bits++\n } else {\n // Otherwise, decrement the exponent and unset\n // skip, so that all following bits get written.\n exp--\n skip = false\n }\n } else {\n // This is a new 0-bit. Add and count this bit, if not\n // prohibited by skip.\n x = y\n if (!skip) {\n f <<= 1\n bits++\n } else if (--exp === 0) {\n // Otherwise we've just decremented the exponent. If the\n // biased exponent is zero now (-1023), we process a\n // subnormal number, which has no impled leading 1-bit.\n // So, count this 0-bit and unset skip to write out\n // all the following bits.\n bits++\n skip = false\n }\n }\n if (bits === 20) {\n // When 20 bits have been created in total, we're done with\n // the high word. Copy the bits from 'buffer' f into high\n // and reset 'buffer' f. Following bits will end up in the\n // low word.\n high |= f\n f = 0\n } else if (bits === 52) {\n // When 52 bits have been created in total, we're done with\n // low word as well. Copy the bits from 'buffer' f into low\n // and exit the loop.\n low |= f\n break\n }\n if (y === 1) {\n // When y is exactly 1, there is no remainder and the process\n // is complete (the number is finite). Copy the bits from\n // 'buffer' f into either low or high and exit the loop.\n if (bits < 20) {\n high |= (f << (20 - bits))\n } else if (bits < 52) {\n low |= (f << (52 - bits))\n }\n break\n }\n }\n }\n\n // Copy/shift the exponent and sign bits into the high word.\n high |= (exp << 20)\n high |= sign\n\n return new Long(high, low)\n }\n Double.longBitsToDouble = function (bits) {\n let i\n let x, sign, exp, fract\n const high = bits.high\n const low = bits.low\n\n // Extract the sign.\n sign = (high & (1 << 31)) ? -1 : 1\n\n // Extract the unbiased exponent.\n exp = ((high & 0x7ff00000) >> 20) - BIAS\n\n // Calculate the fraction from left to right. Start\n // off with the 20 lower bits from the high word.\n fract = 0\n x = (1 << 19)\n for (i = 1; i <= 20; i++) {\n if (high & x) {\n fract += pow(2, -i)\n }\n x >>>= 1\n }\n // Continue with all 32 bits from the low word.\n x = (1 << 31)\n for (i = 21; i <= 52; i++) {\n if (low & x) {\n fract += pow(2, -i)\n }\n x >>>= 1\n }\n\n // Handle special values.\n // Check for zero and subnormal values.\n if (exp === -BIAS) {\n if (fract === 0) {\n // +/-1.0 * 0.0 => +/-0.0\n return sign * 0\n }\n exp = -1022\n } else if (exp === BIAS + 1) { // Check for +/-Infinity or NaN.\n if (fract === 0) {\n // +/-1.0 / 0.0 => +/-Infinity\n return sign / 0\n }\n return NaN\n } else { // Nothing special? Seems to be a normal number.\n // Add the implicit leading bit (1*2^0).\n fract += 1\n }\n\n return sign * fract * pow(2, exp)\n }\n })()\n}\n","export default function Comparable () {}\n","export default function Clonable () {}\n","export default function Comparator () {}\n","export default function Serializable () {}\n","export default function RuntimeException (message) {\n this.name = 'RuntimeException'\n this.message = message\n this.stack = (new Error()).stack\n Error.call(this, message)\n}\n\nRuntimeException.prototype = Object.create(Error.prototype)\nRuntimeException.prototype.constructor = Error\n","import RuntimeException from '../../../../java/lang/RuntimeException'\nexport default class AssertionFailedException extends RuntimeException {\n constructor () {\n super()\n AssertionFailedException.constructor_.apply(this, arguments)\n }\n\n getClass () {\n return AssertionFailedException\n }\n\n get interfaces_ () {\n return []\n }\n}\nAssertionFailedException.constructor_ = function () {\n if (arguments.length === 0) {\n RuntimeException.constructor_.call(this)\n } else if (arguments.length === 1) {\n const message = arguments[0]\n RuntimeException.constructor_.call(this, message)\n }\n}\n","import AssertionFailedException from './AssertionFailedException'\nexport default class Assert {\n constructor () {\n Assert.constructor_.apply(this, arguments)\n }\n\n static shouldNeverReachHere () {\n if (arguments.length === 0) {\n Assert.shouldNeverReachHere(null)\n } else if (arguments.length === 1) {\n const message = arguments[0]\n throw new AssertionFailedException('Should never reach here' + (message !== null ? ': ' + message : ''))\n }\n }\n\n static isTrue () {\n if (arguments.length === 1) {\n const assertion = arguments[0]\n Assert.isTrue(assertion, null)\n } else if (arguments.length === 2) {\n const assertion = arguments[0]; const message = arguments[1]\n if (!assertion) {\n if (message === null) {\n throw new AssertionFailedException()\n } else {\n throw new AssertionFailedException(message)\n }\n }\n }\n }\n\n static equals () {\n if (arguments.length === 2) {\n const expectedValue = arguments[0]; const actualValue = arguments[1]\n Assert.equals(expectedValue, actualValue, null)\n } else if (arguments.length === 3) {\n const expectedValue = arguments[0]; const actualValue = arguments[1]; const message = arguments[2]\n if (!actualValue.equals(expectedValue)) {\n throw new AssertionFailedException('Expected ' + expectedValue + ' but encountered ' + actualValue + (message !== null ? ': ' + message : ''))\n }\n }\n }\n\n getClass () {\n return Assert\n }\n\n get interfaces_ () {\n return []\n }\n}\nAssert.constructor_ = function () {}\n","import NumberUtil from '../util/NumberUtil'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Double from '../../../../java/lang/Double'\nimport Comparable from '../../../../java/lang/Comparable'\nimport Cloneable from '../../../../java/lang/Cloneable'\nimport Comparator from '../../../../java/util/Comparator'\nimport Serializable from '../../../../java/io/Serializable'\nimport Assert from '../util/Assert'\nexport default class Coordinate {\n constructor () {\n Coordinate.constructor_.apply(this, arguments)\n }\n\n static hashCode () {\n if (arguments.length === 1 && typeof arguments[0] === 'number') {\n const x = arguments[0]\n const f = Double.doubleToLongBits(x)\n return Math.trunc(f ^ f >>> 32)\n }\n }\n\n setOrdinate (ordinateIndex, value) {\n switch (ordinateIndex) {\n case Coordinate.X:\n this.x = value\n break\n case Coordinate.Y:\n this.y = value\n break\n case Coordinate.Z:\n this.z = value\n break\n default:\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n }\n\n equals2D () {\n if (arguments.length === 1) {\n const other = arguments[0]\n if (this.x !== other.x) {\n return false\n }\n if (this.y !== other.y) {\n return false\n }\n return true\n } else if (arguments.length === 2) {\n const c = arguments[0]; const tolerance = arguments[1]\n if (!NumberUtil.equalsWithTolerance(this.x, c.x, tolerance)) {\n return false\n }\n if (!NumberUtil.equalsWithTolerance(this.y, c.y, tolerance)) {\n return false\n }\n return true\n }\n }\n\n getOrdinate (ordinateIndex) {\n switch (ordinateIndex) {\n case Coordinate.X:\n return this.x\n case Coordinate.Y:\n return this.y\n case Coordinate.Z:\n return this.z\n }\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n\n equals3D (other) {\n return this.x === other.x && this.y === other.y && (this.z === other.z || Double.isNaN(this.z) && Double.isNaN(other.z))\n }\n\n equals (other) {\n if (!(other instanceof Coordinate)) {\n return false\n }\n return this.equals2D(other)\n }\n\n equalInZ (c, tolerance) {\n return NumberUtil.equalsWithTolerance(this.z, c.z, tolerance)\n }\n\n compareTo (o) {\n const other = o\n if (this.x < other.x) return -1\n if (this.x > other.x) return 1\n if (this.y < other.y) return -1\n if (this.y > other.y) return 1\n return 0\n }\n\n clone () {\n try {\n const coord = null\n return coord\n } catch (e) {\n if (e instanceof CloneNotSupportedException) {\n Assert.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\")\n return null\n } else throw e\n } finally {}\n }\n\n copy () {\n return new Coordinate(this)\n }\n\n toString () {\n return '(' + this.x + ', ' + this.y + ', ' + this.z + ')'\n }\n\n distance3D (c) {\n const dx = this.x - c.x\n const dy = this.y - c.y\n const dz = this.z - c.z\n return Math.sqrt(dx * dx + dy * dy + dz * dz)\n }\n\n distance (c) {\n const dx = this.x - c.x\n const dy = this.y - c.y\n return Math.sqrt(dx * dx + dy * dy)\n }\n\n hashCode () {\n let result = 17\n result = 37 * result + Coordinate.hashCode(this.x)\n result = 37 * result + Coordinate.hashCode(this.y)\n return result\n }\n\n setCoordinate (other) {\n this.x = other.x\n this.y = other.y\n this.z = other.z\n }\n\n getClass () {\n return Coordinate\n }\n\n get interfaces_ () {\n return [Comparable, Cloneable, Serializable]\n }\n}\nclass DimensionalComparator {\n constructor () {\n DimensionalComparator.constructor_.apply(this, arguments)\n }\n\n static compare (a, b) {\n if (a < b) return -1\n if (a > b) return 1\n if (Double.isNaN(a)) {\n if (Double.isNaN(b)) return 0\n return -1\n }\n if (Double.isNaN(b)) return 1\n return 0\n }\n\n compare (o1, o2) {\n const c1 = o1\n const c2 = o2\n const compX = DimensionalComparator.compare(c1.x, c2.x)\n if (compX !== 0) return compX\n const compY = DimensionalComparator.compare(c1.y, c2.y)\n if (compY !== 0) return compY\n if (this._dimensionsToTest <= 2) return 0\n const compZ = DimensionalComparator.compare(c1.z, c2.z)\n return compZ\n }\n\n getClass () {\n return DimensionalComparator\n }\n\n get interfaces_ () {\n return [Comparator]\n }\n}\nDimensionalComparator.constructor_ = function () {\n this._dimensionsToTest = 2\n if (arguments.length === 0) {\n DimensionalComparator.constructor_.call(this, 2)\n } else if (arguments.length === 1) {\n const dimensionsToTest = arguments[0]\n if (dimensionsToTest !== 2 && dimensionsToTest !== 3) throw new IllegalArgumentException('only 2 or 3 dimensions may be specified')\n this._dimensionsToTest = dimensionsToTest\n }\n}\nCoordinate.DimensionalComparator = DimensionalComparator\nCoordinate.constructor_ = function () {\n this.x = null\n this.y = null\n this.z = null\n if (arguments.length === 0) {\n Coordinate.constructor_.call(this, 0.0, 0.0)\n } else if (arguments.length === 1) {\n const c = arguments[0]\n Coordinate.constructor_.call(this, c.x, c.y, c.z)\n } else if (arguments.length === 2) {\n const x = arguments[0]; const y = arguments[1]\n Coordinate.constructor_.call(this, x, y, Coordinate.NULL_ORDINATE)\n } else if (arguments.length === 3) {\n const x = arguments[0]; const y = arguments[1]; const z = arguments[2]\n this.x = x\n this.y = y\n this.z = z\n }\n}\nCoordinate.serialVersionUID = 6683108902428366910\nCoordinate.NULL_ORDINATE = Double.NaN\nCoordinate.X = 0\nCoordinate.Y = 1\nCoordinate.Z = 2\n","export default function (o, i) {\n return o.interfaces_ && o.interfaces_.indexOf(i) > -1\n}\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Collection.html\n *\n * @constructor\n * @private\n */\nexport default function Collection () {};\n\n/**\n * Ensures that this collection contains the specified element (optional\n * operation).\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.add = function () {}\n\n/**\n * Appends all of the elements in the specified collection to the end of this\n * list, in the order that they are returned by the specified collection's\n * iterator (optional operation).\n * @param {javascript.util.Collection} c\n * @return {boolean}\n */\nCollection.prototype.addAll = function () {}\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nCollection.prototype.isEmpty = function () {}\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {javascript.util.Iterator}\n */\nCollection.prototype.iterator = function () {}\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {number}\n */\nCollection.prototype.size = function () {}\n\n/**\n * Returns an array containing all of the elements in this collection.\n * @return {Array}\n */\nCollection.prototype.toArray = function () {}\n\n/**\n * Removes a single instance of the specified element from this collection if it\n * is present. (optional)\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.remove = function () {}\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function IndexOutOfBoundsException (message) {\n this.message = message || ''\n};\nIndexOutOfBoundsException.prototype = new Error()\n\n/**\n * @type {string}\n */\nIndexOutOfBoundsException.prototype.name = 'IndexOutOfBoundsException'\n","import Collection from './Collection'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/List.html\n *\n * @extends {javascript.util.Collection}\n * @constructor\n * @private\n */\nexport default function List () { };\nList.prototype = Object.create(Collection.prototype)\nList.prototype.constructor = List\n\n/**\n * Returns the element at the specified position in this list.\n * @param {number} index\n * @return {Object}\n */\nList.prototype.get = function () { }\n\n/**\n * Replaces the element at the specified position in this list with the\n * specified element (optional operation).\n * @param {number} index\n * @param {Object} e\n * @return {Object}\n */\nList.prototype.set = function () { }\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nList.prototype.isEmpty = function () { }\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function NoSuchElementException (message) {\n this.message = message || ''\n};\nNoSuchElementException.prototype = new Error()\n\n/**\n * @type {string}\n */\nNoSuchElementException.prototype.name = 'NoSuchElementException'\n","import Collection from './Collection'\nimport IndexOutOfBoundsException from './IndexOutOfBoundsException'\nimport List from './List'\nimport NoSuchElementException from './NoSuchElementException'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html\n *\n * @extends List\n * @private\n */\nexport default function ArrayList () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = []\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0])\n }\n};\nArrayList.prototype = Object.create(List.prototype)\nArrayList.prototype.constructor = ArrayList\n\nArrayList.prototype.ensureCapacity = function () {}\nArrayList.prototype.interfaces_ = [List, Collection]\n\n/**\n * @override\n */\nArrayList.prototype.add = function (e) {\n if (arguments.length === 1) {\n this.array_.push(e)\n } else {\n this.array_.splice(arguments[0], 0, arguments[1])\n }\n return true\n}\n\nArrayList.prototype.clear = function () {\n this.array_ = []\n}\n\n/**\n * @override\n */\nArrayList.prototype.addAll = function (c) {\n for (let i = c.iterator(); i.hasNext();) {\n this.add(i.next())\n }\n return true\n}\n\n/**\n * @override\n */\nArrayList.prototype.set = function (index, element) {\n const oldElement = this.array_[index]\n this.array_[index] = element\n return oldElement\n}\n\n/**\n * @override\n */\nArrayList.prototype.iterator = function () {\n return new Iterator_(this)\n}\n\n/**\n * @override\n */\nArrayList.prototype.get = function (index) {\n if (index < 0 || index >= this.size()) {\n throw new IndexOutOfBoundsException()\n }\n\n return this.array_[index]\n}\n\n/**\n * @override\n */\nArrayList.prototype.isEmpty = function () {\n return this.array_.length === 0\n}\n\n/**\n * @override\n */\nArrayList.prototype.size = function () {\n return this.array_.length\n}\n\n/**\n * @override\n */\nArrayList.prototype.toArray = function () {\n const array = []\n\n for (let i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i])\n }\n\n return array\n}\n\n/**\n * @override\n */\nArrayList.prototype.remove = function (o) {\n let found = false\n\n for (let i = 0, len = this.array_.length; i < len; i++) {\n if (this.array_[i] === o) {\n this.array_.splice(i, 1)\n found = true\n break\n }\n }\n\n return found\n}\n\nArrayList.prototype.removeAll = function (c) {\n for (let i = c.iterator(); i.hasNext();) {\n this.remove(i.next())\n }\n return true\n}\n\n/**\n * @extends {Iterator}\n * @param {ArrayList} arrayList\n * @constructor\n * @private\n */\nconst Iterator_ = function (arrayList) {\n /**\n * @type {ArrayList}\n * @private\n */\n this.arrayList_ = arrayList\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0\n}\n\n/**\n * @override\n */\nIterator_.prototype.next = function () {\n if (this.position_ === this.arrayList_.size()) {\n throw new NoSuchElementException()\n }\n return this.arrayList_.get(this.position_++)\n}\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function () {\n if (this.position_ < this.arrayList_.size()) {\n return true\n } else {\n return false\n }\n}\n\n/**\n * TODO: should be in ListIterator\n * @override\n */\nIterator_.prototype.set = function (element) {\n return this.arrayList_.set(this.position_ - 1, element)\n}\n\n/**\n * @override\n */\nIterator_.prototype.remove = function () {\n this.arrayList_.remove(this.arrayList_.get(this.position_))\n}\n","import hasInterface from '../../../../hasInterface'\nimport Collection from '../../../../java/util/Collection'\nimport Coordinate from './Coordinate'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class CoordinateList extends ArrayList {\n constructor () {\n super()\n CoordinateList.constructor_.apply(this, arguments)\n }\n\n getCoordinate (i) {\n return this.get(i)\n }\n\n addAll () {\n if (arguments.length === 2 && (typeof arguments[1] === 'boolean' && hasInterface(arguments[0], Collection))) {\n const coll = arguments[0]; const allowRepeated = arguments[1]\n let isChanged = false\n for (let i = coll.iterator(); i.hasNext();) {\n this.add(i.next(), allowRepeated)\n isChanged = true\n }\n return isChanged\n } else return super.addAll.apply(this, arguments)\n }\n\n clone () {\n const clone = super.clone.call(this)\n for (let i = 0; i < this.size(); i++) {\n clone.add(i, this.get(i).clone())\n }\n return clone\n }\n\n toCoordinateArray () {\n return this.toArray(CoordinateList.coordArrayType)\n }\n\n add () {\n if (arguments.length === 1) {\n const coord = arguments[0]\n super.add.call(this, coord)\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Array && typeof arguments[1] === 'boolean') {\n const coord = arguments[0]; const allowRepeated = arguments[1]\n this.add(coord, allowRepeated, true)\n return true\n } else if (arguments[0] instanceof Coordinate && typeof arguments[1] === 'boolean') {\n const coord = arguments[0]; const allowRepeated = arguments[1]\n if (!allowRepeated) {\n if (this.size() >= 1) {\n const last = this.get(this.size() - 1)\n if (last.equals2D(coord)) return null\n }\n }\n super.add.call(this, coord)\n } else if (arguments[0] instanceof Object && typeof arguments[1] === 'boolean') {\n const obj = arguments[0]; const allowRepeated = arguments[1]\n this.add(obj, allowRepeated)\n return true\n }\n } else if (arguments.length === 3) {\n if (typeof arguments[2] === 'boolean' && (arguments[0] instanceof Array && typeof arguments[1] === 'boolean')) {\n const coord = arguments[0]; const allowRepeated = arguments[1]; const direction = arguments[2]\n if (direction) {\n for (let i = 0; i < coord.length; i++) {\n this.add(coord[i], allowRepeated)\n }\n } else {\n for (let i = coord.length - 1; i >= 0; i--) {\n this.add(coord[i], allowRepeated)\n }\n }\n return true\n } else if (typeof arguments[2] === 'boolean' && (Number.isInteger(arguments[0]) && arguments[1] instanceof Coordinate)) {\n const i = arguments[0]; const coord = arguments[1]; const allowRepeated = arguments[2]\n if (!allowRepeated) {\n const size = this.size()\n if (size > 0) {\n if (i > 0) {\n const prev = this.get(i - 1)\n if (prev.equals2D(coord)) return null\n }\n if (i < size) {\n const next = this.get(i)\n if (next.equals2D(coord)) return null\n }\n }\n }\n super.add.call(this, i, coord)\n }\n } else if (arguments.length === 4) {\n const coord = arguments[0]; const allowRepeated = arguments[1]; const start = arguments[2]; const end = arguments[3]\n let inc = 1\n if (start > end) inc = -1\n for (let i = start; i !== end; i += inc) {\n this.add(coord[i], allowRepeated)\n }\n return true\n }\n }\n\n closeRing () {\n if (this.size() > 0) this.add(new Coordinate(this.get(0)), false)\n }\n\n getClass () {\n return CoordinateList\n }\n\n get interfaces_ () {\n return []\n }\n}\nCoordinateList.constructor_ = function () {\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const coord = arguments[0]\n this.ensureCapacity(coord.length)\n this.add(coord, true)\n } else if (arguments.length === 2) {\n const coord = arguments[0]; const allowRepeated = arguments[1]\n this.ensureCapacity(coord.length)\n this.add(coord, allowRepeated)\n }\n}\nCoordinateList.coordArrayType = new Array(0).fill(null)\n","import Coordinate from './Coordinate'\nimport Comparable from '../../../../java/lang/Comparable'\nimport Serializable from '../../../../java/io/Serializable'\nexport default class Envelope {\n constructor () {\n Envelope.constructor_.apply(this, arguments)\n }\n\n static intersects () {\n if (arguments.length === 3) {\n const p1 = arguments[0]; const p2 = arguments[1]; const q = arguments[2]\n if (q.x >= (p1.x < p2.x ? p1.x : p2.x) && q.x <= (p1.x > p2.x ? p1.x : p2.x) && (q.y >= (p1.y < p2.y ? p1.y : p2.y) && q.y <= (p1.y > p2.y ? p1.y : p2.y))) {\n return true\n }\n return false\n } else if (arguments.length === 4) {\n const p1 = arguments[0]; const p2 = arguments[1]; const q1 = arguments[2]; const q2 = arguments[3]\n let minq = Math.min(q1.x, q2.x)\n let maxq = Math.max(q1.x, q2.x)\n let minp = Math.min(p1.x, p2.x)\n let maxp = Math.max(p1.x, p2.x)\n if (minp > maxq) return false\n if (maxp < minq) return false\n minq = Math.min(q1.y, q2.y)\n maxq = Math.max(q1.y, q2.y)\n minp = Math.min(p1.y, p2.y)\n maxp = Math.max(p1.y, p2.y)\n if (minp > maxq) return false\n if (maxp < minq) return false\n return true\n }\n }\n\n getArea () {\n return this.getWidth() * this.getHeight()\n }\n\n equals (other) {\n if (!(other instanceof Envelope)) {\n return false\n }\n const otherEnvelope = other\n if (this.isNull()) {\n return otherEnvelope.isNull()\n }\n return this._maxx === otherEnvelope.getMaxX() && this._maxy === otherEnvelope.getMaxY() && this._minx === otherEnvelope.getMinX() && this._miny === otherEnvelope.getMinY()\n }\n\n intersection (env) {\n if (this.isNull() || env.isNull() || !this.intersects(env)) return new Envelope()\n const intMinX = this._minx > env._minx ? this._minx : env._minx\n const intMinY = this._miny > env._miny ? this._miny : env._miny\n const intMaxX = this._maxx < env._maxx ? this._maxx : env._maxx\n const intMaxY = this._maxy < env._maxy ? this._maxy : env._maxy\n return new Envelope(intMinX, intMaxX, intMinY, intMaxY)\n }\n\n isNull () {\n return this._maxx < this._minx\n }\n\n getMaxX () {\n return this._maxx\n }\n\n covers () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this.covers(p.x, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n if (this.isNull() || other.isNull()) {\n return false\n }\n return other.getMinX() >= this._minx && other.getMaxX() <= this._maxx && other.getMinY() >= this._miny && other.getMaxY() <= this._maxy\n }\n } else if (arguments.length === 2) {\n const x = arguments[0]; const y = arguments[1]\n if (this.isNull()) return false\n return x >= this._minx && x <= this._maxx && y >= this._miny && y <= this._maxy\n }\n }\n\n intersects () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n if (this.isNull() || other.isNull()) {\n return false\n }\n return !(other._minx > this._maxx || other._maxx < this._minx || other._miny > this._maxy || other._maxy < this._miny)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this.intersects(p.x, p.y)\n }\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const a = arguments[0]; const b = arguments[1]\n if (this.isNull()) {\n return false\n }\n const envminx = a.x < b.x ? a.x : b.x\n if (envminx > this._maxx) return false\n const envmaxx = a.x > b.x ? a.x : b.x\n if (envmaxx < this._minx) return false\n const envminy = a.y < b.y ? a.y : b.y\n if (envminy > this._maxy) return false\n const envmaxy = a.y > b.y ? a.y : b.y\n if (envmaxy < this._miny) return false\n return true\n } else if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const x = arguments[0]; const y = arguments[1]\n if (this.isNull()) return false\n return !(x > this._maxx || x < this._minx || y > this._maxy || y < this._miny)\n }\n }\n }\n\n getMinY () {\n return this._miny\n }\n\n getMinX () {\n return this._minx\n }\n\n expandToInclude () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.expandToInclude(p.x, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n if (other.isNull()) {\n return null\n }\n if (this.isNull()) {\n this._minx = other.getMinX()\n this._maxx = other.getMaxX()\n this._miny = other.getMinY()\n this._maxy = other.getMaxY()\n } else {\n if (other._minx < this._minx) {\n this._minx = other._minx\n }\n if (other._maxx > this._maxx) {\n this._maxx = other._maxx\n }\n if (other._miny < this._miny) {\n this._miny = other._miny\n }\n if (other._maxy > this._maxy) {\n this._maxy = other._maxy\n }\n }\n }\n } else if (arguments.length === 2) {\n const x = arguments[0]; const y = arguments[1]\n if (this.isNull()) {\n this._minx = x\n this._maxx = x\n this._miny = y\n this._maxy = y\n } else {\n if (x < this._minx) {\n this._minx = x\n }\n if (x > this._maxx) {\n this._maxx = x\n }\n if (y < this._miny) {\n this._miny = y\n }\n if (y > this._maxy) {\n this._maxy = y\n }\n }\n }\n }\n\n minExtent () {\n if (this.isNull()) return 0.0\n const w = this.getWidth()\n const h = this.getHeight()\n if (w < h) return w\n return h\n }\n\n getWidth () {\n if (this.isNull()) {\n return 0\n }\n return this._maxx - this._minx\n }\n\n compareTo (o) {\n const env = o\n if (this.isNull()) {\n if (env.isNull()) return 0\n return -1\n } else {\n if (env.isNull()) return 1\n }\n if (this._minx < env._minx) return -1\n if (this._minx > env._minx) return 1\n if (this._miny < env._miny) return -1\n if (this._miny > env._miny) return 1\n if (this._maxx < env._maxx) return -1\n if (this._maxx > env._maxx) return 1\n if (this._maxy < env._maxy) return -1\n if (this._maxy > env._maxy) return 1\n return 0\n }\n\n translate (transX, transY) {\n if (this.isNull()) {\n return null\n }\n this.init(this.getMinX() + transX, this.getMaxX() + transX, this.getMinY() + transY, this.getMaxY() + transY)\n }\n\n toString () {\n return 'Env[' + this._minx + ' : ' + this._maxx + ', ' + this._miny + ' : ' + this._maxy + ']'\n }\n\n setToNull () {\n this._minx = 0\n this._maxx = -1\n this._miny = 0\n this._maxy = -1\n }\n\n getHeight () {\n if (this.isNull()) {\n return 0\n }\n return this._maxy - this._miny\n }\n\n maxExtent () {\n if (this.isNull()) return 0.0\n const w = this.getWidth()\n const h = this.getHeight()\n if (w > h) return w\n return h\n }\n\n expandBy () {\n if (arguments.length === 1) {\n const distance = arguments[0]\n this.expandBy(distance, distance)\n } else if (arguments.length === 2) {\n const deltaX = arguments[0]; const deltaY = arguments[1]\n if (this.isNull()) return null\n this._minx -= deltaX\n this._maxx += deltaX\n this._miny -= deltaY\n this._maxy += deltaY\n if (this._minx > this._maxx || this._miny > this._maxy) this.setToNull()\n }\n }\n\n contains () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Envelope) {\n const other = arguments[0]\n return this.covers(other)\n } else if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n return this.covers(p)\n }\n } else if (arguments.length === 2) {\n const x = arguments[0]; const y = arguments[1]\n return this.covers(x, y)\n }\n }\n\n centre () {\n if (this.isNull()) return null\n return new Coordinate((this.getMinX() + this.getMaxX()) / 2.0, (this.getMinY() + this.getMaxY()) / 2.0)\n }\n\n init () {\n if (arguments.length === 0) {\n this.setToNull()\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.init(p.x, p.x, p.y, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const env = arguments[0]\n this._minx = env._minx\n this._maxx = env._maxx\n this._miny = env._miny\n this._maxy = env._maxy\n }\n } else if (arguments.length === 2) {\n const p1 = arguments[0]; const p2 = arguments[1]\n this.init(p1.x, p2.x, p1.y, p2.y)\n } else if (arguments.length === 4) {\n const x1 = arguments[0]; const x2 = arguments[1]; const y1 = arguments[2]; const y2 = arguments[3]\n if (x1 < x2) {\n this._minx = x1\n this._maxx = x2\n } else {\n this._minx = x2\n this._maxx = x1\n }\n if (y1 < y2) {\n this._miny = y1\n this._maxy = y2\n } else {\n this._miny = y2\n this._maxy = y1\n }\n }\n }\n\n getMaxY () {\n return this._maxy\n }\n\n distance (env) {\n if (this.intersects(env)) return 0\n let dx = 0.0\n if (this._maxx < env._minx) dx = env._minx - this._maxx; else if (this._minx > env._maxx) dx = this._minx - env._maxx\n let dy = 0.0\n if (this._maxy < env._miny) dy = env._miny - this._maxy; else if (this._miny > env._maxy) dy = this._miny - env._maxy\n if (dx === 0.0) return dy\n if (dy === 0.0) return dx\n return Math.sqrt(dx * dx + dy * dy)\n }\n\n hashCode () {\n let result = 17\n result = 37 * result + Coordinate.hashCode(this._minx)\n result = 37 * result + Coordinate.hashCode(this._maxx)\n result = 37 * result + Coordinate.hashCode(this._miny)\n result = 37 * result + Coordinate.hashCode(this._maxy)\n return result\n }\n\n getClass () {\n return Envelope\n }\n\n get interfaces_ () {\n return [Comparable, Serializable]\n }\n}\nEnvelope.constructor_ = function () {\n this._minx = null\n this._maxx = null\n this._miny = null\n this._maxy = null\n if (arguments.length === 0) {\n this.init()\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const p = arguments[0]\n this.init(p.x, p.x, p.y, p.y)\n } else if (arguments[0] instanceof Envelope) {\n const env = arguments[0]\n this.init(env)\n }\n } else if (arguments.length === 2) {\n const p1 = arguments[0]; const p2 = arguments[1]\n this.init(p1.x, p2.x, p1.y, p2.y)\n } else if (arguments.length === 4) {\n const x1 = arguments[0]; const x2 = arguments[1]; const y1 = arguments[2]; const y2 = arguments[3]\n this.init(x1, x2, y1, y2)\n }\n}\nEnvelope.serialVersionUID = 5873921885273102420\n","export default function Exception () {}\n","import Exception from '../../../../java/lang/Exception'\nexport default class NotRepresentableException extends Exception {\n constructor () {\n super()\n NotRepresentableException.constructor_.apply(this, arguments)\n }\n\n getClass () {\n return NotRepresentableException\n }\n\n get interfaces_ () {\n return []\n }\n}\nNotRepresentableException.constructor_ = function () {\n Exception.constructor_.call(this, 'Projective point not representable on the Cartesian plane.')\n}\n","export default function StringBuffer (str) {\n this.str = str\n}\n\nStringBuffer.prototype.append = function (e) {\n this.str += e\n}\n\nStringBuffer.prototype.setCharAt = function (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n}\n\nStringBuffer.prototype.toString = function (e) {\n return this.str\n}\n","export default function Integer (value) {\n this.value = value\n}\n\nInteger.prototype.intValue = function () {\n return this.value\n}\nInteger.prototype.compareTo = function (o) {\n if (this.value < o) return -1\n if (this.value > o) return 1\n return 0\n}\n\nInteger.isNaN = n => Number.isNaN(n)\n","export default function Character () {}\nCharacter.isWhitespace = c => ((c <= 32 && c >= 0) || c === 127)\nCharacter.toUpperCase = c => c.toUpperCase()\n","import StringBuffer from '../../../../java/lang/StringBuffer'\nimport Double from '../../../../java/lang/Double'\nimport Integer from '../../../../java/lang/Integer'\nimport Character from '../../../../java/lang/Character'\nimport Comparable from '../../../../java/lang/Comparable'\nimport Cloneable from '../../../../java/lang/Cloneable'\nimport Serializable from '../../../../java/io/Serializable'\nexport default class DD {\n constructor () {\n DD.constructor_.apply(this, arguments)\n }\n\n static sqr (x) {\n return DD.valueOf(x).selfMultiply(x)\n }\n\n static valueOf () {\n if (typeof arguments[0] === 'string') {\n const str = arguments[0]\n return DD.parse(str)\n } else if (typeof arguments[0] === 'number') {\n const x = arguments[0]\n return new DD(x)\n }\n }\n\n static sqrt (x) {\n return DD.valueOf(x).sqrt()\n }\n\n static parse (str) {\n let i = 0\n const strlen = str.length\n while (Character.isWhitespace(str.charAt(i))) i++\n let isNegative = false\n if (i < strlen) {\n const signCh = str.charAt(i)\n if (signCh === '-' || signCh === '+') {\n i++\n if (signCh === '-') isNegative = true\n }\n }\n const val = new DD()\n let numDigits = 0\n let numBeforeDec = 0\n let exp = 0\n while (true) {\n if (i >= strlen) break\n const ch = str.charAt(i)\n i++\n if (Character.isDigit(ch)) {\n const d = ch - '0'\n val.selfMultiply(DD.TEN)\n val.selfAdd(d)\n numDigits++\n continue\n }\n if (ch === '.') {\n numBeforeDec = numDigits\n continue\n }\n if (ch === 'e' || ch === 'E') {\n const expStr = str.substring(i)\n try {\n exp = Integer.parseInt(expStr)\n } catch (ex) {\n if (ex instanceof NumberFormatException) {\n throw new NumberFormatException('Invalid exponent ' + expStr + ' in string ' + str)\n } else throw ex\n } finally {}\n break\n }\n throw new NumberFormatException(\"Unexpected character '\" + ch + \"' at position \" + i + ' in string ' + str)\n }\n let val2 = val\n const numDecPlaces = numDigits - numBeforeDec - exp\n if (numDecPlaces === 0) {\n val2 = val\n } else if (numDecPlaces > 0) {\n const scale = DD.TEN.pow(numDecPlaces)\n val2 = val.divide(scale)\n } else if (numDecPlaces < 0) {\n const scale = DD.TEN.pow(-numDecPlaces)\n val2 = val.multiply(scale)\n }\n if (isNegative) {\n return val2.negate()\n }\n return val2\n }\n\n static createNaN () {\n return new DD(Double.NaN, Double.NaN)\n }\n\n static copy (dd) {\n return new DD(dd)\n }\n\n static magnitude (x) {\n const xAbs = Math.abs(x)\n const xLog10 = Math.log(xAbs) / Math.log(10)\n let xMag = Math.trunc(Math.floor(xLog10))\n const xApprox = Math.pow(10, xMag)\n if (xApprox * 10 <= xAbs) xMag += 1\n return xMag\n }\n\n static stringOfChar (ch, len) {\n const buf = new StringBuffer()\n for (let i = 0; i < len; i++) {\n buf.append(ch)\n }\n return buf.toString()\n }\n\n le (y) {\n return this._hi < y._hi || this._hi === y._hi && this._lo <= y._lo\n }\n\n extractSignificantDigits (insertDecimalPoint, magnitude) {\n let y = this.abs()\n let mag = DD.magnitude(y._hi)\n const scale = DD.TEN.pow(mag)\n y = y.divide(scale)\n if (y.gt(DD.TEN)) {\n y = y.divide(DD.TEN)\n mag += 1\n } else if (y.lt(DD.ONE)) {\n y = y.multiply(DD.TEN)\n mag -= 1\n }\n const decimalPointPos = mag + 1\n const buf = new StringBuffer()\n const numDigits = DD.MAX_PRINT_DIGITS - 1\n for (let i = 0; i <= numDigits; i++) {\n if (insertDecimalPoint && i === decimalPointPos) {\n buf.append('.')\n }\n const digit = Math.trunc(y._hi)\n if (digit < 0 || digit > 9) {}\n if (digit < 0) {\n break\n }\n let rebiasBy10 = false\n let digitChar = 0\n if (digit > 9) {\n rebiasBy10 = true\n digitChar = '9'\n } else {\n digitChar = '0' + digit\n }\n buf.append(digitChar)\n y = y.subtract(DD.valueOf(digit)).multiply(DD.TEN)\n if (rebiasBy10) y.selfAdd(DD.TEN)\n let continueExtractingDigits = true\n const remMag = DD.magnitude(y._hi)\n if (remMag < 0 && Math.abs(remMag) >= numDigits - i) continueExtractingDigits = false\n if (!continueExtractingDigits) break\n }\n magnitude[0] = mag\n return buf.toString()\n }\n\n sqr () {\n return this.multiply(this)\n }\n\n doubleValue () {\n return this._hi + this._lo\n }\n\n subtract () {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.add(y.negate())\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return this.add(-y)\n }\n }\n\n equals () {\n if (arguments.length === 1 && arguments[0] instanceof DD) {\n const y = arguments[0]\n return this._hi === y._hi && this._lo === y._lo\n }\n }\n\n isZero () {\n return this._hi === 0.0 && this._lo === 0.0\n }\n\n selfSubtract () {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n if (this.isNaN()) return this\n return this.selfAdd(-y._hi, -y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n if (this.isNaN()) return this\n return this.selfAdd(-y, 0.0)\n }\n }\n\n getSpecialNumberString () {\n if (this.isZero()) return '0.0'\n if (this.isNaN()) return 'NaN '\n return null\n }\n\n min (x) {\n if (this.le(x)) {\n return this\n } else {\n return x\n }\n }\n\n selfDivide () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.selfDivide(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return this.selfDivide(y, 0.0)\n }\n } else if (arguments.length === 2) {\n const yhi = arguments[0]; const ylo = arguments[1]\n let hc = null; let tc = null; let hy = null; let ty = null; let C = null; let c = null; let U = null; let u = null\n C = this._hi / yhi\n c = DD.SPLIT * C\n hc = c - C\n u = DD.SPLIT * yhi\n hc = c - hc\n tc = C - hc\n hy = u - yhi\n U = C * yhi\n hy = u - hy\n ty = yhi - hy\n u = hc * hy - U + hc * ty + tc * hy + tc * ty\n c = (this._hi - U - u + this._lo - C * ylo) / yhi\n u = C + c\n this._hi = u\n this._lo = C - u + c\n return this\n }\n }\n\n dump () {\n return 'DD<' + this._hi + ', ' + this._lo + '>'\n }\n\n divide () {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n let hc = null; let tc = null; let hy = null; let ty = null; let C = null; let c = null; let U = null; let u = null\n C = this._hi / y._hi\n c = DD.SPLIT * C\n hc = c - C\n u = DD.SPLIT * y._hi\n hc = c - hc\n tc = C - hc\n hy = u - y._hi\n U = C * y._hi\n hy = u - hy\n ty = y._hi - hy\n u = hc * hy - U + hc * ty + tc * hy + tc * ty\n c = (this._hi - U - u + this._lo - C * y._lo) / y._hi\n u = C + c\n const zhi = u\n const zlo = C - u + c\n return new DD(zhi, zlo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n if (Double.isNaN(y)) return DD.createNaN()\n return DD.copy(this).selfDivide(y, 0.0)\n }\n }\n\n ge (y) {\n return this._hi > y._hi || this._hi === y._hi && this._lo >= y._lo\n }\n\n pow (exp) {\n if (exp === 0.0) return DD.valueOf(1.0)\n let r = new DD(this)\n let s = DD.valueOf(1.0)\n let n = Math.abs(exp)\n if (n > 1) {\n while (n > 0) {\n if (n % 2 === 1) {\n s.selfMultiply(r)\n }\n n /= 2\n if (n > 0) r = r.sqr()\n }\n } else {\n s = r\n }\n if (exp < 0) return s.reciprocal()\n return s\n }\n\n ceil () {\n if (this.isNaN()) return DD.NaN\n const fhi = Math.ceil(this._hi)\n let flo = 0.0\n if (fhi === this._hi) {\n flo = Math.ceil(this._lo)\n }\n return new DD(fhi, flo)\n }\n\n compareTo (o) {\n const other = o\n if (this._hi < other._hi) return -1\n if (this._hi > other._hi) return 1\n if (this._lo < other._lo) return -1\n if (this._lo > other._lo) return 1\n return 0\n }\n\n rint () {\n if (this.isNaN()) return this\n const plus5 = this.add(0.5)\n return plus5.floor()\n }\n\n setValue () {\n if (arguments[0] instanceof DD) {\n const value = arguments[0]\n this.init(value)\n return this\n } else if (typeof arguments[0] === 'number') {\n const value = arguments[0]\n this.init(value)\n return this\n }\n }\n\n max (x) {\n if (this.ge(x)) {\n return this\n } else {\n return x\n }\n }\n\n sqrt () {\n if (this.isZero()) return DD.valueOf(0.0)\n if (this.isNegative()) {\n return DD.NaN\n }\n const x = 1.0 / Math.sqrt(this._hi)\n const ax = this._hi * x\n const axdd = DD.valueOf(ax)\n const diffSq = this.subtract(axdd.sqr())\n const d2 = diffSq._hi * (x * 0.5)\n return axdd.add(d2)\n }\n\n selfAdd () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.selfAdd(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n let H = null; let h = null; let S = null; let s = null; let e = null; let f = null\n S = this._hi + y\n e = S - this._hi\n s = S - e\n s = y - e + (this._hi - s)\n f = s + this._lo\n H = S + f\n h = f + (S - H)\n this._hi = H + h\n this._lo = h + (H - this._hi)\n return this\n }\n } else if (arguments.length === 2) {\n const yhi = arguments[0]; const ylo = arguments[1]\n let H = null; let h = null; let T = null; let t = null; let S = null; let s = null; let e = null; let f = null\n S = this._hi + yhi\n T = this._lo + ylo\n e = S - this._hi\n f = T - this._lo\n s = S - e\n t = T - f\n s = yhi - e + (this._hi - s)\n t = ylo - f + (this._lo - t)\n e = s + T\n H = S + e\n h = e + (S - H)\n e = t + h\n const zhi = H + e\n const zlo = e + (H - zhi)\n this._hi = zhi\n this._lo = zlo\n return this\n }\n }\n\n selfMultiply () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return this.selfMultiply(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return this.selfMultiply(y, 0.0)\n }\n } else if (arguments.length === 2) {\n const yhi = arguments[0]; const ylo = arguments[1]\n let hx = null; let tx = null; let hy = null; let ty = null; let C = null; let c = null\n C = DD.SPLIT * this._hi\n hx = C - this._hi\n c = DD.SPLIT * yhi\n hx = C - hx\n tx = this._hi - hx\n hy = c - yhi\n C = this._hi * yhi\n hy = c - hy\n ty = yhi - hy\n c = hx * hy - C + hx * ty + tx * hy + tx * ty + (this._hi * ylo + this._lo * yhi)\n const zhi = C + c\n hx = C - zhi\n const zlo = c + hx\n this._hi = zhi\n this._lo = zlo\n return this\n }\n }\n\n selfSqr () {\n return this.selfMultiply(this)\n }\n\n floor () {\n if (this.isNaN()) return DD.NaN\n const fhi = Math.floor(this._hi)\n let flo = 0.0\n if (fhi === this._hi) {\n flo = Math.floor(this._lo)\n }\n return new DD(fhi, flo)\n }\n\n negate () {\n if (this.isNaN()) return this\n return new DD(-this._hi, -this._lo)\n }\n\n clone () {\n try {\n return null\n } catch (ex) {\n if (ex instanceof CloneNotSupportedException) {\n return null\n } else throw ex\n } finally {}\n }\n\n multiply () {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n if (y.isNaN()) return DD.createNaN()\n return DD.copy(this).selfMultiply(y)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n if (Double.isNaN(y)) return DD.createNaN()\n return DD.copy(this).selfMultiply(y, 0.0)\n }\n }\n\n isNaN () {\n return Double.isNaN(this._hi)\n }\n\n intValue () {\n return Math.trunc(this._hi)\n }\n\n toString () {\n const mag = DD.magnitude(this._hi)\n if (mag >= -3 && mag <= 20) return this.toStandardNotation()\n return this.toSciNotation()\n }\n\n toStandardNotation () {\n const specialStr = this.getSpecialNumberString()\n if (specialStr !== null) return specialStr\n const magnitude = new Array(1).fill(null)\n const sigDigits = this.extractSignificantDigits(true, magnitude)\n const decimalPointPos = magnitude[0] + 1\n let num = sigDigits\n if (sigDigits.charAt(0) === '.') {\n num = '0' + sigDigits\n } else if (decimalPointPos < 0) {\n num = '0.' + DD.stringOfChar('0', -decimalPointPos) + sigDigits\n } else if (sigDigits.indexOf('.') === -1) {\n const numZeroes = decimalPointPos - sigDigits.length\n const zeroes = DD.stringOfChar('0', numZeroes)\n num = sigDigits + zeroes + '.0'\n }\n if (this.isNegative()) return '-' + num\n return num\n }\n\n reciprocal () {\n let hc = null; let tc = null; let hy = null; let ty = null; let C = null; let c = null; let U = null; let u = null\n C = 1.0 / this._hi\n c = DD.SPLIT * C\n hc = c - C\n u = DD.SPLIT * this._hi\n hc = c - hc\n tc = C - hc\n hy = u - this._hi\n U = C * this._hi\n hy = u - hy\n ty = this._hi - hy\n u = hc * hy - U + hc * ty + tc * hy + tc * ty\n c = (1.0 - U - u - C * this._lo) / this._hi\n const zhi = C + c\n const zlo = C - zhi + c\n return new DD(zhi, zlo)\n }\n\n toSciNotation () {\n if (this.isZero()) return DD.SCI_NOT_ZERO\n const specialStr = this.getSpecialNumberString()\n if (specialStr !== null) return specialStr\n const magnitude = new Array(1).fill(null)\n const digits = this.extractSignificantDigits(false, magnitude)\n const expStr = DD.SCI_NOT_EXPONENT_CHAR + magnitude[0]\n if (digits.charAt(0) === '0') {\n throw new IllegalStateException('Found leading zero: ' + digits)\n }\n let trailingDigits = ''\n if (digits.length > 1) trailingDigits = digits.substring(1)\n const digitsWithDecimal = digits.charAt(0) + '.' + trailingDigits\n if (this.isNegative()) return '-' + digitsWithDecimal + expStr\n return digitsWithDecimal + expStr\n }\n\n abs () {\n if (this.isNaN()) return DD.NaN\n if (this.isNegative()) return this.negate()\n return new DD(this)\n }\n\n isPositive () {\n return this._hi > 0.0 || this._hi === 0.0 && this._lo > 0.0\n }\n\n lt (y) {\n return this._hi < y._hi || this._hi === y._hi && this._lo < y._lo\n }\n\n add () {\n if (arguments[0] instanceof DD) {\n const y = arguments[0]\n return DD.copy(this).selfAdd(y)\n } else if (typeof arguments[0] === 'number') {\n const y = arguments[0]\n return DD.copy(this).selfAdd(y)\n }\n }\n\n init () {\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'number') {\n const x = arguments[0]\n this._hi = x\n this._lo = 0.0\n } else if (arguments[0] instanceof DD) {\n const dd = arguments[0]\n this._hi = dd._hi\n this._lo = dd._lo\n }\n } else if (arguments.length === 2) {\n const hi = arguments[0]; const lo = arguments[1]\n this._hi = hi\n this._lo = lo\n }\n }\n\n gt (y) {\n return this._hi > y._hi || this._hi === y._hi && this._lo > y._lo\n }\n\n isNegative () {\n return this._hi < 0.0 || this._hi === 0.0 && this._lo < 0.0\n }\n\n trunc () {\n if (this.isNaN()) return DD.NaN\n if (this.isPositive()) return this.floor(); else return this.ceil()\n }\n\n signum () {\n if (this._hi > 0) return 1\n if (this._hi < 0) return -1\n if (this._lo > 0) return 1\n if (this._lo < 0) return -1\n return 0\n }\n\n getClass () {\n return DD\n }\n\n get interfaces_ () {\n return [Serializable, Comparable, Cloneable]\n }\n}\nDD.constructor_ = function () {\n this._hi = 0.0\n this._lo = 0.0\n if (arguments.length === 0) {\n this.init(0.0)\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'number') {\n const x = arguments[0]\n this.init(x)\n } else if (arguments[0] instanceof DD) {\n const dd = arguments[0]\n this.init(dd)\n } else if (typeof arguments[0] === 'string') {\n const str = arguments[0]\n DD.constructor_.call(this, DD.parse(str))\n }\n } else if (arguments.length === 2) {\n const hi = arguments[0]; const lo = arguments[1]\n this.init(hi, lo)\n }\n}\nDD.PI = new DD(3.141592653589793116e+00, 1.224646799147353207e-16)\nDD.TWO_PI = new DD(6.283185307179586232e+00, 2.449293598294706414e-16)\nDD.PI_2 = new DD(1.570796326794896558e+00, 6.123233995736766036e-17)\nDD.E = new DD(2.718281828459045091e+00, 1.445646891729250158e-16)\nDD.NaN = new DD(Double.NaN, Double.NaN)\nDD.EPS = 1.23259516440783e-32\nDD.SPLIT = 134217729.0\nDD.MAX_PRINT_DIGITS = 32\nDD.TEN = DD.valueOf(10.0)\nDD.ONE = DD.valueOf(1.0)\nDD.SCI_NOT_EXPONENT_CHAR = 'E'\nDD.SCI_NOT_ZERO = '0.0E0'\n","import Coordinate from '../geom/Coordinate'\nimport DD from '../math/DD'\nexport default class CGAlgorithmsDD {\n constructor () {\n CGAlgorithmsDD.constructor_.apply(this, arguments)\n }\n\n static orientationIndex (p1, p2, q) {\n const index = CGAlgorithmsDD.orientationIndexFilter(p1, p2, q)\n if (index <= 1) return index\n const dx1 = DD.valueOf(p2.x).selfAdd(-p1.x)\n const dy1 = DD.valueOf(p2.y).selfAdd(-p1.y)\n const dx2 = DD.valueOf(q.x).selfAdd(-p2.x)\n const dy2 = DD.valueOf(q.y).selfAdd(-p2.y)\n return dx1.selfMultiply(dy2).selfSubtract(dy1.selfMultiply(dx2)).signum()\n }\n\n static signOfDet2x2 () {\n if (arguments[3] instanceof DD && (arguments[2] instanceof DD && (arguments[0] instanceof DD && arguments[1] instanceof DD))) {\n const x1 = arguments[0]; const y1 = arguments[1]; const x2 = arguments[2]; const y2 = arguments[3]\n const det = x1.multiply(y2).selfSubtract(y1.multiply(x2))\n return det.signum()\n } else if (typeof arguments[3] === 'number' && (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number'))) {\n const dx1 = arguments[0]; const dy1 = arguments[1]; const dx2 = arguments[2]; const dy2 = arguments[3]\n const x1 = DD.valueOf(dx1)\n const y1 = DD.valueOf(dy1)\n const x2 = DD.valueOf(dx2)\n const y2 = DD.valueOf(dy2)\n const det = x1.multiply(y2).selfSubtract(y1.multiply(x2))\n return det.signum()\n }\n }\n\n static intersection (p1, p2, q1, q2) {\n const denom1 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p2.x).selfSubtract(p1.x))\n const denom2 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p2.y).selfSubtract(p1.y))\n const denom = denom1.subtract(denom2)\n const numx1 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y))\n const numx2 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x))\n const numx = numx1.subtract(numx2)\n const fracP = numx.selfDivide(denom).doubleValue()\n const x = DD.valueOf(p1.x).selfAdd(DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(fracP)).doubleValue()\n const numy1 = DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y))\n const numy2 = DD.valueOf(p2.y).selfSubtract(p1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x))\n const numy = numy1.subtract(numy2)\n const fracQ = numy.selfDivide(denom).doubleValue()\n const y = DD.valueOf(q1.y).selfAdd(DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(fracQ)).doubleValue()\n return new Coordinate(x, y)\n }\n\n static orientationIndexFilter (pa, pb, pc) {\n let detsum = null\n const detleft = (pa.x - pc.x) * (pb.y - pc.y)\n const detright = (pa.y - pc.y) * (pb.x - pc.x)\n const det = detleft - detright\n if (detleft > 0.0) {\n if (detright <= 0.0) {\n return CGAlgorithmsDD.signum(det)\n } else {\n detsum = detleft + detright\n }\n } else if (detleft < 0.0) {\n if (detright >= 0.0) {\n return CGAlgorithmsDD.signum(det)\n } else {\n detsum = -detleft - detright\n }\n } else {\n return CGAlgorithmsDD.signum(det)\n }\n const errbound = CGAlgorithmsDD.DP_SAFE_EPSILON * detsum\n if (det >= errbound || -det >= errbound) {\n return CGAlgorithmsDD.signum(det)\n }\n return 2\n }\n\n static signum (x) {\n if (x > 0) return 1\n if (x < 0) return -1\n return 0\n }\n\n getClass () {\n return CGAlgorithmsDD\n }\n\n get interfaces_ () {\n return []\n }\n}\nCGAlgorithmsDD.constructor_ = function () {}\nCGAlgorithmsDD.DP_SAFE_EPSILON = 1e-15\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport CGAlgorithmsDD from './CGAlgorithmsDD'\nexport default class Orientation {\n constructor () {\n Orientation.constructor_.apply(this, arguments)\n }\n\n static index (p1, p2, q) {\n return CGAlgorithmsDD.orientationIndex(p1, p2, q)\n }\n\n static isCCW (ring) {\n const nPts = ring.length - 1\n if (nPts < 3) throw new IllegalArgumentException('Ring has fewer than 4 points, so orientation cannot be determined')\n let hiPt = ring[0]\n let hiIndex = 0\n for (let i = 1; i <= nPts; i++) {\n const p = ring[i]\n if (p.y > hiPt.y) {\n hiPt = p\n hiIndex = i\n }\n }\n let iPrev = hiIndex\n do {\n iPrev = iPrev - 1\n if (iPrev < 0) iPrev = nPts\n } while (ring[iPrev].equals2D(hiPt) && iPrev !== hiIndex)\n let iNext = hiIndex\n do {\n iNext = (iNext + 1) % nPts\n } while (ring[iNext].equals2D(hiPt) && iNext !== hiIndex)\n const prev = ring[iPrev]\n const next = ring[iNext]\n if (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) return false\n const disc = Orientation.index(prev, hiPt, next)\n let isCCW = null\n if (disc === 0) {\n isCCW = prev.x > next.x\n } else {\n isCCW = disc > 0\n }\n return isCCW\n }\n\n getClass () {\n return Orientation\n }\n\n get interfaces_ () {\n return []\n }\n}\nOrientation.constructor_ = function () {}\nOrientation.CLOCKWISE = -1\nOrientation.RIGHT = Orientation.CLOCKWISE\nOrientation.COUNTERCLOCKWISE = 1\nOrientation.LEFT = Orientation.COUNTERCLOCKWISE\nOrientation.COLLINEAR = 0\nOrientation.STRAIGHT = Orientation.COLLINEAR\n","export default function System () { }\n\nSystem.arraycopy = (src, srcPos, dest, destPos, len) => {\n let c = 0\n for (let i = srcPos; i < srcPos + len; i++) {\n dest[destPos + c] = src[i]\n c++\n }\n}\n\nSystem.getProperty = (name) => {\n return {\n 'line.separator': '\\n'\n }[name]\n}\n","import NotRepresentableException from './NotRepresentableException'\nimport Coordinate from '../geom/Coordinate'\nimport Double from '../../../../java/lang/Double'\nexport default class HCoordinate {\n constructor () {\n HCoordinate.constructor_.apply(this, arguments)\n }\n\n static intersection (p1, p2, q1, q2) {\n const px = p1.y - p2.y\n const py = p2.x - p1.x\n const pw = p1.x * p2.y - p2.x * p1.y\n const qx = q1.y - q2.y\n const qy = q2.x - q1.x\n const qw = q1.x * q2.y - q2.x * q1.y\n const x = py * qw - qy * pw\n const y = qx * pw - px * qw\n const w = px * qy - qx * py\n const xInt = x / w\n const yInt = y / w\n if (Double.isNaN(xInt) || (Double.isInfinite(xInt) || Double.isNaN(yInt)) || Double.isInfinite(yInt)) {\n throw new NotRepresentableException()\n }\n return new Coordinate(xInt, yInt)\n }\n\n getY () {\n const a = this.y / this.w\n if (Double.isNaN(a) || Double.isInfinite(a)) {\n throw new NotRepresentableException()\n }\n return a\n }\n\n getX () {\n const a = this.x / this.w\n if (Double.isNaN(a) || Double.isInfinite(a)) {\n throw new NotRepresentableException()\n }\n return a\n }\n\n getCoordinate () {\n const p = new Coordinate()\n p.x = this.getX()\n p.y = this.getY()\n return p\n }\n\n getClass () {\n return HCoordinate\n }\n\n get interfaces_ () {\n return []\n }\n}\nHCoordinate.constructor_ = function () {\n this.x = null\n this.y = null\n this.w = null\n if (arguments.length === 0) {\n this.x = 0.0\n this.y = 0.0\n this.w = 1.0\n } else if (arguments.length === 1) {\n const p = arguments[0]\n this.x = p.x\n this.y = p.y\n this.w = 1.0\n } else if (arguments.length === 2) {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const _x = arguments[0]; const _y = arguments[1]\n this.x = _x\n this.y = _y\n this.w = 1.0\n } else if (arguments[0] instanceof HCoordinate && arguments[1] instanceof HCoordinate) {\n const p1 = arguments[0]; const p2 = arguments[1]\n this.x = p1.y * p2.w - p2.y * p1.w\n this.y = p2.x * p1.w - p1.x * p2.w\n this.w = p1.x * p2.y - p2.x * p1.y\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const p1 = arguments[0]; const p2 = arguments[1]\n this.x = p1.y - p2.y\n this.y = p2.x - p1.x\n this.w = p1.x * p2.y - p2.x * p1.y\n }\n } else if (arguments.length === 3) {\n const _x = arguments[0]; const _y = arguments[1]; const _w = arguments[2]\n this.x = _x\n this.y = _y\n this.w = _w\n } else if (arguments.length === 4) {\n const p1 = arguments[0]; const p2 = arguments[1]; const q1 = arguments[2]; const q2 = arguments[3]\n const px = p1.y - p2.y\n const py = p2.x - p1.x\n const pw = p1.x * p2.y - p2.x * p1.y\n const qx = q1.y - q2.y\n const qy = q2.x - q1.x\n const qw = q1.x * q2.y - q2.x * q1.y\n this.x = py * qw - qy * pw\n this.y = qx * pw - px * qw\n this.w = px * qy - qx * py\n }\n}\n","import Double from '../../../../java/lang/Double'\nexport default class MathUtil {\n constructor () {\n MathUtil.constructor_.apply(this, arguments)\n }\n\n static log10 (x) {\n const ln = Math.log(x)\n if (Double.isInfinite(ln)) return ln\n if (Double.isNaN(ln)) return ln\n return ln / MathUtil.LOG_10\n }\n\n static min (v1, v2, v3, v4) {\n let min = v1\n if (v2 < min) min = v2\n if (v3 < min) min = v3\n if (v4 < min) min = v4\n return min\n }\n\n static clamp () {\n if (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number')) {\n const x = arguments[0]; const min = arguments[1]; const max = arguments[2]\n if (x < min) return min\n if (x > max) return max\n return x\n } else if (Number.isInteger(arguments[2]) && (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1]))) {\n const x = arguments[0]; const min = arguments[1]; const max = arguments[2]\n if (x < min) return min\n if (x > max) return max\n return x\n }\n }\n\n static wrap (index, max) {\n if (index < 0) {\n return max - -index % max\n }\n return index % max\n }\n\n static max () {\n if (arguments.length === 3) {\n const v1 = arguments[0]; const v2 = arguments[1]; const v3 = arguments[2]\n let max = v1\n if (v2 > max) max = v2\n if (v3 > max) max = v3\n return max\n } else if (arguments.length === 4) {\n const v1 = arguments[0]; const v2 = arguments[1]; const v3 = arguments[2]; const v4 = arguments[3]\n let max = v1\n if (v2 > max) max = v2\n if (v3 > max) max = v3\n if (v4 > max) max = v4\n return max\n }\n }\n\n static average (x1, x2) {\n return (x1 + x2) / 2.0\n }\n\n getClass () {\n return MathUtil\n }\n\n get interfaces_ () {\n return []\n }\n}\nMathUtil.constructor_ = function () {}\nMathUtil.LOG_10 = Math.log(10)\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport MathUtil from '../math/MathUtil'\nimport Envelope from '../geom/Envelope'\nexport default class Distance {\n constructor () {\n Distance.constructor_.apply(this, arguments)\n }\n\n static segmentToSegment (A, B, C, D) {\n if (A.equals(B)) return Distance.pointToSegment(A, C, D)\n if (C.equals(D)) return Distance.pointToSegment(D, A, B)\n let noIntersection = false\n if (!Envelope.intersects(A, B, C, D)) {\n noIntersection = true\n } else {\n const denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x)\n if (denom === 0) {\n noIntersection = true\n } else {\n const r_num = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y)\n const s_num = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y)\n const s = s_num / denom\n const r = r_num / denom\n if (r < 0 || r > 1 || s < 0 || s > 1) {\n noIntersection = true\n }\n }\n }\n if (noIntersection) {\n return MathUtil.min(Distance.pointToSegment(A, C, D), Distance.pointToSegment(B, C, D), Distance.pointToSegment(C, A, B), Distance.pointToSegment(D, A, B))\n }\n return 0.0\n }\n\n static pointToSegment (p, A, B) {\n if (A.x === B.x && A.y === B.y) return p.distance(A)\n const len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y)\n const r = ((p.x - A.x) * (B.x - A.x) + (p.y - A.y) * (B.y - A.y)) / len2\n if (r <= 0.0) return p.distance(A)\n if (r >= 1.0) return p.distance(B)\n const s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2\n return Math.abs(s) * Math.sqrt(len2)\n }\n\n static pointToLinePerpendicular (p, A, B) {\n const len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y)\n const s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2\n return Math.abs(s) * Math.sqrt(len2)\n }\n\n static pointToSegmentString (p, line) {\n if (line.length === 0) throw new IllegalArgumentException('Line array must contain at least one vertex')\n let minDistance = p.distance(line[0])\n for (let i = 0; i < line.length - 1; i++) {\n const dist = Distance.pointToSegment(p, line[i], line[i + 1])\n if (dist < minDistance) {\n minDistance = dist\n }\n }\n return minDistance\n }\n\n getClass () {\n return Distance\n }\n\n get interfaces_ () {\n return []\n }\n}\nDistance.constructor_ = function () {}\n","import Cloneable from '../../../../java/lang/Cloneable'\nexport default class CoordinateSequence {\n constructor () {\n CoordinateSequence.constructor_.apply(this, arguments)\n }\n\n setOrdinate (index, ordinateIndex, value) {}\n\n size () {}\n\n getOrdinate (index, ordinateIndex) {}\n\n getCoordinate () {\n if (arguments.length === 1) {\n const i = arguments[0]\n } else if (arguments.length === 2) {\n const index = arguments[0]; const coord = arguments[1]\n }\n }\n\n getCoordinateCopy (i) {}\n\n getDimension () {}\n\n getX (index) {}\n\n expandEnvelope (env) {}\n\n copy () {}\n\n getY (index) {}\n\n toCoordinateArray () {}\n\n getClass () {\n return CoordinateSequence\n }\n\n get interfaces_ () {\n return [Cloneable]\n }\n}\nCoordinateSequence.constructor_ = function () {}\nCoordinateSequence.X = 0\nCoordinateSequence.Y = 1\nCoordinateSequence.Z = 2\nCoordinateSequence.M = 3\n","import hasInterface from '../../../../hasInterface'\nimport CoordinateSequence from './CoordinateSequence'\nexport default class CoordinateSequenceFactory {\n constructor () {\n CoordinateSequenceFactory.constructor_.apply(this, arguments)\n }\n\n create () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordSeq = arguments[0]\n }\n } else if (arguments.length === 2) {\n const size = arguments[0]; const dimension = arguments[1]\n }\n }\n\n getClass () {\n return CoordinateSequenceFactory\n }\n\n get interfaces_ () {\n return []\n }\n}\nCoordinateSequenceFactory.constructor_ = function () {}\n","export default class GeometryComponentFilter {\n constructor () {\n GeometryComponentFilter.constructor_.apply(this, arguments)\n }\n\n filter (geom) {}\n\n getClass () {\n return GeometryComponentFilter\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryComponentFilter.constructor_ = function () {}\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport GeometryComponentFilter from './GeometryComponentFilter'\nimport Comparable from '../../../../java/lang/Comparable'\nimport Cloneable from '../../../../java/lang/Cloneable'\nimport Serializable from '../../../../java/io/Serializable'\nimport Envelope from './Envelope'\nexport default class Geometry {\n constructor () {\n Geometry.constructor_.apply(this, arguments)\n }\n\n isGeometryCollection () {\n return this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION\n }\n\n getFactory () {\n return this._factory\n }\n\n getGeometryN (n) {\n return this\n }\n\n getArea () {\n return 0.0\n }\n\n isRectangle () {\n return false\n }\n\n equals () {\n if (arguments[0] instanceof Geometry) {\n const g = arguments[0]\n if (g === null) return false\n return this.equalsTopo(g)\n } else if (arguments[0] instanceof Object) {\n const o = arguments[0]\n if (!(o instanceof Geometry)) return false\n const g = o\n return this.equalsExact(g)\n }\n }\n\n equalsExact (other) {\n return this === other || this.equalsExact(other, 0)\n }\n\n geometryChanged () {\n this.apply(Geometry.geometryChangedFilter)\n }\n\n geometryChangedAction () {\n this._envelope = null\n }\n\n equalsNorm (g) {\n if (g === null) return false\n return this.norm().equalsExact(g.norm())\n }\n\n getLength () {\n return 0.0\n }\n\n getNumGeometries () {\n return 1\n }\n\n compareTo () {\n let other\n if (arguments.length === 1) {\n const o = arguments[0]\n other = o\n if (this.getTypeCode() !== other.getTypeCode()) {\n return this.getTypeCode() - other.getTypeCode()\n }\n if (this.isEmpty() && other.isEmpty()) {\n return 0\n }\n if (this.isEmpty()) {\n return -1\n }\n if (other.isEmpty()) {\n return 1\n }\n return this.compareToSameClass(o)\n } else if (arguments.length === 2) {\n const o = arguments[0]; const comp = arguments[1]\n other = o\n if (this.getTypeCode() !== other.getTypeCode()) {\n return this.getTypeCode() - other.getTypeCode()\n }\n if (this.isEmpty() && other.isEmpty()) {\n return 0\n }\n if (this.isEmpty()) {\n return -1\n }\n if (other.isEmpty()) {\n return 1\n }\n return this.compareToSameClass(o, comp)\n }\n }\n\n getUserData () {\n return this._userData\n }\n\n getSRID () {\n return this._SRID\n }\n\n getEnvelope () {\n return this.getFactory().toGeometry(this.getEnvelopeInternal())\n }\n\n checkNotGeometryCollection (g) {\n if (g.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION) {\n throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n }\n }\n\n equal (a, b, tolerance) {\n if (tolerance === 0) {\n return a.equals(b)\n }\n return a.distance(b) <= tolerance\n }\n\n norm () {\n const copy = this.copy()\n copy.normalize()\n return copy\n }\n\n getPrecisionModel () {\n return this._factory.getPrecisionModel()\n }\n\n getEnvelopeInternal () {\n if (this._envelope === null) {\n this._envelope = this.computeEnvelopeInternal()\n }\n return new Envelope(this._envelope)\n }\n\n setSRID (SRID) {\n this._SRID = SRID\n }\n\n setUserData (userData) {\n this._userData = userData\n }\n\n compare (a, b) {\n const i = a.iterator()\n const j = b.iterator()\n while (i.hasNext() && j.hasNext()) {\n const aElement = i.next()\n const bElement = j.next()\n const comparison = aElement.compareTo(bElement)\n if (comparison !== 0) {\n return comparison\n }\n }\n if (i.hasNext()) {\n return 1\n }\n if (j.hasNext()) {\n return -1\n }\n return 0\n }\n\n hashCode () {\n return this.getEnvelopeInternal().hashCode()\n }\n\n isGeometryCollectionOrDerived () {\n if (this.getTypeCode() === Geometry.TYPECODE_GEOMETRYCOLLECTION || this.getTypeCode() === Geometry.TYPECODE_MULTIPOINT || this.getTypeCode() === Geometry.TYPECODE_MULTILINESTRING || this.getTypeCode() === Geometry.TYPECODE_MULTIPOLYGON) {\n return true\n }\n return false\n }\n\n get interfaces_ () {\n return [Cloneable, Comparable, Serializable]\n }\n\n getClass () {\n return Geometry\n }\n\n static hasNonEmptyElements (geometries) {\n for (let i = 0; i < geometries.length; i++) {\n if (!geometries[i].isEmpty()) {\n return true\n }\n }\n return false\n }\n\n static hasNullElements (array) {\n for (let i = 0; i < array.length; i++) {\n if (array[i] === null) {\n return true\n }\n }\n return false\n }\n};\nGeometry.constructor_ = function (factory) {\n if (!factory) { return }\n this._envelope = null\n this._userData = null\n this._factory = factory\n this._SRID = factory.getSRID()\n}\nGeometry.serialVersionUID = 8763622679187376702\nGeometry.TYPECODE_POINT = 0\nGeometry.TYPECODE_MULTIPOINT = 1\nGeometry.TYPECODE_LINESTRING = 2\nGeometry.TYPECODE_LINEARRING = 3\nGeometry.TYPECODE_MULTILINESTRING = 4\nGeometry.TYPECODE_POLYGON = 5\nGeometry.TYPECODE_MULTIPOLYGON = 6\nGeometry.TYPECODE_GEOMETRYCOLLECTION = 7\nGeometry.TYPENAME_POINT = 'Point'\nGeometry.TYPENAME_MULTIPOINT = 'MultiPoint'\nGeometry.TYPENAME_LINESTRING = 'LineString'\nGeometry.TYPENAME_LINEARRING = 'LinearRing'\nGeometry.TYPENAME_MULTILINESTRING = 'MultiLineString'\nGeometry.TYPENAME_POLYGON = 'Polygon'\nGeometry.TYPENAME_MULTIPOLYGON = 'MultiPolygon'\nGeometry.TYPENAME_GEOMETRYCOLLECTION = 'GeometryCollection'\nGeometry.geometryChangedFilter = {\n get interfaces_ () {\n return [GeometryComponentFilter]\n },\n filter (geom) {\n geom.geometryChangedAction()\n }\n}\n","export default class CoordinateFilter {\n constructor () {\n CoordinateFilter.constructor_.apply(this, arguments)\n }\n\n filter (coord) {}\n\n getClass () {\n return CoordinateFilter\n }\n\n get interfaces_ () {\n return []\n }\n}\nCoordinateFilter.constructor_ = function () {}\n","export default class BoundaryNodeRule {\n constructor () {\n BoundaryNodeRule.constructor_.apply(this, arguments)\n }\n\n isInBoundary (boundaryCount) {}\n\n getClass () {\n return BoundaryNodeRule\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass Mod2BoundaryNodeRule {\n constructor () {\n Mod2BoundaryNodeRule.constructor_.apply(this, arguments)\n }\n\n isInBoundary (boundaryCount) {\n return boundaryCount % 2 === 1\n }\n\n getClass () {\n return Mod2BoundaryNodeRule\n }\n\n get interfaces_ () {\n return [BoundaryNodeRule]\n }\n}\nMod2BoundaryNodeRule.constructor_ = function () {}\nclass EndPointBoundaryNodeRule {\n constructor () {\n EndPointBoundaryNodeRule.constructor_.apply(this, arguments)\n }\n\n isInBoundary (boundaryCount) {\n return boundaryCount > 0\n }\n\n getClass () {\n return EndPointBoundaryNodeRule\n }\n\n get interfaces_ () {\n return [BoundaryNodeRule]\n }\n}\nEndPointBoundaryNodeRule.constructor_ = function () {}\nclass MultiValentEndPointBoundaryNodeRule {\n constructor () {\n MultiValentEndPointBoundaryNodeRule.constructor_.apply(this, arguments)\n }\n\n isInBoundary (boundaryCount) {\n return boundaryCount > 1\n }\n\n getClass () {\n return MultiValentEndPointBoundaryNodeRule\n }\n\n get interfaces_ () {\n return [BoundaryNodeRule]\n }\n}\nMultiValentEndPointBoundaryNodeRule.constructor_ = function () {}\nclass MonoValentEndPointBoundaryNodeRule {\n constructor () {\n MonoValentEndPointBoundaryNodeRule.constructor_.apply(this, arguments)\n }\n\n isInBoundary (boundaryCount) {\n return boundaryCount === 1\n }\n\n getClass () {\n return MonoValentEndPointBoundaryNodeRule\n }\n\n get interfaces_ () {\n return [BoundaryNodeRule]\n }\n}\nMonoValentEndPointBoundaryNodeRule.constructor_ = function () {}\nBoundaryNodeRule.Mod2BoundaryNodeRule = Mod2BoundaryNodeRule\nBoundaryNodeRule.EndPointBoundaryNodeRule = EndPointBoundaryNodeRule\nBoundaryNodeRule.MultiValentEndPointBoundaryNodeRule = MultiValentEndPointBoundaryNodeRule\nBoundaryNodeRule.MonoValentEndPointBoundaryNodeRule = MonoValentEndPointBoundaryNodeRule\nBoundaryNodeRule.constructor_ = function () {}\nBoundaryNodeRule.MOD2_BOUNDARY_RULE = new Mod2BoundaryNodeRule()\nBoundaryNodeRule.ENDPOINT_BOUNDARY_RULE = new EndPointBoundaryNodeRule()\nBoundaryNodeRule.MULTIVALENT_ENDPOINT_BOUNDARY_RULE = new MultiValentEndPointBoundaryNodeRule()\nBoundaryNodeRule.MONOVALENT_ENDPOINT_BOUNDARY_RULE = new MonoValentEndPointBoundaryNodeRule()\nBoundaryNodeRule.OGC_SFS_BOUNDARY_RULE = BoundaryNodeRule.MOD2_BOUNDARY_RULE\n","import CoordinateList from './CoordinateList'\nimport Coordinate from './Coordinate'\nimport MathUtil from '../math/MathUtil'\nimport System from '../../../../java/lang/System'\nimport Comparator from '../../../../java/util/Comparator'\nimport Envelope from './Envelope'\nexport default class CoordinateArrays {\n constructor () {\n CoordinateArrays.constructor_.apply(this, arguments)\n }\n\n static isRing (pts) {\n if (pts.length < 4) return false\n if (!pts[0].equals2D(pts[pts.length - 1])) return false\n return true\n }\n\n static ptNotInList (testPts, pts) {\n for (let i = 0; i < testPts.length; i++) {\n const testPt = testPts[i]\n if (CoordinateArrays.indexOf(testPt, pts) < 0) return testPt\n }\n return null\n }\n\n static scroll (coordinates, firstCoordinate) {\n const i = CoordinateArrays.indexOf(firstCoordinate, coordinates)\n if (i < 0) return null\n const newCoordinates = new Array(coordinates.length).fill(null)\n System.arraycopy(coordinates, i, newCoordinates, 0, coordinates.length - i)\n System.arraycopy(coordinates, 0, newCoordinates, coordinates.length - i, i)\n System.arraycopy(newCoordinates, 0, coordinates, 0, coordinates.length)\n }\n\n static equals () {\n if (arguments.length === 2) {\n const coord1 = arguments[0]; const coord2 = arguments[1]\n if (coord1 === coord2) return true\n if (coord1 === null || coord2 === null) return false\n if (coord1.length !== coord2.length) return false\n for (let i = 0; i < coord1.length; i++) {\n if (!coord1[i].equals(coord2[i])) return false\n }\n return true\n } else if (arguments.length === 3) {\n const coord1 = arguments[0]; const coord2 = arguments[1]; const coordinateComparator = arguments[2]\n if (coord1 === coord2) return true\n if (coord1 === null || coord2 === null) return false\n if (coord1.length !== coord2.length) return false\n for (let i = 0; i < coord1.length; i++) {\n if (coordinateComparator.compare(coord1[i], coord2[i]) !== 0) return false\n }\n return true\n }\n }\n\n static intersection (coordinates, env) {\n const coordList = new CoordinateList()\n for (let i = 0; i < coordinates.length; i++) {\n if (env.intersects(coordinates[i])) coordList.add(coordinates[i], true)\n }\n return coordList.toCoordinateArray()\n }\n\n static hasRepeatedPoints (coord) {\n for (let i = 1; i < coord.length; i++) {\n if (coord[i - 1].equals(coord[i])) {\n return true\n }\n }\n return false\n }\n\n static removeRepeatedPoints (coord) {\n if (!CoordinateArrays.hasRepeatedPoints(coord)) return coord\n const coordList = new CoordinateList(coord, false)\n return coordList.toCoordinateArray()\n }\n\n static reverse (coord) {\n const last = coord.length - 1\n const mid = Math.trunc(last / 2)\n for (let i = 0; i <= mid; i++) {\n const tmp = coord[i]\n coord[i] = coord[last - i]\n coord[last - i] = tmp\n }\n }\n\n static removeNull (coord) {\n let nonNull = 0\n for (let i = 0; i < coord.length; i++) {\n if (coord[i] !== null) nonNull++\n }\n const newCoord = new Array(nonNull).fill(null)\n if (nonNull === 0) return newCoord\n let j = 0\n for (let i = 0; i < coord.length; i++) {\n if (coord[i] !== null) newCoord[j++] = coord[i]\n }\n return newCoord\n }\n\n static copyDeep () {\n if (arguments.length === 1) {\n const coordinates = arguments[0]\n const copy = new Array(coordinates.length).fill(null)\n for (let i = 0; i < coordinates.length; i++) {\n copy[i] = new Coordinate(coordinates[i])\n }\n return copy\n } else if (arguments.length === 5) {\n const src = arguments[0]; const srcStart = arguments[1]; const dest = arguments[2]; const destStart = arguments[3]; const length = arguments[4]\n for (let i = 0; i < length; i++) {\n dest[destStart + i] = new Coordinate(src[srcStart + i])\n }\n }\n }\n\n static isEqualReversed (pts1, pts2) {\n for (let i = 0; i < pts1.length; i++) {\n const p1 = pts1[i]\n const p2 = pts2[pts1.length - i - 1]\n if (p1.compareTo(p2) !== 0) return false\n }\n return true\n }\n\n static envelope (coordinates) {\n const env = new Envelope()\n for (let i = 0; i < coordinates.length; i++) {\n env.expandToInclude(coordinates[i])\n }\n return env\n }\n\n static toCoordinateArray (coordList) {\n return coordList.toArray(CoordinateArrays.coordArrayType)\n }\n\n static atLeastNCoordinatesOrNothing (n, c) {\n return c.length >= n ? c : []\n }\n\n static indexOf (coordinate, coordinates) {\n for (let i = 0; i < coordinates.length; i++) {\n if (coordinate.equals(coordinates[i])) {\n return i\n }\n }\n return -1\n }\n\n static increasingDirection (pts) {\n for (let i = 0; i < Math.trunc(pts.length / 2); i++) {\n const j = pts.length - 1 - i\n const comp = pts[i].compareTo(pts[j])\n if (comp !== 0) return comp\n }\n return 1\n }\n\n static compare (pts1, pts2) {\n let i = 0\n while (i < pts1.length && i < pts2.length) {\n const compare = pts1[i].compareTo(pts2[i])\n if (compare !== 0) return compare\n i++\n }\n if (i < pts2.length) return -1\n if (i < pts1.length) return 1\n return 0\n }\n\n static minCoordinate (coordinates) {\n let minCoord = null\n for (let i = 0; i < coordinates.length; i++) {\n if (minCoord === null || minCoord.compareTo(coordinates[i]) > 0) {\n minCoord = coordinates[i]\n }\n }\n return minCoord\n }\n\n static extract (pts, start, end) {\n start = MathUtil.clamp(start, 0, pts.length)\n end = MathUtil.clamp(end, -1, pts.length)\n let npts = end - start + 1\n if (end < 0) npts = 0\n if (start >= pts.length) npts = 0\n if (end < start) npts = 0\n const extractPts = new Array(npts).fill(null)\n if (npts === 0) return extractPts\n let iPts = 0\n for (let i = start; i <= end; i++) {\n extractPts[iPts++] = pts[i]\n }\n return extractPts\n }\n\n getClass () {\n return CoordinateArrays\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass ForwardComparator {\n constructor () {\n ForwardComparator.constructor_.apply(this, arguments)\n }\n\n compare (o1, o2) {\n const pts1 = o1\n const pts2 = o2\n return CoordinateArrays.compare(pts1, pts2)\n }\n\n getClass () {\n return ForwardComparator\n }\n\n get interfaces_ () {\n return [Comparator]\n }\n}\nForwardComparator.constructor_ = function () {}\nclass BidirectionalComparator {\n constructor () {\n BidirectionalComparator.constructor_.apply(this, arguments)\n }\n\n compare (o1, o2) {\n const pts1 = o1\n const pts2 = o2\n if (pts1.length < pts2.length) return -1\n if (pts1.length > pts2.length) return 1\n if (pts1.length === 0) return 0\n const forwardComp = CoordinateArrays.compare(pts1, pts2)\n const isEqualRev = CoordinateArrays.isEqualReversed(pts1, pts2)\n if (isEqualRev) return 0\n return forwardComp\n }\n\n OLDcompare (o1, o2) {\n const pts1 = o1\n const pts2 = o2\n if (pts1.length < pts2.length) return -1\n if (pts1.length > pts2.length) return 1\n if (pts1.length === 0) return 0\n const dir1 = CoordinateArrays.increasingDirection(pts1)\n const dir2 = CoordinateArrays.increasingDirection(pts2)\n let i1 = dir1 > 0 ? 0 : pts1.length - 1\n let i2 = dir2 > 0 ? 0 : pts1.length - 1\n for (let i = 0; i < pts1.length; i++) {\n const comparePt = pts1[i1].compareTo(pts2[i2])\n if (comparePt !== 0) return comparePt\n i1 += dir1\n i2 += dir2\n }\n return 0\n }\n\n getClass () {\n return BidirectionalComparator\n }\n\n get interfaces_ () {\n return [Comparator]\n }\n}\nBidirectionalComparator.constructor_ = function () {}\nCoordinateArrays.ForwardComparator = ForwardComparator\nCoordinateArrays.BidirectionalComparator = BidirectionalComparator\nCoordinateArrays.constructor_ = function () {}\nCoordinateArrays.coordArrayType = new Array(0).fill(null)\n","/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Map.html\n *\n * @constructor\n * @private\n */\nexport default function Map () {};\n\n/**\n * Returns the value to which the specified key is mapped, or null if this map\n * contains no mapping for the key.\n * @param {Object} key\n * @return {Object}\n */\nMap.prototype.get = function () {}\n\n/**\n * Associates the specified value with the specified key in this map (optional\n * operation).\n * @param {Object} key\n * @param {Object} value\n * @return {Object}\n */\nMap.prototype.put = function () {}\n\n/**\n * Returns the number of key-value mappings in this map.\n * @return {number}\n */\nMap.prototype.size = function () {}\n\n/**\n * Returns a Collection view of the values contained in this map.\n * @return {javascript.util.Collection}\n */\nMap.prototype.values = function () {}\n\n/**\n * Returns a {@link Set} view of the mappings contained in this map.\n * The set is backed by the map, so changes to the map are\n * reflected in the set, and vice-versa. If the map is modified\n * while an iteration over the set is in progress (except through\n * the iterator's own remove operation, or through the\n * setValue operation on a map entry returned by the\n * iterator) the results of the iteration are undefined. The set\n * supports element removal, which removes the corresponding\n * mapping from the map, via the Iterator.remove,\n * Set.remove, removeAll, retainAll and\n * clear operations. It does not support the\n * add or addAll operations.\n *\n * @return {Set} a set view of the mappings contained in this map\n */\nMap.prototype.entrySet = function () {}\n","import Map from './Map'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html\n *\n * @extends {Map}\n * @constructor\n * @private\n */\nexport default function SortedMap () {};\nSortedMap.prototype = new Map()\n","/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nexport default function OperationNotSupported (message) {\n this.message = message || ''\n};\nOperationNotSupported.prototype = new Error()\n\n/**\n * @type {string}\n */\nOperationNotSupported.prototype.name = 'OperationNotSupported'\n","import Collection from './Collection'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Set.html\n *\n * @extends {Collection}\n * @constructor\n * @private\n */\nexport default function Set () {};\nSet.prototype = new Collection()\n\n/**\n * Returns true if this set contains the specified element. More formally,\n * returns true if and only if this set contains an element e such that (o==null ?\n * e==null : o.equals(e)).\n * @param {Object} e\n * @return {boolean}\n */\nSet.prototype.contains = function () {}\n","import Collection from './Collection'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\nimport Set from './Set'\n\n/**\n * @see http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html\n *\n * @extends {javascript.util.Set}\n * @constructor\n * @private\n */\nexport default function HashSet () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = []\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0])\n }\n};\nHashSet.prototype = new Set()\n\n/**\n * @override\n */\nHashSet.prototype.contains = function (o) {\n for (let i = 0, len = this.array_.length; i < len; i++) {\n const e = this.array_[i]\n if (e === o) {\n return true\n }\n }\n return false\n}\n\n/**\n * @override\n */\nHashSet.prototype.add = function (o) {\n if (this.contains(o)) {\n return false\n }\n\n this.array_.push(o)\n\n return true\n}\n\n/**\n * @override\n */\nHashSet.prototype.addAll = function (c) {\n for (let i = c.iterator(); i.hasNext();) {\n this.add(i.next())\n }\n return true\n}\n\n/**\n * @override\n */\nHashSet.prototype.remove = function (o) {\n throw new OperationNotSupported()\n}\n\n/**\n * @override\n */\nHashSet.prototype.size = function () {\n return this.array_.length\n}\n\n/**\n * @override\n */\nHashSet.prototype.isEmpty = function () {\n return this.array_.length === 0\n}\n\n/**\n * @override\n */\nHashSet.prototype.toArray = function () {\n const array = []\n\n for (let i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i])\n }\n\n return array\n}\n\n/**\n * @override\n */\nHashSet.prototype.iterator = function () {\n return new Iterator_(this)\n}\n\n/**\n * @extends {Iterator}\n * @param {HashSet} hashSet\n * @constructor\n * @private\n */\nconst Iterator_ = function (hashSet) {\n /**\n * @type {HashSet}\n * @private\n */\n this.hashSet_ = hashSet\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0\n}\n\n/**\n * @override\n */\nIterator_.prototype.next = function () {\n if (this.position_ === this.hashSet_.size()) {\n throw new NoSuchElementException()\n }\n return this.hashSet_.array_[this.position_++]\n}\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function () {\n if (this.position_ < this.hashSet_.size()) {\n return true\n } else {\n return false\n }\n}\n\n/**\n * @override\n */\nIterator_.prototype.remove = function () {\n throw new OperationNotSupported()\n}\n","import ArrayList from './ArrayList'\nimport SortedMap from './SortedMap'\nimport HashSet from './HashSet'\n\nconst BLACK = 0\nconst RED = 1\nfunction colorOf (p) { return (p == null ? BLACK : p.color) }\nfunction parentOf (p) { return (p == null ? null : p.parent) }\nfunction setColor (p, c) { if (p !== null) p.color = c }\nfunction leftOf (p) { return (p == null ? null : p.left) }\nfunction rightOf (p) { return (p == null ? null : p.right) }\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html\n *\n * @extends {SortedMap}\n * @constructor\n * @private\n */\nexport default function TreeMap () {\n /**\n * @type {Object}\n * @private\n */\n this.root_ = null\n /**\n * @type {number}\n * @private\n */\n this.size_ = 0\n};\nTreeMap.prototype = new SortedMap()\n\n/**\n * @override\n */\nTreeMap.prototype.get = function (key) {\n var p = this.root_\n while (p !== null) {\n var cmp = key['compareTo'](p.key)\n if (cmp < 0) {\n p = p.left\n } else if (cmp > 0) {\n p = p.right\n } else {\n return p.value\n }\n }\n return null\n}\n\n/**\n * @override\n */\nTreeMap.prototype.put = function (key, value) {\n if (this.root_ === null) {\n this.root_ = {\n key: key,\n value: value,\n left: null,\n right: null,\n parent: null,\n color: BLACK,\n getValue () { return this.value },\n getKey () { return this.key }\n }\n this.size_ = 1\n return null\n }\n var t = this.root_; var parent; var cmp\n do {\n parent = t\n cmp = key['compareTo'](t.key)\n if (cmp < 0) {\n t = t.left\n } else if (cmp > 0) {\n t = t.right\n } else {\n var oldValue = t.value\n t.value = value\n return oldValue\n }\n } while (t !== null)\n var e = {\n key: key,\n left: null,\n right: null,\n value: value,\n parent: parent,\n color: BLACK,\n getValue () { return this.value },\n getKey () { return this.key }\n }\n if (cmp < 0) {\n parent.left = e\n } else {\n parent.right = e\n }\n this.fixAfterInsertion(e)\n this.size_++\n return null\n}\n\n/**\n * @param {Object} x\n */\nTreeMap.prototype.fixAfterInsertion = function (x) {\n let y\n x.color = RED\n while (x != null && x !== this.root_ && x.parent.color === RED) {\n if (parentOf(x) === leftOf(parentOf(parentOf(x)))) {\n y = rightOf(parentOf(parentOf(x)))\n if (colorOf(y) === RED) {\n setColor(parentOf(x), BLACK)\n setColor(y, BLACK)\n setColor(parentOf(parentOf(x)), RED)\n x = parentOf(parentOf(x))\n } else {\n if (x === rightOf(parentOf(x))) {\n x = parentOf(x)\n this.rotateLeft(x)\n }\n setColor(parentOf(x), BLACK)\n setColor(parentOf(parentOf(x)), RED)\n this.rotateRight(parentOf(parentOf(x)))\n }\n } else {\n y = leftOf(parentOf(parentOf(x)))\n if (colorOf(y) === RED) {\n setColor(parentOf(x), BLACK)\n setColor(y, BLACK)\n setColor(parentOf(parentOf(x)), RED)\n x = parentOf(parentOf(x))\n } else {\n if (x === leftOf(parentOf(x))) {\n x = parentOf(x)\n this.rotateRight(x)\n }\n setColor(parentOf(x), BLACK)\n setColor(parentOf(parentOf(x)), RED)\n this.rotateLeft(parentOf(parentOf(x)))\n }\n }\n }\n this.root_.color = BLACK\n}\n\n/**\n * @override\n */\nTreeMap.prototype.values = function () {\n var arrayList = new ArrayList()\n var p = this.getFirstEntry()\n if (p !== null) {\n arrayList.add(p.value)\n while ((p = TreeMap.successor(p)) !== null) {\n arrayList.add(p.value)\n }\n }\n return arrayList\n}\n\n/**\n * @override\n */\nTreeMap.prototype.entrySet = function () {\n var hashSet = new HashSet()\n var p = this.getFirstEntry()\n if (p !== null) {\n hashSet.add(p)\n while ((p = TreeMap.successor(p)) !== null) {\n hashSet.add(p)\n }\n }\n return hashSet\n}\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateLeft = function (p) {\n if (p != null) {\n var r = p.right\n p.right = r.left\n if (r.left != null) { r.left.parent = p }\n r.parent = p.parent\n if (p.parent == null) { this.root_ = r } else if (p.parent.left === p) { p.parent.left = r } else { p.parent.right = r }\n r.left = p\n p.parent = r\n }\n}\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateRight = function (p) {\n if (p != null) {\n var l = p.left\n p.left = l.right\n if (l.right != null) l.right.parent = p\n l.parent = p.parent\n if (p.parent == null) { this.root_ = l } else if (p.parent.right === p) { p.parent.right = l } else p.parent.left = l\n l.right = p\n p.parent = l\n }\n}\n\n/**\n * @return {Object}\n */\nTreeMap.prototype.getFirstEntry = function () {\n var p = this.root_\n if (p != null) {\n while (p.left != null) {\n p = p.left\n }\n }\n return p\n}\n\n/**\n * @param {Object} t\n * @return {Object}\n * @private\n */\nTreeMap.successor = function (t) {\n let p\n if (t === null) { return null } else if (t.right !== null) {\n p = t.right\n while (p.left !== null) {\n p = p.left\n }\n return p\n } else {\n p = t.parent\n var ch = t\n while (p !== null && ch === p.right) {\n ch = p\n p = p.parent\n }\n return p\n }\n}\n\n/**\n * @override\n */\nTreeMap.prototype.size = function () {\n return this.size_\n}\n\nTreeMap.prototype.containsKey = function (key) {\n var p = this.root_\n while (p !== null) {\n var cmp = key['compareTo'](p.key)\n if (cmp < 0) {\n p = p.left\n } else if (cmp > 0) {\n p = p.right\n } else {\n return true\n }\n }\n return false\n}\n","export default class Lineal {\n constructor () {\n Lineal.constructor_.apply(this, arguments)\n }\n\n getClass () {\n return Lineal\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineal.constructor_ = function () {}\n","import Set from './Set'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html\n *\n * @extends {Set}\n * @constructor\n * @private\n */\nexport default function SortedSet () {};\nSortedSet.prototype = new Set()\n","import Collection from './Collection'\nimport NoSuchElementException from './NoSuchElementException'\nimport OperationNotSupported from './OperationNotSupported'\nimport SortedSet from './SortedSet'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html\n *\n * @extends {SortedSet}\n * @constructor\n * @private\n */\nexport default function TreeSet () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = []\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0])\n }\n};\nTreeSet.prototype = new SortedSet()\n\n/**\n * @override\n */\nTreeSet.prototype.contains = function (o) {\n for (let i = 0, len = this.array_.length; i < len; i++) {\n const e = this.array_[i]\n if (e['compareTo'](o) === 0) {\n return true\n }\n }\n return false\n}\n\n/**\n * @override\n */\nTreeSet.prototype.add = function (o) {\n if (this.contains(o)) {\n return false\n }\n\n for (let i = 0, len = this.array_.length; i < len; i++) {\n const e = this.array_[i]\n if (e['compareTo'](o) === 1) {\n this.array_.splice(i, 0, o)\n return true\n }\n }\n\n this.array_.push(o)\n\n return true\n}\n\n/**\n * @override\n */\nTreeSet.prototype.addAll = function (c) {\n for (let i = c.iterator(); i.hasNext();) {\n this.add(i.next())\n }\n return true\n}\n\n/**\n * @override\n */\nTreeSet.prototype.remove = function (e) {\n throw new OperationNotSupported()\n}\n\n/**\n * @override\n */\nTreeSet.prototype.size = function () {\n return this.array_.length\n}\n\n/**\n * @override\n */\nTreeSet.prototype.isEmpty = function () {\n return this.array_.length === 0\n}\n\n/**\n * @override\n */\nTreeSet.prototype.toArray = function () {\n const array = []\n\n for (let i = 0, len = this.array_.length; i < len; i++) {\n array.push(this.array_[i])\n }\n\n return array\n}\n\n/**\n * @override\n */\nTreeSet.prototype.iterator = function () {\n return new Iterator_(this)\n}\n\n/**\n * @extends {javascript.util.Iterator}\n * @param {javascript.util.TreeSet} treeSet\n * @constructor\n * @private\n */\nconst Iterator_ = function (treeSet) {\n /**\n * @type {javascript.util.TreeSet}\n * @private\n */\n this.treeSet_ = treeSet\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0\n}\n\n/**\n * @override\n */\nIterator_.prototype.next = function () {\n if (this.position_ === this.treeSet_.size()) {\n throw new NoSuchElementException()\n }\n return this.treeSet_.array_[this.position_++]\n}\n\n/**\n * @override\n */\nIterator_.prototype.hasNext = function () {\n if (this.position_ < this.treeSet_.size()) {\n return true\n } else {\n return false\n }\n}\n\n/**\n * @override\n */\nIterator_.prototype.remove = function () {\n throw new OperationNotSupported()\n}\n","import ArrayList from './ArrayList'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html\n *\n * @constructor\n * @private\n */\nexport default function Arrays () {};\n\n/**\n */\nArrays.sort = function () {\n const a = arguments[0]; let i; let t; let comparator; let compare\n if (arguments.length === 1) {\n compare = function (a, b) {\n return a.compareTo(b)\n }\n a.sort(compare)\n } else if (arguments.length === 2) {\n comparator = arguments[1]\n compare = function (a, b) {\n return comparator['compare'](a, b)\n }\n a.sort(compare)\n } else if (arguments.length === 3) {\n t = a.slice(arguments[1], arguments[2])\n t.sort()\n const r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length))\n a.splice(0, a.length)\n for (i = 0; i < r.length; i++) {\n a.push(r[i])\n }\n } else if (arguments.length === 4) {\n t = a.slice(arguments[1], arguments[2])\n comparator = arguments[3]\n compare = function (a, b) {\n return comparator['compare'](a, b)\n }\n t.sort(compare)\n const r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length))\n a.splice(0, a.length)\n for (i = 0; i < r.length; i++) {\n a.push(r[i])\n }\n }\n}\n\n/**\n * @param {Array} array\n * @return {ArrayList}\n */\nArrays.asList = function (array) {\n const arrayList = new ArrayList()\n for (let i = 0, len = array.length; i < len; i++) {\n arrayList.add(array[i])\n }\n return arrayList\n}\n","import IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Character from '../../../../java/lang/Character'\nexport default class Dimension {\n constructor () {\n Dimension.constructor_.apply(this, arguments)\n }\n\n static toDimensionSymbol (dimensionValue) {\n switch (dimensionValue) {\n case Dimension.FALSE:\n return Dimension.SYM_FALSE\n case Dimension.TRUE:\n return Dimension.SYM_TRUE\n case Dimension.DONTCARE:\n return Dimension.SYM_DONTCARE\n case Dimension.P:\n return Dimension.SYM_P\n case Dimension.L:\n return Dimension.SYM_L\n case Dimension.A:\n return Dimension.SYM_A\n }\n throw new IllegalArgumentException('Unknown dimension value: ' + dimensionValue)\n }\n\n static toDimensionValue (dimensionSymbol) {\n switch (Character.toUpperCase(dimensionSymbol)) {\n case Dimension.SYM_FALSE:\n return Dimension.FALSE\n case Dimension.SYM_TRUE:\n return Dimension.TRUE\n case Dimension.SYM_DONTCARE:\n return Dimension.DONTCARE\n case Dimension.SYM_P:\n return Dimension.P\n case Dimension.SYM_L:\n return Dimension.L\n case Dimension.SYM_A:\n return Dimension.A\n }\n throw new IllegalArgumentException('Unknown dimension symbol: ' + dimensionSymbol)\n }\n\n getClass () {\n return Dimension\n }\n\n get interfaces_ () {\n return []\n }\n}\nDimension.constructor_ = function () {}\nDimension.P = 0\nDimension.L = 1\nDimension.A = 2\nDimension.FALSE = -1\nDimension.TRUE = -2\nDimension.DONTCARE = -3\nDimension.SYM_FALSE = 'F'\nDimension.SYM_TRUE = 'T'\nDimension.SYM_DONTCARE = '*'\nDimension.SYM_P = '0'\nDimension.SYM_L = '1'\nDimension.SYM_A = '2'\n","export default class GeometryFilter {\n constructor () {\n GeometryFilter.constructor_.apply(this, arguments)\n }\n\n filter (geom) {}\n\n getClass () {\n return GeometryFilter\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryFilter.constructor_ = function () {}\n","export default class CoordinateSequenceFilter {\n constructor () {\n CoordinateSequenceFilter.constructor_.apply(this, arguments)\n }\n\n filter (seq, i) {}\n\n isDone () {}\n\n isGeometryChanged () {}\n\n getClass () {\n return CoordinateSequenceFilter\n }\n\n get interfaces_ () {\n return []\n }\n}\nCoordinateSequenceFilter.constructor_ = function () {}\n","import TreeSet from '../../../../java/util/TreeSet'\nimport Geometry from './Geometry'\nimport Arrays from '../../../../java/util/Arrays'\nimport CoordinateFilter from './CoordinateFilter'\nimport hasInterface from '../../../../hasInterface'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport GeometryComponentFilter from './GeometryComponentFilter'\nimport Dimension from './Dimension'\nimport GeometryFilter from './GeometryFilter'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter'\nimport Envelope from './Envelope'\nimport Assert from '../util/Assert'\nexport default class GeometryCollection extends Geometry {\n constructor () {\n super()\n GeometryCollection.constructor_.apply(this, arguments)\n }\n\n computeEnvelopeInternal () {\n const envelope = new Envelope()\n for (let i = 0; i < this._geometries.length; i++) {\n envelope.expandToInclude(this._geometries[i].getEnvelopeInternal())\n }\n return envelope\n }\n\n getGeometryN (n) {\n return this._geometries[n]\n }\n\n getCoordinates () {\n const coordinates = new Array(this.getNumPoints()).fill(null)\n let k = -1\n for (let i = 0; i < this._geometries.length; i++) {\n const childCoordinates = this._geometries[i].getCoordinates()\n for (let j = 0; j < childCoordinates.length; j++) {\n k++\n coordinates[k] = childCoordinates[j]\n }\n }\n return coordinates\n }\n\n getArea () {\n let area = 0.0\n for (let i = 0; i < this._geometries.length; i++) {\n area += this._geometries[i].getArea()\n }\n return area\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n const otherCollection = other\n if (this._geometries.length !== otherCollection._geometries.length) {\n return false\n }\n for (let i = 0; i < this._geometries.length; i++) {\n if (!this._geometries[i].equalsExact(otherCollection._geometries[i], tolerance)) {\n return false\n }\n }\n return true\n } else return super.equalsExact.apply(this, arguments)\n }\n\n normalize () {\n for (let i = 0; i < this._geometries.length; i++) {\n this._geometries[i].normalize()\n }\n Arrays.sort(this._geometries)\n }\n\n getCoordinate () {\n if (this.isEmpty()) return null\n return this._geometries[0].getCoordinate()\n }\n\n getBoundaryDimension () {\n let dimension = Dimension.FALSE\n for (let i = 0; i < this._geometries.length; i++) {\n dimension = Math.max(dimension, this._geometries[i].getBoundaryDimension())\n }\n return dimension\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_GEOMETRYCOLLECTION\n }\n\n getDimension () {\n let dimension = Dimension.FALSE\n for (let i = 0; i < this._geometries.length; i++) {\n dimension = Math.max(dimension, this._geometries[i].getDimension())\n }\n return dimension\n }\n\n getLength () {\n let sum = 0.0\n for (let i = 0; i < this._geometries.length; i++) {\n sum += this._geometries[i].getLength()\n }\n return sum\n }\n\n getNumPoints () {\n let numPoints = 0\n for (let i = 0; i < this._geometries.length; i++) {\n numPoints += this._geometries[i].getNumPoints()\n }\n return numPoints\n }\n\n getNumGeometries () {\n return this._geometries.length\n }\n\n reverse () {\n const n = this._geometries.length\n const revGeoms = new Array(n).fill(null)\n for (let i = 0; i < this._geometries.length; i++) {\n revGeoms[i] = this._geometries[i].reverse()\n }\n return this.getFactory().createGeometryCollection(revGeoms)\n }\n\n compareToSameClass () {\n if (arguments.length === 1) {\n const o = arguments[0]\n const theseElements = new TreeSet(Arrays.asList(this._geometries))\n const otherElements = new TreeSet(Arrays.asList(o._geometries))\n return this.compare(theseElements, otherElements)\n } else if (arguments.length === 2) {\n const o = arguments[0]; const comp = arguments[1]\n const gc = o\n const n1 = this.getNumGeometries()\n const n2 = gc.getNumGeometries()\n let i = 0\n while (i < n1 && i < n2) {\n const thisGeom = this.getGeometryN(i)\n const otherGeom = gc.getGeometryN(i)\n const holeComp = thisGeom.compareToSameClass(otherGeom, comp)\n if (holeComp !== 0) return holeComp\n i++\n }\n if (i < n1) return 1\n if (i < n2) return -1\n return 0\n }\n }\n\n apply () {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n for (let i = 0; i < this._geometries.length; i++) {\n this._geometries[i].apply(filter)\n }\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n if (this._geometries.length === 0) return null\n for (let i = 0; i < this._geometries.length; i++) {\n this._geometries[i].apply(filter)\n if (filter.isDone()) {\n break\n }\n }\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n for (let i = 0; i < this._geometries.length; i++) {\n this._geometries[i].apply(filter)\n }\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n for (let i = 0; i < this._geometries.length; i++) {\n this._geometries[i].apply(filter)\n }\n }\n }\n\n getBoundary () {\n this.checkNotGeometryCollection(this)\n Assert.shouldNeverReachHere()\n return null\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_GEOMETRYCOLLECTION\n }\n\n copy () {\n const geometries = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < geometries.length; i++) {\n geometries[i] = this._geometries[i].copy()\n }\n return new GeometryCollection(geometries, this._factory)\n }\n\n isEmpty () {\n for (let i = 0; i < this._geometries.length; i++) {\n if (!this._geometries[i].isEmpty()) {\n return false\n }\n }\n return true\n }\n\n getClass () {\n return GeometryCollection\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryCollection.constructor_ = function () {\n this._geometries = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n let geometries = arguments[0]; const factory = arguments[1]\n Geometry.constructor_.call(this, factory)\n if (geometries === null) {\n geometries = []\n }\n if (Geometry.hasNullElements(geometries)) {\n throw new IllegalArgumentException('geometries must not contain null elements')\n }\n this._geometries = geometries\n }\n}\nGeometryCollection.serialVersionUID = -5694727726395021467\n","import Geometry from './Geometry'\nimport BoundaryOp from '../operation/BoundaryOp'\nimport Lineal from './Lineal'\nimport GeometryCollection from './GeometryCollection'\nimport Dimension from './Dimension'\nexport default class MultiLineString extends GeometryCollection {\n constructor () {\n super()\n MultiLineString.constructor_.apply(this, arguments)\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n return super.equalsExact.call(this, other, tolerance)\n } else return super.equalsExact.apply(this, arguments)\n }\n\n getBoundaryDimension () {\n if (this.isClosed()) {\n return Dimension.FALSE\n }\n return 0\n }\n\n isClosed () {\n if (this.isEmpty()) {\n return false\n }\n for (let i = 0; i < this._geometries.length; i++) {\n if (!this._geometries[i].isClosed()) {\n return false\n }\n }\n return true\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_MULTILINESTRING\n }\n\n getDimension () {\n return 1\n }\n\n reverse () {\n const nLines = this._geometries.length\n const revLines = new Array(nLines).fill(null)\n for (let i = 0; i < this._geometries.length; i++) {\n revLines[nLines - 1 - i] = this._geometries[i].reverse()\n }\n return this.getFactory().createMultiLineString(revLines)\n }\n\n getBoundary () {\n return new BoundaryOp(this).getBoundary()\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_MULTILINESTRING\n }\n\n copy () {\n const lineStrings = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < lineStrings.length; i++) {\n lineStrings[i] = this._geometries[i].copy()\n }\n return new MultiLineString(lineStrings, this._factory)\n }\n\n getClass () {\n return MultiLineString\n }\n\n get interfaces_ () {\n return [Lineal]\n }\n}\nMultiLineString.constructor_ = function () {\n const lineStrings = arguments[0]; const factory = arguments[1]\n GeometryCollection.constructor_.call(this, lineStrings, factory)\n}\nMultiLineString.serialVersionUID = 8166665132445433741\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\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]; const bnRule = arguments[1]\n const bop = new BoundaryOp(g, bnRule)\n return bop.getBoundary()\n }\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\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\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\n getEmptyMultiPoint () {\n return this._geomFact.createMultiPoint()\n }\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\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\n getClass () {\n return BoundaryOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nBoundaryOp.constructor_ = function () {\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]; const bnRule = arguments[1]\n this._geom = geom\n this._geomFact = geom.getFactory()\n this._bnRule = bnRule\n }\n}\nclass Counter {\n constructor () {\n Counter.constructor_.apply(this, arguments)\n }\n\n getClass () {\n return Counter\n }\n\n get interfaces_ () {\n return []\n }\n}\nCounter.constructor_ = function () {\n this.count = null\n}\n","import Coordinate from '../geom/Coordinate'\nexport default class Length {\n constructor () {\n Length.constructor_.apply(this, arguments)\n }\n\n static ofLine (pts) {\n const n = pts.size()\n if (n <= 1) return 0.0\n let len = 0.0\n const p = new Coordinate()\n pts.getCoordinate(0, p)\n let x0 = p.x\n let y0 = p.y\n for (let i = 1; i < n; i++) {\n pts.getCoordinate(i, p)\n const x1 = p.x\n const y1 = p.y\n const dx = x1 - x0\n const dy = y1 - y0\n len += Math.sqrt(dx * dx + dy * dy)\n x0 = x1\n y0 = y1\n }\n return len\n }\n\n getClass () {\n return Length\n }\n\n get interfaces_ () {\n return []\n }\n}\nLength.constructor_ = function () {}\n","export default function PrintStream () {}\n","export default function StringReader () {}\n","export default function DecimalFormat () {}\n","export default function ByteArrayOutputStream () {}\n","export default function IOException () {}\n","export default function LineNumberReader () {}\n","import PrintStream from '../../../../java/io/PrintStream'\nimport StringReader from '../../../../java/io/StringReader'\nimport DecimalFormat from '../../../../java/text/DecimalFormat'\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 constructor () {\n StringUtil.constructor_.apply(this, arguments)\n }\n\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\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]; const 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\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\n static toString () {\n if (arguments.length === 1 && typeof arguments[0] === 'number') {\n const d = arguments[0]\n return StringUtil.SIMPLE_ORDINATE_FORMAT.format(d)\n }\n }\n\n static spaces (n) {\n return StringUtil.chars(' ', n)\n }\n\n getClass () {\n return StringUtil\n }\n\n get interfaces_ () {\n return []\n }\n}\nStringUtil.constructor_ = function () {}\nStringUtil.NEWLINE = System.getProperty('line.separator')\nStringUtil.SIMPLE_ORDINATE_FORMAT = new DecimalFormat('0.#')\n","export default function StringBuilder (str) {\n this.str = str\n}\n\nStringBuilder.prototype.append = function (e) {\n this.str += e\n}\n\nStringBuilder.prototype.setCharAt = function (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1)\n}\n\nStringBuilder.prototype.toString = function (e) {\n return this.str\n}\n","import hasInterface from '../../../../hasInterface'\nimport StringUtil from '../util/StringUtil'\nimport Double from '../../../../java/lang/Double'\nimport CoordinateSequence from './CoordinateSequence'\nimport StringBuilder from '../../../../java/lang/StringBuilder'\nexport default class CoordinateSequences {\n constructor () {\n CoordinateSequences.constructor_.apply(this, arguments)\n }\n\n static copyCoord (src, srcPos, dest, destPos) {\n const minDim = Math.min(src.getDimension(), dest.getDimension())\n for (let dim = 0; dim < minDim; dim++) {\n dest.setOrdinate(destPos, dim, src.getOrdinate(srcPos, dim))\n }\n }\n\n static isRing (seq) {\n const n = seq.size()\n if (n === 0) return true\n if (n <= 3) return false\n return seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y)\n }\n\n static isEqual (cs1, cs2) {\n const cs1Size = cs1.size()\n const cs2Size = cs2.size()\n if (cs1Size !== cs2Size) return false\n const dim = Math.min(cs1.getDimension(), cs2.getDimension())\n for (let i = 0; i < cs1Size; i++) {\n for (let d = 0; d < dim; d++) {\n const v1 = cs1.getOrdinate(i, d)\n const v2 = cs2.getOrdinate(i, d)\n if (cs1.getOrdinate(i, d) === cs2.getOrdinate(i, d)) continue\n if (Double.isNaN(v1) && Double.isNaN(v2)) continue\n return false\n }\n }\n return true\n }\n\n static extend (fact, seq, size) {\n const newseq = fact.create(size, seq.getDimension())\n const n = seq.size()\n CoordinateSequences.copy(seq, 0, newseq, 0, n)\n if (n > 0) {\n for (let i = n; i < size; i++) CoordinateSequences.copy(seq, n - 1, newseq, i, 1)\n }\n return newseq\n }\n\n static reverse (seq) {\n const last = seq.size() - 1\n const mid = Math.trunc(last / 2)\n for (let i = 0; i <= mid; i++) {\n CoordinateSequences.swap(seq, i, last - i)\n }\n }\n\n static swap (seq, i, j) {\n if (i === j) return null\n for (let dim = 0; dim < seq.getDimension(); dim++) {\n const tmp = seq.getOrdinate(i, dim)\n seq.setOrdinate(i, dim, seq.getOrdinate(j, dim))\n seq.setOrdinate(j, dim, tmp)\n }\n }\n\n static copy (src, srcPos, dest, destPos, length) {\n for (let i = 0; i < length; i++) {\n CoordinateSequences.copyCoord(src, srcPos + i, dest, destPos + i)\n }\n }\n\n static toString () {\n if (arguments.length === 1 && hasInterface(arguments[0], CoordinateSequence)) {\n const cs = arguments[0]\n const size = cs.size()\n if (size === 0) return '()'\n const dim = cs.getDimension()\n const builder = new StringBuilder()\n builder.append('(')\n for (let i = 0; i < size; i++) {\n if (i > 0) builder.append(' ')\n for (let d = 0; d < dim; d++) {\n if (d > 0) builder.append(',')\n builder.append(StringUtil.toString(cs.getOrdinate(i, d)))\n }\n }\n builder.append(')')\n return builder.toString()\n }\n }\n\n static ensureValidRing (fact, seq) {\n const n = seq.size()\n if (n === 0) return seq\n if (n <= 3) return CoordinateSequences.createClosedRing(fact, seq, 4)\n const isClosed = seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y)\n if (isClosed) return seq\n return CoordinateSequences.createClosedRing(fact, seq, n + 1)\n }\n\n static createClosedRing (fact, seq, size) {\n const newseq = fact.create(size, seq.getDimension())\n const n = seq.size()\n CoordinateSequences.copy(seq, 0, newseq, 0, n)\n for (let i = n; i < size; i++) CoordinateSequences.copy(seq, 0, newseq, i, 1)\n return newseq\n }\n\n getClass () {\n return CoordinateSequences\n }\n\n get interfaces_ () {\n return []\n }\n}\nCoordinateSequences.constructor_ = function () {}\n","import Geometry from './Geometry'\nimport CoordinateFilter from './CoordinateFilter'\nimport hasInterface from '../../../../hasInterface'\nimport BoundaryOp from '../operation/BoundaryOp'\nimport Length from '../algorithm/Length'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Lineal from './Lineal'\nimport CoordinateSequences from './CoordinateSequences'\nimport GeometryComponentFilter from './GeometryComponentFilter'\nimport Dimension from './Dimension'\nimport GeometryFilter from './GeometryFilter'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter'\nimport Envelope from './Envelope'\nexport default class LineString extends Geometry {\n constructor () {\n super()\n LineString.constructor_.apply(this, arguments)\n }\n\n computeEnvelopeInternal () {\n if (this.isEmpty()) {\n return new Envelope()\n }\n return this._points.expandEnvelope(new Envelope())\n }\n\n isRing () {\n return this.isClosed() && this.isSimple()\n }\n\n getCoordinates () {\n return this._points.toCoordinateArray()\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n const otherLineString = other\n if (this._points.size() !== otherLineString._points.size()) {\n return false\n }\n for (let i = 0; i < this._points.size(); i++) {\n if (!this.equal(this._points.getCoordinate(i), otherLineString._points.getCoordinate(i), tolerance)) {\n return false\n }\n }\n return true\n } else return super.equalsExact.apply(this, arguments)\n }\n\n normalize () {\n for (let i = 0; i < Math.trunc(this._points.size() / 2); i++) {\n const j = this._points.size() - 1 - i\n if (!this._points.getCoordinate(i).equals(this._points.getCoordinate(j))) {\n if (this._points.getCoordinate(i).compareTo(this._points.getCoordinate(j)) > 0) {\n const copy = this._points.copy()\n CoordinateSequences.reverse(copy)\n this._points = copy\n }\n return null\n }\n }\n }\n\n getCoordinate () {\n if (this.isEmpty()) return null\n return this._points.getCoordinate(0)\n }\n\n getBoundaryDimension () {\n if (this.isClosed()) {\n return Dimension.FALSE\n }\n return 0\n }\n\n isClosed () {\n if (this.isEmpty()) {\n return false\n }\n return this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1))\n }\n\n getEndPoint () {\n if (this.isEmpty()) {\n return null\n }\n return this.getPointN(this.getNumPoints() - 1)\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_LINESTRING\n }\n\n getDimension () {\n return 1\n }\n\n getLength () {\n return Length.ofLine(this._points)\n }\n\n getNumPoints () {\n return this._points.size()\n }\n\n reverse () {\n const seq = this._points.copy()\n CoordinateSequences.reverse(seq)\n const revLine = this.getFactory().createLineString(seq)\n return revLine\n }\n\n compareToSameClass () {\n if (arguments.length === 1) {\n const o = arguments[0]\n const line = o\n let i = 0\n let j = 0\n while (i < this._points.size() && j < line._points.size()) {\n const comparison = this._points.getCoordinate(i).compareTo(line._points.getCoordinate(j))\n if (comparison !== 0) {\n return comparison\n }\n i++\n j++\n }\n if (i < this._points.size()) {\n return 1\n }\n if (j < line._points.size()) {\n return -1\n }\n return 0\n } else if (arguments.length === 2) {\n const o = arguments[0]; const comp = arguments[1]\n const line = o\n return comp.compare(this._points, line._points)\n }\n }\n\n apply () {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n for (let i = 0; i < this._points.size(); i++) {\n filter.filter(this._points.getCoordinate(i))\n }\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n if (this._points.size() === 0) return null\n for (let i = 0; i < this._points.size(); i++) {\n filter.filter(this._points, i)\n if (filter.isDone()) break\n }\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n }\n }\n\n getBoundary () {\n return new BoundaryOp(this).getBoundary()\n }\n\n isEquivalentClass (other) {\n return other instanceof LineString\n }\n\n getCoordinateN (n) {\n return this._points.getCoordinate(n)\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_LINESTRING\n }\n\n copy () {\n return new LineString(this._points.copy(), this._factory)\n }\n\n getCoordinateSequence () {\n return this._points\n }\n\n isEmpty () {\n return this._points.size() === 0\n }\n\n init (points) {\n if (points === null) {\n points = this.getFactory().getCoordinateSequenceFactory().create([])\n }\n if (points.size() === 1) {\n throw new IllegalArgumentException('Invalid number of points in LineString (found ' + points.size() + ' - must be 0 or >= 2)')\n }\n this._points = points\n }\n\n isCoordinate (pt) {\n for (let i = 0; i < this._points.size(); i++) {\n if (this._points.getCoordinate(i).equals(pt)) {\n return true\n }\n }\n return false\n }\n\n getStartPoint () {\n if (this.isEmpty()) {\n return null\n }\n return this.getPointN(0)\n }\n\n getPointN (n) {\n return this.getFactory().createPoint(this._points.getCoordinate(n))\n }\n\n getClass () {\n return LineString\n }\n\n get interfaces_ () {\n return [Lineal]\n }\n}\nLineString.constructor_ = function () {\n this._points = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const points = arguments[0]; const factory = arguments[1]\n Geometry.constructor_.call(this, factory)\n this.init(points)\n }\n}\nLineString.serialVersionUID = 3110669828065365560\n","export default class Puntal {\n constructor () {\n Puntal.constructor_.apply(this, arguments)\n }\n\n getClass () {\n return Puntal\n }\n\n get interfaces_ () {\n return []\n }\n}\nPuntal.constructor_ = function () {}\n","import Geometry from './Geometry'\nimport CoordinateFilter from './CoordinateFilter'\nimport hasInterface from '../../../../hasInterface'\nimport GeometryComponentFilter from './GeometryComponentFilter'\nimport Dimension from './Dimension'\nimport GeometryFilter from './GeometryFilter'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter'\nimport Puntal from './Puntal'\nimport Envelope from './Envelope'\nimport Assert from '../util/Assert'\nexport default class Point extends Geometry {\n constructor () {\n super()\n Point.constructor_.apply(this, arguments)\n }\n\n computeEnvelopeInternal () {\n if (this.isEmpty()) {\n return new Envelope()\n }\n const env = new Envelope()\n env.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0))\n return env\n }\n\n getCoordinates () {\n return this.isEmpty() ? [] : [this.getCoordinate()]\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n if (this.isEmpty() && other.isEmpty()) {\n return true\n }\n if (this.isEmpty() !== other.isEmpty()) {\n return false\n }\n return this.equal(other.getCoordinate(), this.getCoordinate(), tolerance)\n } else return super.equalsExact.apply(this, arguments)\n }\n\n normalize () {}\n\n getCoordinate () {\n return this._coordinates.size() !== 0 ? this._coordinates.getCoordinate(0) : null\n }\n\n getBoundaryDimension () {\n return Dimension.FALSE\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_POINT\n }\n\n getDimension () {\n return 0\n }\n\n getNumPoints () {\n return this.isEmpty() ? 0 : 1\n }\n\n reverse () {\n return this.copy()\n }\n\n getX () {\n if (this.getCoordinate() === null) {\n throw new IllegalStateException('getX called on empty Point')\n }\n return this.getCoordinate().x\n }\n\n compareToSameClass () {\n if (arguments.length === 1) {\n const other = arguments[0]\n const point = other\n return this.getCoordinate().compareTo(point.getCoordinate())\n } else if (arguments.length === 2) {\n const other = arguments[0]; const comp = arguments[1]\n const point = other\n return comp.compare(this._coordinates, point._coordinates)\n }\n }\n\n apply () {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n if (this.isEmpty()) {\n return null\n }\n filter.filter(this.getCoordinate())\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n if (this.isEmpty()) return null\n filter.filter(this._coordinates, 0)\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n }\n }\n\n getBoundary () {\n return this.getFactory().createGeometryCollection()\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_POINT\n }\n\n copy () {\n return new Point(this._coordinates.copy(), this._factory)\n }\n\n getCoordinateSequence () {\n return this._coordinates\n }\n\n getY () {\n if (this.getCoordinate() === null) {\n throw new IllegalStateException('getY called on empty Point')\n }\n return this.getCoordinate().y\n }\n\n isEmpty () {\n return this._coordinates.size() === 0\n }\n\n init (coordinates) {\n if (coordinates === null) {\n coordinates = this.getFactory().getCoordinateSequenceFactory().create([])\n }\n Assert.isTrue(coordinates.size() <= 1)\n this._coordinates = coordinates\n }\n\n isSimple () {\n return true\n }\n\n getClass () {\n return Point\n }\n\n get interfaces_ () {\n return [Puntal]\n }\n}\nPoint.constructor_ = function () {\n this._coordinates = null\n const coordinates = arguments[0]; const factory = arguments[1]\n Geometry.constructor_.call(this, factory)\n this.init(coordinates)\n}\nPoint.serialVersionUID = 4902022702746614570\n","import hasInterface from '../../../../hasInterface'\nimport Coordinate from '../geom/Coordinate'\nimport CoordinateSequence from '../geom/CoordinateSequence'\nexport default class Area {\n constructor () {\n Area.constructor_.apply(this, arguments)\n }\n\n static ofRing () {\n if (arguments[0] instanceof Array) {\n const ring = arguments[0]\n return Math.abs(Area.ofRingSigned(ring))\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const ring = arguments[0]\n return Math.abs(Area.ofRingSigned(ring))\n }\n }\n\n static ofRingSigned () {\n if (arguments[0] instanceof Array) {\n const ring = arguments[0]\n if (ring.length < 3) return 0.0\n let sum = 0.0\n const x0 = ring[0].x\n for (let i = 1; i < ring.length - 1; i++) {\n const x = ring[i].x - x0\n const y1 = ring[i + 1].y\n const y2 = ring[i - 1].y\n sum += x * (y2 - y1)\n }\n return sum / 2.0\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const ring = arguments[0]\n const n = ring.size()\n if (n < 3) return 0.0\n const p0 = new Coordinate()\n const p1 = new Coordinate()\n const p2 = new Coordinate()\n ring.getCoordinate(0, p1)\n ring.getCoordinate(1, p2)\n const x0 = p1.x\n p2.x -= x0\n let sum = 0.0\n for (let i = 1; i < n - 1; i++) {\n p0.y = p1.y\n p1.x = p2.x\n p1.y = p2.y\n ring.getCoordinate(i + 1, p2)\n p2.x -= x0\n sum += p1.x * (p0.y - p2.y)\n }\n return sum / 2.0\n }\n }\n\n getClass () {\n return Area\n }\n\n get interfaces_ () {\n return []\n }\n}\nArea.constructor_ = function () {}\n","export default class Polygonal {\n constructor () {\n Polygonal.constructor_.apply(this, arguments)\n }\n\n getClass () {\n return Polygonal\n }\n\n get interfaces_ () {\n return []\n }\n}\nPolygonal.constructor_ = function () {}\n","import Area from '../algorithm/Area'\nimport Geometry from './Geometry'\nimport Arrays from '../../../../java/util/Arrays'\nimport CoordinateFilter from './CoordinateFilter'\nimport hasInterface from '../../../../hasInterface'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport Orientation from '../algorithm/Orientation'\nimport System from '../../../../java/lang/System'\nimport GeometryComponentFilter from './GeometryComponentFilter'\nimport CoordinateArrays from './CoordinateArrays'\nimport Polygonal from './Polygonal'\nimport GeometryFilter from './GeometryFilter'\nimport CoordinateSequenceFilter from './CoordinateSequenceFilter'\nexport default class Polygon extends Geometry {\n constructor () {\n super()\n Polygon.constructor_.apply(this, arguments)\n }\n\n computeEnvelopeInternal () {\n return this._shell.getEnvelopeInternal()\n }\n\n getCoordinates () {\n if (this.isEmpty()) {\n return []\n }\n const coordinates = new Array(this.getNumPoints()).fill(null)\n let k = -1\n const shellCoordinates = this._shell.getCoordinates()\n for (let x = 0; x < shellCoordinates.length; x++) {\n k++\n coordinates[k] = shellCoordinates[x]\n }\n for (let i = 0; i < this._holes.length; i++) {\n const childCoordinates = this._holes[i].getCoordinates()\n for (let j = 0; j < childCoordinates.length; j++) {\n k++\n coordinates[k] = childCoordinates[j]\n }\n }\n return coordinates\n }\n\n getArea () {\n let area = 0.0\n area += Area.ofRing(this._shell.getCoordinateSequence())\n for (let i = 0; i < this._holes.length; i++) {\n area -= Area.ofRing(this._holes[i].getCoordinateSequence())\n }\n return area\n }\n\n isRectangle () {\n if (this.getNumInteriorRing() !== 0) return false\n if (this._shell === null) return false\n if (this._shell.getNumPoints() !== 5) return false\n const seq = this._shell.getCoordinateSequence()\n const env = this.getEnvelopeInternal()\n for (let i = 0; i < 5; i++) {\n const x = seq.getX(i)\n if (!(x === env.getMinX() || x === env.getMaxX())) return false\n const y = seq.getY(i)\n if (!(y === env.getMinY() || y === env.getMaxY())) return false\n }\n let prevX = seq.getX(0)\n let prevY = seq.getY(0)\n for (let i = 1; i <= 4; i++) {\n const x = seq.getX(i)\n const y = seq.getY(i)\n const xChanged = x !== prevX\n const yChanged = y !== prevY\n if (xChanged === yChanged) return false\n prevX = x\n prevY = y\n }\n return true\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n const otherPolygon = other\n const thisShell = this._shell\n const otherPolygonShell = otherPolygon._shell\n if (!thisShell.equalsExact(otherPolygonShell, tolerance)) {\n return false\n }\n if (this._holes.length !== otherPolygon._holes.length) {\n return false\n }\n for (let i = 0; i < this._holes.length; i++) {\n if (!this._holes[i].equalsExact(otherPolygon._holes[i], tolerance)) {\n return false\n }\n }\n return true\n } else return super.equalsExact.apply(this, arguments)\n }\n\n normalize () {\n if (arguments.length === 0) {\n this.normalize(this._shell, true)\n for (let i = 0; i < this._holes.length; i++) {\n this.normalize(this._holes[i], false)\n }\n Arrays.sort(this._holes)\n } else if (arguments.length === 2) {\n const ring = arguments[0]; const clockwise = arguments[1]\n if (ring.isEmpty()) {\n return null\n }\n const uniqueCoordinates = new Array(ring.getCoordinates().length - 1).fill(null)\n System.arraycopy(ring.getCoordinates(), 0, uniqueCoordinates, 0, uniqueCoordinates.length)\n const minCoordinate = CoordinateArrays.minCoordinate(ring.getCoordinates())\n CoordinateArrays.scroll(uniqueCoordinates, minCoordinate)\n System.arraycopy(uniqueCoordinates, 0, ring.getCoordinates(), 0, uniqueCoordinates.length)\n ring.getCoordinates()[uniqueCoordinates.length] = uniqueCoordinates[0]\n if (Orientation.isCCW(ring.getCoordinates()) === clockwise) {\n CoordinateArrays.reverse(ring.getCoordinates())\n }\n }\n }\n\n getCoordinate () {\n return this._shell.getCoordinate()\n }\n\n getNumInteriorRing () {\n return this._holes.length\n }\n\n getBoundaryDimension () {\n return 1\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_POLYGON\n }\n\n getDimension () {\n return 2\n }\n\n getLength () {\n let len = 0.0\n len += this._shell.getLength()\n for (let i = 0; i < this._holes.length; i++) {\n len += this._holes[i].getLength()\n }\n return len\n }\n\n getNumPoints () {\n let numPoints = this._shell.getNumPoints()\n for (let i = 0; i < this._holes.length; i++) {\n numPoints += this._holes[i].getNumPoints()\n }\n return numPoints\n }\n\n reverse () {\n const poly = this.copy()\n poly._shell = this._shell.copy().reverse()\n poly._holes = new Array(this._holes.length).fill(null)\n for (let i = 0; i < this._holes.length; i++) {\n poly._holes[i] = this._holes[i].copy().reverse()\n }\n return poly\n }\n\n convexHull () {\n return this.getExteriorRing().convexHull()\n }\n\n compareToSameClass () {\n if (arguments.length === 1) {\n const o = arguments[0]\n const thisShell = this._shell\n const otherShell = o._shell\n return thisShell.compareToSameClass(otherShell)\n } else if (arguments.length === 2) {\n const o = arguments[0]; const comp = arguments[1]\n const poly = o\n const thisShell = this._shell\n const otherShell = poly._shell\n const shellComp = thisShell.compareToSameClass(otherShell, comp)\n if (shellComp !== 0) return shellComp\n const nHole1 = this.getNumInteriorRing()\n const nHole2 = poly.getNumInteriorRing()\n let i = 0\n while (i < nHole1 && i < nHole2) {\n const thisHole = this.getInteriorRingN(i)\n const otherHole = poly.getInteriorRingN(i)\n const holeComp = thisHole.compareToSameClass(otherHole, comp)\n if (holeComp !== 0) return holeComp\n i++\n }\n if (i < nHole1) return 1\n if (i < nHole2) return -1\n return 0\n }\n }\n\n apply () {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n const filter = arguments[0]\n this._shell.apply(filter)\n for (let i = 0; i < this._holes.length; i++) {\n this._holes[i].apply(filter)\n }\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n const filter = arguments[0]\n this._shell.apply(filter)\n if (!filter.isDone()) {\n for (let i = 0; i < this._holes.length; i++) {\n this._holes[i].apply(filter)\n if (filter.isDone()) break\n }\n }\n if (filter.isGeometryChanged()) this.geometryChanged()\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n const filter = arguments[0]\n filter.filter(this)\n this._shell.apply(filter)\n for (let i = 0; i < this._holes.length; i++) {\n this._holes[i].apply(filter)\n }\n }\n }\n\n getBoundary () {\n if (this.isEmpty()) {\n return this.getFactory().createMultiLineString()\n }\n const rings = new Array(this._holes.length + 1).fill(null)\n rings[0] = this._shell\n for (let i = 0; i < this._holes.length; i++) {\n rings[i + 1] = this._holes[i]\n }\n if (rings.length <= 1) return this.getFactory().createLinearRing(rings[0].getCoordinateSequence())\n return this.getFactory().createMultiLineString(rings)\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_POLYGON\n }\n\n copy () {\n const shellCopy = this._shell.copy()\n const holeCopies = new Array(this._holes.length).fill(null)\n for (let i = 0; i < this._holes.length; i++) {\n holeCopies[i] = this._holes[i].copy()\n }\n return new Polygon(shellCopy, holeCopies, this._factory)\n }\n\n getExteriorRing () {\n return this._shell\n }\n\n isEmpty () {\n return this._shell.isEmpty()\n }\n\n getInteriorRingN (n) {\n return this._holes[n]\n }\n\n getClass () {\n return Polygon\n }\n\n get interfaces_ () {\n return [Polygonal]\n }\n}\nPolygon.constructor_ = function () {\n this._shell = null\n this._holes = null\n let shell = arguments[0]; let holes = arguments[1]; const factory = arguments[2]\n Geometry.constructor_.call(this, factory)\n if (shell === null) {\n shell = this.getFactory().createLinearRing()\n }\n if (holes === null) {\n holes = []\n }\n if (Geometry.hasNullElements(holes)) {\n throw new IllegalArgumentException('holes must not contain null elements')\n }\n if (shell.isEmpty() && Geometry.hasNonEmptyElements(holes)) {\n throw new IllegalArgumentException('shell is empty but holes are not')\n }\n this._shell = shell\n this._holes = holes\n}\nPolygon.serialVersionUID = -3494792200821764533\n","import Geometry from './Geometry'\nimport GeometryCollection from './GeometryCollection'\nimport Dimension from './Dimension'\nimport Puntal from './Puntal'\nexport default class MultiPoint extends GeometryCollection {\n constructor () {\n super()\n MultiPoint.constructor_.apply(this, arguments)\n }\n\n isValid () {\n return true\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n return super.equalsExact.call(this, other, tolerance)\n } else return super.equalsExact.apply(this, arguments)\n }\n\n getCoordinate () {\n if (arguments.length === 1 && Number.isInteger(arguments[0])) {\n const n = arguments[0]\n return this._geometries[n].getCoordinate()\n } else return super.getCoordinate.apply(this, arguments)\n }\n\n getBoundaryDimension () {\n return Dimension.FALSE\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_MULTIPOINT\n }\n\n getDimension () {\n return 0\n }\n\n getBoundary () {\n return this.getFactory().createGeometryCollection()\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_MULTIPOINT\n }\n\n copy () {\n const points = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < points.length; i++) {\n points[i] = this._geometries[i].copy()\n }\n return new MultiPoint(points, this._factory)\n }\n\n getClass () {\n return MultiPoint\n }\n\n get interfaces_ () {\n return [Puntal]\n }\n}\nMultiPoint.constructor_ = function () {\n const points = arguments[0]; const factory = arguments[1]\n GeometryCollection.constructor_.call(this, points, factory)\n}\nMultiPoint.serialVersionUID = -8048474874175355449\n","import LineString from './LineString'\nimport Geometry from './Geometry'\nimport hasInterface from '../../../../hasInterface'\nimport GeometryFactory from './GeometryFactory'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nimport CoordinateSequences from './CoordinateSequences'\nimport CoordinateSequence from './CoordinateSequence'\nimport Dimension from './Dimension'\nexport default class LinearRing extends LineString {\n constructor () {\n super()\n LinearRing.constructor_.apply(this, arguments)\n }\n\n getBoundaryDimension () {\n return Dimension.FALSE\n }\n\n isClosed () {\n if (this.isEmpty()) {\n return true\n }\n return super.isClosed.call(this)\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_LINEARRING\n }\n\n reverse () {\n const seq = this._points.copy()\n CoordinateSequences.reverse(seq)\n const rev = this.getFactory().createLinearRing(seq)\n return rev\n }\n\n validateConstruction () {\n if (!this.isEmpty() && !super.isClosed.call(this)) {\n throw new IllegalArgumentException('Points of LinearRing do not form a closed linestring')\n }\n if (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < LinearRing.MINIMUM_VALID_SIZE) {\n throw new IllegalArgumentException('Invalid number of points in LinearRing (found ' + this.getCoordinateSequence().size() + ' - must be 0 or >= 4)')\n }\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_LINEARRING\n }\n\n copy () {\n return new LinearRing(this._points.copy(), this._factory)\n }\n\n getClass () {\n return LinearRing\n }\n\n get interfaces_ () {\n return []\n }\n}\nLinearRing.constructor_ = function () {\n if (arguments[0] instanceof Array && arguments[1] instanceof GeometryFactory) {\n const points = arguments[0]; const factory = arguments[1]\n LinearRing.constructor_.call(this, factory.getCoordinateSequenceFactory().create(points), factory)\n } else if (hasInterface(arguments[0], CoordinateSequence) && arguments[1] instanceof GeometryFactory) {\n const points = arguments[0]; const factory = arguments[1]\n LineString.constructor_.call(this, points, factory)\n this.validateConstruction()\n }\n}\nLinearRing.MINIMUM_VALID_SIZE = 4\nLinearRing.serialVersionUID = -4261142084085851829\n","import Geometry from './Geometry'\nimport GeometryCollection from './GeometryCollection'\nimport Polygonal from './Polygonal'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class MultiPolygon extends GeometryCollection {\n constructor () {\n super()\n MultiPolygon.constructor_.apply(this, arguments)\n }\n\n equalsExact () {\n if (arguments.length === 2 && (typeof arguments[1] === 'number' && arguments[0] instanceof Geometry)) {\n const other = arguments[0]; const tolerance = arguments[1]\n if (!this.isEquivalentClass(other)) {\n return false\n }\n return super.equalsExact.call(this, other, tolerance)\n } else return super.equalsExact.apply(this, arguments)\n }\n\n getBoundaryDimension () {\n return 1\n }\n\n getTypeCode () {\n return Geometry.TYPECODE_MULTIPOLYGON\n }\n\n getDimension () {\n return 2\n }\n\n reverse () {\n const n = this._geometries.length\n const revGeoms = new Array(n).fill(null)\n for (let i = 0; i < this._geometries.length; i++) {\n revGeoms[i] = this._geometries[i].reverse()\n }\n return this.getFactory().createMultiPolygon(revGeoms)\n }\n\n getBoundary () {\n if (this.isEmpty()) {\n return this.getFactory().createMultiLineString()\n }\n const allRings = new ArrayList()\n for (let i = 0; i < this._geometries.length; i++) {\n const polygon = this._geometries[i]\n const rings = polygon.getBoundary()\n for (let j = 0; j < rings.getNumGeometries(); j++) {\n allRings.add(rings.getGeometryN(j))\n }\n }\n const allRingsArray = new Array(allRings.size()).fill(null)\n return this.getFactory().createMultiLineString(allRings.toArray(allRingsArray))\n }\n\n getGeometryType () {\n return Geometry.TYPENAME_MULTIPOLYGON\n }\n\n copy () {\n const polygons = new Array(this._geometries.length).fill(null)\n for (let i = 0; i < polygons.length; i++) {\n polygons[i] = this._geometries[i].copy()\n }\n return new MultiPolygon(polygons, this._factory)\n }\n\n getClass () {\n return MultiPolygon\n }\n\n get interfaces_ () {\n return [Polygonal]\n }\n}\nMultiPolygon.constructor_ = function () {\n const polygons = arguments[0]; const factory = arguments[1]\n GeometryCollection.constructor_.call(this, polygons, factory)\n}\nMultiPolygon.serialVersionUID = -551033529766975875\n","import LineString from '../LineString'\nimport Point from '../Point'\nimport Polygon from '../Polygon'\nimport MultiPoint from '../MultiPoint'\nimport LinearRing from '../LinearRing'\nimport MultiPolygon from '../MultiPolygon'\nimport GeometryCollection from '../GeometryCollection'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Assert from '../../util/Assert'\nimport MultiLineString from '../MultiLineString'\nexport default class GeometryEditor {\n constructor () {\n GeometryEditor.constructor_.apply(this, arguments)\n }\n\n setCopyUserData (isUserDataCopied) {\n this._isUserDataCopied = isUserDataCopied\n }\n\n edit (geometry, operation) {\n if (geometry === null) return null\n const result = this.editInternal(geometry, operation)\n if (this._isUserDataCopied) {\n result.setUserData(geometry.getUserData())\n }\n return result\n }\n\n editInternal (geometry, operation) {\n if (this._factory === null) this._factory = geometry.getFactory()\n if (geometry instanceof GeometryCollection) {\n return this.editGeometryCollection(geometry, operation)\n }\n if (geometry instanceof Polygon) {\n return this.editPolygon(geometry, operation)\n }\n if (geometry instanceof Point) {\n return operation.edit(geometry, this._factory)\n }\n if (geometry instanceof LineString) {\n return operation.edit(geometry, this._factory)\n }\n Assert.shouldNeverReachHere('Unsupported Geometry class: ' + geometry.getClass().getName())\n return null\n }\n\n editGeometryCollection (collection, operation) {\n const collectionForType = operation.edit(collection, this._factory)\n const geometries = new ArrayList()\n for (let i = 0; i < collectionForType.getNumGeometries(); i++) {\n const geometry = this.edit(collectionForType.getGeometryN(i), operation)\n if (geometry === null || geometry.isEmpty()) {\n continue\n }\n geometries.add(geometry)\n }\n if (collectionForType.getClass() === MultiPoint) {\n return this._factory.createMultiPoint(geometries.toArray([]))\n }\n if (collectionForType.getClass() === MultiLineString) {\n return this._factory.createMultiLineString(geometries.toArray([]))\n }\n if (collectionForType.getClass() === MultiPolygon) {\n return this._factory.createMultiPolygon(geometries.toArray([]))\n }\n return this._factory.createGeometryCollection(geometries.toArray([]))\n }\n\n editPolygon (polygon, operation) {\n let newPolygon = operation.edit(polygon, this._factory)\n if (newPolygon === null) newPolygon = this._factory.createPolygon()\n if (newPolygon.isEmpty()) {\n return newPolygon\n }\n const shell = this.edit(newPolygon.getExteriorRing(), operation)\n if (shell === null || shell.isEmpty()) {\n return this._factory.createPolygon()\n }\n const holes = new ArrayList()\n for (let i = 0; i < newPolygon.getNumInteriorRing(); i++) {\n const hole = this.edit(newPolygon.getInteriorRingN(i), operation)\n if (hole === null || hole.isEmpty()) {\n continue\n }\n holes.add(hole)\n }\n return this._factory.createPolygon(shell, holes.toArray([]))\n }\n\n getClass () {\n return GeometryEditor\n }\n\n get interfaces_ () {\n return []\n }\n}\nfunction GeometryEditorOperation () {}\nGeometryEditor.GeometryEditorOperation = GeometryEditorOperation\nclass NoOpGeometryOperation {\n constructor () {\n NoOpGeometryOperation.constructor_.apply(this, arguments)\n }\n\n edit (geometry, factory) {\n return geometry\n }\n\n getClass () {\n return NoOpGeometryOperation\n }\n\n get interfaces_ () {\n return [GeometryEditorOperation]\n }\n}\nNoOpGeometryOperation.constructor_ = function () {}\nclass CoordinateOperation {\n constructor () {\n CoordinateOperation.constructor_.apply(this, arguments)\n }\n\n edit (geometry, factory) {\n const coordinates = this.edit(geometry.getCoordinates(), geometry)\n if (geometry instanceof LinearRing) {\n if (coordinates === null) return factory.createLinearRing(); else return factory.createLinearRing(coordinates)\n }\n if (geometry instanceof LineString) {\n if (coordinates === null) return factory.createLineString(); else return factory.createLineString(coordinates)\n }\n if (geometry instanceof Point) {\n if (coordinates === null || coordinates.length === 0) return factory.createPoint(); else return factory.createPoint(coordinates[0])\n }\n return geometry\n }\n\n getClass () {\n return CoordinateOperation\n }\n\n get interfaces_ () {\n return [GeometryEditorOperation]\n }\n}\nCoordinateOperation.constructor_ = function () {}\nclass CoordinateSequenceOperation {\n constructor () {\n CoordinateSequenceOperation.constructor_.apply(this, arguments)\n }\n\n edit (geometry, factory) {\n if (geometry instanceof LinearRing) {\n return factory.createLinearRing(this.edit(geometry.getCoordinateSequence(), geometry))\n }\n if (geometry instanceof LineString) {\n return factory.createLineString(this.edit(geometry.getCoordinateSequence(), geometry))\n }\n if (geometry instanceof Point) {\n return factory.createPoint(this.edit(geometry.getCoordinateSequence(), geometry))\n }\n return geometry\n }\n\n getClass () {\n return CoordinateSequenceOperation\n }\n\n get interfaces_ () {\n return [GeometryEditorOperation]\n }\n}\nCoordinateSequenceOperation.constructor_ = function () {}\nGeometryEditor.NoOpGeometryOperation = NoOpGeometryOperation\nGeometryEditor.CoordinateOperation = CoordinateOperation\nGeometryEditor.CoordinateSequenceOperation = CoordinateSequenceOperation\nGeometryEditor.constructor_ = function () {\n this._factory = null\n this._isUserDataCopied = false\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const factory = arguments[0]\n this._factory = factory\n }\n}\n","import hasInterface from '../../../../../hasInterface'\nimport Coordinate from '../Coordinate'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException'\nimport Double from '../../../../../java/lang/Double'\nimport CoordinateSequence from '../CoordinateSequence'\nimport Serializable from '../../../../../java/io/Serializable'\nimport StringBuilder from '../../../../../java/lang/StringBuilder'\nexport default class CoordinateArraySequence {\n constructor () {\n CoordinateArraySequence.constructor_.apply(this, arguments)\n }\n\n setOrdinate (index, ordinateIndex, value) {\n switch (ordinateIndex) {\n case CoordinateSequence.X:\n this._coordinates[index].x = value\n break\n case CoordinateSequence.Y:\n this._coordinates[index].y = value\n break\n case CoordinateSequence.Z:\n this._coordinates[index].z = value\n break\n default:\n throw new IllegalArgumentException('invalid ordinateIndex')\n }\n }\n\n size () {\n return this._coordinates.length\n }\n\n getOrdinate (index, ordinateIndex) {\n switch (ordinateIndex) {\n case CoordinateSequence.X:\n return this._coordinates[index].x\n case CoordinateSequence.Y:\n return this._coordinates[index].y\n case CoordinateSequence.Z:\n return this._coordinates[index].z\n }\n return Double.NaN\n }\n\n getCoordinate () {\n if (arguments.length === 1) {\n const i = arguments[0]\n return this._coordinates[i]\n } else if (arguments.length === 2) {\n const index = arguments[0]; const coord = arguments[1]\n coord.x = this._coordinates[index].x\n coord.y = this._coordinates[index].y\n coord.z = this._coordinates[index].z\n }\n }\n\n getCoordinateCopy (i) {\n return new Coordinate(this._coordinates[i])\n }\n\n getDimension () {\n return this._dimension\n }\n\n getX (index) {\n return this._coordinates[index].x\n }\n\n expandEnvelope (env) {\n for (let i = 0; i < this._coordinates.length; i++) {\n env.expandToInclude(this._coordinates[i])\n }\n return env\n }\n\n copy () {\n const cloneCoordinates = new Array(this.size()).fill(null)\n for (let i = 0; i < this._coordinates.length; i++) {\n cloneCoordinates[i] = this._coordinates[i].copy()\n }\n return new CoordinateArraySequence(cloneCoordinates, this._dimension)\n }\n\n toString () {\n if (this._coordinates.length > 0) {\n const strBuilder = new StringBuilder(17 * this._coordinates.length)\n strBuilder.append('(')\n strBuilder.append(this._coordinates[0])\n for (let i = 1; i < this._coordinates.length; i++) {\n strBuilder.append(', ')\n strBuilder.append(this._coordinates[i])\n }\n strBuilder.append(')')\n return strBuilder.toString()\n } else {\n return '()'\n }\n }\n\n getY (index) {\n return this._coordinates[index].y\n }\n\n toCoordinateArray () {\n return this._coordinates\n }\n\n getClass () {\n return CoordinateArraySequence\n }\n\n get interfaces_ () {\n return [CoordinateSequence, Serializable]\n }\n}\nCoordinateArraySequence.constructor_ = function () {\n this._dimension = 3\n this._coordinates = null\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n CoordinateArraySequence.constructor_.call(this, coordinates, 3)\n } else if (Number.isInteger(arguments[0])) {\n const size = arguments[0]\n this._coordinates = new Array(size).fill(null)\n for (let i = 0; i < size; i++) {\n this._coordinates[i] = new Coordinate()\n }\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordSeq = arguments[0]\n if (coordSeq === null) {\n this._coordinates = new Array(0).fill(null)\n return null\n }\n this._dimension = coordSeq.getDimension()\n this._coordinates = new Array(coordSeq.size()).fill(null)\n for (let i = 0; i < this._coordinates.length; i++) {\n this._coordinates[i] = coordSeq.getCoordinateCopy(i)\n }\n }\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {\n const coordinates = arguments[0]; const dimension = arguments[1]\n this._coordinates = coordinates\n this._dimension = dimension\n if (coordinates === null) this._coordinates = new Array(0).fill(null)\n } else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n const size = arguments[0]; const dimension = arguments[1]\n this._coordinates = new Array(size).fill(null)\n this._dimension = dimension\n for (let i = 0; i < size; i++) {\n this._coordinates[i] = new Coordinate()\n }\n }\n }\n}\nCoordinateArraySequence.serialVersionUID = -915438501601840650\n","import CoordinateSequenceFactory from '../CoordinateSequenceFactory'\nimport hasInterface from '../../../../../hasInterface'\nimport CoordinateArraySequence from './CoordinateArraySequence'\nimport CoordinateSequence from '../CoordinateSequence'\nimport Serializable from '../../../../../java/io/Serializable'\nexport default class CoordinateArraySequenceFactory {\n constructor () {\n CoordinateArraySequenceFactory.constructor_.apply(this, arguments)\n }\n\n static instance () {\n return CoordinateArraySequenceFactory.instanceObject\n }\n\n readResolve () {\n return CoordinateArraySequenceFactory.instance()\n }\n\n create () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n return new CoordinateArraySequence(coordinates)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordSeq = arguments[0]\n return new CoordinateArraySequence(coordSeq)\n }\n } else if (arguments.length === 2) {\n const size = arguments[0]; let dimension = arguments[1]\n if (dimension > 3) dimension = 3\n if (dimension < 2) return new CoordinateArraySequence(size)\n return new CoordinateArraySequence(size, dimension)\n }\n }\n\n getClass () {\n return CoordinateArraySequenceFactory\n }\n\n get interfaces_ () {\n return [CoordinateSequenceFactory, Serializable]\n }\n}\nCoordinateArraySequenceFactory.constructor_ = function () {}\nCoordinateArraySequenceFactory.serialVersionUID = -4099577099607551657\nCoordinateArraySequenceFactory.instanceObject = new CoordinateArraySequenceFactory()\n","import ArrayList from './ArrayList'\nimport MapInterface from './Map'\nimport HashSet from './HashSet'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html\n *\n * @extends {javascript.util.Map}\n * @constructor\n * @private\n */\nexport default function HashMap () {\n /**\n * @type {Object}\n * @private\n */\n this.map_ = new Map()\n}\nHashMap.prototype = new MapInterface()\n\n/**\n * @override\n */\nHashMap.prototype.get = function (key) {\n return this.map_.get(key) || null\n}\n\n/**\n * @override\n */\nHashMap.prototype.put = function (key, value) {\n this.map_.set(key, value)\n return value\n}\n\n/**\n * @override\n */\nHashMap.prototype.values = function () {\n const arrayList = new ArrayList()\n const it = this.map_.values()\n let o = it.next()\n while (!o.done) {\n arrayList.add(o.value)\n o = it.next()\n }\n return arrayList\n}\n\n/**\n * @override\n */\nHashMap.prototype.entrySet = function () {\n const hashSet = new HashSet()\n this.map_.entries().forEach(entry => hashSet.add(entry))\n return hashSet\n}\n\n/**\n * @override\n */\nHashMap.prototype.size = function () {\n return this.map_.size()\n}\n","import HashMap from '../../../../java/util/HashMap'\nimport Coordinate from './Coordinate'\nimport Double from '../../../../java/lang/Double'\nimport Integer from '../../../../java/lang/Integer'\nimport Comparable from '../../../../java/lang/Comparable'\nimport Serializable from '../../../../java/io/Serializable'\nexport default class PrecisionModel {\n constructor () {\n PrecisionModel.constructor_.apply(this, arguments)\n }\n\n static mostPrecise (pm1, pm2) {\n if (pm1.compareTo(pm2) >= 0) return pm1\n return pm2\n }\n\n equals (other) {\n if (!(other instanceof PrecisionModel)) {\n return false\n }\n const otherPrecisionModel = other\n return this._modelType === otherPrecisionModel._modelType && this._scale === otherPrecisionModel._scale\n }\n\n compareTo (o) {\n const other = o\n const sigDigits = this.getMaximumSignificantDigits()\n const otherSigDigits = other.getMaximumSignificantDigits()\n return new Integer(sigDigits).compareTo(new Integer(otherSigDigits))\n }\n\n getScale () {\n return this._scale\n }\n\n isFloating () {\n return this._modelType === PrecisionModel.FLOATING || this._modelType === PrecisionModel.FLOATING_SINGLE\n }\n\n getType () {\n return this._modelType\n }\n\n toString () {\n let description = 'UNKNOWN'\n if (this._modelType === PrecisionModel.FLOATING) {\n description = 'Floating'\n } else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n description = 'Floating-Single'\n } else if (this._modelType === PrecisionModel.FIXED) {\n description = 'Fixed (Scale=' + this.getScale() + ')'\n }\n return description\n }\n\n makePrecise () {\n if (typeof arguments[0] === 'number') {\n const val = arguments[0]\n if (Double.isNaN(val)) return val\n if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n const floatSingleVal = val\n return floatSingleVal\n }\n if (this._modelType === PrecisionModel.FIXED) {\n return Math.round(val * this._scale) / this._scale\n }\n return val\n } else if (arguments[0] instanceof Coordinate) {\n const coord = arguments[0]\n if (this._modelType === PrecisionModel.FLOATING) return null\n coord.x = this.makePrecise(coord.x)\n coord.y = this.makePrecise(coord.y)\n }\n }\n\n getMaximumSignificantDigits () {\n let maxSigDigits = 16\n if (this._modelType === PrecisionModel.FLOATING) {\n maxSigDigits = 16\n } else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n maxSigDigits = 6\n } else if (this._modelType === PrecisionModel.FIXED) {\n maxSigDigits = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)))\n }\n return maxSigDigits\n }\n\n setScale (scale) {\n this._scale = Math.abs(scale)\n }\n\n getClass () {\n return PrecisionModel\n }\n\n get interfaces_ () {\n return [Serializable, Comparable]\n }\n}\nclass Type {\n constructor () {\n Type.constructor_.apply(this, arguments)\n }\n\n readResolve () {\n return Type.nameToTypeMap.get(this._name)\n }\n\n toString () {\n return this._name\n }\n\n getClass () {\n return Type\n }\n\n get interfaces_ () {\n return [Serializable]\n }\n}\nType.constructor_ = function () {\n this._name = null\n const name = arguments[0]\n this._name = name\n Type.nameToTypeMap.put(name, this)\n}\nType.serialVersionUID = -5528602631731589822\nType.nameToTypeMap = new HashMap()\nPrecisionModel.Type = Type\nPrecisionModel.constructor_ = function () {\n this._modelType = null\n this._scale = null\n if (arguments.length === 0) {\n this._modelType = PrecisionModel.FLOATING\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Type) {\n const modelType = arguments[0]\n this._modelType = modelType\n if (modelType === PrecisionModel.FIXED) {\n this.setScale(1.0)\n }\n } else if (typeof arguments[0] === 'number') {\n const scale = arguments[0]\n this._modelType = PrecisionModel.FIXED\n this.setScale(scale)\n } else if (arguments[0] instanceof PrecisionModel) {\n const pm = arguments[0]\n this._modelType = pm._modelType\n this._scale = pm._scale\n }\n }\n}\nPrecisionModel.serialVersionUID = 7777263578777803835\nPrecisionModel.FIXED = new Type('FIXED')\nPrecisionModel.FLOATING = new Type('FLOATING')\nPrecisionModel.FLOATING_SINGLE = new Type('FLOATING SINGLE')\nPrecisionModel.maximumPreciseValue = 9007199254740992.0\n","import CoordinateSequenceFactory from './CoordinateSequenceFactory'\nimport LineString from './LineString'\nimport Geometry from './Geometry'\nimport hasInterface from '../../../../hasInterface'\nimport Coordinate from './Coordinate'\nimport Point from './Point'\nimport Polygon from './Polygon'\nimport MultiPoint from './MultiPoint'\nimport GeometryEditor from './util/GeometryEditor'\nimport LinearRing from './LinearRing'\nimport CoordinateArraySequenceFactory from './impl/CoordinateArraySequenceFactory'\nimport MultiPolygon from './MultiPolygon'\nimport CoordinateSequences from './CoordinateSequences'\nimport CoordinateSequence from './CoordinateSequence'\nimport GeometryCollection from './GeometryCollection'\nimport PrecisionModel from './PrecisionModel'\nimport Serializable from '../../../../java/io/Serializable'\nimport Assert from '../util/Assert'\nimport MultiLineString from './MultiLineString'\nexport default class GeometryFactory {\n constructor () {\n GeometryFactory.constructor_.apply(this, arguments)\n }\n\n static toMultiPolygonArray (multiPolygons) {\n const multiPolygonArray = new Array(multiPolygons.size()).fill(null)\n return multiPolygons.toArray(multiPolygonArray)\n }\n\n static toGeometryArray (geometries) {\n if (geometries === null) return null\n const geometryArray = new Array(geometries.size()).fill(null)\n return geometries.toArray(geometryArray)\n }\n\n static getDefaultCoordinateSequenceFactory () {\n return CoordinateArraySequenceFactory.instance()\n }\n\n static toMultiLineStringArray (multiLineStrings) {\n const multiLineStringArray = new Array(multiLineStrings.size()).fill(null)\n return multiLineStrings.toArray(multiLineStringArray)\n }\n\n static toLineStringArray (lineStrings) {\n const lineStringArray = new Array(lineStrings.size()).fill(null)\n return lineStrings.toArray(lineStringArray)\n }\n\n static toMultiPointArray (multiPoints) {\n const multiPointArray = new Array(multiPoints.size()).fill(null)\n return multiPoints.toArray(multiPointArray)\n }\n\n static toLinearRingArray (linearRings) {\n const linearRingArray = new Array(linearRings.size()).fill(null)\n return linearRings.toArray(linearRingArray)\n }\n\n static toPointArray (points) {\n const pointArray = new Array(points.size()).fill(null)\n return points.toArray(pointArray)\n }\n\n static toPolygonArray (polygons) {\n const polygonArray = new Array(polygons.size()).fill(null)\n return polygons.toArray(polygonArray)\n }\n\n static createPointFromInternalCoord (coord, exemplar) {\n exemplar.getPrecisionModel().makePrecise(coord)\n return exemplar.getFactory().createPoint(coord)\n }\n\n toGeometry (envelope) {\n if (envelope.isNull()) {\n return this.createPoint()\n }\n if (envelope.getMinX() === envelope.getMaxX() && envelope.getMinY() === envelope.getMaxY()) {\n return this.createPoint(new Coordinate(envelope.getMinX(), envelope.getMinY()))\n }\n if (envelope.getMinX() === envelope.getMaxX() || envelope.getMinY() === envelope.getMaxY()) {\n return this.createLineString([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY())])\n }\n return this.createPolygon(this.createLinearRing([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMinY())]), null)\n }\n\n createLineString () {\n if (arguments.length === 0) {\n return this.createLineString(this.getCoordinateSequenceFactory().create([]))\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n return this.createLineString(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n return new LineString(coordinates, this)\n }\n }\n }\n\n createMultiLineString () {\n if (arguments.length === 0) {\n return new MultiLineString(null, this)\n } else if (arguments.length === 1) {\n const lineStrings = arguments[0]\n return new MultiLineString(lineStrings, this)\n }\n }\n\n buildGeometry (geomList) {\n let geomClass = null\n let isHeterogeneous = false\n let hasGeometryCollection = false\n for (let i = geomList.iterator(); i.hasNext();) {\n const geom = i.next()\n const partClass = geom.getClass()\n if (geomClass === null) {\n geomClass = partClass\n }\n if (partClass !== geomClass) {\n isHeterogeneous = true\n }\n if (geom instanceof GeometryCollection) hasGeometryCollection = true\n }\n if (geomClass === null) {\n return this.createGeometryCollection()\n }\n if (isHeterogeneous || hasGeometryCollection) {\n return this.createGeometryCollection(GeometryFactory.toGeometryArray(geomList))\n }\n const geom0 = geomList.iterator().next()\n const isCollection = geomList.size() > 1\n if (isCollection) {\n if (geom0 instanceof Polygon) {\n return this.createMultiPolygon(GeometryFactory.toPolygonArray(geomList))\n } else if (geom0 instanceof LineString) {\n return this.createMultiLineString(GeometryFactory.toLineStringArray(geomList))\n } else if (geom0 instanceof Point) {\n return this.createMultiPoint(GeometryFactory.toPointArray(geomList))\n }\n Assert.shouldNeverReachHere('Unhandled class: ' + geom0.getClass().getName())\n }\n return geom0\n }\n\n createMultiPointFromCoords (coordinates) {\n return this.createMultiPoint(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n }\n\n createPoint () {\n if (arguments.length === 0) {\n return this.createPoint(this.getCoordinateSequenceFactory().create([]))\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n const coordinate = arguments[0]\n return this.createPoint(coordinate !== null ? this.getCoordinateSequenceFactory().create([coordinate]) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n return new Point(coordinates, this)\n }\n }\n }\n\n getCoordinateSequenceFactory () {\n return this._coordinateSequenceFactory\n }\n\n createPolygon () {\n if (arguments.length === 0) {\n return this.createPolygon(null, null)\n } else if (arguments.length === 1) {\n if (hasInterface(arguments[0], CoordinateSequence)) {\n const shell = arguments[0]\n return this.createPolygon(this.createLinearRing(shell))\n } else if (arguments[0] instanceof Array) {\n const shell = arguments[0]\n return this.createPolygon(this.createLinearRing(shell))\n } else if (arguments[0] instanceof LinearRing) {\n const shell = arguments[0]\n return this.createPolygon(shell, null)\n }\n } else if (arguments.length === 2) {\n const shell = arguments[0]; const holes = arguments[1]\n return new Polygon(shell, holes, this)\n }\n }\n\n getSRID () {\n return this._SRID\n }\n\n createGeometryCollection () {\n if (arguments.length === 0) {\n return new GeometryCollection(null, this)\n } else if (arguments.length === 1) {\n const geometries = arguments[0]\n return new GeometryCollection(geometries, this)\n }\n }\n\n createGeometry (g) {\n const editor = new GeometryEditor(this)\n return editor.edit(g, new CloneOp(this._coordinateSequenceFactory))\n }\n\n getPrecisionModel () {\n return this._precisionModel\n }\n\n createLinearRing () {\n if (arguments.length === 0) {\n return this.createLinearRing(this.getCoordinateSequenceFactory().create([]))\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const coordinates = arguments[0]\n return this.createLinearRing(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n return new LinearRing(coordinates, this)\n }\n }\n }\n\n createMultiPolygon () {\n if (arguments.length === 0) {\n return new MultiPolygon(null, this)\n } else if (arguments.length === 1) {\n const polygons = arguments[0]\n return new MultiPolygon(polygons, this)\n }\n }\n\n createMultiPoint () {\n if (arguments.length === 0) {\n return new MultiPoint(null, this)\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const point = arguments[0]\n return new MultiPoint(point, this)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n const coordinates = arguments[0]\n if (coordinates === null) {\n return this.createMultiPoint(new Array(0).fill(null))\n }\n const points = new Array(coordinates.size()).fill(null)\n for (let i = 0; i < coordinates.size(); i++) {\n const ptSeq = this.getCoordinateSequenceFactory().create(1, coordinates.getDimension())\n CoordinateSequences.copy(coordinates, i, ptSeq, 0, 1)\n points[i] = this.createPoint(ptSeq)\n }\n return this.createMultiPoint(points)\n }\n }\n }\n\n getClass () {\n return GeometryFactory\n }\n\n get interfaces_ () {\n return [Serializable]\n }\n}\nclass CloneOp extends GeometryEditor.CoordinateSequenceOperation {\n constructor () {\n super()\n CloneOp.constructor_.apply(this, arguments)\n }\n\n edit () {\n if (arguments.length === 2 && (arguments[1] instanceof Geometry && hasInterface(arguments[0], CoordinateSequence))) {\n const coordSeq = arguments[0]; const geometry = arguments[1]\n return this.coordinateSequenceFactory.create(coordSeq)\n } else return super.edit.apply(this, arguments)\n }\n\n getClass () {\n return CloneOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nCloneOp.constructor_ = function () {\n this.coordinateSequenceFactory = null\n const coordinateSequenceFactory = arguments[0]\n this.coordinateSequenceFactory = coordinateSequenceFactory\n}\nGeometryFactory.CloneOp = CloneOp\nGeometryFactory.constructor_ = function () {\n this._precisionModel = null\n this._coordinateSequenceFactory = null\n this._SRID = null\n if (arguments.length === 0) {\n GeometryFactory.constructor_.call(this, new PrecisionModel(), 0)\n } else if (arguments.length === 1) {\n if (hasInterface(arguments[0], CoordinateSequenceFactory)) {\n const coordinateSequenceFactory = arguments[0]\n GeometryFactory.constructor_.call(this, new PrecisionModel(), 0, coordinateSequenceFactory)\n } else if (arguments[0] instanceof PrecisionModel) {\n const precisionModel = arguments[0]\n GeometryFactory.constructor_.call(this, precisionModel, 0, GeometryFactory.getDefaultCoordinateSequenceFactory())\n }\n } else if (arguments.length === 2) {\n const precisionModel = arguments[0]; const SRID = arguments[1]\n GeometryFactory.constructor_.call(this, precisionModel, SRID, GeometryFactory.getDefaultCoordinateSequenceFactory())\n } else if (arguments.length === 3) {\n const precisionModel = arguments[0]; const SRID = arguments[1]; const coordinateSequenceFactory = arguments[2]\n this._precisionModel = precisionModel\n this._coordinateSequenceFactory = coordinateSequenceFactory\n this._SRID = SRID\n }\n}\nGeometryFactory.serialVersionUID = -6820524753094095635\n","import Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\n\nconst regExes = {\n typeStr: /^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,\n emptyTypeStr: /^\\s*(\\w+)\\s*EMPTY\\s*$/,\n spaces: /\\s+/,\n parenComma: /\\)\\s*,\\s*\\(/,\n doubleParenComma: /\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/, // can't use {2} here\n trimParens: /^\\s*\\(?(.*?)\\)?\\s*$/\n}\n\n/**\n * Class for reading and writing Well-Known Text.\n *\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\nexport default class WKTParser {\n /** Create a new parser for WKT\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of WKTParser.\n * @private\n */\n constructor (geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory()\n this.precisionModel = this.geometryFactory.getPrecisionModel()\n }\n\n /**\n * Deserialize a WKT string and return a geometry. Supports WKT for POINT,\n * MULTIPOINT, LINESTRING, LINEARRING, MULTILINESTRING, POLYGON, MULTIPOLYGON,\n * and GEOMETRYCOLLECTION.\n *\n * @param {String} wkt A WKT string.\n * @return {Geometry} A geometry instance.\n * @private\n */\n read (wkt) {\n var geometry, type, str\n wkt = wkt.replace(/[\\n\\r]/g, ' ')\n var matches = regExes.typeStr.exec(wkt)\n if (wkt.search('EMPTY') !== -1) {\n matches = regExes.emptyTypeStr.exec(wkt)\n matches[2] = undefined\n }\n if (matches) {\n type = matches[1].toLowerCase()\n str = matches[2]\n if (parse[type]) {\n geometry = parse[type].call(this, str)\n }\n }\n\n if (geometry === undefined) throw new Error('Could not parse WKT ' + wkt)\n\n return geometry\n }\n\n /**\n * Serialize a geometry into a WKT string.\n *\n * @param {Geometry} geometry A feature or array of features.\n * @return {String} The WKT string representation of the input geometries.\n * @private\n */\n write (geometry) {\n return this.extractGeometry(geometry)\n }\n\n /**\n * Entry point to construct the WKT for a single Geometry object.\n *\n * @param {Geometry} geometry\n * @return {String} A WKT string of representing the geometry.\n * @private\n */\n extractGeometry (geometry) {\n var type = geometry.getGeometryType().toLowerCase()\n if (!extract[type]) {\n return null\n }\n var wktType = type.toUpperCase()\n var data\n if (geometry.isEmpty()) {\n data = wktType + ' EMPTY'\n } else {\n data = wktType + '(' + extract[type].call(this, geometry) + ')'\n }\n return data\n }\n}\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual data extraction.\n * @private\n */\nconst extract = {\n coordinate (coordinate) {\n this.precisionModel.makePrecise(coordinate)\n return coordinate.x + ' ' + coordinate.y\n },\n\n /**\n * Return a space delimited string of point coordinates.\n *\n * @param {Point}\n * point\n * @return {String} A string of coordinates representing the point.\n */\n point (point) {\n return extract.coordinate.call(this, point._coordinates._coordinates[0])\n },\n\n /**\n * Return a comma delimited string of point coordinates from a multipoint.\n *\n * @param {MultiPoint}\n * multipoint\n * @return {String} A string of point coordinate strings representing the\n * multipoint.\n */\n multipoint (multipoint) {\n var array = []\n for (let i = 0, len = multipoint._geometries.length; i < len; ++i) {\n array.push('(' + extract.point.call(this, multipoint._geometries[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of point coordinates from a line.\n *\n * @param {LineString} linestring\n * @return {String} A string of point coordinate strings representing the linestring.\n */\n linestring (linestring) {\n var array = []\n for (let i = 0, len = linestring._points._coordinates.length; i < len; ++i) {\n array.push(extract.coordinate.call(this, linestring._points._coordinates[i]))\n }\n return array.join(',')\n },\n\n linearring (linearring) {\n var array = []\n for (let i = 0, len = linearring._points._coordinates.length; i < len; ++i) {\n array.push(extract.coordinate.call(this, linearring._points._coordinates[i]))\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linestring strings from a\n * multilinestring.\n *\n * @param {MultiLineString} multilinestring\n * @return {String} A string of of linestring strings representing the multilinestring.\n */\n multilinestring (multilinestring) {\n var array = []\n for (let i = 0, len = multilinestring._geometries.length; i < len; ++i) {\n array.push('(' +\n extract.linestring.call(this, multilinestring._geometries[i]) +\n ')')\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linear ring arrays from a polygon.\n *\n * @param {Polygon} polygon\n * @return {String} An array of linear ring arrays representing the polygon.\n */\n polygon (polygon) {\n var array = []\n array.push('(' + extract.linestring.call(this, polygon._shell) + ')')\n for (let i = 0, len = polygon._holes.length; i < len; ++i) {\n array.push('(' + extract.linestring.call(this, polygon._holes[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return an array of polygon arrays from a multipolygon.\n *\n * @param {MultiPolygon} multipolygon\n * @return {String} An array of polygon arrays representing the multipolygon.\n */\n multipolygon (multipolygon) {\n var array = []\n for (let i = 0, len = multipolygon._geometries.length; i < len; ++i) {\n array.push('(' + extract.polygon.call(this, multipolygon._geometries[i]) + ')')\n }\n return array.join(',')\n },\n\n /**\n * Return the WKT portion between 'GEOMETRYCOLLECTION(' and ')' for an\n * geometrycollection.\n *\n * @param {GeometryCollection} collection\n * @return {String} internal WKT representation of the collection.\n */\n geometrycollection (collection) {\n var array = []\n for (let i = 0, len = collection._geometries.length; i < len; ++i) {\n array.push(this.extractGeometry(collection._geometries[i]))\n }\n return array.join(',')\n }\n}\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual parsing.\n * @private\n */\nconst parse = {\n\n coord (str) {\n var coords = str.trim().split(regExes.spaces)\n var coord = new Coordinate(Number.parseFloat(coords[0]), Number.parseFloat(coords[1]))\n this.precisionModel.makePrecise(coord)\n return coord\n },\n\n /**\n * Return point geometry given a point WKT fragment.\n *\n * @param {String} str A WKT fragment representing the point.\n * @return {Point} A point geometry.\n * @private\n */\n point (str) {\n if (str === undefined) { return this.geometryFactory.createPoint() }\n return this.geometryFactory.createPoint(parse.coord.call(this, str))\n },\n\n /**\n * Return a multipoint geometry given a multipoint WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipoint.\n * @return {Point} A multipoint feature.\n * @private\n */\n multipoint (str) {\n if (str === undefined) { return this.geometryFactory.createMultiPoint() }\n var point\n var points = str.trim().split(',')\n var components = []\n for (let i = 0, len = points.length; i < len; ++i) {\n point = points[i].replace(regExes.trimParens, '$1')\n components.push(parse.point.call(this, point))\n }\n return this.geometryFactory.createMultiPoint(components)\n },\n\n /**\n * Return a linestring geometry given a linestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linestring.\n * @return {LineString} A linestring geometry.\n * @private\n */\n linestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLineString()\n }\n\n var points = str.trim().split(',')\n var components = []\n var coords\n for (let i = 0, len = points.length; i < len; ++i) {\n components.push(parse.coord.call(this, points[i]))\n }\n return this.geometryFactory.createLineString(components)\n },\n\n /**\n * Return a linearring geometry given a linearring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linearring.\n * @return {LinearRing} A linearring geometry.\n * @private\n */\n linearring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLinearRing()\n }\n\n var points = str.trim().split(',')\n var components = []\n var coords\n for (let i = 0, len = points.length; i < len; ++i) {\n components.push(parse.coord.call(this, points[i]))\n }\n return this.geometryFactory.createLinearRing(components)\n },\n\n /**\n * Return a multilinestring geometry given a multilinestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multilinestring.\n * @return {MultiLineString} A multilinestring geometry.\n * @private\n */\n multilinestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createMultiLineString()\n }\n\n var line\n var lines = str.trim().split(regExes.parenComma)\n var components = []\n for (let i = 0, len = lines.length; i < len; ++i) {\n line = lines[i].replace(regExes.trimParens, '$1')\n components.push(parse.linestring.call(this, line))\n }\n return this.geometryFactory.createMultiLineString(components)\n },\n\n /**\n * Return a polygon geometry given a polygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the polygon.\n * @return {Polygon} A polygon geometry.\n * @private\n */\n polygon (str) {\n if (str === undefined) {\n return this.geometryFactory.createPolygon()\n }\n\n var ring, linestring, linearring\n var rings = str.trim().split(regExes.parenComma)\n var shell\n var holes = []\n for (let i = 0, len = rings.length; i < len; ++i) {\n ring = rings[i].replace(regExes.trimParens, '$1')\n linestring = parse.linestring.call(this, ring)\n linearring = this.geometryFactory.createLinearRing(linestring._points)\n if (i === 0) {\n shell = linearring\n } else {\n holes.push(linearring)\n }\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Return a multipolygon geometry given a multipolygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipolygon.\n * @return {MultiPolygon} A multipolygon geometry.\n * @private\n */\n multipolygon (str) {\n if (str === undefined) {\n return this.geometryFactory.createMultiPolygon()\n }\n\n var polygon\n var polygons = str.trim().split(regExes.doubleParenComma)\n var components = []\n for (let i = 0, len = polygons.length; i < len; ++i) {\n polygon = polygons[i].replace(regExes.trimParens, '$1')\n components.push(parse.polygon.call(this, polygon))\n }\n return this.geometryFactory.createMultiPolygon(components)\n },\n\n /**\n * Return a geometrycollection given a geometrycollection WKT fragment.\n *\n * @param {String} str A WKT fragment representing the geometrycollection.\n * @return {GeometryCollection}\n * @private\n */\n geometrycollection (str) {\n if (str === undefined) {\n return this.geometryFactory.createGeometryCollection()\n }\n\n // separate components of the collection with |\n str = str.replace(/,\\s*([A-Za-z])/g, '|$1')\n var wktArray = str.trim().split('|')\n var components = []\n for (let i = 0, len = wktArray.length; i < len; ++i) {\n components.push(this.read(wktArray[i]))\n }\n return this.geometryFactory.createGeometryCollection(components)\n }\n}\n","/**\n * @module org/locationtech/jts/io/WKTWriter\n */\n\nimport WKTParser from './WKTParser'\n\n/**\n * Writes the Well-Known Text representation of a {@link Geometry}. The\n * Well-Known Text format is defined in the OGC Simple Features\n * Specification for SQL.\n *
\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 var geometry = this.parser.read(wkt)\n return geometry\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) { return [p.x, p.y] }\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) {\n return this.convertFromCollection(geometry)\n }\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 {\n holes.push(linearRing)\n }\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') {\n return this.convertToCollection(geometry)\n }\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++) {\n 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++) {\n 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++) {\n 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 constructor () {\n SegmentPointComparator.constructor_.apply(this, arguments)\n }\n\n static relativeSign (x0, x1) {\n if (x0 < x1) return -1\n if (x0 > x1) return 1\n return 0\n }\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\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 getClass () {\n return SegmentPointComparator\n }\n\n get interfaces_ () {\n return []\n }\n}\nSegmentPointComparator.constructor_ = function () {}\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\n getCoordinate () {\n return this.coord\n }\n\n print (out) {\n out.print(this.coord)\n out.print(' seg # = ' + this.segmentIndex)\n }\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 return SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord)\n }\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\n isInterior () {\n return this._isInterior\n }\n\n getClass () {\n return SegmentNode\n }\n\n get interfaces_ () {\n return [Comparable]\n }\n}\nSegmentNode.constructor_ = function () {\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]; const coord = arguments[1]; const segmentIndex = arguments[2]; const 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","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 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\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\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\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\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(new Integer(i + 1))\n }\n }\n }\n\n addEdgeCoordinates (ei0, ei1, coordList) {\n let npts = ei1.segmentIndex - ei0.segmentIndex + 2\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 ipt = 0\n coordList.add(new Coordinate(ei0.coord), false)\n for (let i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n coordList.add(this._edge.getCoordinate(i))\n }\n if (useIntPt1) {\n coordList.add(new Coordinate(ei1.coord))\n }\n }\n\n iterator () {\n return this._nodeMap.values().iterator()\n }\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\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\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(new Integer(collapsedVertexIndex[0]))\n eiPrev = ei\n }\n }\n\n getEdge () {\n return this._edge\n }\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\n createSplitEdge (ei0, ei1) {\n let npts = ei1.segmentIndex - ei0.segmentIndex + 2\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 new NodedSegmentString(pts, this._edge.getData())\n }\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\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\n getClass () {\n return SegmentNodeList\n }\n\n get interfaces_ () {\n return []\n }\n}\nSegmentNodeList.constructor_ = function () {\n this._nodeMap = new TreeMap()\n this._edge = null\n const edge = arguments[0]\n this._edge = edge\n}\nclass NodeVertexIterator {\n constructor () {\n NodeVertexIterator.constructor_.apply(this, arguments)\n }\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\n remove () {\n throw new UnsupportedOperationException(this.getClass().getName())\n }\n\n hasNext () {\n if (this._nextNode === null) return false\n return true\n }\n\n readNextNode () {\n if (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null\n }\n\n getClass () {\n return NodeVertexIterator\n }\n\n get interfaces_ () {\n return [Iterator]\n }\n}\nNodeVertexIterator.constructor_ = function () {\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","import Coordinate from '../geom/Coordinate'\nimport IllegalArgumentException from '../../../../java/lang/IllegalArgumentException'\nexport default class Octant {\n constructor () {\n Octant.constructor_.apply(this, arguments)\n }\n\n static octant () {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n const dx = arguments[0]; const 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]; const 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 getClass () {\n return Octant\n }\n\n get interfaces_ () {\n return []\n }\n}\nOctant.constructor_ = function () {}\n","export default class SegmentString {\n constructor () {\n SegmentString.constructor_.apply(this, arguments)\n }\n\n getCoordinates () {}\n\n size () {}\n\n getCoordinate (i) {}\n\n isClosed () {}\n\n setData (data) {}\n\n getData () {}\n\n getClass () {\n return SegmentString\n }\n\n get interfaces_ () {\n return []\n }\n}\nSegmentString.constructor_ = function () {}\n","import SegmentString from './SegmentString'\nexport default class NodableSegmentString {\n constructor () {\n NodableSegmentString.constructor_.apply(this, arguments)\n }\n\n addIntersection (intPt, segmentIndex) {}\n\n getClass () {\n return NodableSegmentString\n }\n\n get interfaces_ () {\n return [SegmentString]\n }\n}\nNodableSegmentString.constructor_ = function () {}\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\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]; const 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\n getCoordinates () {\n return this._pts\n }\n\n size () {\n return this._pts.length\n }\n\n getCoordinate (i) {\n return this._pts[i]\n }\n\n isClosed () {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\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\n setData (data) {\n this._data = data\n }\n\n safeOctant (p0, p1) {\n if (p0.equals2D(p1)) return 0\n return Octant.octant(p0, p1)\n }\n\n getData () {\n return this._data\n }\n\n addIntersection () {\n if (arguments.length === 2) {\n const intPt = arguments[0]; const segmentIndex = arguments[1]\n this.addIntersectionNode(intPt, segmentIndex)\n } else if (arguments.length === 4) {\n const li = arguments[0]; const segmentIndex = arguments[1]; const geomIndex = arguments[2]; const intIndex = arguments[3]\n const intPt = new Coordinate(li.getIntersection(intIndex))\n this.addIntersection(intPt, segmentIndex)\n }\n }\n\n toString () {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n\n getNodeList () {\n return this._nodeList\n }\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\n addIntersections (li, segmentIndex, geomIndex) {\n for (let i = 0; i < li.getIntersectionNum(); i++) {\n this.addIntersection(li, segmentIndex, geomIndex, i)\n }\n }\n\n getClass () {\n return NodedSegmentString\n }\n\n get interfaces_ () {\n return [NodableSegmentString]\n }\n}\nNodedSegmentString.constructor_ = function () {\n this._nodeList = new SegmentNodeList(this)\n this._pts = null\n this._data = null\n const pts = arguments[0]; const data = arguments[1]\n this._pts = pts\n this._data = data\n}\n","import LineSegment from '../../geom/LineSegment'\nexport default class MonotoneChainOverlapAction {\n constructor () {\n MonotoneChainOverlapAction.constructor_.apply(this, arguments)\n }\n\n overlap () {\n if (arguments.length === 2) {\n const seg1 = arguments[0]; const seg2 = arguments[1]\n } else if (arguments.length === 4) {\n const mc1 = arguments[0]; const start1 = arguments[1]; const mc2 = arguments[2]; const 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 getClass () {\n return MonotoneChainOverlapAction\n }\n\n get interfaces_ () {\n return []\n }\n}\nMonotoneChainOverlapAction.constructor_ = function () {\n this._overlapSeg1 = new LineSegment()\n this._overlapSeg2 = new LineSegment()\n}\n","import Envelope from '../../geom/Envelope'\nexport default class MonotoneChain {\n constructor () {\n MonotoneChain.constructor_.apply(this, arguments)\n }\n\n getLineSegment (index, ls) {\n ls.p0 = this._pts[index]\n ls.p1 = this._pts[index + 1]\n }\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\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\n computeOverlaps () {\n if (arguments.length === 2) {\n const mc = arguments[0]; const 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]; const end0 = arguments[1]; const mc = arguments[2]; const start1 = arguments[3]; const end1 = arguments[4]; const 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\n setId (id) {\n this._id = id\n }\n\n select (searchEnv, mcs) {\n this.computeSelect(searchEnv, this._start, this._end, mcs)\n }\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\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\n getEndIndex () {\n return this._end\n }\n\n getStartIndex () {\n return this._start\n }\n\n getContext () {\n return this._context\n }\n\n getId () {\n return this._id\n }\n\n getClass () {\n return MonotoneChain\n }\n\n get interfaces_ () {\n return []\n }\n}\nMonotoneChain.constructor_ = function () {\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]; const start = arguments[1]; const end = arguments[2]; const context = arguments[3]\n this._pts = pts\n this._start = start\n this._end = end\n this._context = context\n}\n","import MonotoneChain from './MonotoneChain'\nimport Integer from '../../../../../java/lang/Integer'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Quadrant from '../../geomgraph/Quadrant'\nexport default class MonotoneChainBuilder {\n constructor () {\n MonotoneChainBuilder.constructor_.apply(this, arguments)\n }\n\n static getChainStartIndices (pts) {\n let start = 0\n const startIndexList = new ArrayList()\n startIndexList.add(new Integer(start))\n do {\n const last = MonotoneChainBuilder.findChainEnd(pts, start)\n startIndexList.add(new Integer(last))\n start = last\n } while (start < pts.length - 1)\n const startIndex = MonotoneChainBuilder.toIntArray(startIndexList)\n return startIndex\n }\n\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\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]; const context = arguments[1]\n const mcList = new ArrayList()\n const startIndex = MonotoneChainBuilder.getChainStartIndices(pts)\n for (let i = 0; i < startIndex.length - 1; i++) {\n const mc = new MonotoneChain(pts, startIndex[i], startIndex[i + 1], context)\n mcList.add(mc)\n }\n return mcList\n }\n }\n\n static toIntArray (list) {\n const array = new Array(list.size()).fill(null)\n for (let i = 0; i < array.length; i++) {\n array[i] = list.get(i).intValue()\n }\n return array\n }\n\n getClass () {\n return MonotoneChainBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nMonotoneChainBuilder.constructor_ = function () {}\n","export default class Noder {\n constructor () {\n Noder.constructor_.apply(this, arguments)\n }\n\n computeNodes (segStrings) {}\n\n getNodedSubstrings () {}\n\n getClass () {\n return Noder\n }\n\n get interfaces_ () {\n return []\n }\n}\nNoder.constructor_ = function () {}\n","import Noder from './Noder'\nexport default class SinglePassNoder {\n constructor () {\n SinglePassNoder.constructor_.apply(this, arguments)\n }\n\n setSegmentIntersector (segInt) {\n this._segInt = segInt\n }\n\n getClass () {\n return SinglePassNoder\n }\n\n get interfaces_ () {\n return [Noder]\n }\n}\nSinglePassNoder.constructor_ = function () {\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","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\n getMonotoneChains () {\n return this._monoChains\n }\n\n getNodedSubstrings () {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n\n getIndex () {\n return this._index\n }\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\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\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\n getClass () {\n return MCIndexNoder\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass SegmentOverlapAction extends MonotoneChainOverlapAction {\n constructor () {\n super()\n SegmentOverlapAction.constructor_.apply(this, arguments)\n }\n\n overlap () {\n if (arguments.length === 4) {\n const mc1 = arguments[0]; const start1 = arguments[1]; const mc2 = arguments[2]; const start2 = arguments[3]\n const ss1 = mc1.getContext()\n const ss2 = mc2.getContext()\n this._si.processIntersections(ss1, start1, ss2, start2)\n } else return super.overlap.apply(this, arguments)\n }\n\n getClass () {\n return SegmentOverlapAction\n }\n\n get interfaces_ () {\n return []\n }\n}\nSegmentOverlapAction.constructor_ = function () {\n this._si = null\n const si = arguments[0]\n this._si = si\n}\nMCIndexNoder.SegmentOverlapAction = SegmentOverlapAction\nMCIndexNoder.constructor_ = function () {\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","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\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 let p0 = null\n let p1 = null\n if (pts.length === 2) {\n p0 = new Coordinate(pts[0])\n p1 = new Coordinate(pts[1])\n }\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\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].z)\n }\n const roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts)\n return roundPtsNoDup\n }\n }\n\n isIntegerPrecision () {\n return this._scaleFactor === 1.0\n }\n\n getNodedSubstrings () {\n const splitSS = this._noder.getNodedSubstrings()\n if (this._isScaled) this.rescale(splitSS)\n return splitSS\n }\n\n computeNodes (inputSegStrings) {\n let intSegStrings = inputSegStrings\n if (this._isScaled) intSegStrings = this.scale(inputSegStrings)\n this._noder.computeNodes(intSegStrings)\n }\n\n getClass () {\n return ScaledNoder\n }\n\n get interfaces_ () {\n return [Noder]\n }\n}\nScaledNoder.constructor_ = function () {\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]; const scaleFactor = arguments[1]\n ScaledNoder.constructor_.call(this, noder, scaleFactor, 0, 0)\n } else if (arguments.length === 4) {\n const noder = arguments[0]; const scaleFactor = arguments[1]; const offsetX = arguments[2]; const offsetY = arguments[3]\n this._noder = noder\n this._scaleFactor = scaleFactor\n this._isScaled = !this.isIntegerPrecision()\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\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]; const boundaryNodeRule = arguments[1]\n const op = new IsSimpleOp(geom, boundaryNodeRule)\n return op.isSimple()\n }\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\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\n hasClosedEndpointIntersection (graph) {\n const endPoints = new TreeMap()\n for (let i = graph.getEdgeIterator(); i.hasNext();) {\n const e = i.next()\n const maxSegmentIndex = e.getMaximumSegmentIndex()\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\n getNonSimpleLocation () {\n return this._nonSimpleLocation\n }\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\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\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\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\n isSimple () {\n this._nonSimpleLocation = null\n return this.computeSimple(this._inputGeom)\n }\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\n getClass () {\n return IsSimpleOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass EndpointInfo {\n constructor () {\n EndpointInfo.constructor_.apply(this, arguments)\n }\n\n addEndpoint (isClosed) {\n this.degree++\n this.isClosed |= isClosed\n }\n\n getCoordinate () {\n return this.pt\n }\n\n getClass () {\n return EndpointInfo\n }\n\n get interfaces_ () {\n return []\n }\n}\nEndpointInfo.constructor_ = function () {\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}\nIsSimpleOp.EndpointInfo = EndpointInfo\nIsSimpleOp.constructor_ = function () {\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]; const boundaryNodeRule = arguments[1]\n this._inputGeom = geom\n this._isClosedEndpointsInInterior = !boundaryNodeRule.isInBoundary(2)\n }\n}\n","export default class BufferParameters {\n constructor () {\n BufferParameters.constructor_.apply(this, arguments)\n }\n\n static bufferDistanceError (quadSegs) {\n const alpha = Math.PI / 2.0 / quadSegs\n return 1 - Math.cos(alpha / 2.0)\n }\n\n getEndCapStyle () {\n return this._endCapStyle\n }\n\n isSingleSided () {\n return this._isSingleSided\n }\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\n getJoinStyle () {\n return this._joinStyle\n }\n\n setJoinStyle (joinStyle) {\n this._joinStyle = joinStyle\n }\n\n setSimplifyFactor (simplifyFactor) {\n this._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor\n }\n\n getSimplifyFactor () {\n return this._simplifyFactor\n }\n\n getQuadrantSegments () {\n return this._quadrantSegments\n }\n\n setEndCapStyle (endCapStyle) {\n this._endCapStyle = endCapStyle\n }\n\n getMitreLimit () {\n return this._mitreLimit\n }\n\n setMitreLimit (mitreLimit) {\n this._mitreLimit = mitreLimit\n }\n\n setSingleSided (isSingleSided) {\n this._isSingleSided = isSingleSided\n }\n\n getClass () {\n return BufferParameters\n }\n\n get interfaces_ () {\n return []\n }\n}\nBufferParameters.constructor_ = function () {\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]; const endCapStyle = arguments[1]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n } else if (arguments.length === 4) {\n const quadrantSegments = arguments[0]; const endCapStyle = arguments[1]; const joinStyle = arguments[2]; const mitreLimit = arguments[3]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n this.setJoinStyle(joinStyle)\n this.setMitreLimit(mitreLimit)\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\n getCoordinate () {\n return this._minCoord\n }\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\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\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\n getEdge () {\n return this._orientedDe\n }\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\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\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 getClass () {\n return RightmostEdgeFinder\n }\n\n get interfaces_ () {\n return []\n }\n}\nRightmostEdgeFinder.constructor_ = function () {\n this._minIndex = -1\n this._minCoord = null\n this._minDe = null\n this._orientedDe = null\n}\n","export default function LinkedList () {\n this.array_ = []\n}\nLinkedList.prototype.addLast = function (e) {\n this.array_.push(e)\n}\nLinkedList.prototype.removeFirst = function () {\n return this.array_.shift()\n}\nLinkedList.prototype.isEmpty = function () {\n return this.array_.length === 0\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\n clearVisitedEdges () {\n for (let it = this._dirEdgeList.iterator(); it.hasNext();) {\n const de = it.next()\n de.setVisited(false)\n }\n }\n\n getRightmostCoordinate () {\n return this._rightMostCoord\n }\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\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\n create (node) {\n this.addReachable(node)\n this._finder.findEdge(this._dirEdgeList)\n this._rightMostCoord = this._finder.getCoordinate()\n }\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\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\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\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\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\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\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\n getNodes () {\n return this._nodes\n }\n\n getDirectedEdges () {\n return this._dirEdgeList\n }\n\n getClass () {\n return BufferSubgraph\n }\n\n get interfaces_ () {\n return [Comparable]\n }\n}\nBufferSubgraph.constructor_ = function () {\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","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\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\n isIsolated () {\n return this._label.getGeometryCount() === 1\n }\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\n getLinearRing () {\n return this._ring\n }\n\n getCoordinate (i) {\n return this._pts.get(i)\n }\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\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\n isHole () {\n return this._isHole\n }\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\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\n addHole (ring) {\n this._holes.add(ring)\n }\n\n isShell () {\n return this._shell === null\n }\n\n getLabel () {\n return this._label\n }\n\n getEdges () {\n return this._edges\n }\n\n getMaxNodeDegree () {\n if (this._maxNodeDegree < 0) this.computeMaxNodeDegree()\n return this._maxNodeDegree\n }\n\n getShell () {\n return this._shell\n }\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]; const 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\n setShell (shell) {\n this._shell = shell\n if (shell !== null) shell.addHole(this)\n }\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 getClass () {\n return EdgeRing\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeRing.constructor_ = function () {\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]; const geometryFactory = arguments[1]\n this._geometryFactory = geometryFactory\n this.computePoints(start)\n this.computeRing()\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\n setEdgeRing (de, er) {\n de.setMinEdgeRing(er)\n }\n\n getNext (de) {\n return de.getNextMin()\n }\n\n getClass () {\n return MinimalEdgeRing\n }\n\n get interfaces_ () {\n return []\n }\n}\nMinimalEdgeRing.constructor_ = function () {\n const start = arguments[0]; const geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\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\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\n setEdgeRing (de, er) {\n de.setEdgeRing(er)\n }\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\n getNext (de) {\n return de.getNext()\n }\n\n getClass () {\n return MaximalEdgeRing\n }\n\n get interfaces_ () {\n return []\n }\n}\nMaximalEdgeRing.constructor_ = function () {\n const start = arguments[0]; const geometryFactory = arguments[1]\n EdgeRing.constructor_.call(this, start, geometryFactory)\n}\n","import PointLocation from '../../algorithm/PointLocation'\nimport TopologyException from '../../geom/TopologyException'\nimport MaximalEdgeRing from './MaximalEdgeRing'\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\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\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\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 = this.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\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\n containsPoint (p) {\n for (let it = this._shellList.iterator(); it.hasNext();) {\n const er = it.next()\n if (er.containsPoint(p)) return true\n }\n return false\n }\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\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\n getPolygons () {\n const resultPolyList = this.computePolygons(this._shellList)\n return resultPolyList\n }\n\n findEdgeRingContaining (testEr, shellList) {\n const testRing = testEr.getLinearRing()\n const testEnv = testRing.getEnvelopeInternal()\n const testPt = testRing.getCoordinateN(0)\n let minShell = null\n let minEnv = null\n for (let it = shellList.iterator(); it.hasNext();) {\n const tryShell = it.next()\n const tryRing = tryShell.getLinearRing()\n const tryEnv = tryRing.getEnvelopeInternal()\n if (minShell !== null) minEnv = minShell.getLinearRing().getEnvelopeInternal()\n let isContained = false\n if (tryEnv.contains(testEnv) && PointLocation.isInRing(testPt, tryRing.getCoordinates())) isContained = true\n if (isContained) {\n if (minShell === null || minEnv.contains(tryEnv)) {\n minShell = tryShell\n }\n }\n }\n return minShell\n }\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\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]; const 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 getClass () {\n return PolygonBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nPolygonBuilder.constructor_ = function () {\n this._geometryFactory = null\n this._shellList = new ArrayList()\n const geometryFactory = arguments[0]\n this._geometryFactory = geometryFactory\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\n static simplify (inputLine, distanceTol) {\n const simp = new BufferInputLineSimplifier(inputLine)\n return simp.simplify(distanceTol)\n }\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\n deleteShallowConcavities () {\n let index = 1\n const maxIndex = this._inputLine.length - 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\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\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\n isConcave (p0, p1, p2) {\n const orientation = Orientation.index(p0, p1, p2)\n const isConcave = orientation === this._angleOrientation\n return isConcave\n }\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\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\n isShallow (p0, p1, p2, distanceTol) {\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\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\n getClass () {\n return BufferInputLineSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nBufferInputLineSimplifier.constructor_ = function () {\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}\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\n getCoordinates () {\n const coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE)\n return coord\n }\n\n setPrecisionModel (precisionModel) {\n this._precisionModel = precisionModel\n }\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\n reverse () {}\n\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\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\n toString () {\n const fact = new GeometryFactory()\n const line = fact.createLineString(this.getCoordinates())\n return line.toString()\n }\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 let last2Pt = null\n if (this._ptList.size() >= 2) last2Pt = this._ptList.get(this._ptList.size() - 2)\n if (startPt.equals(lastPt)) return null\n this._ptList.add(startPt)\n }\n\n setMinimumVertexDistance (minimimVertexDistance) {\n this._minimimVertexDistance = minimimVertexDistance\n }\n\n getClass () {\n return OffsetSegmentString\n }\n\n get interfaces_ () {\n return []\n }\n}\nOffsetSegmentString.constructor_ = function () {\n this._ptList = null\n this._precisionModel = null\n this._minimimVertexDistance = 0.0\n this._ptList = new ArrayList()\n}\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null)\n","import BufferParameters from './BufferParameters'\nimport NotRepresentableException from '../../algorithm/NotRepresentableException'\nimport Position from '../../geomgraph/Position'\nimport Coordinate from '../../geom/Coordinate'\nimport Orientation from '../../algorithm/Orientation'\nimport OffsetSegmentString from './OffsetSegmentString'\nimport LineSegment from '../../geom/LineSegment'\nimport Angle from '../../algorithm/Angle'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport HCoordinate from '../../algorithm/HCoordinate'\nexport default class OffsetSegmentGenerator {\n constructor () {\n OffsetSegmentGenerator.constructor_.apply(this, arguments)\n }\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\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\n getCoordinates () {\n const pts = this._segList.getCoordinates()\n return pts\n }\n\n addMitreJoin (p, offset0, offset1, distance) {\n let isMitreWithinLimit = true\n let intPt = null\n try {\n intPt = HCoordinate.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1)\n const mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance)\n if (mitreRatio > this._bufParams.getMitreLimit()) isMitreWithinLimit = false\n } catch (ex) {\n if (ex instanceof NotRepresentableException) {\n intPt = new Coordinate(0, 0)\n isMitreWithinLimit = false\n } else throw ex\n } finally {}\n if (isMitreWithinLimit) {\n this._segList.addPt(intPt)\n } else {\n this.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit())\n }\n }\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\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\n addSegments (pt, isForward) {\n this._segList.addPts(pt, isForward)\n }\n\n addFirstSegment () {\n this._segList.addPt(this._offset1.p0)\n }\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\n addLastSegment () {\n this._segList.addPt(this._offset1.p1)\n }\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\n addLimitedMitreJoin (offset0, offset1, distance, mitreLimit) {\n const basePt = this._seg0.p1\n const ang0 = Angle.angle(basePt, this._seg0.p0)\n const ang1 = Angle.angle(basePt, this._seg1.p1)\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\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 let initAngle = null; let currAngleInc = null\n initAngle = 0.0\n currAngleInc = totalAngle / nSegs\n let currAngle = initAngle\n const pt = new Coordinate()\n while (currAngle < totalAngle) {\n const angle = startAngle + directionFactor * currAngle\n pt.x = p.x + radius * Math.cos(angle)\n pt.y = p.y + radius * Math.sin(angle)\n this._segList.addPt(pt)\n currAngle += currAngleInc\n }\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\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\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\n addBevelJoin (offset0, offset1) {\n this._segList.addPt(offset0.p1)\n this._segList.addPt(offset1.p0)\n }\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\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\n closeRing () {\n this._segList.closeRing()\n }\n\n hasNarrowConcaveAngle () {\n return this._hasNarrowConcaveAngle\n }\n\n getClass () {\n return OffsetSegmentGenerator\n }\n\n get interfaces_ () {\n return []\n }\n}\nOffsetSegmentGenerator.constructor_ = function () {\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]; const bufParams = arguments[1]; const 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}\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\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\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\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\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\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\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\n getLineCurve (inputPts, distance) {\n this._distance = distance\n if (distance < 0.0 && !this._bufParams.isSingleSided()) return null\n if (distance === 0.0) 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 this.computeLineBufferCurve(inputPts, segGen)\n }\n const lineCoord = segGen.getCoordinates()\n return lineCoord\n }\n\n getBufferParameters () {\n return this._bufParams\n }\n\n simplifyTolerance (bufDistance) {\n return bufDistance * this._bufParams.getSimplifyFactor()\n }\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\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\n getSegGen (distance) {\n return new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance)\n }\n\n getClass () {\n return OffsetCurveBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nOffsetCurveBuilder.constructor_ = function () {\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n const precisionModel = arguments[0]; const bufParams = arguments[1]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\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\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]; const dirEdge = arguments[1]; const 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]; const dirEdges = arguments[1]; const 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\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\n getClass () {\n return SubgraphDepthLocater\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass DepthSegment {\n constructor () {\n DepthSegment.constructor_.apply(this, arguments)\n }\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\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\n toString () {\n return this._upwardSeg.toString()\n }\n\n getClass () {\n return DepthSegment\n }\n\n get interfaces_ () {\n return [Comparable]\n }\n}\nDepthSegment.constructor_ = function () {\n this._upwardSeg = null\n this._leftDepth = null\n const seg = arguments[0]; const depth = arguments[1]\n this._upwardSeg = new LineSegment(seg)\n this._leftDepth = depth\n}\nSubgraphDepthLocater.DepthSegment = DepthSegment\nSubgraphDepthLocater.constructor_ = function () {\n this._subgraphs = null\n this._seg = new LineSegment()\n const subgraphs = arguments[0]\n this._subgraphs = subgraphs\n}\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 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\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\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.addPolygonRing(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.addPolygonRing(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR)\n }\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\n addLineString (line) {\n if (this._distance <= 0.0 && !this._curveBuilder.getBufferParameters().isSingleSided()) return null\n const coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\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\n getCurves () {\n this.add(this._inputGeom)\n return this._curveList\n }\n\n addPolygonRing (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\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.getClass().getName())\n }\n\n isErodedCompletely (ring, bufferDistance) {\n const ringCoord = ring.getCoordinates()\n const minDiam = 0.0\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\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 getClass () {\n return OffsetCurveSetBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nOffsetCurveSetBuilder.constructor_ = function () {\n this._inputGeom = null\n this._distance = null\n this._curveBuilder = null\n this._curveList = new ArrayList()\n const inputGeom = arguments[0]; const distance = arguments[1]; const curveBuilder = arguments[2]\n this._inputGeom = inputGeom\n this._distance = distance\n this._curveBuilder = curveBuilder\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\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\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\n getCoordinate () {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\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\n isAreaLabelsConsistent (geomGraph) {\n this.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule())\n return this.checkAreaLabelsConsistent(0)\n }\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\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\n iterator () {\n return this.getEdges().iterator()\n }\n\n getEdges () {\n if (this._edgeList === null) {\n this._edgeList = new ArrayList(this._edgeMap.values())\n }\n return this._edgeList\n }\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\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\n computeEdgeEndLabels (boundaryNodeRule) {\n for (let it = this.iterator(); it.hasNext();) {\n const ee = it.next()\n ee.computeLabel(boundaryNodeRule)\n }\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\n getDegree () {\n return this._edgeMap.size()\n }\n\n insertEdgeEnd (e, obj) {\n this._edgeMap.put(e, obj)\n this._edgeList = null\n }\n\n getClass () {\n return EdgeEndStar\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeEndStar.constructor_ = function () {\n this._edgeMap = new TreeMap()\n this._edgeList = null\n this._ptInAreaLocation = [Location.NONE, Location.NONE]\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\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\n insert (ee) {\n const de = ee\n this.insertEdgeEnd(de, de)\n }\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)) return de0; else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) return deLast; 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\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\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\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\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\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]; const endIndex = arguments[1]; const 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\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\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\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\n getLabel () {\n return this._label\n }\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\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 getClass () {\n return DirectedEdgeStar\n }\n\n get interfaces_ () {\n return []\n }\n}\nDirectedEdgeStar.constructor_ = function () {\n this._resultAreaEdgeList = null\n this._label = null\n this._SCANNING_FOR_INCOMING = 1\n this._LINKING_TO_OUTGOING = 2\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 OverlayNodeFactory.constructor_.apply(this, arguments)\n }\n\n createNode (coord) {\n return new Node(coord, new DirectedEdgeStar())\n }\n\n getClass () {\n return OverlayNodeFactory\n }\n\n get interfaces_ () {\n return []\n }\n}\nOverlayNodeFactory.constructor_ = function () {}\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\n static orientation (pts) {\n return CoordinateArrays.increasingDirection(pts) === 1\n }\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 const comp = 0\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\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\n getClass () {\n return OrientedCoordinateArray\n }\n\n get interfaces_ () {\n return [Comparable]\n }\n}\nOrientedCoordinateArray.constructor_ = function () {\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","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\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\n addAll (edgeColl) {\n for (let i = edgeColl.iterator(); i.hasNext();) {\n this.add(i.next())\n }\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\n iterator () {\n return this._edges.iterator()\n }\n\n getEdges () {\n return this._edges\n }\n\n get (i) {\n return this._edges.get(i)\n }\n\n findEqualEdge (e) {\n const oca = new OrientedCoordinateArray(e.getCoordinates())\n const matchEdge = this._ocaMap.get(oca)\n return matchEdge\n }\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 getClass () {\n return EdgeList\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeList.constructor_ = function () {\n this._edges = new ArrayList()\n this._ocaMap = new TreeMap()\n}\n","export default class SegmentIntersector {\n constructor () {\n SegmentIntersector.constructor_.apply(this, arguments)\n }\n\n processIntersections (e0, segIndex0, e1, segIndex1) {}\n\n isDone () {}\n\n getClass () {\n return SegmentIntersector\n }\n\n get interfaces_ () {\n return []\n }\n}\nSegmentIntersector.constructor_ = function () {}\n","import SegmentIntersector from './SegmentIntersector'\nexport default class IntersectionAdder {\n constructor () {\n IntersectionAdder.constructor_.apply(this, arguments)\n }\n\n static isAdjacentSegments (i1, i2) {\n return Math.abs(i1 - i2) === 1\n }\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\n getProperIntersectionPoint () {\n return this._properIntersectionPoint\n }\n\n hasProperInteriorIntersection () {\n return this._hasProperInterior\n }\n\n getLineIntersector () {\n return this._li\n }\n\n hasProperIntersection () {\n return this._hasProper\n }\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\n hasIntersection () {\n return this._hasIntersection\n }\n\n isDone () {\n return false\n }\n\n hasInteriorIntersection () {\n return this._hasInterior\n }\n\n getClass () {\n return IntersectionAdder\n }\n\n get interfaces_ () {\n return [SegmentIntersector]\n }\n}\nIntersectionAdder.constructor_ = function () {\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","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\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\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\n setWorkingPrecisionModel (pm) {\n this._workingPrecisionModel = pm\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 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\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\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\n createEmptyResultGeometry () {\n const emptyGeom = this._geomFact.createPolygon()\n return emptyGeom\n }\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\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\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\n setNoder (noder) {\n this._workingNoder = noder\n }\n\n getClass () {\n return BufferBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nBufferBuilder.constructor_ = function () {\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","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\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]; const 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\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]; const 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]; const segIndex0 = arguments[1]; const e1 = arguments[2]; const 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\n checkValid () {\n this.checkEndPtVertexIntersections()\n this.checkInteriorIntersections()\n this.checkCollapses()\n }\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\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\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\n getClass () {\n return NodingValidator\n }\n\n get interfaces_ () {\n return []\n }\n}\nNodingValidator.constructor_ = function () {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n const segStrings = arguments[0]\n this._segStrings = segStrings\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\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\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\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\n scale (val) {\n return Math.round(val * this._scaleFactor)\n }\n\n getCoordinate () {\n return this._originalPt\n }\n\n copyScaled (p, pScaled) {\n pScaled.x = this.scale(p.x)\n pScaled.y = this.scale(p.y)\n }\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\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\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\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\n getClass () {\n return HotPixel\n }\n\n get interfaces_ () {\n return []\n }\n}\nHotPixel.constructor_ = function () {\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]; const scaleFactor = arguments[1]; const 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}\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\n select () {\n if (arguments.length === 1) {\n const seg = arguments[0]\n } else if (arguments.length === 2) {\n const mc = arguments[0]; const startIndex = arguments[1]\n mc.getLineSegment(startIndex, this.selectedSegment)\n this.select(this.selectedSegment)\n }\n }\n\n getClass () {\n return MonotoneChainSelectAction\n }\n\n get interfaces_ () {\n return []\n }\n}\nMonotoneChainSelectAction.constructor_ = function () {\n this.selectedSegment = new LineSegment()\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\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]; const parentEdge = arguments[1]; const 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\n visitItem (item) {\n const testChain = item\n testChain.select(pixelEnv, hotPixelSnapAction)\n }\n })())\n return hotPixelSnapAction.isNodeAdded()\n }\n }\n\n getClass () {\n return MCIndexPointSnapper\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass HotPixelSnapAction extends MonotoneChainSelectAction {\n constructor () {\n super()\n HotPixelSnapAction.constructor_.apply(this, arguments)\n }\n\n isNodeAdded () {\n return this._isNodeAdded\n }\n\n select () {\n if (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n const mc = arguments[0]; const startIndex = arguments[1]\n const ss = mc.getContext()\n if (this._parentEdge !== null) {\n if (ss === this._parentEdge && startIndex === this._hotPixelVertexIndex) return null\n }\n this._isNodeAdded = this._hotPixel.addSnappedNode(ss, startIndex)\n } else return super.select.apply(this, arguments)\n }\n\n getClass () {\n return HotPixelSnapAction\n }\n\n get interfaces_ () {\n return []\n }\n}\nHotPixelSnapAction.constructor_ = function () {\n this._hotPixel = null\n this._parentEdge = null\n this._hotPixelVertexIndex = null\n this._isNodeAdded = false\n const hotPixel = arguments[0]; const parentEdge = arguments[1]; const hotPixelVertexIndex = arguments[2]\n this._hotPixel = hotPixel\n this._parentEdge = parentEdge\n this._hotPixelVertexIndex = hotPixelVertexIndex\n}\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction\nMCIndexPointSnapper.constructor_ = function () {\n this._index = null\n const index = arguments[0]\n this._index = index\n}\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\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\n isDone () {\n return false\n }\n\n getInteriorIntersections () {\n return this._interiorIntersections\n }\n\n getClass () {\n return InteriorIntersectionFinderAdder\n }\n\n get interfaces_ () {\n return [SegmentIntersector]\n }\n}\nInteriorIntersectionFinderAdder.constructor_ = function () {\n this._li = null\n this._interiorIntersections = null\n const li = arguments[0]\n this._li = li\n this._interiorIntersections = new ArrayList()\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\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\n getNodedSubstrings () {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n\n snapRound (segStrings, li) {\n const intersections = this.findInteriorIntersections(segStrings, li)\n this.computeIntersectionSnaps(intersections)\n this.computeVertexSnaps(segStrings)\n }\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\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\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\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\n getClass () {\n return MCIndexSnapRounder\n }\n\n get interfaces_ () {\n return [Noder]\n }\n}\nMCIndexSnapRounder.constructor_ = function () {\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","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\n static bufferOp () {\n if (arguments.length === 2) {\n const g = arguments[0]; const 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]; const distance = arguments[1]; const 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]; const distance = arguments[1]; const 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]; const distance = arguments[1]; const quadrantSegments = arguments[2]; const 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\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\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\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\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\n setQuadrantSegments (quadrantSegments) {\n this._bufParams.setQuadrantSegments(quadrantSegments)\n }\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\n getResultGeometry (distance) {\n this._distance = distance\n this.computeGeometry()\n return this._resultGeometry\n }\n\n setEndCapStyle (endCapStyle) {\n this._bufParams.setEndCapStyle(endCapStyle)\n }\n\n getClass () {\n return BufferOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nBufferOp.constructor_ = function () {\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]; const bufParams = arguments[1]\n this._argGeom = g\n this._bufParams = bufParams\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","export default class GeometryLocation {\n constructor () {\n GeometryLocation.constructor_.apply(this, arguments)\n }\n\n isInsideArea () {\n return this._segIndex === GeometryLocation.INSIDE_AREA\n }\n\n getCoordinate () {\n return this._pt\n }\n\n getGeometryComponent () {\n return this._component\n }\n\n getSegmentIndex () {\n return this._segIndex\n }\n\n getClass () {\n return GeometryLocation\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryLocation.constructor_ = function () {\n this._component = null\n this._segIndex = null\n this._pt = null\n if (arguments.length === 2) {\n const component = arguments[0]; const pt = arguments[1]\n GeometryLocation.constructor_.call(this, component, GeometryLocation.INSIDE_AREA, pt)\n } else if (arguments.length === 3) {\n const component = arguments[0]; const segIndex = arguments[1]; const pt = arguments[2]\n this._component = component\n this._segIndex = segIndex\n this._pt = pt\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\n static getLocations (geom) {\n const locations = new ArrayList()\n geom.apply(new ConnectedElementLocationFilter(locations))\n return locations\n }\n\n filter (geom) {\n if (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate()))\n }\n\n getClass () {\n return ConnectedElementLocationFilter\n }\n\n get interfaces_ () {\n return [GeometryFilter]\n }\n}\nConnectedElementLocationFilter.constructor_ = function () {\n this._locations = null\n const locations = arguments[0]\n this._locations = locations\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 List from '../../../../../java/util/List'\nimport Distance from '../../algorithm/Distance'\nexport default class DistanceOp {\n constructor () {\n DistanceOp.constructor_.apply(this, arguments)\n }\n\n static distance (g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.distance()\n }\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\n static nearestPoints (g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.nearestPoints()\n }\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]; const 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]; const polys = arguments[1]; const 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]; const poly = arguments[1]; const 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\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\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\n nearestLocations () {\n this.computeMinDistance()\n return this._minDistanceLocation\n }\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\n nearestPoints () {\n this.computeMinDistance()\n const nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()]\n return nearestPts\n }\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]; const pt = arguments[1]; const 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]; const line1 = arguments[1]; const 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 for (let j = 0; j < coord1.length - 1; j++) {\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\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\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\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 getClass () {\n return DistanceOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nDistanceOp.constructor_ = function () {\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]; const g1 = arguments[1]\n DistanceOp.constructor_.call(this, g0, g1, 0.0)\n } else if (arguments.length === 3) {\n const g0 = arguments[0]; const g1 = arguments[1]; const 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","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\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\n toLineString () {\n return this._factory.createLineString(this.getCoordinates())\n }\n\n add (directedEdge) {\n this._directedEdges.add(directedEdge)\n }\n\n getClass () {\n return EdgeString\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeString.constructor_ = function () {\n this._factory = null\n this._directedEdges = new ArrayList()\n this._coordinates = null\n const factory = arguments[0]\n this._factory = factory\n}\n","export default class GraphComponent {\n constructor () {\n GraphComponent.constructor_.apply(this, arguments)\n }\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\n static setVisited (i, visited) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setVisited(visited)\n }\n }\n\n static setMarked (i, marked) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setMarked(marked)\n }\n }\n\n setVisited (isVisited) {\n this._isVisited = isVisited\n }\n\n isMarked () {\n return this._isMarked\n }\n\n setData (data) {\n this._data = data\n }\n\n getData () {\n return this._data\n }\n\n setMarked (isMarked) {\n this._isMarked = isMarked\n }\n\n getContext () {\n return this._data\n }\n\n isVisited () {\n return this._isVisited\n }\n\n setContext (data) {\n this._data = data\n }\n\n getClass () {\n return GraphComponent\n }\n\n get interfaces_ () {\n return []\n }\n}\nGraphComponent.constructor_ = function () {\n this._isMarked = false\n this._isVisited = false\n this._data = null\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\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\n isRemoved () {\n return this._parentEdge === null\n }\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\n getCoordinate () {\n return this._from.getCoordinate()\n }\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\n getDirectionPt () {\n return this._p1\n }\n\n getAngle () {\n return this._angle\n }\n\n compareTo (obj) {\n const de = obj\n return this.compareDirection(de)\n }\n\n getFromNode () {\n return this._from\n }\n\n getSym () {\n return this._sym\n }\n\n setEdge (parentEdge) {\n this._parentEdge = parentEdge\n }\n\n remove () {\n this._sym = null\n this._parentEdge = null\n }\n\n getEdge () {\n return this._parentEdge\n }\n\n getQuadrant () {\n return this._quadrant\n }\n\n setSym (sym) {\n this._sym = sym\n }\n\n getToNode () {\n return this._to\n }\n\n getEdgeDirection () {\n return this._edgeDirection\n }\n\n getClass () {\n return DirectedEdge\n }\n\n get interfaces_ () {\n return [Comparable]\n }\n}\nDirectedEdge.constructor_ = function () {\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]; const to = arguments[1]; const directionPt = arguments[2]; const 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","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\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 getClass () {\n return LineMergeDirectedEdge\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineMergeDirectedEdge.constructor_ = function () {\n const from = arguments[0]; const to = arguments[1]; const directionPt = arguments[2]; const edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\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\n isRemoved () {\n return this._dirEdge === null\n }\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\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\n remove () {\n this._dirEdge = null\n }\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 getClass () {\n return Edge\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdge.constructor_ = function () {\n this._dirEdge = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const de0 = arguments[0]; const de1 = arguments[1]\n this.setDirectedEdges(de0, de1)\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\n getNextEdge (dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i + 1))\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\n iterator () {\n this.sortEdges()\n return this._outEdges.iterator()\n }\n\n sortEdges () {\n if (!this._sorted) {\n Collections.sort(this._outEdges)\n this._sorted = true\n }\n }\n\n remove (de) {\n this._outEdges.remove(de)\n }\n\n getEdges () {\n this.sortEdges()\n return this._outEdges\n }\n\n getNextCWEdge (dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i - 1))\n }\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\n add (de) {\n this._outEdges.add(de)\n this._sorted = false\n }\n\n getDegree () {\n return this._outEdges.size()\n }\n\n getClass () {\n return DirectedEdgeStar\n }\n\n get interfaces_ () {\n return []\n }\n}\nDirectedEdgeStar.constructor_ = function () {\n this._outEdges = new ArrayList()\n this._sorted = false\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\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\n isRemoved () {\n return this._pt === null\n }\n\n addOutEdge (de) {\n this._deStar.add(de)\n }\n\n getCoordinate () {\n return this._pt\n }\n\n getOutEdges () {\n return this._deStar\n }\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\n getIndex (edge) {\n return this._deStar.getIndex(edge)\n }\n\n getDegree () {\n return this._deStar.getDegree()\n }\n\n getClass () {\n return Node\n }\n\n get interfaces_ () {\n return []\n }\n}\nNode.constructor_ = function () {\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]; const deStar = arguments[1]\n this._pt = pt\n this._deStar = deStar\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\n getLine () {\n return this._line\n }\n\n getClass () {\n return LineMergeEdge\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineMergeEdge.constructor_ = function () {\n this._line = null\n const line = arguments[0]\n this._line = line\n}\n","import TreeMap from '../../../../java/util/TreeMap'\nexport default class NodeMap {\n constructor () {\n NodeMap.constructor_.apply(this, arguments)\n }\n\n find (coord) {\n return this._nodeMap.get(coord)\n }\n\n iterator () {\n return this._nodeMap.values().iterator()\n }\n\n remove (pt) {\n return this._nodeMap.remove(pt)\n }\n\n values () {\n return this._nodeMap.values()\n }\n\n add (n) {\n this._nodeMap.put(n.getCoordinate(), n)\n return n\n }\n\n getClass () {\n return NodeMap\n }\n\n get interfaces_ () {\n return []\n }\n}\nNodeMap.constructor_ = function () {\n this._nodeMap = new TreeMap()\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\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\n dirEdgeIterator () {\n return this._dirEdges.iterator()\n }\n\n edgeIterator () {\n return this._edges.iterator()\n }\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\n findNode (pt) {\n return this._nodeMap.find(pt)\n }\n\n getEdges () {\n return this._edges\n }\n\n nodeIterator () {\n return this._nodeMap.iterator()\n }\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\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\n getNodes () {\n return this._nodeMap.values()\n }\n\n getClass () {\n return PlanarGraph\n }\n\n get interfaces_ () {\n return []\n }\n}\nPlanarGraph.constructor_ = function () {\n this._edges = new HashSet()\n this._dirEdges = new HashSet()\n this._nodeMap = new NodeMap()\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 LineMergeGraph.constructor_.apply(this, arguments)\n }\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\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 getClass () {\n return LineMergeGraph\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineMergeGraph.constructor_ = function () {}\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\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\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\n buildEdgeStringsForObviousStartNodes () {\n this.buildEdgeStringsForNonDegree2Nodes()\n }\n\n getMergedLineStrings () {\n this.merge()\n return this._mergedLineStrings\n }\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\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\n addLineString (lineString) {\n if (this._factory === null) {\n this._factory = lineString.getFactory()\n }\n this._graph.addEdge(lineString)\n }\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\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\n buildEdgeStringsForIsolatedLoops () {\n this.buildEdgeStringsForUnprocessedNodes()\n }\n\n getClass () {\n return LineMerger\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineMerger.constructor_ = function () {\n this._graph = new LineMergeGraph()\n this._mergedLineStrings = null\n this._factory = null\n this._edgeStrings = null\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\n static isClosed (pts) {\n if (pts.length <= 1) return false\n return pts[0].equals2D(pts[pts.length - 1])\n }\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\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\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\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\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\n setAllowSnappingToSourceVertices (allowSnappingToSourceVertices) {\n this._allowSnappingToSourceVertices = allowSnappingToSourceVertices\n }\n\n getClass () {\n return LineStringSnapper\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineStringSnapper.constructor_ = function () {\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]; const 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]; const snapTolerance = arguments[1]\n this._srcPts = srcPts\n this._isClosed = LineStringSnapper.isClosed(srcPts)\n this._snapTolerance = snapTolerance\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\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\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]; const g1 = arguments[1]\n return Math.min(GeometrySnapper.computeOverlaySnapTolerance(g0), GeometrySnapper.computeOverlaySnapTolerance(g1))\n }\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\n static snapToSelf (geom, snapTolerance, cleanResult) {\n const snapper0 = new GeometrySnapper(geom)\n return snapper0.snapToSelf(snapTolerance, cleanResult)\n }\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\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\n computeSnapTolerance (ringPts) {\n const minSegLen = this.computeMinimumSegmentLength(ringPts)\n const snapTol = minSegLen / 10\n return snapTol\n }\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\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\n getClass () {\n return GeometrySnapper\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometrySnapper.constructor_ = function () {\n this._srcGeom = null\n const srcGeom = arguments[0]\n this._srcGeom = srcGeom\n}\nGeometrySnapper.SNAP_PRECISION_FACTOR = 1e-9\nclass SnapTransformer extends GeometryTransformer {\n constructor () {\n super()\n SnapTransformer.constructor_.apply(this, arguments)\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\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 getClass () {\n return SnapTransformer\n }\n\n get interfaces_ () {\n return []\n }\n}\nSnapTransformer.constructor_ = function () {\n this._snapTolerance = null\n this._snapPts = null\n this._isSelfSnap = false\n if (arguments.length === 2) {\n const snapTolerance = arguments[0]; const snapPts = arguments[1]\n this._snapTolerance = snapTolerance\n this._snapPts = snapPts\n } else if (arguments.length === 3) {\n const snapTolerance = arguments[0]; const snapPts = arguments[1]; const isSelfSnap = arguments[2]\n this._snapTolerance = snapTolerance\n this._snapPts = snapPts\n this._isSelfSnap = isSelfSnap\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\n getCoordinates () {\n return this._pts\n }\n\n size () {\n return this._pts.length\n }\n\n getCoordinate (i) {\n return this._pts[i]\n }\n\n isClosed () {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n }\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\n setData (data) {\n this._data = data\n }\n\n getData () {\n return this._data\n }\n\n toString () {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n }\n\n getClass () {\n return BasicSegmentString\n }\n\n get interfaces_ () {\n return [SegmentString]\n }\n}\nBasicSegmentString.constructor_ = function () {\n this._pts = null\n this._data = null\n const pts = arguments[0]; const data = arguments[1]\n this._pts = pts\n this._data = data\n}\n","import SegmentIntersector from './SegmentIntersector'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class InteriorIntersectionFinder {\n constructor () {\n InteriorIntersectionFinder.constructor_.apply(this, arguments)\n }\n\n static createAllIntersectionsFinder (li) {\n const finder = new InteriorIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n return finder\n }\n\n static createAnyIntersectionFinder (li) {\n return new InteriorIntersectionFinder(li)\n }\n\n static createIntersectionCounter (li) {\n const finder = new InteriorIntersectionFinder(li)\n finder.setFindAllIntersections(true)\n finder.setKeepIntersections(false)\n return finder\n }\n\n getInteriorIntersection () {\n return this._interiorIntersection\n }\n\n setCheckEndSegmentsOnly (isCheckEndSegmentsOnly) {\n this._isCheckEndSegmentsOnly = isCheckEndSegmentsOnly\n }\n\n getIntersectionSegments () {\n return this._intSegments\n }\n\n count () {\n return this._intersectionCount\n }\n\n getIntersections () {\n return this._intersections\n }\n\n setFindAllIntersections (findAllIntersections) {\n this._findAllIntersections = findAllIntersections\n }\n\n setKeepIntersections (keepIntersections) {\n this._keepIntersections = keepIntersections\n }\n\n processIntersections (e0, segIndex0, e1, segIndex1) {\n if (!this._findAllIntersections && this.hasIntersection()) return null\n if (e0 === e1 && segIndex0 === segIndex1) return null\n if (this._isCheckEndSegmentsOnly) {\n const isEndSegPresent = this.isEndSegment(e0, segIndex0) || this.isEndSegment(e1, segIndex1)\n if (!isEndSegPresent) return null\n }\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 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 }\n\n isEndSegment (segStr, index) {\n if (index === 0) return true\n if (index >= segStr.size() - 2) return true\n return false\n }\n\n hasIntersection () {\n return this._interiorIntersection !== null\n }\n\n isDone () {\n if (this._findAllIntersections) return false\n return this._interiorIntersection !== null\n }\n\n getClass () {\n return InteriorIntersectionFinder\n }\n\n get interfaces_ () {\n return [SegmentIntersector]\n }\n}\nInteriorIntersectionFinder.constructor_ = function () {\n this._findAllIntersections = false\n this._isCheckEndSegmentsOnly = false\n this._li = null\n this._interiorIntersection = null\n this._intSegments = null\n this._intersections = new ArrayList()\n this._intersectionCount = 0\n this._keepIntersections = true\n const li = arguments[0]\n this._li = li\n this._interiorIntersection = null\n}\n","import WKTWriter from '../io/WKTWriter'\nimport MCIndexNoder from './MCIndexNoder'\nimport TopologyException from '../geom/TopologyException'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector'\nimport InteriorIntersectionFinder from './InteriorIntersectionFinder'\nexport default class FastNodingValidator {\n constructor () {\n FastNodingValidator.constructor_.apply(this, arguments)\n }\n\n static computeIntersections (segStrings) {\n const nv = new FastNodingValidator(segStrings)\n nv.setFindAllIntersections(true)\n nv.isValid()\n return nv.getIntersections()\n }\n\n execute () {\n if (this._segInt !== null) return null\n this.checkInteriorIntersections()\n }\n\n getIntersections () {\n return this._segInt.getIntersections()\n }\n\n isValid () {\n this.execute()\n return this._isValid\n }\n\n setFindAllIntersections (findAllIntersections) {\n this._findAllIntersections = findAllIntersections\n }\n\n checkInteriorIntersections () {\n this._isValid = true\n this._segInt = new InteriorIntersectionFinder(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\n checkValid () {\n this.execute()\n if (!this._isValid) throw new TopologyException(this.getErrorMessage(), this._segInt.getInteriorIntersection())\n }\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 getClass () {\n return FastNodingValidator\n }\n\n get interfaces_ () {\n return []\n }\n}\nFastNodingValidator.constructor_ = function () {\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","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\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\n static checkValid (edges) {\n const validator = new EdgeNodingValidator(edges)\n validator.checkValid()\n }\n\n checkValid () {\n this._nv.checkValid()\n }\n\n getClass () {\n return EdgeNodingValidator\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeNodingValidator.constructor_ = function () {\n this._nv = null\n const edges = arguments[0]\n this._nv = new FastNodingValidator(EdgeNodingValidator.toSegmentStrings(edges))\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\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\n labelIsolatedLine (e, targetIndex) {\n const loc = this._ptLocator.locate(e.getCoordinate(), this._op.getArgGeometry(targetIndex))\n e.getLabel().setLocation(targetIndex, loc)\n }\n\n build (opCode) {\n this.findCoveredLineEdges()\n this.collectLines(opCode)\n this.buildLines(opCode)\n return this._resultLineList\n }\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\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\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\n buildLines (opCode) {\n for (let it = this._lineEdgesList.iterator(); it.hasNext();) {\n const e = it.next()\n const label = e.getLabel()\n const line = this._geometryFactory.createLineString(e.getCoordinates())\n this._resultLineList.add(line)\n e.setInResult(true)\n }\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 getClass () {\n return LineBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineBuilder.constructor_ = function () {\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]; const geometryFactory = arguments[1]; const ptLocator = arguments[2]\n this._op = op\n this._geometryFactory = geometryFactory\n this._ptLocator = ptLocator\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\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\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\n build (opCode) {\n this.extractNonCoveredResultNodes(opCode)\n return this._resultPointList\n }\n\n getClass () {\n return PointBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nPointBuilder.constructor_ = function () {\n this._op = null\n this._geometryFactory = null\n this._resultPointList = new ArrayList()\n const op = arguments[0]; const geometryFactory = arguments[1]; const ptLocator = arguments[2]\n this._op = op\n this._geometryFactory = geometryFactory\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) {\n 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\n addCommonBits (geom) {\n const trans = new Translater(this._commonCoord)\n geom.apply(trans)\n geom.geometryChanged()\n }\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\n getCommonCoordinate () {\n return this._commonCoord\n }\n\n add (geom) {\n geom.apply(this._ccFilter)\n this._commonCoord = this._ccFilter.getCommonCoordinate()\n }\n\n getClass () {\n return CommonBitsRemover\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass CommonCoordinateFilter {\n constructor () {\n CommonCoordinateFilter.constructor_.apply(this, arguments)\n }\n\n filter (coord) {\n this._commonBitsX.add(coord.x)\n this._commonBitsY.add(coord.y)\n }\n\n getCommonCoordinate () {\n return new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())\n }\n\n getClass () {\n return CommonCoordinateFilter\n }\n\n get interfaces_ () {\n return [CoordinateFilter]\n }\n}\nCommonCoordinateFilter.constructor_ = function () {\n this._commonBitsX = new CommonBits()\n this._commonBitsY = new CommonBits()\n}\nclass Translater {\n constructor () {\n Translater.constructor_.apply(this, arguments)\n }\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\n isDone () {\n return false\n }\n\n isGeometryChanged () {\n return true\n }\n\n getClass () {\n return Translater\n }\n\n get interfaces_ () {\n return [CoordinateSequenceFilter]\n }\n}\nTranslater.constructor_ = function () {\n this.trans = null\n const trans = arguments[0]\n this.trans = trans\n}\nCommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter\nCommonBitsRemover.Translater = Translater\nCommonBitsRemover.constructor_ = function () {\n this._commonCoord = null\n this._ccFilter = new CommonCoordinateFilter()\n}\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\n static overlayOp (g0, g1, opCode) {\n const op = new SnapOverlayOp(g0, g1)\n return op.getResultGeometry(opCode)\n }\n\n static union (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n }\n\n static intersection (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n }\n\n static symDifference (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n }\n\n static difference (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n }\n\n selfSnap (geom) {\n const snapper0 = new GeometrySnapper(geom)\n const snapGeom = snapper0.snapTo(geom, this._snapTolerance)\n return snapGeom\n }\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\n prepareResult (geom) {\n this._cbr.addCommonBits(geom)\n return geom\n }\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\n checkValid (g) {\n if (!g.isValid()) {\n System.out.println('Snapped geometry is invalid')\n }\n }\n\n computeSnapTolerance () {\n this._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1])\n }\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 getClass () {\n return SnapOverlayOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nSnapOverlayOp.constructor_ = function () {\n this._geom = new Array(2).fill(null)\n this._snapTolerance = null\n this._cbr = null\n const g1 = arguments[0]; const g2 = arguments[1]\n this._geom[0] = g1\n this._geom[1] = g2\n this.computeSnapTolerance()\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\n static overlayOp (g0, g1, opCode) {\n const op = new SnapIfNeededOverlayOp(g0, g1)\n return op.getResultGeometry(opCode)\n }\n\n static union (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n }\n\n static intersection (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n }\n\n static symDifference (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n }\n\n static difference (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n }\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 getClass () {\n return SnapIfNeededOverlayOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nSnapIfNeededOverlayOp.constructor_ = function () {\n this._geom = new Array(2).fill(null)\n const g1 = arguments[0]; const g2 = arguments[1]\n this._geom[0] = g1\n this._geom[1] = g2\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\n getArgGeometry (i) {\n return this._arg[i].getGeometry()\n }\n\n setComputationPrecision (pm) {\n this._resultPrecisionModel = pm\n this._li.setPrecisionModel(this._resultPrecisionModel)\n }\n\n getClass () {\n return GeometryGraphOperation\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryGraphOperation.constructor_ = function () {\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 } else if (arguments.length === 2) {\n const g0 = arguments[0]; const 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]; const g1 = arguments[1]; const 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","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 MapOp from '../../geom/util/MapOp'\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\n static overlayOp (geom0, geom1, opCode) {\n const gov = new OverlayOp(geom0, geom1)\n const geomOv = gov.getResultGeometry(opCode)\n return geomOv\n }\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\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\n map (g) {\n return OverlayOp.intersection(g, g2)\n }\n })())\n }\n return SnapIfNeededOverlayOp.overlayOp(geom, other, OverlayOp.INTERSECTION)\n }\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\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\n static createEmptyResult (overlayOpCode, a, b, geomFact) {\n let result = null\n switch (OverlayOp.resultDimension(overlayOpCode, a, b)) {\n case -1:\n result = geomFact.createGeometryCollection()\n break\n case 0:\n result = geomFact.createPoint()\n break\n case 1:\n result = geomFact.createLineString()\n break\n case 2:\n result = geomFact.createPolygon()\n break\n }\n return result\n }\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\n static isResultOfOp () {\n if (arguments.length === 2) {\n const label = arguments[0]; const 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]; let loc1 = arguments[1]; const 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\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\n getGraph () {\n return this._graph\n }\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\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\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\n mergeSymLabels () {\n for (let nodeit = this._graph.getNodes().iterator(); nodeit.hasNext();) {\n const node = nodeit.next()\n node.getEdges().mergeSymLabels()\n }\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\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\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\n getResultGeometry (overlayOpCode) {\n this.computeOverlay(overlayOpCode)\n return this._resultGeom\n }\n\n insertUniqueEdges (edges) {\n for (let i = edges.iterator(); i.hasNext();) {\n const e = i.next()\n this.insertUniqueEdge(e)\n }\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\n labelIncompleteNode (n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setLocation(targetIndex, loc)\n }\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\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\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\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\n labelIncompleteNodes () {\n let nodeCount = 0\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 nodeCount++\n if (label.isNull(0)) this.labelIncompleteNode(n, 0); else this.labelIncompleteNode(n, 1)\n }\n n.getEdges().updateLabelling(label)\n }\n }\n\n isCoveredByA (coord) {\n if (this.isCovered(coord, this._resultPolyList)) return true\n return false\n }\n\n getClass () {\n return OverlayOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nOverlayOp.constructor_ = function () {\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]; const g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._geomFact = g0.getFactory()\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\n getNext () {\n return this._next\n }\n\n isInRing () {\n return this._edgeRing !== null\n }\n\n setRing (edgeRing) {\n this._edgeRing = edgeRing\n }\n\n setLabel (label) {\n this._label = label\n }\n\n getLabel () {\n return this._label\n }\n\n setNext (next) {\n this._next = next\n }\n\n getRing () {\n return this._edgeRing\n }\n\n getClass () {\n return PolygonizeDirectedEdge\n }\n\n get interfaces_ () {\n return []\n }\n}\nPolygonizeDirectedEdge.constructor_ = function () {\n this._edgeRing = null\n this._next = null\n this._label = -1\n const from = arguments[0]; const to = arguments[1]; const directionPt = arguments[2]; const edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\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\n getLine () {\n return this._line\n }\n\n getClass () {\n return PolygonizeEdge\n }\n\n get interfaces_ () {\n return []\n }\n}\nPolygonizeEdge.constructor_ = function () {\n this._line = null\n const line = arguments[0]\n this._line = line\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\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\n visitInteriorRing (ring, graph) {\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\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\n getCoordinate () {\n return this._disconnectedRingcoord\n }\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\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\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\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\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 getClass () {\n return ConnectedInteriorTester\n }\n\n get interfaces_ () {\n return []\n }\n}\nConnectedInteriorTester.constructor_ = function () {\n this._geometryFactory = new GeometryFactory()\n this._geomGraph = null\n this._disconnectedRingcoord = null\n const geomGraph = arguments[0]\n this._geomGraph = geomGraph\n}\n","import EdgeEnd from '../../geomgraph/EdgeEnd'\nimport Label from '../../geomgraph/Label'\nimport ArrayList from '../../../../../java/util/ArrayList'\nexport default class EdgeEndBuilder {\n constructor () {\n EdgeEndBuilder.constructor_.apply(this, arguments)\n }\n\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\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\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]; const 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 getClass () {\n return EdgeEndBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeEndBuilder.constructor_ = function () {}\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\n insert (e) {\n this._edgeEnds.add(e)\n }\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\n iterator () {\n return this._edgeEnds.iterator()\n }\n\n getEdgeEnds () {\n return this._edgeEnds\n }\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\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) this._label.setLocation(geomIndex, side, Location.EXTERIOR)\n }\n }\n }\n\n getLabel () {\n return this._label\n }\n\n computeLabelSides (geomIndex) {\n this.computeLabelSide(geomIndex, Position.LEFT)\n this.computeLabelSide(geomIndex, Position.RIGHT)\n }\n\n updateIM (im) {\n Edge.updateIM(this._label, im)\n }\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 getClass () {\n return EdgeEndBundle\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeEndBundle.constructor_ = function () {\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]; const 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","import EdgeEndStar from '../../geomgraph/EdgeEndStar'\nimport EdgeEndBundle from './EdgeEndBundle'\nexport default class EdgeEndBundleStar extends EdgeEndStar {\n constructor () {\n super()\n EdgeEndBundleStar.constructor_.apply(this, arguments)\n }\n\n updateIM (im) {\n for (let it = this.iterator(); it.hasNext();) {\n const esb = it.next()\n esb.updateIM(im)\n }\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 getClass () {\n return EdgeEndBundleStar\n }\n\n get interfaces_ () {\n return []\n }\n}\nEdgeEndBundleStar.constructor_ = function () {}\n","import Node from '../../geomgraph/Node'\nexport default class RelateNode extends Node {\n constructor () {\n super()\n RelateNode.constructor_.apply(this, arguments)\n }\n\n updateIMFromEdges (im) {\n this._edges.updateIM(im)\n }\n\n computeIM (im) {\n im.setAtLeastIfValid(this._label.getLocation(0), this._label.getLocation(1), 0)\n }\n\n getClass () {\n return RelateNode\n }\n\n get interfaces_ () {\n return []\n }\n}\nRelateNode.constructor_ = function () {\n const coord = arguments[0]; const edges = arguments[1]\n Node.constructor_.call(this, coord, edges)\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 RelateNodeFactory.constructor_.apply(this, arguments)\n }\n\n createNode (coord) {\n return new RelateNode(coord, new EdgeEndBundleStar())\n }\n\n getClass () {\n return RelateNodeFactory\n }\n\n get interfaces_ () {\n return []\n }\n}\nRelateNodeFactory.constructor_ = function () {}\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\n insertEdgeEnds (ee) {\n for (let i = ee.iterator(); i.hasNext();) {\n const e = i.next()\n this._nodes.add(e)\n }\n }\n\n getNodeIterator () {\n return this._nodes.iterator()\n }\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\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\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 getClass () {\n return RelateNodeGraph\n }\n\n get interfaces_ () {\n return []\n }\n}\nRelateNodeGraph.constructor_ = function () {\n this._nodes = new NodeMap(new RelateNodeFactory())\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\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\n getInvalidPoint () {\n return this._invalidPoint\n }\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\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 getClass () {\n return ConsistentAreaTester\n }\n\n get interfaces_ () {\n return []\n }\n}\nConsistentAreaTester.constructor_ = function () {\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","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\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\n getNestedPoint () {\n return this._nestedPt\n }\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\n add (ring) {\n this._rings.add(ring)\n this._totalEnv.expandToInclude(ring.getEnvelopeInternal())\n }\n\n getClass () {\n return IndexedNestedRingTester\n }\n\n get interfaces_ () {\n return []\n }\n}\nIndexedNestedRingTester.constructor_ = function () {\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","export default class TopologyValidationError {\n constructor () {\n TopologyValidationError.constructor_.apply(this, arguments)\n }\n\n getErrorType () {\n return this._errorType\n }\n\n getMessage () {\n return TopologyValidationError.errMsg[this._errorType]\n }\n\n getCoordinate () {\n return this._pt\n }\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\n getClass () {\n return TopologyValidationError\n }\n\n get interfaces_ () {\n return []\n }\n}\nTopologyValidationError.constructor_ = function () {\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]; const pt = arguments[1]\n this._errorType = errorType\n if (pt !== null) this._pt = pt.copy()\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 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\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\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\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\n checkHolesNotNested (p, graph) {\n const nestedTester = new IndexedNestedRingTester(graph)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const innerHole = p.getInteriorRingN(i)\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\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\n isValid () {\n this.checkValid(this._parentGeometry)\n return this._validErr === null\n }\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\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\n checkConnectedInteriors (graph) {\n const cit = new ConnectedInteriorTester(graph)\n if (!cit.isInteriorsConnected()) this._validErr = new TopologyValidationError(TopologyValidationError.DISCONNECTED_INTERIOR, cit.getCoordinate())\n }\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\n checkHolesInShell (p, graph) {\n const shell = p.getExteriorRing()\n const pir = new IndexedPointInAreaLocator(shell)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n const holePt = IsValidOp.findPtNotNode(hole.getCoordinates(), shell, graph)\n if (holePt === null) return null\n const outside = 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\n checkTooFewPoints (graph) {\n if (graph.hasTooFewPoints()) {\n this._validErr = new TopologyValidationError(TopologyValidationError.TOO_FEW_POINTS, graph.getInvalidPoint())\n return null\n }\n }\n\n getValidationError () {\n this.checkValid(this._parentGeometry)\n return this._validErr\n }\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.getClass().getName())\n }\n }\n\n setSelfTouchingRingFormingHoleValid (isValid) {\n this._isSelfTouchingRingFormingHoleValid = isValid\n }\n\n checkShellNotNested (shell, p, graph) {\n const shellPts = shell.getCoordinates()\n const polyShell = p.getExteriorRing()\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\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\n checkClosedRing (ring) {\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\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 getClass () {\n return IsValidOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nIsValidOp.constructor_ = function () {\n this._parentGeometry = null\n this._isSelfTouchingRingFormingHoleValid = false\n this._validErr = null\n const parentGeometry = arguments[0]\n this._parentGeometry = parentGeometry\n}\n","import CoordinateList from '../../geom/CoordinateList'\nimport WKTWriter from '../../io/WKTWriter'\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence'\nimport IsValidOp from '../valid/IsValidOp'\nimport PointLocation from '../../algorithm/PointLocation'\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 Assert from '../../util/Assert'\nexport default class EdgeRing {\n constructor () {\n EdgeRing.constructor_.apply(this, arguments)\n }\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\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\n static findEdgeRingContaining (testEr, shellList) {\n const testRing = testEr.getRing()\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.getRing()\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.getRing().getEnvelopeInternal()\n }\n }\n }\n return minShell\n }\n\n isIncluded () {\n return this._isIncluded\n }\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\n isIncludedSet () {\n return this._isIncludedSet\n }\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\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\n isOuterHole () {\n if (!this._isHole) return false\n return !this.hasShell()\n }\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\n isHole () {\n return this._isHole\n }\n\n isProcessed () {\n return this._isProcessed\n }\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\n setIncluded (isIncluded) {\n this._isIncluded = isIncluded\n this._isIncludedSet = true\n }\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\n computeHole () {\n const ring = this.getRing()\n this._isHole = Orientation.isCCW(ring.getCoordinates())\n }\n\n hasShell () {\n return this._shell !== null\n }\n\n isOuterShell () {\n return this.getOuterHole() !== null\n }\n\n getLineString () {\n this.getCoordinates()\n return this._factory.createLineString(this._ringPts)\n }\n\n toString () {\n return WKTWriter.toLineString(new CoordinateArraySequence(this.getCoordinates()))\n }\n\n getShell () {\n if (this.isHole()) return this._shell\n return this\n }\n\n add (de) {\n this._deList.add(de)\n }\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\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\n setShell (shell) {\n this._shell = shell\n }\n\n setProcessed (isProcessed) {\n this._isProcessed = isProcessed\n }\n\n getClass () {\n return EdgeRing\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass EnvelopeComparator {\n constructor () {\n EnvelopeComparator.constructor_.apply(this, arguments)\n }\n\n compare (obj0, obj1) {\n const r0 = obj0\n const r1 = obj1\n return r0.getRing().getEnvelope().compareTo(r1.getRing().getEnvelope())\n }\n\n getClass () {\n return EnvelopeComparator\n }\n\n get interfaces_ () {\n return [Comparator]\n }\n}\nEnvelopeComparator.constructor_ = function () {}\nEdgeRing.EnvelopeComparator = EnvelopeComparator\nEdgeRing.constructor_ = function () {\n this._factory = null\n this._deList = new ArrayList()\n this._lowestEdge = null\n this._ring = 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","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\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\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\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\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\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\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\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\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\n findEdgeRing (startDE) {\n const er = new EdgeRing(this._factory)\n er.build(startDE)\n return er\n }\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\n computeNextCWEdges () {\n for (let iNode = this.nodeIterator(); iNode.hasNext();) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCWEdges(node)\n }\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\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\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\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\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\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 getClass () {\n return PolygonizeGraph\n }\n\n get interfaces_ () {\n return []\n }\n}\nPolygonizeGraph.constructor_ = function () {\n this._factory = null\n const factory = arguments[0]\n this._factory = factory\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'\nexport default class Polygonizer {\n constructor () {\n Polygonizer.constructor_.apply(this, arguments)\n }\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\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\n static assignHolesToShells (holeList, shellList) {\n for (let i = holeList.iterator(); i.hasNext();) {\n const holeER = i.next()\n Polygonizer.assignHoleToShell(holeER, shellList)\n }\n }\n\n static assignHoleToShell (holeER, shellList) {\n const shell = EdgeRing.findEdgeRingContaining(holeER, shellList)\n if (shell !== null) {\n shell.addHole(holeER)\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\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\n getInvalidRingLines () {\n this.polygonize()\n return this._invalidRingLines\n }\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\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 Polygonizer.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\n getDangles () {\n this.polygonize()\n return this._dangles\n }\n\n getCutEdges () {\n this.polygonize()\n return this._cutEdges\n }\n\n getPolygons () {\n this.polygonize()\n return this._polyList\n }\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\n setCheckRingsValid (isCheckingRingsValid) {\n this._isCheckingRingsValid = isCheckingRingsValid\n }\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\n getClass () {\n return Polygonizer\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass LineStringAdder {\n constructor () {\n LineStringAdder.constructor_.apply(this, arguments)\n }\n\n filter (g) {\n if (g instanceof LineString) this.p.add(g)\n }\n\n getClass () {\n return LineStringAdder\n }\n\n get interfaces_ () {\n return [GeometryComponentFilter]\n }\n}\nLineStringAdder.constructor_ = function () {\n this.p = null\n const p = arguments[0]\n this.p = p\n}\nPolygonizer.LineStringAdder = LineStringAdder\nPolygonizer.constructor_ = function () {\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","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\n insertEdgeEnds (ee) {\n for (let i = ee.iterator(); i.hasNext();) {\n const e = i.next()\n this._nodes.add(e)\n }\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\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\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\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\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\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\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\n labelIsolatedNode (n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setAllLocations(targetIndex, loc)\n }\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\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\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\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 getClass () {\n return RelateComputer\n }\n\n get interfaces_ () {\n return []\n }\n}\nRelateComputer.constructor_ = function () {\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","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\n static contains (rectangle, b) {\n const rc = new RectangleContains(rectangle)\n return rc.contains(b)\n }\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\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\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\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\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 getClass () {\n return RectangleContains\n }\n\n get interfaces_ () {\n return []\n }\n}\nRectangleContains.constructor_ = function () {\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\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\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 getClass () {\n return RectangleLineIntersector\n }\n\n get interfaces_ () {\n return []\n }\n}\nRectangleLineIntersector.constructor_ = function () {\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","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\n static intersects (rectangle, b) {\n const rp = new RectangleIntersects(rectangle)\n return rp.intersects(b)\n }\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\n getClass () {\n return RectangleIntersects\n }\n\n get interfaces_ () {\n return []\n }\n}\nRectangleIntersects.constructor_ = function () {\n this._rectangle = null\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectangle = rectangle\n this._rectEnv = rectangle.getEnvelopeInternal()\n}\nclass EnvelopeIntersectsVisitor extends ShortCircuitedGeometryVisitor {\n constructor () {\n super()\n EnvelopeIntersectsVisitor.constructor_.apply(this, arguments)\n }\n\n isDone () {\n return this._intersects === true\n }\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\n intersects () {\n return this._intersects\n }\n\n getClass () {\n return EnvelopeIntersectsVisitor\n }\n\n get interfaces_ () {\n return []\n }\n}\nEnvelopeIntersectsVisitor.constructor_ = function () {\n this._rectEnv = null\n this._intersects = false\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n}\nclass GeometryContainsPointVisitor extends ShortCircuitedGeometryVisitor {\n constructor () {\n super()\n GeometryContainsPointVisitor.constructor_.apply(this, arguments)\n }\n\n isDone () {\n return this._containsPoint === true\n }\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\n containsPoint () {\n return this._containsPoint\n }\n\n getClass () {\n return GeometryContainsPointVisitor\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryContainsPointVisitor.constructor_ = function () {\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}\nclass RectangleIntersectsSegmentVisitor extends ShortCircuitedGeometryVisitor {\n constructor () {\n super()\n RectangleIntersectsSegmentVisitor.constructor_.apply(this, arguments)\n }\n\n intersects () {\n return this._hasIntersection\n }\n\n isDone () {\n return this._hasIntersection === true\n }\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\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\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 getClass () {\n return RectangleIntersectsSegmentVisitor\n }\n\n get interfaces_ () {\n return []\n }\n}\nRectangleIntersectsSegmentVisitor.constructor_ = function () {\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","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\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\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\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\n static relate () {\n if (arguments.length === 2) {\n const a = arguments[0]; const 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]; const b = arguments[1]; const boundaryNodeRule = arguments[2]\n const relOp = new RelateOp(a, b, boundaryNodeRule)\n const im = relOp.getIntersectionMatrix()\n return im\n }\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\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\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\n getIntersectionMatrix () {\n return this._relate.computeIM()\n }\n\n getClass () {\n return RelateOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nRelateOp.constructor_ = function () {\n this._relate = null\n if (arguments.length === 2) {\n const g0 = arguments[0]; const 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]; const g1 = arguments[1]; const boundaryNodeRule = arguments[2]\n GeometryGraphOperation.constructor_.call(this, g0, g1, boundaryNodeRule)\n this._relate = new RelateComputer(this._arg)\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\n static union (pointGeom, otherGeom) {\n const unioner = new PointGeometryUnion(pointGeom, otherGeom)\n return unioner.union()\n }\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 getClass () {\n return PointGeometryUnion\n }\n\n get interfaces_ () {\n return []\n }\n}\nPointGeometryUnion.constructor_ = function () {\n this._pointGeom = null\n this._otherGeom = null\n this._geomFact = null\n const pointGeom = arguments[0]; const otherGeom = arguments[1]\n this._pointGeom = pointGeom\n this._otherGeom = otherGeom\n this._geomFact = otherGeom.getFactory()\n}\n","import PolygonExtracter from '../../geom/util/PolygonExtracter'\nimport STRtree from '../../index/strtree/STRtree'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner'\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\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\n static getGeometry (list, index) {\n if (index >= list.size()) return null\n return list.get(index)\n }\n\n static union (polys) {\n const op = new CascadedPolygonUnion(polys)\n return op.union()\n }\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\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)) intersectingGeoms.add(elem); else disjointGeoms.add(elem)\n }\n return this._geomFactory.buildGeometry(intersectingGeoms)\n }\n\n unionOptimized (g0, g1) {\n const g0Env = g0.getEnvelopeInternal()\n const g1Env = g1.getEnvelopeInternal()\n if (!g0Env.intersects(g1Env)) {\n const combo = GeometryCombiner.combine(g0, g1)\n return combo\n }\n if (g0.getNumGeometries() <= 1 && g1.getNumGeometries() <= 1) return this.unionActual(g0, g1)\n const commonEnv = g0Env.intersection(g1Env)\n return this.unionUsingEnvelopeIntersection(g0, g1, commonEnv)\n }\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\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]; const start = arguments[1]; const 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\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\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.unionOptimized(g0, g1)\n }\n\n unionActual (g0, g1) {\n return CascadedPolygonUnion.restrictToPolygons(g0.union(g1))\n }\n\n unionTree (geomTree) {\n const geoms = this.reduceToGeometries(geomTree)\n const union = this.binaryUnion(geoms)\n return union\n }\n\n unionUsingEnvelopeIntersection (g0, g1, common) {\n const disjointPolys = new ArrayList()\n const g0Int = this.extractByEnvelope(common, g0, disjointPolys)\n const g1Int = this.extractByEnvelope(common, g1, disjointPolys)\n const union = this.unionActual(g0Int, g1Int)\n disjointPolys.add(union)\n const overallUnion = GeometryCombiner.combine(disjointPolys)\n return overallUnion\n }\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]; const 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\n getClass () {\n return CascadedPolygonUnion\n }\n\n get interfaces_ () {\n return []\n }\n}\nCascadedPolygonUnion.constructor_ = function () {\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}\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 ArrayList from '../../../../../java/util/ArrayList'\nimport GeometryExtracter from '../../geom/util/GeometryExtracter'\nimport OverlayOp from '../overlay/OverlayOp'\nimport CascadedPolygonUnion from './CascadedPolygonUnion'\nexport default class UnaryUnionOp {\n constructor () {\n UnaryUnionOp.constructor_.apply(this, arguments)\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]; const geomFact = arguments[1]\n const op = new UnaryUnionOp(geoms, geomFact)\n return op.union()\n }\n }\n\n unionNoOpt (g0) {\n const empty = this._geomFact.createPoint()\n return SnapIfNeededOverlayOp.overlayOp(g0, empty, OverlayOp.UNION)\n }\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\n extract () {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n for (let i = geoms.iterator(); i.hasNext();) {\n const geom = i.next()\n this.extract(geom)\n }\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (this._geomFact === null) this._geomFact = geom.getFactory()\n GeometryExtracter.extract(geom, Geometry.TYPENAME_POLYGON, this._polygons)\n GeometryExtracter.extract(geom, Geometry.TYPENAME_LINESTRING, this._lines)\n GeometryExtracter.extract(geom, Geometry.TYPENAME_POINT, this._points)\n }\n }\n\n union () {\n if (this._geomFact === null) {\n return null\n }\n let unionPoints = null\n if (this._points.size() > 0) {\n const ptGeom = this._geomFact.buildGeometry(this._points)\n unionPoints = this.unionNoOpt(ptGeom)\n }\n let unionLines = null\n if (this._lines.size() > 0) {\n const lineGeom = this._geomFact.buildGeometry(this._lines)\n unionLines = this.unionNoOpt(lineGeom)\n }\n let unionPolygons = null\n if (this._polygons.size() > 0) {\n unionPolygons = CascadedPolygonUnion.union(this._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 getClass () {\n return UnaryUnionOp\n }\n\n get interfaces_ () {\n return []\n }\n}\nUnaryUnionOp.constructor_ = function () {\n this._polygons = new ArrayList()\n this._lines = new ArrayList()\n this._points = new ArrayList()\n this._geomFact = 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]; const geomFact = arguments[1]\n this._geomFact = geomFact\n this.extract(geoms)\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\n edit () {\n if (arguments.length === 2 && (arguments[1] instanceof Geometry && arguments[0] instanceof Array)) {\n const coordinates = arguments[0]; const 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 return super.edit.apply(this, arguments)\n }\n\n getClass () {\n return PrecisionReducerCoordinateOperation\n }\n\n get interfaces_ () {\n return []\n }\n}\nPrecisionReducerCoordinateOperation.constructor_ = function () {\n this._targetPM = null\n this._removeCollapsed = true\n const targetPM = arguments[0]; const removeCollapsed = arguments[1]\n this._targetPM = targetPM\n this._removeCollapsed = removeCollapsed\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\n static reduce (g, precModel) {\n const reducer = new GeometryPrecisionReducer(precModel)\n return reducer.reduce(g)\n }\n\n static reducePointwise (g, precModel) {\n const reducer = new GeometryPrecisionReducer(precModel)\n reducer.setPointwise(true)\n return reducer.reduce(g)\n }\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 let finalGeom = bufGeom\n if (!this._changePrecisionModel) {\n finalGeom = geom.getFactory().createGeometry(bufGeom)\n }\n return finalGeom\n }\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 geomEdit = new GeometryEditor()\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\n changePM (geom, newPM) {\n const geomEditor = this.createEditor(geom.getFactory(), newPM)\n return geomEditor.edit(geom, new GeometryEditor.NoOpGeometryOperation())\n }\n\n setRemoveCollapsedComponents (removeCollapsed) {\n this._removeCollapsed = removeCollapsed\n }\n\n createFactory (inputFactory, pm) {\n const newFactory = new GeometryFactory(pm, inputFactory.getSRID(), inputFactory.getCoordinateSequenceFactory())\n return newFactory\n }\n\n setChangePrecisionModel (changePrecisionModel) {\n this._changePrecisionModel = changePrecisionModel\n }\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\n setPointwise (isPointwise) {\n this._isPointwise = isPointwise\n }\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 getClass () {\n return GeometryPrecisionReducer\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryPrecisionReducer.constructor_ = function () {\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","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\n static simplify (pts, distanceTolerance) {\n const simp = new DouglasPeuckerLineSimplifier(pts)\n simp.setDistanceTolerance(distanceTolerance)\n return simp.simplify()\n }\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\n setDistanceTolerance (distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\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 getClass () {\n return DouglasPeuckerLineSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nDouglasPeuckerLineSimplifier.constructor_ = function () {\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","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\n static simplify (geom, distanceTolerance) {\n const tss = new DouglasPeuckerSimplifier(geom)\n tss.setDistanceTolerance(distanceTolerance)\n return tss.getResultGeometry()\n }\n\n setEnsureValid (isEnsureValidTopology) {\n this._isEnsureValidTopology = isEnsureValidTopology\n }\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\n setDistanceTolerance (distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._distanceTolerance = distanceTolerance\n }\n\n getClass () {\n return DouglasPeuckerSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass DPTransformer extends GeometryTransformer {\n constructor () {\n super()\n DPTransformer.constructor_.apply(this, arguments)\n }\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\n createValidArea (rawAreaGeom) {\n if (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0)\n return rawAreaGeom\n }\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\n transformMultiPolygon (geom, parent) {\n const rawGeom = super.transformMultiPolygon.call(this, geom, parent)\n return this.createValidArea(rawGeom)\n }\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\n getClass () {\n return DPTransformer\n }\n\n get interfaces_ () {\n return []\n }\n}\nDPTransformer.constructor_ = function () {\n this._isEnsureValidTopology = true\n this._distanceTolerance = null\n const isEnsureValidTopology = arguments[0]; const distanceTolerance = arguments[1]\n this._isEnsureValidTopology = isEnsureValidTopology\n this._distanceTolerance = distanceTolerance\n}\nDouglasPeuckerSimplifier.DPTransformer = DPTransformer\nDouglasPeuckerSimplifier.constructor_ = function () {\n this._inputGeom = null\n this._distanceTolerance = null\n this._isEnsureValidTopology = true\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n}\n","import LineSegment from '../geom/LineSegment'\nexport default class TaggedLineSegment extends LineSegment {\n constructor () {\n super()\n TaggedLineSegment.constructor_.apply(this, arguments)\n }\n\n getIndex () {\n return this._index\n }\n\n getParent () {\n return this._parent\n }\n\n getClass () {\n return TaggedLineSegment\n }\n\n get interfaces_ () {\n return []\n }\n}\nTaggedLineSegment.constructor_ = function () {\n this._parent = null\n this._index = null\n if (arguments.length === 2) {\n const p0 = arguments[0]; const p1 = arguments[1]\n TaggedLineSegment.constructor_.call(this, p0, p1, null, -1)\n } else if (arguments.length === 4) {\n const p0 = arguments[0]; const p1 = arguments[1]; const parent = arguments[2]; const index = arguments[3]\n LineSegment.constructor_.call(this, p0, p1)\n this._parent = parent\n this._index = index\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\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\n addToResult (seg) {\n this._resultSegs.add(seg)\n }\n\n asLineString () {\n return this._parentLine.getFactory().createLineString(TaggedLineString.extractCoordinates(this._resultSegs))\n }\n\n getResultSize () {\n const resultSegsSize = this._resultSegs.size()\n return resultSegsSize === 0 ? 0 : resultSegsSize + 1\n }\n\n getParent () {\n return this._parentLine\n }\n\n getSegment (i) {\n return this._segs[i]\n }\n\n getParentCoordinates () {\n return this._parentLine.getCoordinates()\n }\n\n getMinimumSize () {\n return this._minimumSize\n }\n\n asLinearRing () {\n return this._parentLine.getFactory().createLinearRing(TaggedLineString.extractCoordinates(this._resultSegs))\n }\n\n getSegments () {\n return this._segs\n }\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\n getResultCoordinates () {\n return TaggedLineString.extractCoordinates(this._resultSegs)\n }\n\n getClass () {\n return TaggedLineString\n }\n\n get interfaces_ () {\n return []\n }\n}\nTaggedLineString.constructor_ = function () {\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]; const minimumSize = arguments[1]\n this._parentLine = parentLine\n this._minimumSize = minimumSize\n this.init()\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\n remove (seg) {\n this._index.remove(new Envelope(seg.p0, seg.p1), seg)\n }\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\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\n getClass () {\n return LineSegmentIndex\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineSegmentIndex.constructor_ = function () {\n this._index = new Quadtree()\n}\nclass LineSegmentVisitor {\n constructor () {\n LineSegmentVisitor.constructor_.apply(this, arguments)\n }\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\n getItems () {\n return this._items\n }\n\n getClass () {\n return LineSegmentVisitor\n }\n\n get interfaces_ () {\n return [ItemVisitor]\n }\n}\nLineSegmentVisitor.constructor_ = function () {\n this._querySeg = null\n this._items = new ArrayList()\n const querySeg = arguments[0]\n this._querySeg = querySeg\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\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\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\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\n setDistanceTolerance (distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\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\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\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\n simplify (line) {\n this._line = line\n this._linePts = line.getParentCoordinates()\n this.simplifySection(0, this._linePts.length - 1, 0)\n }\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\n hasInteriorIntersection (seg0, seg1) {\n this._li.computeIntersection(seg0.p0, seg0.p1, seg1.p0, seg1.p1)\n return this._li.isInteriorIntersection()\n }\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 getClass () {\n return TaggedLineStringSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nTaggedLineStringSimplifier.constructor_ = function () {\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]; const outputIndex = arguments[1]\n this._inputIndex = inputIndex\n this._outputIndex = outputIndex\n}\n","import TaggedLineStringSimplifier from './TaggedLineStringSimplifier'\nimport LineSegmentIndex from './LineSegmentIndex'\nexport default class TaggedLinesSimplifier {\n constructor () {\n TaggedLinesSimplifier.constructor_.apply(this, arguments)\n }\n\n setDistanceTolerance (distanceTolerance) {\n this._distanceTolerance = distanceTolerance\n }\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 getClass () {\n return TaggedLinesSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nTaggedLinesSimplifier.constructor_ = function () {\n this._inputIndex = new LineSegmentIndex()\n this._outputIndex = new LineSegmentIndex()\n this._distanceTolerance = 0.0\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\n static simplify (geom, distanceTolerance) {\n const tss = new TopologyPreservingSimplifier(geom)\n tss.setDistanceTolerance(distanceTolerance)\n return tss.getResultGeometry()\n }\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\n setDistanceTolerance (distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._lineSimplifier.setDistanceTolerance(distanceTolerance)\n }\n\n getClass () {\n return TopologyPreservingSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass LineStringTransformer extends GeometryTransformer {\n constructor () {\n super()\n LineStringTransformer.constructor_.apply(this, arguments)\n }\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\n getClass () {\n return LineStringTransformer\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineStringTransformer.constructor_ = function () {\n this._linestringMap = null\n const linestringMap = arguments[0]\n this._linestringMap = linestringMap\n}\nclass LineStringMapBuilderFilter {\n constructor () {\n LineStringMapBuilderFilter.constructor_.apply(this, arguments)\n }\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\n getClass () {\n return LineStringMapBuilderFilter\n }\n\n get interfaces_ () {\n return [GeometryComponentFilter]\n }\n}\nLineStringMapBuilderFilter.constructor_ = function () {\n this.tps = null\n const tps = arguments[0]\n this.tps = tps\n}\nTopologyPreservingSimplifier.LineStringTransformer = LineStringTransformer\nTopologyPreservingSimplifier.LineStringMapBuilderFilter = LineStringMapBuilderFilter\nTopologyPreservingSimplifier.constructor_ = function () {\n this._inputGeom = null\n this._lineSimplifier = new TaggedLinesSimplifier()\n this._linestringMap = null\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n}\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\n static simplify (pts, distanceTolerance) {\n const simp = new VWLineSimplifier(pts, distanceTolerance)\n return simp.simplify()\n }\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\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\n getClass () {\n return VWLineSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass VWVertex {\n constructor () {\n VWVertex.constructor_.apply(this, arguments)\n }\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\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\n getArea () {\n return this._area\n }\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\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\n isLive () {\n return this._isLive\n }\n\n setPrev (prev) {\n this._prev = prev\n }\n\n setNext (next) {\n this._next = next\n }\n\n getClass () {\n return VWVertex\n }\n\n get interfaces_ () {\n return []\n }\n}\nVWVertex.constructor_ = function () {\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}\nVWVertex.MAX_AREA = Double.MAX_VALUE\nVWLineSimplifier.VWVertex = VWVertex\nVWLineSimplifier.constructor_ = function () {\n this._pts = null\n this._tolerance = null\n const pts = arguments[0]; const distanceTolerance = arguments[1]\n this._pts = pts\n this._tolerance = distanceTolerance * distanceTolerance\n}\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\n static simplify (geom, distanceTolerance) {\n const simp = new VWSimplifier(geom)\n simp.setDistanceTolerance(distanceTolerance)\n return simp.getResultGeometry()\n }\n\n setEnsureValid (isEnsureValidTopology) {\n this._isEnsureValidTopology = isEnsureValidTopology\n }\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\n setDistanceTolerance (distanceTolerance) {\n if (distanceTolerance < 0.0) throw new IllegalArgumentException('Tolerance must be non-negative')\n this._distanceTolerance = distanceTolerance\n }\n\n getClass () {\n return VWSimplifier\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass VWTransformer extends GeometryTransformer {\n constructor () {\n super()\n VWTransformer.constructor_.apply(this, arguments)\n }\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\n createValidArea (rawAreaGeom) {\n if (this._isEnsureValidTopology) return rawAreaGeom.buffer(0.0)\n return rawAreaGeom\n }\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\n transformMultiPolygon (geom, parent) {\n const rawGeom = super.transformMultiPolygon.call(this, geom, parent)\n return this.createValidArea(rawGeom)\n }\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\n getClass () {\n return VWTransformer\n }\n\n get interfaces_ () {\n return []\n }\n}\nVWTransformer.constructor_ = function () {\n this._isEnsureValidTopology = true\n this._distanceTolerance = null\n const isEnsureValidTopology = arguments[0]; const distanceTolerance = arguments[1]\n this._isEnsureValidTopology = isEnsureValidTopology\n this._distanceTolerance = distanceTolerance\n}\nVWSimplifier.VWTransformer = VWTransformer\nVWSimplifier.constructor_ = function () {\n this._inputGeom = null\n this._distanceTolerance = null\n this._isEnsureValidTopology = true\n const inputGeom = arguments[0]\n this._inputGeom = inputGeom\n}\n","import Coordinate from '../geom/Coordinate'\nexport default class SplitSegment {\n constructor () {\n SplitSegment.constructor_.apply(this, arguments)\n }\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\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]; const 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\n setMinimumLength (minLen) {\n this._minimumLen = minLen\n }\n\n getConstrainedLength (len) {\n if (len < this._minimumLen) return this._minimumLen\n return len\n }\n\n getSplitPoint () {\n return this._splitPt\n }\n\n getClass () {\n return SplitSegment\n }\n\n get interfaces_ () {\n return []\n }\n}\nSplitSegment.constructor_ = function () {\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","export default class ConstraintSplitPointFinder {\n constructor () {\n ConstraintSplitPointFinder.constructor_.apply(this, arguments)\n }\n\n findSplitPoint (seg, encroachPt) {}\n\n getClass () {\n return ConstraintSplitPointFinder\n }\n\n get interfaces_ () {\n return []\n }\n}\nConstraintSplitPointFinder.constructor_ = function () {}\n","import SplitSegment from './SplitSegment'\nimport ConstraintSplitPointFinder from './ConstraintSplitPointFinder'\nexport default class NonEncroachingSplitPointFinder {\n constructor () {\n NonEncroachingSplitPointFinder.constructor_.apply(this, arguments)\n }\n\n static projectedSplitPoint (seg, encroachPt) {\n const lineSeg = seg.getLineSegment()\n const projPt = lineSeg.project(encroachPt)\n return projPt\n }\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\n getClass () {\n return NonEncroachingSplitPointFinder\n }\n\n get interfaces_ () {\n return [ConstraintSplitPointFinder]\n }\n}\nNonEncroachingSplitPointFinder.constructor_ = function () {}\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 constructor () {\n TrianglePredicate.constructor_.apply(this, arguments)\n }\n\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\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\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\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\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\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\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\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\n static isInCircleRobust (a, b, c, p) {\n return TrianglePredicate.isInCircleNormalized(a, b, c, p)\n }\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\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 getClass () {\n return TrianglePredicate\n }\n\n get interfaces_ () {\n return []\n }\n}\nTrianglePredicate.constructor_ = function () {}\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\n static interpolateZ () {\n if (arguments.length === 3) {\n const p = arguments[0]; const p0 = arguments[1]; const p1 = arguments[2]\n const segLen = p0.distance(p1)\n const ptLen = p.distance(p0)\n const dz = p1.z - p0.z\n const pz = p0.z + dz * (ptLen / segLen)\n return pz\n } else if (arguments.length === 4) {\n const p = arguments[0]; const v0 = arguments[1]; const v1 = arguments[2]; const 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.z + t * (v1.z - v0.z) + u * (v2.z - v0.z)\n return z\n }\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 throw nre\n } finally {}\n return cc\n }\n\n dot (v) {\n return this._p.x * v.getX() + this._p.y * v.getY()\n }\n\n magn () {\n return Math.sqrt(this._p.x * this._p.x + this._p.y * this._p.y)\n }\n\n getZ () {\n return this._p.z\n }\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\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]; const tolerance = arguments[1]\n if (this._p.distance(_x.getCoordinate()) < tolerance) {\n return true\n } else {\n return false\n }\n }\n }\n\n getCoordinate () {\n return this._p\n }\n\n isInCircle (a, b, c) {\n return TrianglePredicate.isInCircleRobust(a._p, b._p, c._p, this._p)\n }\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\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.z + a.getZ()) / 2.0\n return new Vertex(xm, ym, zm)\n }\n\n rightOf (e) {\n return this.isCCW(e.dest(), e.orig())\n }\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\n getX () {\n return this._p.x\n }\n\n crossProduct (v) {\n return this._p.x * v.getY() - this._p.y * v.getX()\n }\n\n setZ (_z) {\n this._p.z = _z\n }\n\n times (c) {\n return new Vertex(c * this._p.x, c * this._p.y)\n }\n\n cross () {\n return new Vertex(this._p.y, -this._p.x)\n }\n\n leftOf (e) {\n return this.isCCW(e.orig(), e.dest())\n }\n\n toString () {\n return 'POINT (' + this._p.x + ' ' + this._p.y + ')'\n }\n\n sub (v) {\n return new Vertex(this._p.x - v.getX(), this._p.y - v.getY())\n }\n\n getY () {\n return this._p.y\n }\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\n sum (v) {\n return new Vertex(this._p.x + v.getX(), this._p.y + v.getY())\n }\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\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\n getClass () {\n return Vertex\n }\n\n get interfaces_ () {\n return []\n }\n}\nVertex.constructor_ = function () {\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]; const _y = arguments[1]\n this._p = new Coordinate(_x, _y)\n } else if (arguments.length === 3) {\n const _x = arguments[0]; const _y = arguments[1]; const _z = arguments[2]\n this._p = new Coordinate(_x, _y, _z)\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\n getConstraint () {\n return this._constraint\n }\n\n setOnConstraint (isOnConstraint) {\n this._isOnConstraint = isOnConstraint\n }\n\n merge (other) {\n if (other._isOnConstraint) {\n this._isOnConstraint = true\n this._constraint = other._constraint\n }\n }\n\n isOnConstraint () {\n return this._isOnConstraint\n }\n\n setConstraint (constraint) {\n this._isOnConstraint = true\n this._constraint = constraint\n }\n\n getClass () {\n return ConstraintVertex\n }\n\n get interfaces_ () {\n return []\n }\n}\nConstraintVertex.constructor_ = function () {\n this._isOnConstraint = null\n this._constraint = null\n const p = arguments[0]\n Vertex.constructor_.call(this, p)\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\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\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\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\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\n equalsNonOriented (qe) {\n if (this.equalsOriented(qe)) return true\n if (this.equalsOriented(qe.sym())) return true\n return false\n }\n\n toLineSegment () {\n return new LineSegment(this._vertex.getCoordinate(), this.dest().getCoordinate())\n }\n\n dest () {\n return this.sym().orig()\n }\n\n oNext () {\n return this._next\n }\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\n dNext () {\n return this.sym().oNext().sym()\n }\n\n lPrev () {\n return this._next.sym()\n }\n\n rPrev () {\n return this.sym().oNext()\n }\n\n rot () {\n return this._rot\n }\n\n oPrev () {\n return this._rot._next._rot\n }\n\n sym () {\n return this._rot._rot\n }\n\n setOrig (o) {\n this._vertex = o\n }\n\n lNext () {\n return this.invRot().oNext().rot()\n }\n\n getLength () {\n return this.orig().getCoordinate().distance(this.dest().getCoordinate())\n }\n\n invRot () {\n return this._rot.sym()\n }\n\n setDest (d) {\n this.sym().setOrig(d)\n }\n\n setData (data) {\n this._data = data\n }\n\n getData () {\n return this._data\n }\n\n delete () {\n this._rot = null\n }\n\n orig () {\n return this._vertex\n }\n\n rNext () {\n return this._rot._next.invRot()\n }\n\n toString () {\n const p0 = this._vertex.getCoordinate()\n const p1 = this.dest().getCoordinate()\n return WKTWriter.toLineString(p0, p1)\n }\n\n isLive () {\n return this._rot !== null\n }\n\n getPrimary () {\n if (this.orig().getCoordinate().compareTo(this.dest().getCoordinate()) <= 0) return this; else return this.sym()\n }\n\n dPrev () {\n return this.invRot().oNext().invRot()\n }\n\n setNext (next) {\n this._next = next\n }\n\n getClass () {\n return QuadEdge\n }\n\n get interfaces_ () {\n return []\n }\n}\nQuadEdge.constructor_ = function () {\n this._rot = null\n this._vertex = null\n this._next = null\n this._data = null\n}\n","import QuadEdge from './quadedge/QuadEdge'\nexport default class IncrementalDelaunayTriangulator {\n constructor () {\n IncrementalDelaunayTriangulator.constructor_.apply(this, arguments)\n }\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\n insertSites (vertices) {\n for (let i = vertices.iterator(); i.hasNext();) {\n const v = i.next()\n this.insertSite(v)\n }\n }\n\n getClass () {\n return IncrementalDelaunayTriangulator\n }\n\n get interfaces_ () {\n return []\n }\n}\nIncrementalDelaunayTriangulator.constructor_ = function () {\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","export default class QuadEdgeLocator {\n constructor () {\n QuadEdgeLocator.constructor_.apply(this, arguments)\n }\n\n locate (v) {}\n\n getClass () {\n return QuadEdgeLocator\n }\n\n get interfaces_ () {\n return []\n }\n}\nQuadEdgeLocator.constructor_ = function () {}\n","import QuadEdgeLocator from './QuadEdgeLocator'\nexport default class LastFoundQuadEdgeLocator {\n constructor () {\n LastFoundQuadEdgeLocator.constructor_.apply(this, arguments)\n }\n\n init () {\n this._lastEdge = this.findEdge()\n }\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\n findEdge () {\n const edges = this._subdiv.getEdges()\n return edges.iterator().next()\n }\n\n getClass () {\n return LastFoundQuadEdgeLocator\n }\n\n get interfaces_ () {\n return [QuadEdgeLocator]\n }\n}\nLastFoundQuadEdgeLocator.constructor_ = function () {\n this._subdiv = null\n this._lastEdge = null\n const subdiv = arguments[0]\n this._subdiv = subdiv\n this.init()\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\n static msgWithSpatial (msg, seg) {\n if (seg !== null) return msg + ' [ ' + seg + ' ]'\n return msg\n }\n\n getSegment () {\n return this._seg\n }\n\n getClass () {\n return LocateFailureException\n }\n\n get interfaces_ () {\n return []\n }\n}\nLocateFailureException.constructor_ = function () {\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]; const seg = arguments[1]\n RuntimeException.constructor_.call(this, LocateFailureException.msgWithSpatial(msg, seg))\n this._seg = new LineSegment(seg)\n }\n}\n","export default class TriangleVisitor {\n constructor () {\n TriangleVisitor.constructor_.apply(this, arguments)\n }\n\n visit (triEdges) {}\n\n getClass () {\n return TriangleVisitor\n }\n\n get interfaces_ () {\n return []\n }\n}\nTriangleVisitor.constructor_ = function () {}\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\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\n getTriangleVertices (includeFrame) {\n const visitor = new TriangleVertexListVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangleVertices()\n }\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\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\n connect (a, b) {\n const q = QuadEdge.connect(a, b)\n this._quadEdges.add(q)\n return q\n }\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\n setLocator (locator) {\n this._locator = locator\n }\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\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\n makeEdge (o, d) {\n const q = QuadEdge.makeEdge(o, d)\n this._quadEdges.add(q)\n return q\n }\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\n isFrameEdge (e) {\n if (this.isFrameVertex(e.orig()) || this.isFrameVertex(e.dest())) return true\n return false\n }\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\n getEnvelope () {\n return new Envelope(this._frameEnv)\n }\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\n getTriangleCoordinates (includeFrame) {\n const visitor = new TriangleCoordinatesVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangles()\n }\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\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\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\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\n getTriangleEdges (includeFrame) {\n const visitor = new TriangleEdgesListVisitor()\n this.visitTriangles(visitor, includeFrame)\n return visitor.getTriangleEdges()\n }\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\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\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\n getTolerance () {\n return this._tolerance\n }\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\n getVoronoiDiagram (geomFact) {\n const vorCells = this.getVoronoiCellPolygons(geomFact)\n return geomFact.createGeometryCollection(GeometryFactory.toGeometryArray(vorCells))\n }\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\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\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]; const 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\n getClass () {\n return QuadEdgeSubdivision\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass TriangleCircumcentreVisitor {\n constructor () {\n TriangleCircumcentreVisitor.constructor_.apply(this, arguments)\n }\n\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.circumcentre(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\n getClass () {\n return TriangleCircumcentreVisitor\n }\n\n get interfaces_ () {\n return [TriangleVisitor]\n }\n}\nTriangleCircumcentreVisitor.constructor_ = function () {}\nclass TriangleEdgesListVisitor {\n constructor () {\n TriangleEdgesListVisitor.constructor_.apply(this, arguments)\n }\n\n getTriangleEdges () {\n return this._triList\n }\n\n visit (triEdges) {\n this._triList.add(triEdges)\n }\n\n getClass () {\n return TriangleEdgesListVisitor\n }\n\n get interfaces_ () {\n return [TriangleVisitor]\n }\n}\nTriangleEdgesListVisitor.constructor_ = function () {\n this._triList = new ArrayList()\n}\nclass TriangleVertexListVisitor {\n constructor () {\n TriangleVertexListVisitor.constructor_.apply(this, arguments)\n }\n\n visit (triEdges) {\n this._triList.add([triEdges[0].orig(), triEdges[1].orig(), triEdges[2].orig()])\n }\n\n getTriangleVertices () {\n return this._triList\n }\n\n getClass () {\n return TriangleVertexListVisitor\n }\n\n get interfaces_ () {\n return [TriangleVisitor]\n }\n}\nTriangleVertexListVisitor.constructor_ = function () {\n this._triList = new ArrayList()\n}\nclass TriangleCoordinatesVisitor {\n constructor () {\n TriangleCoordinatesVisitor.constructor_.apply(this, arguments)\n }\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\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\n getTriangles () {\n return this._triCoords\n }\n\n getClass () {\n return TriangleCoordinatesVisitor\n }\n\n get interfaces_ () {\n return [TriangleVisitor]\n }\n}\nTriangleCoordinatesVisitor.constructor_ = function () {\n this._coordList = new CoordinateList()\n this._triCoords = new ArrayList()\n}\nQuadEdgeSubdivision.TriangleCircumcentreVisitor = TriangleCircumcentreVisitor\nQuadEdgeSubdivision.TriangleEdgesListVisitor = TriangleEdgesListVisitor\nQuadEdgeSubdivision.TriangleVertexListVisitor = TriangleVertexListVisitor\nQuadEdgeSubdivision.TriangleCoordinatesVisitor = TriangleCoordinatesVisitor\nQuadEdgeSubdivision.constructor_ = function () {\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]; const 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}\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\n getLineSegment () {\n return this._ls\n }\n\n getEndZ () {\n const p = this._ls.getCoordinate(1)\n return p.z\n }\n\n getStartZ () {\n const p = this._ls.getCoordinate(0)\n return p.z\n }\n\n intersection (s) {\n return this._ls.intersection(s.getLineSegment())\n }\n\n getStart () {\n return this._ls.getCoordinate(0)\n }\n\n getEnd () {\n return this._ls.getCoordinate(1)\n }\n\n getEndY () {\n const p = this._ls.getCoordinate(1)\n return p.y\n }\n\n getStartX () {\n const p = this._ls.getCoordinate(0)\n return p.x\n }\n\n equalsTopo (s) {\n return this._ls.equalsTopo(s.getLineSegment())\n }\n\n getStartY () {\n const p = this._ls.getCoordinate(0)\n return p.y\n }\n\n setData (data) {\n this._data = data\n }\n\n getData () {\n return this._data\n }\n\n getEndX () {\n const p = this._ls.getCoordinate(1)\n return p.x\n }\n\n toString () {\n return this._ls.toString()\n }\n\n getClass () {\n return Segment\n }\n\n get interfaces_ () {\n return []\n }\n}\nSegment.constructor_ = function () {\n this._ls = null\n this._data = null\n if (arguments.length === 2) {\n const p0 = arguments[0]; const p1 = arguments[1]\n this._ls = new LineSegment(p0, p1)\n } else if (arguments.length === 3) {\n const p0 = arguments[0]; const p1 = arguments[1]; const 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]; const y1 = arguments[1]; const z1 = arguments[2]; const x2 = arguments[3]; const y2 = arguments[4]; const 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]; const y1 = arguments[1]; const z1 = arguments[2]; const x2 = arguments[3]; const y2 = arguments[4]; const z2 = arguments[5]; const data = arguments[6]\n Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data)\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 Envelope from '../geom/Envelope'\nexport default class ConformingDelaunayTriangulator {\n constructor () {\n ConformingDelaunayTriangulator.constructor_.apply(this, arguments)\n }\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\n getInitialVertices () {\n return this._initialVertices\n }\n\n getKDT () {\n return this._kdt\n }\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 }\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 getVertexFactory () {\n return this._vertexFactory\n }\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\n setConstraints (segments, segVertices) {\n this._segments = segments\n this._segVertices = segVertices\n }\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\n addConstraintVertices () {\n this.computeConvexHull()\n this.insertSites(this._segVertices)\n }\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\n getConstraintSegments () {\n return this._segments\n }\n\n setSplitPointFinder (splitFinder) {\n this._splitFinder = splitFinder\n }\n\n getConvexHull () {\n return this._convexHull\n }\n\n getTolerance () {\n return this._tolerance\n }\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\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]; const 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\n getSubdivision () {\n return this._subdiv\n }\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\n setVertexFactory (vertexFactory) {\n this._vertexFactory = vertexFactory\n }\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\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\n getClass () {\n return ConformingDelaunayTriangulator\n }\n\n get interfaces_ () {\n return []\n }\n}\nConformingDelaunayTriangulator.constructor_ = function () {\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]; const tolerance = arguments[1]\n this._initialVertices = new ArrayList(initialVertices)\n this._tolerance = tolerance\n this._kdt = new KdTree(tolerance)\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\n static extractUniqueCoordinates (geom) {\n if (geom === null) return new CoordinateList()\n const coords = geom.getCoordinates()\n return DelaunayTriangulationBuilder.unique(coords)\n }\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\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\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\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\n setTolerance (tolerance) {\n this._tolerance = tolerance\n }\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\n getEdges (geomFact) {\n this.create()\n return this._subdiv.getEdges(geomFact)\n }\n\n getSubdivision () {\n this.create()\n return this._subdiv\n }\n\n getTriangles (geomFact) {\n this.create()\n return this._subdiv.getTriangles(geomFact)\n }\n\n getClass () {\n return DelaunayTriangulationBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nDelaunayTriangulationBuilder.constructor_ = function () {\n this._siteCoords = null\n this._tolerance = 0.0\n this._subdiv = null\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\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]; const 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\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\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\n setTolerance (tolerance) {\n this._tolerance = tolerance\n }\n\n setConstraints (constraintLines) {\n this._constraintLines = constraintLines\n }\n\n setSites (geom) {\n this._siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom)\n }\n\n getEdges (geomFact) {\n this.create()\n return this._subdiv.getEdges(geomFact)\n }\n\n getSubdivision () {\n this.create()\n return this._subdiv\n }\n\n getTriangles (geomFact) {\n this.create()\n return this._subdiv.getTriangles(geomFact)\n }\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 getClass () {\n return ConformingDelaunayTriangulationBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nConformingDelaunayTriangulationBuilder.constructor_ = function () {\n this._siteCoords = null\n this._constraintLines = null\n this._tolerance = 0.0\n this._subdiv = null\n this._constraintVertexMap = new TreeMap()\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'\nexport default class VoronoiDiagramBuilder {\n constructor () {\n VoronoiDiagramBuilder.constructor_.apply(this, arguments)\n }\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())) result = g; else if (clipEnv.intersects(g.getEnvelopeInternal())) {\n result = clipPoly.intersection(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\n create () {\n if (this._subdiv !== null) return null\n const siteEnv = DelaunayTriangulationBuilder.envelope(this._siteCoords)\n this._diagramEnv = siteEnv\n const expandBy = Math.max(this._diagramEnv.getWidth(), this._diagramEnv.getHeight())\n this._diagramEnv.expandBy(expandBy)\n if (this._clipEnv !== null) this._diagramEnv.expandToInclude(this._clipEnv)\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\n getDiagram (geomFact) {\n this.create()\n const polys = this._subdiv.getVoronoiDiagram(geomFact)\n return VoronoiDiagramBuilder.clipGeometryCollection(polys, this._diagramEnv)\n }\n\n setTolerance (tolerance) {\n this._tolerance = tolerance\n }\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\n setClipEnvelope (clipEnv) {\n this._clipEnv = clipEnv\n }\n\n getSubdivision () {\n this.create()\n return this._subdiv\n }\n\n getClass () {\n return VoronoiDiagramBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nVoronoiDiagramBuilder.constructor_ = function () {\n this._siteCoords = null\n this._tolerance = 0.0\n this._subdiv = null\n this._clipEnv = null\n this._diagramEnv = null\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\n static getEndLocation (linear) {\n const loc = new LinearLocation()\n loc.setToEnd(linear)\n return loc\n }\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.z - p0.z) * frac + p0.z\n return new Coordinate(x, y, z)\n }\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\n getSegmentIndex () {\n return this._segmentIndex\n }\n\n getComponentIndex () {\n return this._componentIndex\n }\n\n isEndpoint (linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const nseg = lineComp.getNumPoints() - 1\n return this._segmentIndex >= nseg || this._segmentIndex === nseg && this._segmentFraction >= 1.0\n }\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\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\n toLowest (linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const nseg = lineComp.getNumPoints() - 1\n if (this._segmentIndex < nseg) return this\n return new LinearLocation(this._componentIndex, nseg, 1.0, false)\n }\n\n getCoordinate (linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const p0 = lineComp.getCoordinateN(this._segmentIndex)\n if (this._segmentIndex >= lineComp.getNumPoints() - 1) return p0\n const p1 = lineComp.getCoordinateN(this._segmentIndex + 1)\n return LinearLocation.pointAlongSegmentByFraction(p0, p1, this._segmentFraction)\n }\n\n getSegmentFraction () {\n return this._segmentFraction\n }\n\n getSegment (linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n const p0 = lineComp.getCoordinateN(this._segmentIndex)\n if (this._segmentIndex >= lineComp.getNumPoints() - 1) {\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\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 = line.getNumPoints() - 1\n this._segmentFraction = 1.0\n }\n }\n\n setToEnd (linear) {\n this._componentIndex = linear.getNumGeometries() - 1\n const lastLine = linear.getGeometryN(this._componentIndex)\n this._segmentIndex = lastLine.getNumPoints() - 1\n this._segmentFraction = 1.0\n }\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\n copy () {\n return new LinearLocation(this._componentIndex, this._segmentIndex, this._segmentFraction)\n }\n\n toString () {\n return 'LinearLoc[' + this._componentIndex + ', ' + this._segmentIndex + ', ' + this._segmentFraction + ']'\n }\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\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\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\n getSegmentLength (linearGeom) {\n const lineComp = linearGeom.getGeometryN(this._componentIndex)\n let segIndex = this._segmentIndex\n if (this._segmentIndex >= lineComp.getNumPoints() - 1) segIndex = lineComp.getNumPoints() - 2\n const p0 = lineComp.getCoordinateN(segIndex)\n const p1 = lineComp.getCoordinateN(segIndex + 1)\n return p0.distance(p1)\n }\n\n isVertex () {\n return this._segmentFraction <= 0.0 || this._segmentFraction >= 1.0\n }\n\n getClass () {\n return LinearLocation\n }\n\n get interfaces_ () {\n return [Comparable]\n }\n}\nLinearLocation.constructor_ = function () {\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]; const segmentFraction = arguments[1]\n LinearLocation.constructor_.call(this, 0, segmentIndex, segmentFraction)\n } else if (arguments.length === 3) {\n const componentIndex = arguments[0]; const segmentIndex = arguments[1]; const 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]; const segmentIndex = arguments[1]; const segmentFraction = arguments[2]; const doNormalize = arguments[3]\n this._componentIndex = componentIndex\n this._segmentIndex = segmentIndex\n this._segmentFraction = segmentFraction\n if (doNormalize) this.normalize()\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\n static segmentEndVertexIndex (loc) {\n if (loc.getSegmentFraction() > 0.0) return loc.getSegmentIndex() + 1\n return loc.getSegmentIndex()\n }\n\n getComponentIndex () {\n return this._componentIndex\n }\n\n getLine () {\n return this._currentLine\n }\n\n getVertexIndex () {\n return this._vertexIndex\n }\n\n getSegmentEnd () {\n if (this._vertexIndex < this.getLine().getNumPoints() - 1) return this._currentLine.getCoordinateN(this._vertexIndex + 1)\n return null\n }\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\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\n getSegmentStart () {\n return this._currentLine.getCoordinateN(this._vertexIndex)\n }\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\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 getClass () {\n return LinearIterator\n }\n\n get interfaces_ () {\n return []\n }\n}\nLinearIterator.constructor_ = function () {\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]; const 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]; const componentIndex = arguments[1]; const 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","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\n static indexOf (linearGeom, inputPt) {\n const locater = new LocationIndexOfPoint(linearGeom)\n return locater.indexOf(inputPt)\n }\n\n static indexOfAfter (linearGeom, inputPt, minIndex) {\n const locater = new LocationIndexOfPoint(linearGeom)\n return locater.indexOfAfter(inputPt, minIndex)\n }\n\n indexOf (inputPt) {\n return this.indexOfFromStart(inputPt, null)\n }\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\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 getClass () {\n return LocationIndexOfPoint\n }\n\n get interfaces_ () {\n return []\n }\n}\nLocationIndexOfPoint.constructor_ = function () {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n}\n","import LocationIndexOfPoint from './LocationIndexOfPoint'\nexport default class LocationIndexOfLine {\n constructor () {\n LocationIndexOfLine.constructor_.apply(this, arguments)\n }\n\n static indicesOf (linearGeom, subLine) {\n const locater = new LocationIndexOfLine(linearGeom)\n return locater.indicesOf(subLine)\n }\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 getClass () {\n return LocationIndexOfLine\n }\n\n get interfaces_ () {\n return []\n }\n}\nLocationIndexOfLine.constructor_ = function () {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\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\n getGeometry () {\n this.endLine()\n return this._geomFact.buildGeometry(this._lines)\n }\n\n getLastCoordinate () {\n return this._lastPt\n }\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 throw ex\n } finally {}\n if (line !== null) this._lines.add(line)\n }\n\n setFixInvalidLines (fixInvalidLines) {\n this._fixInvalidLines = fixInvalidLines\n }\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]; const 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\n setIgnoreInvalidLines (ignoreInvalidLines) {\n this._ignoreInvalidLines = ignoreInvalidLines\n }\n\n validCoordinateSequence (pts) {\n if (pts.length >= 2) return pts\n const validPts = [pts[0], pts[0]]\n return validPts\n }\n\n getClass () {\n return LinearGeometryBuilder\n }\n\n get interfaces_ () {\n return []\n }\n}\nLinearGeometryBuilder.constructor_ = function () {\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","import LineString from '../geom/LineString'\nimport CoordinateList from '../geom/CoordinateList'\nimport LinearIterator from './LinearIterator'\nimport Assert from '../util/Assert'\nimport LinearGeometryBuilder from './LinearGeometryBuilder'\nimport MultiLineString from '../geom/MultiLineString'\nexport default class ExtractLineByLocation {\n constructor () {\n ExtractLineByLocation.constructor_.apply(this, arguments)\n }\n\n static extract (line, start, end) {\n const ls = new ExtractLineByLocation(line)\n return ls.extract(start, end)\n }\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\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\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\n reverse (linear) {\n if (linear instanceof LineString) return linear.reverse()\n if (linear instanceof MultiLineString) return linear.reverse()\n Assert.shouldNeverReachHere('non-linear geometry encountered')\n return null\n }\n\n getClass () {\n return ExtractLineByLocation\n }\n\n get interfaces_ () {\n return []\n }\n}\nExtractLineByLocation.constructor_ = function () {\n this._line = null\n const line = arguments[0]\n this._line = line\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\n clampIndex (index) {\n const loc = index.copy()\n loc.clamp(this._linearGeom)\n return loc\n }\n\n project (pt) {\n return LocationIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n\n checkGeometryType () {\n if (!(this._linearGeom instanceof LineString || this._linearGeom instanceof MultiLineString)) throw new IllegalArgumentException('Input geometry must be linear')\n }\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]; const offsetDistance = arguments[1]\n const indexLow = index.toLowest(this._linearGeom)\n return indexLow.getSegment(this._linearGeom).pointAlongOffset(indexLow.getSegmentFraction(), offsetDistance)\n }\n }\n\n isValidIndex (index) {\n return index.isValid(this._linearGeom)\n }\n\n getEndIndex () {\n return LinearLocation.getEndLocation(this._linearGeom)\n }\n\n getStartIndex () {\n return new LinearLocation()\n }\n\n indexOfAfter (pt, minIndex) {\n return LocationIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex)\n }\n\n extractLine (startIndex, endIndex) {\n return ExtractLineByLocation.extract(this._linearGeom, startIndex, endIndex)\n }\n\n indexOf (pt) {\n return LocationIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n\n indicesOf (subLine) {\n return LocationIndexOfLine.indicesOf(this._linearGeom, subLine)\n }\n\n getClass () {\n return LocationIndexedLine\n }\n\n get interfaces_ () {\n return []\n }\n}\nLocationIndexedLine.constructor_ = function () {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n this.checkGeometryType()\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\n static indexOf (linearGeom, inputPt) {\n const locater = new LengthIndexOfPoint(linearGeom)\n return locater.indexOf(inputPt)\n }\n\n static indexOfAfter (linearGeom, inputPt, minIndex) {\n const locater = new LengthIndexOfPoint(linearGeom)\n return locater.indexOfAfter(inputPt, minIndex)\n }\n\n indexOf (inputPt) {\n return this.indexOfFromStart(inputPt, -1.0)\n }\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\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\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 getClass () {\n return LengthIndexOfPoint\n }\n\n get interfaces_ () {\n return []\n }\n}\nLengthIndexOfPoint.constructor_ = function () {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n}\n","import LinearIterator from './LinearIterator'\nimport LinearLocation from './LinearLocation'\nexport default class LengthLocationMap {\n constructor () {\n LengthLocationMap.constructor_.apply(this, arguments)\n }\n\n static getLength (linearGeom, loc) {\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLength(loc)\n }\n\n static getLocation () {\n if (arguments.length === 2) {\n const linearGeom = arguments[0]; const 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]; const length = arguments[1]; const resolveLower = arguments[2]\n const locater = new LengthLocationMap(linearGeom)\n return locater.getLocation(length, resolveLower)\n }\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\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\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]; const 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\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 getClass () {\n return LengthLocationMap\n }\n\n get interfaces_ () {\n return []\n }\n}\nLengthLocationMap.constructor_ = function () {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n}\n","import LocationIndexedLine from './LocationIndexedLine'\nimport 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\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\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]; const resolveLower = arguments[1]\n return LengthLocationMap.getLocation(this._linearGeom, index, resolveLower)\n }\n }\n\n project (pt) {\n return LengthIndexOfPoint.indexOf(this._linearGeom, pt)\n }\n\n positiveIndex (index) {\n if (index >= 0.0) return index\n return this._linearGeom.getLength() + index\n }\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]; const 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\n isValidIndex (index) {\n return index >= this.getStartIndex() && index <= this.getEndIndex()\n }\n\n getEndIndex () {\n return this._linearGeom.getLength()\n }\n\n getStartIndex () {\n return 0.0\n }\n\n indexOfAfter (pt, minIndex) {\n return LengthIndexOfPoint.indexOfAfter(this._linearGeom, pt, minIndex)\n }\n\n extractLine (startIndex, endIndex) {\n const lil = new LocationIndexedLine(this._linearGeom)\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\n indexOf (pt) {\n return LengthIndexOfPoint.indexOf(this._linearGeom, pt)\n }\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 getClass () {\n return LengthIndexedLine\n }\n\n get interfaces_ () {\n return []\n }\n}\nLengthIndexedLine.constructor_ = function () {\n this._linearGeom = null\n const linearGeom = arguments[0]\n this._linearGeom = linearGeom\n}\n","import ArrayList from '../../../../java/util/ArrayList'\nexport default class CollectionUtil {\n constructor () {\n CollectionUtil.constructor_.apply(this, arguments)\n }\n\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\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\n static apply (coll, func) {\n for (let i = coll.iterator(); i.hasNext();) {\n func.execute(i.next())\n }\n }\n\n getClass () {\n return CollectionUtil\n }\n\n get interfaces_ () {\n return []\n }\n}\nfunction Function () {}\nCollectionUtil.Function = Function\nCollectionUtil.constructor_ = function () {}\n","import CoordinateFilter from '../geom/CoordinateFilter'\nexport default class CoordinateArrayFilter {\n constructor () {\n CoordinateArrayFilter.constructor_.apply(this, arguments)\n }\n\n filter (coord) {\n this.pts[this.n++] = coord\n }\n\n getCoordinates () {\n return this.pts\n }\n\n getClass () {\n return CoordinateArrayFilter\n }\n\n get interfaces_ () {\n return [CoordinateFilter]\n }\n}\nCoordinateArrayFilter.constructor_ = function () {\n this.pts = null\n this.n = 0\n const size = arguments[0]\n this.pts = new Array(size).fill(null)\n}\n","import CoordinateFilter from '../geom/CoordinateFilter'\nexport default class CoordinateCountFilter {\n constructor () {\n CoordinateCountFilter.constructor_.apply(this, arguments)\n }\n\n filter (coord) {\n this._n++\n }\n\n getCount () {\n return this._n\n }\n\n getClass () {\n return CoordinateCountFilter\n }\n\n get interfaces_ () {\n return [CoordinateFilter]\n }\n}\nCoordinateCountFilter.constructor_ = function () {\n this._n = 0\n}\n","import HashMap from '../../../../java/util/HashMap'\nexport default class ObjectCounter {\n constructor () {\n ObjectCounter.constructor_.apply(this, arguments)\n }\n\n count (o) {\n const counter = this._counts.get(o)\n if (counter === null) return 0; else return counter.count()\n }\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\n getClass () {\n return ObjectCounter\n }\n\n get interfaces_ () {\n return []\n }\n}\nclass Counter {\n constructor () {\n Counter.constructor_.apply(this, arguments)\n }\n\n count () {\n return this.count\n }\n\n increment () {\n this.count++\n }\n\n getClass () {\n return Counter\n }\n\n get interfaces_ () {\n return []\n }\n}\nCounter.constructor_ = function () {\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}\nObjectCounter.Counter = Counter\nObjectCounter.constructor_ = function () {\n this._counts = new HashMap()\n}\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 Geometry from './geom/Geometry'\n\nGeometry.prototype.equalsTopo = function (g) {\n if (!this.getEnvelopeInternal().equals(g.getEnvelopeInternal())) return false\n return RelateOp.relate(this, g).isEquals(this.getDimension(), g.getDimension())\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 (...args) {\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 {\n 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}\nGeometry.prototype.isEquivalentClass = function (other) {\n return this.getClass() === other.getClass()\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","constructor","constructor_","apply","arguments","equalsWithTolerance","x1","x2","tolerance","Math","abs","getClass","interfaces_","IllegalArgumentException","message","Long","high","low","toBinaryString","i","mask","result","Double","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","NaN","Comparable","Clonable","Comparator","Serializable","RuntimeException","name","stack","Error","call","prototype","Object","create","AssertionFailedException","length","Assert","shouldNeverReachHere","isTrue","assertion","equals","expectedValue","actualValue","Coordinate","hashCode","trunc","setOrdinate","ordinateIndex","X","Y","Z","z","equals2D","other","c","getOrdinate","equals3D","equalInZ","compareTo","o","clone","coord","e","CloneNotSupportedException","copy","toString","distance3D","dx","dy","dz","sqrt","distance","setCoordinate","Cloneable","DimensionalComparator","compare","a","b","o1","o2","c1","c2","compX","compY","_dimensionsToTest","compZ","dimensionsToTest","NULL_ORDINATE","serialVersionUID","indexOf","Collection","add","addAll","isEmpty","iterator","size","toArray","remove","IndexOutOfBoundsException","List","get","set","NoSuchElementException","ArrayList","array_","ensureCapacity","push","splice","clear","hasNext","next","index","element","oldElement","Iterator_","array","len","found","removeAll","arrayList","arrayList_","position_","CoordinateList","getCoordinate","hasInterface","coll","allowRepeated","isChanged","toCoordinateArray","coordArrayType","Array","last","obj","direction","isInteger","prev","start","end","inc","closeRing","fill","Envelope","intersects","p1","p2","q","q1","q2","minq","min","maxq","max","minp","maxp","getArea","getWidth","getHeight","otherEnvelope","isNull","_maxx","getMaxX","_maxy","getMaxY","_minx","getMinX","_miny","getMinY","intersection","env","intMinX","intMinY","intMaxX","intMaxY","covers","p","envminx","envmaxx","envminy","envmaxy","expandToInclude","minExtent","w","h","translate","transX","transY","init","setToNull","maxExtent","expandBy","deltaX","deltaY","contains","centre","y1","y2","Exception","NotRepresentableException","StringBuffer","str","append","setCharAt","substr","Integer","intValue","Character","isWhitespace","toUpperCase","DD","sqr","valueOf","selfMultiply","parse","strlen","charAt","isNegative","signCh","val","numDigits","numBeforeDec","ch","isDigit","d","TEN","selfAdd","expStr","substring","parseInt","ex","NumberFormatException","val2","numDecPlaces","scale","divide","multiply","negate","createNaN","dd","magnitude","xAbs","xLog10","log","xMag","xApprox","stringOfChar","buf","le","_hi","_lo","extractSignificantDigits","insertDecimalPoint","mag","gt","lt","ONE","decimalPointPos","MAX_PRINT_DIGITS","digit","rebiasBy10","digitChar","subtract","continueExtractingDigits","remMag","doubleValue","isZero","selfSubtract","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","hi","lo","signum","PI","TWO_PI","PI_2","E","EPS","CGAlgorithmsDD","orientationIndex","orientationIndexFilter","dx1","dy1","dx2","dy2","signOfDet2x2","det","denom1","denom2","denom","numx1","numx2","numx","fracP","numy1","numy2","numy","fracQ","pa","pb","pc","detsum","detleft","detright","errbound","DP_SAFE_EPSILON","Orientation","isCCW","ring","nPts","hiPt","hiIndex","iPrev","iNext","disc","CLOCKWISE","RIGHT","COUNTERCLOCKWISE","LEFT","COLLINEAR","STRAIGHT","System","arraycopy","src","srcPos","dest","destPos","getProperty","HCoordinate","px","py","pw","qx","qy","qw","xInt","yInt","getY","getX","_x","_y","_w","MathUtil","log10","ln","LOG_10","v1","v2","v3","v4","clamp","wrap","average","Distance","segmentToSegment","A","B","D","pointToSegment","noIntersection","r_num","s_num","len2","pointToLinePerpendicular","pointToSegmentString","line","minDistance","dist","CoordinateSequence","getCoordinateCopy","getDimension","expandEnvelope","M","CoordinateSequenceFactory","GeometryComponentFilter","filter","geom","Geometry","isGeometryCollection","getTypeCode","TYPECODE_GEOMETRYCOLLECTION","getFactory","_factory","getGeometryN","isRectangle","g","equalsTopo","equalsExact","geometryChanged","geometryChangedFilter","geometryChangedAction","_envelope","equalsNorm","norm","getLength","getNumGeometries","compareToSameClass","comp","getUserData","_userData","getSRID","_SRID","getEnvelope","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","equal","normalize","getPrecisionModel","computeEnvelopeInternal","setSRID","SRID","setUserData","userData","j","aElement","bElement","comparison","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","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","CoordinateArrays","isRing","pts","ptNotInList","testPts","testPt","scroll","coordinates","firstCoordinate","newCoordinates","coord1","coord2","coordinateComparator","coordList","hasRepeatedPoints","removeRepeatedPoints","reverse","mid","tmp","removeNull","nonNull","newCoord","copyDeep","srcStart","destStart","isEqualReversed","pts1","pts2","envelope","atLeastNCoordinatesOrNothing","coordinate","increasingDirection","minCoordinate","minCoord","extract","npts","extractPts","iPts","ForwardComparator","BidirectionalComparator","forwardComp","isEqualRev","OLDcompare","dir1","dir2","i1","i2","comparePt","Map","put","values","entrySet","SortedMap","OperationNotSupported","Set","HashSet","hashSet","hashSet_","BLACK","RED","colorOf","color","parentOf","parent","setColor","leftOf","left","rightOf","right","TreeMap","root_","size_","key","cmp","getValue","getKey","oldValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","l","containsKey","Lineal","SortedSet","TreeSet","treeSet","treeSet_","Arrays","sort","comparator","slice","concat","asList","Dimension","toDimensionSymbol","dimensionValue","FALSE","SYM_FALSE","TRUE","SYM_TRUE","DONTCARE","SYM_DONTCARE","P","SYM_P","L","SYM_L","SYM_A","toDimensionValue","dimensionSymbol","GeometryFilter","CoordinateSequenceFilter","seq","isDone","isGeometryChanged","GeometryCollection","_geometries","getCoordinates","getNumPoints","k","childCoordinates","area","isEquivalentClass","otherCollection","getBoundaryDimension","dimension","sum","numPoints","revGeoms","createGeometryCollection","theseElements","otherElements","gc","n1","n2","thisGeom","otherGeom","holeComp","getBoundary","getGeometryType","MultiLineString","isClosed","nLines","revLines","createMultiLineString","BoundaryOp","lineStrings","bop","bnRule","boundaryMultiLineString","mLine","_geom","getEmptyMultiPoint","bdyPts","computeBoundaryCoordinates","_geomFact","createPoint","createMultiPointFromCoords","LineString","boundaryLineString","closedEndpointOnBoundary","_bnRule","getStartPoint","createMultiPoint","getEndPoint","_endpointMap","addEndpoint","getCoordinateN","it","entry","counter","valence","count","pt","Counter","Length","ofLine","x0","y0","PrintStream","StringReader","DecimalFormat","ByteArrayOutputStream","IOException","LineNumberReader","StringUtil","chars","String","getStackTrace","os","ps","printStackTrace","depth","stackTrace","stringReader","lineNumberReader","readLine","NEWLINE","split","separator","separatorlen","tokenList","tmpString","pos","token","res","SIMPLE_ORDINATE_FORMAT","format","spaces","StringBuilder","CoordinateSequences","copyCoord","minDim","dim","isEqual","cs1","cs2","cs1Size","cs2Size","extend","fact","newseq","swap","cs","builder","ensureValidRing","createClosedRing","_points","isSimple","otherLineString","getPointN","revLine","createLineString","getCoordinateSequence","points","getCoordinateSequenceFactory","isCoordinate","Puntal","Point","_coordinates","point","Area","ofRing","ofRingSigned","p0","Polygonal","Polygon","_shell","shellCoordinates","_holes","getNumInteriorRing","prevX","prevY","xChanged","yChanged","otherPolygon","thisShell","otherPolygonShell","clockwise","uniqueCoordinates","poly","convexHull","getExteriorRing","otherShell","shellComp","nHole1","nHole2","thisHole","getInteriorRingN","otherHole","rings","createLinearRing","shellCopy","holeCopies","shell","holes","MultiPoint","isValid","LinearRing","rev","validateConstruction","MINIMUM_VALID_SIZE","GeometryFactory","MultiPolygon","createMultiPolygon","allRings","polygon","allRingsArray","polygons","GeometryEditor","setCopyUserData","isUserDataCopied","_isUserDataCopied","edit","geometry","operation","editInternal","editGeometryCollection","editPolygon","getName","collection","collectionForType","newPolygon","createPolygon","hole","GeometryEditorOperation","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","CoordinateArraySequence","_dimension","cloneCoordinates","strBuilder","coordSeq","CoordinateArraySequenceFactory","instance","instanceObject","readResolve","HashMap","map_","MapInterface","done","entries","forEach","PrecisionModel","mostPrecise","pm1","pm2","otherPrecisionModel","_modelType","_scale","getMaximumSignificantDigits","otherSigDigits","getScale","isFloating","FLOATING","FLOATING_SINGLE","getType","description","FIXED","makePrecise","floatSingleVal","round","maxSigDigits","setScale","Type","nameToTypeMap","_name","modelType","pm","maximumPreciseValue","toMultiPolygonArray","multiPolygons","multiPolygonArray","toGeometryArray","geometryArray","getDefaultCoordinateSequenceFactory","toMultiLineStringArray","multiLineStrings","multiLineStringArray","toLineStringArray","lineStringArray","toMultiPointArray","multiPoints","multiPointArray","toLinearRingArray","linearRings","linearRingArray","toPointArray","pointArray","toPolygonArray","polygonArray","createPointFromInternalCoord","exemplar","buildGeometry","geomList","geomClass","isHeterogeneous","hasGeometryCollection","partClass","geom0","isCollection","_coordinateSequenceFactory","createGeometry","editor","CloneOp","_precisionModel","ptSeq","coordinateSequenceFactory","precisionModel","regExes","typeStr","emptyTypeStr","parenComma","doubleParenComma","trimParens","WKTParser","geometryFactory","read","wkt","type","replace","matches","exec","search","undefined","toLowerCase","write","extractGeometry","wktType","data","multipoint","join","linestring","linearring","multilinestring","multipolygon","geometrycollection","coords","trim","parseFloat","components","lines","wktArray","WKTWriter","parser","toLineString","LineIntersector","computeEdgeDistance","pdx","pdy","nonRobustComputeEdgeDistance","getIndexAlongSegment","segmentIndex","intIndex","computeIntLineIndex","_intLineIndex","getTopologySummary","catBuilder","isEndPoint","_isProper","isCollinear","computeIntersection","p3","p4","_inputLines","_result","computeIntersect","getIntersectionNum","map","dist0","getEdgeDistance","dist1","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","inputLineIndex","_intPt","getIntersection","NO_INTERSECTION","COLLINEAR_INTERSECTION","getEndpoint","ptIndex","isIntersection","getIntersectionAlongSegment","_pa","_pb","DONT_INTERSECT","DO_INTERSECT","POINT_INTERSECTION","RobustLineIntersector","nearestEndpoint","nearestPt","minDist","isInSegmentEnvelopes","intPt","env0","env1","normalizeToMinimum","n3","n4","normPt","smallestInAbsValue","safeHCoordinateIntersection","intersectionWithNormalization","x3","x4","xabs","checkDD","intPtDD","isIn","out","println","normalizeToEnvCentre","computeCollinearIntersection","p1q1p2","p1q2p2","q1p1q2","q1p2q2","n00","n01","n10","n11","minX0","minY0","maxX0","maxY0","minX1","minY1","maxX1","maxY1","intMidX","intMidY","Pq1","Pq2","Qp1","Qp2","collinear","LineSegment","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","lineIntersection","maxY","pointAlongOffset","segmentLengthFraction","offsetDistance","segx","segy","ux","uy","offsetx","offsety","setCoordinates","ls","segmentFraction","inputPt","segFrac","isHorizontal","pointAlong","bits0","java","lang","hash0","bits1","hash1","Location","toLocationSymbol","locationValue","EXTERIOR","BOUNDARY","INTERIOR","NONE","IntersectionMatrix","actualDimensionValue","requiredDimensionSymbol","actualDimensionSymbols","requiredDimensionSymbols","m","isIntersects","isDisjoint","isCovers","hasPointInCommon","_matrix","isCoveredBy","dimensionSymbols","row","col","column","isContains","setAtLeast","minimumDimensionSymbols","minimumDimensionValue","setAtLeastIfValid","isWithin","isTouches","dimensionOfGeometryA","dimensionOfGeometryB","isOverlaps","isEquals","ai","bi","setAll","transpose","im","isCrosses","elements","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","Triangle","signedArea","m00","m01","m10","m11","interpolateZ","v0","longestSideLength","lenAB","lenBC","lenCA","maxLen","circumcentre","cx","cy","ay","bx","by","ccx","ccy","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","translationInstance","trans","setToTranslation","shearInstance","xShear","yShear","setToShear","reflectionInstance","setToReflection","rotationInstance","theta","cos","sinTheta","cosTheta","setToRotation","scaleInstance","xScale","yScale","setToScale","setToReflectionBasic","c2s2","_m00","_m01","_m02","_m10","_m11","_m12","getInverse","getDeterminant","im00","im10","im01","im11","im02","im12","compose","mp00","mp01","mp02","mp10","mp11","mp12","isIdentity","setToIdentity","setTransformation","m02","m12","getMatrixEntries","transform","rotate","composeBefore","shear","g2","xp","yp","reflect","matrix","Matrix","solve","maxElementRow","swapRows","rowFactor","solution","AffineTransformationBuilder","_src0","_src1","_src2","compute","_dest0","_dest1","_dest2","row0","row1","getTransformation","isSolvable","src0","src1","src2","dest0","dest1","dest2","AffineTransformationFactory","createFromBaseLines","rotPt","ang","srcDist","destDist","createFromControlVectors","ComponentCoordinateExtracter","_coords","GeometryCollectionMapper","op","mapper","mapped","_mapOp","mapOp","GeometryCombiner","combine","geoms","combiner","g0","g1","createList","extractFactory","obj0","obj1","list","obj2","extractElements","elems","elemGeom","_skipEmpty","_inputGeoms","_geomFactory","GeometryExtracter","isOfType","geometryType","Class","clz","toGeometryType","_geometryType","_comps","comps","MapOp","GeometryMapper","gr","GeometryTransformer","transformPoint","transformCoordinates","transformPolygon","isAllValidLinearRings","transformLinearRing","createCoordinateSequence","getInputGeometry","_inputGeom","transformMultiLineString","transGeomList","transformGeom","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","_pruneEmptyGeometry","_preserveGeometryCollectionType","inputGeom","seqSize","_preserveType","_preserveCollections","LineStringExtracter","getGeometry","getLines","LinearComponentExtracter","forceToLineString","_isForcedToLineString","_lines","setForceToLineString","isForcedToLineString","Collections","reverseOrder","alen","singletonList","PointExtracter","getPoints","_pts","PolygonExtracter","getPolygons","ShortCircuitedGeometryVisitor","applyTo","_isDone","visit","GeometricShapeFactory","createSupercircle","power","recipPow","radius","_dim","getMinSize","getCentre","r4","xyInt","nSegsInOct","_nPts","totPts","xInc","coordTrans","setNumPoints","setBase","base","setRotation","_rotationAngle","setWidth","width","createEllipse","xRadius","yRadius","centreX","centreY","iPt","createSquircle","setEnvelope","setCentre","createArc","startAng","angExtent","angSize","angInc","_precModel","createArcPolygon","createRectangle","ipt","nSide","XsegLen","YsegLen","createCircle","setHeight","height","setSize","Dimensions","getBase","geomFact","SineStarFactory","setNumArms","numArms","_numArms","setArmLengthRatio","armLengthRatio","_armLengthRatio","createSineStar","armRatio","armMaxLen","insideRadius","ptArcFrac","armAngFrac","armAng","armLenFrac","curveRadius","PointPairDistance","_pt","setMinimum","ptDist","_isNull","initialize","_distance","getDistance","setMaximum","DistanceToPoint","computeDistance","tempSegment","segment","DiscreteHausdorffDistance","densifyFrac","setDensifyFraction","_ptDist","_densifyFrac","computeOrientedDistance","_g0","_g1","discreteGeom","distFilter","MaxPointDistanceFilter","getMaxPointDistance","fracFilter","MaxDensifiedByFractionDistanceFilter","orientedDistance","_minPtDist","_maxPtDist","_euclideanDist","delx","_numSubSegs","dely","fraction","ItemVisitor","visitItem","item","PointOnGeometryLocator","locate","IntervalRTreeNode","getMin","_min","queryMin","queryMax","_max","getMax","NodeComparator","mid1","mid2","POSITIVE_INFINITY","IntervalRTreeLeafNode","query","visitor","_item","IntervalRTreeBranchNode","buildExtent","_node1","_node2","SortedPackedIntervalRTree","buildTree","_leaves","buildLevel","insert","_root","buildRoot","printNode","node","_level","ArrayListVisitor","_items","getItems","RayCrossingCounter","locatePointInRing","countSegment","isOnSegment","getLocation","_p","_isPointOnSegment","minx","maxx","orient","_crossingCount","isPointInPolygon","IndexedPointInAreaLocator","rcc","SegmentVisitor","_index","_counter","IntervalIndexedGeometry","addLine","PointLocation","isOnLine","lineIntersector","locateInRing","isInRing","Iterator","GeometryCollectionIterator","isAtomic","_atStart","_parent","_subcollectionIterator","UnsupportedOperationException","SimplePointInAreaLocator","locatePointInPolygon","shellLoc","holeLoc","containsPointInPolygon","locateInGeometry","geomi","loc","SimilarityMeasure","measure","AreaSimilarityMeasure","areaInt","areaUnion","union","HausdorffSimilarityMeasure","diagonalSize","hgt","DENSIFY_FRACTION","envSize","SimilarityMeasureCombiner","measure1","measure2","Centroid","area2","centroid3","getCentroid","cent","setAreaBasePoint","basePt","_areaBasePt","addPoint","_ptCount","_ptCentSum","addLineSegments","lineLen","segmentLen","midx","_lineCentSum","midy","_totalLength","addHole","isPositiveArea","addTriangle","_areasum2","_cg3","addShell","_triangleCent3","EmptyStackException","Stack","pop","peek","empty","UniqueCoordinateArrayFilter","filterCoordinates","ConvexHull","extractCoordinates","preSort","RadialComparator","computeOctRing","inputPts","octPts","computeOctPts","lineOrPolygon","cleanRing","linearRing","original","cleanedRing","previousDistinctCoordinate","currentCoordinate","nextCoordinate","isBetween","cleanedRingCoordinates","c3","reduce","polyPts","reducedSet","reducedPts","padArray3","getConvexHull","_inputPts","sortedPts","cHS","grahamScan","cH","pad","polarCompare","dxp","dyp","dxq","dyq","oq","_origin","origin","InteriorPointArea","avg","addPolygon","bisector","horizontalBisector","intersections","widestIntersection","widestGeometry","_interiorPoint","_maxWidth","getInteriorPoint","bisectY","SafeBisectorFinder","getBisectorY","finder","updateInterval","_centreY","_loY","_hiY","process","_poly","InteriorPointLine","addEndpoints","addInterior","_centroid","_minDistance","InteriorPointPoint","PointLocator","locateInPolygonRing","updateLocationInfo","_isIn","_numBoundaries","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","ml","mpoly","ptCoord","_boundaryRule","boundaryRule","MinimumBoundingCircle","pointWitMinAngleWithX","minSin","minAngPt","lowestPoint","pointWithMinAngleWithSegment","Q","minAng","getRadius","_radius","getDiameter","_extremalPts","_input","_centre","getExtremalPoints","computeCirclePoints","hullPts","R","computeCentre","getFarthestPoints","getCircle","centrePoint","MinimumDiameter","nextIndex","computeC","getMinimumDiameter","getMinimumRectangle","computeSegmentForLine","getWidthCoordinate","computeMinimumDiameter","_minWidthPt","getSupportingSegment","_minBaseSeg","computeWidthConvex","convexGeom","_convexHullPts","_minWidth","computeConvexRingMinDiameter","currMaxIndex","findMaxPerpDistance","_isConvex","startIndex","maxPerpDistance","nextPerpDistance","maxIndex","_minPtIndex","minPara","maxPara","minPerp","maxPerp","paraC","perpC","maxPerpLine","minPerpLine","maxParaLine","minParaLine","isConvex","Densifier","densifyPoints","distanceTolerance","precModel","densifiedSegCount","densifiedSegLen","segFract","densify","densifier","setDistanceTolerance","getResultGeometry","DensifyTransformer","_distanceTolerance","roughGeom","createValidArea","newPts","roughAreaGeom","Quadrant","isNorthern","quad","NE","NW","isOpposite","quad1","quad2","commonHalfPlane","isInHalfPlane","halfPlane","SE","SW","quadrant","HalfEdge","e0","e1","_sym","_next","find","oNext","_orig","insertAfter","ecmp","ePrev","orig","save","setNext","sym","degree","compareAngularDirection","quadrant2","prevNode","setSym","MarkHalfEdge","setMarkBoth","isMarked","setMark","markBoth","mark","_isMarked","EdgeGraph","isValidEdge","eAdj","_vertexMap","eAdjDest","createEdge","addEdge","eSame","getVertexEdges","findEdge","DissolveHalfEdge","setStart","_isStart","isStart","DissolveEdgeGraph","LineDissolver","dissolve","getResult","updateRingStartEdge","_ringStartEdge","computeResult","eNode","stackEdges","buildLines","buildRing","eStartRing","eNext","buildLine","eStart","_nodeEdgeStack","edges","_graph","component","lineString","doneStart","Position","opposite","position","ON","MonotoneChain","computeIntersections","mc","si","mce","computeIntersectsForChain","chainIndex","SweepLineEvent","isDelete","_eventType","DELETE","setDeleteEventIndex","deleteEventIndex","_deleteEventIndex","getObject","_obj","pe","_xValue","getInsertEvent","_insertEvent","isInsert","INSERT","isSameLabel","ev","_label","getDeleteEventIndex","insertEvent","label","EdgeSetIntersector","SegmentIntersector","isAdjacentSegments","isTrivialIntersection","segIndex0","segIndex1","_li","maxSegIndex","getProperIntersectionPoint","_properIntersectionPoint","setIsDoneIfProperInt","isDoneWhenProperInt","_isDoneWhenProperInt","hasProperInteriorIntersection","_hasProperInterior","isBoundaryPointInternal","bdyNodes","hasProperIntersection","_hasProper","_hasIntersection","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","_bdyNodes","addIntersections","numTests","p00","p01","p10","p11","_recordIsolated","setIsolated","_numIntersections","_includeProper","_isSelfIntersection","includeProper","recordIsolated","SimpleMCSweepLineIntersector","prepareEvents","events","nOverlaps","processOverlaps","edges0","edges1","addEdges","testAllSegments","edge","edgeSet","getMonotoneChainEdge","getStartIndexes","ev0","mc0","ev1","mc1","TopologyLocation","setAllLocations","locValue","location","setAllLocationsIfNull","isLine","merge","gl","newLoc","getLocations","flip","setLocations","on","posIndex","isArea","isAnyNull","setLocation","locIndex","isEqualOnSide","allPositionsEqual","Label","toLineLabel","lineLabel","getGeometryCount","elt","geomIndex","lbl","side","toLine","onLoc","leftLoc","rightLoc","EdgeIntersection","getSegmentIndex","print","maxSegmentIndex","EdgeIntersectionList","ei","_nodeMap","addSplitEdges","edgeList","eiPrev","newEdge","createSplitEdge","ei0","ei1","lastSegStartPt","useIntPt1","Edge","eiNew","MonotoneChainIndexer","toIntArray","getChainStartIndices","startIndexList","findChainEnd","chainQuad","MonotoneChainEdge","chainIndex0","chainIndex1","start0","end0","start1","end1","overlaps","mid0","computeIntersects","mcb","Depth","depthAtLocation","NULL_VALUE","getDepth","_depth","setDepth","depthValue","minDepth","newValue","getDelta","GraphComponent","setVisited","isVisited","_isVisited","setInResult","isInResult","_isInResult","isCovered","_isCovered","isCoveredSet","_isCoveredSet","setLabel","getLabel","setCovered","updateIM","computeIM","getCollapsedEdge","newe","isIsolated","_isIsolated","setName","isEqualForward","isEqualReverse","iRev","_depthDelta","isCollapsed","getMaximumSegmentIndex","getDepthDelta","printReverse","_mce","_env","addIntersection","normalizedSegmentIndex","nextSegIndex","nextPt","eiList","isPointwiseEqual","setDepthDelta","depthDelta","getEdgeIntersectionList","Node","isIncidentEdgeInResult","getEdges","de","getEdge","_coord","computeMergedLocation","label2","eltIndex","nLoc","argIndex","onLocation","_edges","mergeLabel","thisLoc","setNode","setLabelBoundary","NodeMap","nodeMap","addNode","nodeFact","createNode","getBoundaryNodes","EdgeEnd","compareDirection","_dx","_dy","_quadrant","_p0","_p1","getDy","_node","className","lastDotPos","lastIndexOf","getDirectedCoordinate","getDx","_edge","getQuadrant","getNode","computeLabel","boundaryNodeRule","TopologyException","msgWithCoord","DirectedEdge","depthFactor","currLocation","nextLocation","getNextMin","_nextMin","computeDirectedLabel","_isForward","getNext","depthVal","isInteriorAreaEdge","setNextMin","nextMin","setMinEdgeRing","minEdgeRing","_minEdgeRing","isLineEdge","isExteriorIfArea0","isExteriorIfArea1","setEdgeRing","edgeRing","_edgeRing","getMinEdgeRing","getSym","isForward","printEdge","setVisitedEdge","setEdgeDepths","directionFactor","oppositePos","delta","oppositeDepth","getEdgeRing","NodeFactory","PlanarGraph","linkResultDirectedEdges","nodes","nodeit","printEdges","_nodes","getNodeIterator","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","_edgeEndList","debugPrint","getEdgeIterator","findEdgeInSameDirection","eCoord","insertEdge","findEdgeEnd","ee","edgesToAdd","de1","de2","getNodes","GeometryGraph","determineBoundary","insertBoundaryPoint","_boundaryNodeRule","computeSelfNodes","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","_parentGeom","computeAllSegments","addSelfIntersectionNodes","_argIndex","computeSplitEdges","edgelist","computeEdgeIntersections","getBoundaryNodeRule","hasTooFewPoints","_hasTooFewPoints","insertPoint","addPolygonRing","addLineString","_invalidPoint","_lineEdgeMap","getInvalidPoint","getBoundaryPoints","_boundaryNodes","addSelfIntersectionNode","_useBoundaryDeterminationRule","lr","cwLeft","cwRight","eLoc","eiIt","addCollection","_areaPtLocator","_ptLocator","parentGeom","KdNodeVisitor","KdNode","isRepeated","_count","getRight","_right","setLeft","_left","getData","_data","getCount","getLeft","increment","setRight","KdTree","toCoordinates","kdnodes","includeRepeated","_tolerance","matchNode","findBestMatchNode","insertExact","queryEnv","queryNode","currentNode","odd","discriminant","searchLeft","searchRight","BestMatchVisitor","queryEnvelope","leafNode","isOddLevel","isLessThan","isInTolerance","_numberOfNodes","update","_matchNode","_matchDist","NodeBase","getSubnodeIndex","centrex","centrey","subnodeIndex","hasChildren","_subnode","isPrunable","hasItems","addAllItems","resultItems","getNodeCount","subSize","addAllItemsFromOverlapping","searchEnv","isSearchMatch","visitItems","itemEnv","maxSubDepth","sqd","DoubleBits","exponent","CVTFWD","powerOf2","NumW","Qty","Sign","Expo","Mant","Bin","Inf","ExW","Key","computeQuadLevel","dMax","level","getLevel","computeKey","quadSize","getPoint","createExpanded","addEnv","expandEnv","largerNode","insertNode","_centrex","_centrey","getSubnode","createSubnode","miny","maxy","sqEnv","childNode","IntervalSize","isZeroWidth","maxAbs","scaledInterval","MIN_BINARY_EXPONENT","Root","insertContained","tree","isZeroX","isZeroY","SpatialIndex","Quadtree","ensureExtent","collectStats","insertEnv","_minExtent","queryAll","foundItems","posEnv","delX","delY","Boundable","getBounds","ItemBoundable","getItem","_bounds","bounds","PriorityQueue","poll","minItem","_size","reorder","child","AbstractNode","_childBoundables","getChildBoundables","addChildBoundable","childBoundable","computeBounds","BoundablePair","isComposite","expandToQueue","priQ","isComp1","_boundable1","isComp2","_boundable2","expand","isLeaves","nd","bndComposite","bndOther","children","bp","_itemDistance","getBoundable","boundable1","boundable2","itemDistance","AbstractSTRtree","compareDoubles","queryInternal","searchBounds","childBoundables","getIntersectsOp","getNodeCapacity","_nodeCapacity","lastNode","build","removeItem","childToRemove","itemsTree","valuesTree","valuesTreeForNode","valuesTreeForChild","_built","_itemBoundables","boundablesAtLevel","boundables","top","boundable","createHigherLevels","getRoot","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","IntersectsOp","DEFAULT_NODE_CAPACITY","nodeCapacity","ItemDistance","item1","item2","STRtree","kNearestNeighbors","items","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","yComparator","minLeafCount","xComparator","nearestNeighbour","itemDist","initBndPair","maxDistance","distanceLowerBound","minPair","bndPair","currentDistance","bnd","bp1","bp2","aBounds","bBounds","geometryTypes","GeoJSONParser","json","JSON","Feature","feature","bbox","FeatureCollection","featureCollection","features","sub","geoJson","shellGeoJson","holeGeoJson","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","_segmentOctant","_isInterior","isInterior","_segString","segString","segmentOctant","SegmentNodeList","getSplitCoordinates","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","NodedSegmentString","getSegmentOctant","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","pt0","splitn","splitnPts","ptn","Octant","adx","ady","SegmentString","setData","NodableSegmentString","getNodedSubstrings","segStrings","resultEdgelist","ss","getNodeList","safeOctant","addIntersectionNode","_nodeList","MonotoneChainOverlapAction","overlap","mc2","start2","getLineSegment","_overlapSeg1","_overlapSeg2","computeSelect","mcs","select","_end","_start","computeOverlaps","mco","setId","id","_id","getEndIndex","getStartIndex","getContext","_context","getId","context","MonotoneChainBuilder","safeStart","getChains","mcList","Noder","computeNodes","SinglePassNoder","setSegmentIntersector","segInt","_segInt","MCIndexNoder","getMonotoneChains","_monoChains","_nodedSegStrings","getIndex","segStr","segChains","_idCounter","inputSegStrings","intersectChains","overlapAction","SegmentOverlapAction","queryChain","overlapChains","testChain","_nOverlaps","ss1","ss2","_si","processIntersections","ScaledNoder","rescale","_scaleFactor","_offsetX","_offsetY","nodedSegmentStrings","roundPts","roundPtsNoDup","isIntegerPrecision","splitSS","_noder","_isScaled","intSegStrings","noder","scaleFactor","IsSimpleOp","isSimpleMultiPoint","mp","_nonSimpleLocation","isSimplePolygonal","isSimpleLinearGeometry","hasClosedEndpointIntersection","graph","endPoints","eiInfo","getNonSimpleLocation","hasNonEndpointIntersection","_isClosedEndpointsInInterior","EndpointInfo","computeSimple","isSimpleGeometryCollection","BufferParameters","bufferDistanceError","quadSegs","alpha","getEndCapStyle","_endCapStyle","isSingleSided","_isSingleSided","setQuadrantSegments","_quadrantSegments","_joinStyle","JOIN_BEVEL","JOIN_MITRE","_mitreLimit","JOIN_ROUND","DEFAULT_QUADRANT_SEGMENTS","getJoinStyle","setJoinStyle","joinStyle","setSimplifyFactor","simplifyFactor","_simplifyFactor","getSimplifyFactor","getQuadrantSegments","setEndCapStyle","endCapStyle","getMitreLimit","setMitreLimit","mitreLimit","setSingleSided","CAP_ROUND","DEFAULT_MITRE_LIMIT","DEFAULT_SIMPLIFY_FACTOR","quadrantSegments","CAP_FLAT","CAP_SQUARE","RightmostEdgeFinder","_minCoord","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","_minDe","_minIndex","pPrev","pNext","orientation","usePrev","_orientedDe","findRightmostEdgeAtNode","star","getRightmostEdge","dirEdgeList","rightmostSide","LinkedList","addLast","removeFirst","shift","BufferSubgraph","clearVisitedEdges","_dirEdgeList","getRightmostCoordinate","_rightMostCoord","computeNodeDepth","startEdge","computeDepths","copySymDepths","computeDepth","outsideDepth","_finder","addReachable","findResultEdges","nodesVisited","nodeQueue","startNode","adjNode","edgeEnv","dirEdge","nodeStack","symNode","getDirectedEdges","EdgeRing","computeRing","_ring","_geometryFactory","_isHole","computePoints","_startDe","isFirstEdge","addPoints","getLinearRing","computeMaxNodeDegree","_maxNodeDegree","getOutgoingDegree","isHole","containsPoint","isShell","getMaxNodeDegree","getShell","deLabel","setShell","toPolygon","holeLR","MinimalEdgeRing","er","MaximalEdgeRing","buildMinimalRings","minEdgeRings","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","PolygonBuilder","sortShellsAndHoles","edgeRings","shellList","freeHoleList","computePolygons","resultPolyList","placeFreeHoles","findEdgeRingContaining","buildMinimalEdgeRings","maxEdgeRings","findShell","placePolygonHoles","_shellList","buildMaximalEdgeRings","dirEdges","testEr","testRing","testEnv","minShell","minEnv","tryShell","tryRing","tryEnv","isContained","shellCount","BufferInputLineSimplifier","simplify","inputLine","distanceTol","simp","isDeletable","i0","_inputLine","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","midIndex","findNextNonDeletedIndex","lastIndex","isMiddleVertexDeleted","_distanceTol","_isDeleted","isShallowConcavity","isAngleToSimplify","_angleOrientation","NUM_PTS_TO_CHECK","collapseLine","INIT","KEEP","OffsetSegmentString","_ptList","COORDINATE_ARRAY_TYPE","addPt","bufPt","isRedundant","addPts","lastPt","_minimimVertexDistance","startPt","last2Pt","setMinimumVertexDistance","minimimVertexDistance","OffsetSegmentGenerator","addNextSegment","addStartPoint","_s0","_s1","_s2","_seg0","computeOffsetSegment","_side","_offset0","_seg1","_offset1","outsideTurn","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","offsetL","offsetR","_bufParams","_segList","addDirectedFillet","squareCapSideOffset","squareCapLOffset","squareCapROffset","addMitreJoin","offset0","offset1","isMitreWithinLimit","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","_filletAngleQuantum","initAngle","currAngleInc","currAngle","offset","sideSign","_hasNarrowConcaveAngle","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","_closingSegLengthFactor","_maxCurveSegmentError","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","numInt","hasNarrowConcaveAngle","bufParams","MAX_CLOSING_SEG_LEN_FACTOR","OffsetCurveBuilder","copyCoordinates","getOffsetCurve","isRightSide","posDistance","segGen","getSegGen","computePointCurve","computeOffsetCurve","curvePts","computeSingleSidedBufferCurve","distTol","simplifyTolerance","simp2","simp1","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","lineCoord","getBufferParameters","bufDistance","getRingCurve","SubgraphDepthLocater","findStabbedSegments","stabbingRayLeftPt","stabbedSegments","_subgraphs","bsg","_seg","ds","DepthSegment","_leftDepth","_upwardSeg","orientIndex","compareX","seg0","seg1","compare0","subgraphs","OffsetCurveSetBuilder","curve","_curveBuilder","addCurve","offsetSide","shellCoord","isErodedCompletely","holeCoord","isTriangleErodedCompletely","triangleCoord","bufferDistance","tri","distToCentre","_curveList","getCurves","cwLeftLoc","cwRightLoc","ringCoord","envMinDimension","curveBuilder","EdgeEndStar","getNextCW","_edgeList","iNextCW","propagateSideLabels","startLoc","currLoc","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","checkAreaLabelsConsistent","lastEdgeIndex","startLabel","findIndex","eSearch","_edgeMap","_ptInAreaLocation","computeLabelling","hasDimensionalCollapseEdge","getDegree","insertEdgeEnd","DirectedEdgeStar","getResultAreaEdges","firstOut","incoming","state","_SCANNING_FOR_INCOMING","_resultAreaEdgeList","nextOut","nextIn","_LINKING_TO_OUTGOING","de0","deLast","quad0","updateLabelling","nodeLabel","prevOut","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","currDepth","nextDe","mergeSymLabels","findCoveredLineEdges","eLabel","OverlayNodeFactory","OrientedCoordinateArray","compareOriented","orientation1","orientation2","limit1","limit2","compPt","done1","done2","oca","_orientation","EdgeList","edgeColl","findEdgeIndex","findEqualEdge","matchEdge","_ocaMap","IntersectionAdder","getLineIntersector","numIntersections","numInteriorIntersections","_hasInterior","numProperIntersections","hasInteriorIntersection","BufferBuilder","lLoc","rLoc","convertSegStrings","setWorkingPrecisionModel","_workingPrecisionModel","insertUniqueEdge","existingEdge","existingLabel","labelToMerge","mergeDelta","existingDelta","newDelta","buildSubgraphs","subgraphList","polyBuilder","processedGraphs","subgraph","locater","createSubgraphs","createEmptyResultGeometry","emptyGeom","getNoder","_workingNoder","curveSetBuilder","bufferSegStrList","computeNodedEdges","resultGeom","nodedSegStrings","oldLabel","setNoder","NodingValidator","checkEndPtVertexIntersections","_segStrings","checkInteriorIntersections","ss0","pts0","checkValid","checkCollapses","checkCollapse","HotPixel","intersectsScaled","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersectsToleranceSquare","initCorners","_corner","copyScaled","_p0Scaled","_p1Scaled","_originalPt","pScaled","getSafeEnvelope","_safeEnv","safeTolerance","SAFE_ENV_EXPANSION_FACTOR","intersectsPixelClosure","intersectsLeft","intersectsBottom","addSnappedNode","segIndex","_ptScaled","MonotoneChainSelectAction","selectedSegment","MCIndexPointSnapper","snap","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","isNodeAdded","_isNodeAdded","_parentEdge","_hotPixelVertexIndex","_hotPixel","InteriorIntersectionFinderAdder","_interiorIntersections","getInteriorIntersections","MCIndexSnapRounder","checkCorrectness","inputSegmentStrings","resultSegStrings","nv","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","_pointSnapper","snapPts","snapPt","_pm","BufferOp","bufferOp","gBuf","geomBuf","bufOp","params","precisionScaleFactor","maxPrecisionDigits","envMax","expandByDistance","bufEnvMax","bufEnvPrecisionDigits","minUnitLog10","bufferFixedPrecision","fixedPM","bufBuilder","_resultGeometry","_argGeom","bufferReducedPrecision","precDigits","MAX_PRECISION_DIGITS","_saveException","precisionDigits","sizeBasedScaleFactor","computeGeometry","bufferOriginalPrecision","argPM","CAP_BUTT","GeometryLocation","isInsideArea","_segIndex","INSIDE_AREA","getGeometryComponent","_component","ConnectedElementLocationFilter","locations","_locations","DistanceOp","distOp","isWithinDistance","envDist","nearestPoints","computeContainmentDistance","locPtPoly","_terminateDistance","polyGeomIndex","polyGeom","locationsIndex","polys","insideLocs","_minDistanceLocation","locs","ptLoc","computeMinDistanceLinesPoints","locGeom","computeMinDistance","computeFacetDistance","lines0","lines1","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPts","coord0","segClosestPoint","line0","line1","points0","points1","pt1","terminateDistance","EdgeString","forwardDirectedEdges","reverseDirectedEdges","coordinateList","_directedEdges","directedEdge","getEdgeDirection","getLine","getComponentWithVisitedState","visitedState","visited","setMarked","marked","setContext","toEdges","isRemoved","_from","_angle","getDirectionPt","getAngle","getFromNode","setEdge","getToNode","_to","_edgeDirection","from","to","directionPt","edgeDirection","LineMergeDirectedEdge","getOutEdges","_dirEdge","setDirectedEdges","addOutEdge","getDirEdge","fromNode","getOppositeNode","getNextEdge","_outEdges","sortEdges","_sorted","getNextCWEdge","modi","getEdgesBetween","node0","node1","commonEdges","retainAll","_deStar","deStar","LineMergeEdge","_line","findNodesOfDegree","nodesFound","nodeIterator","dirEdgeIterator","_dirEdges","edgeIterator","outEdges","findNode","LineMergeGraph","startCoordinate","endCoordinate","endNode","directedEdge0","directedEdge1","LineMerger","buildEdgeStringsForUnprocessedNodes","buildEdgeStringsStartingAt","buildEdgeStringsForNonDegree2Nodes","buildEdgeStringsForObviousStartNodes","getMergedLineStrings","_mergedLineStrings","_edgeStrings","buildEdgeStringStartingWith","buildEdgeStringsForIsolatedLoops","edgeString","current","LineStringSnapper","snapVertices","srcCoords","_isClosed","srcPt","snapVert","findSnapForVertex","_snapTolerance","snapTo","_srcPts","snapSegments","distinctPtCount","findSegmentIndexToSnap","snapIndex","_allowSnappingToSourceVertices","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","srcLine","snapTolerance","srcPts","GeometrySnapper","snapGeom","snapper0","snapper1","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","fixedSnapTol","minDimension","snapTol","SNAP_PRECISION_FACTOR","snapToSelf","cleanResult","extractTargetCoordinates","snapTrans","SnapTransformer","_srcGeom","snappedGeom","computeSnapTolerance","ringPts","minSegLen","computeMinimumSegmentLength","ptSet","segLen","srcGeom","snapLine","snapper","_isSelfSnap","_snapPts","isSelfSnap","BasicSegmentString","InteriorIntersectionFinder","createAllIntersectionsFinder","setFindAllIntersections","createAnyIntersectionFinder","createIntersectionCounter","setKeepIntersections","getInteriorIntersection","_interiorIntersection","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","_isCheckEndSegmentsOnly","getIntersectionSegments","_intSegments","_intersectionCount","getIntersections","_intersections","findAllIntersections","_findAllIntersections","keepIntersections","_keepIntersections","isEndSegPresent","isEndSegment","FastNodingValidator","execute","_isValid","getErrorMessage","intSegs","EdgeNodingValidator","toSegmentStrings","validator","_nv","LineBuilder","collectLines","opCode","_op","getGraph","collectLineEdge","_lineEdgesList","collectBoundaryTouchEdge","labelIsolatedLine","targetIndex","getArgGeometry","_resultLineList","OverlayOp","isResultOfOp","isCoveredByA","labelIsolatedLines","edgesList","INTERSECTION","ptLocator","PointBuilder","filterCoveredNodeToPoint","isCoveredByLA","_resultPointList","extractNonCoveredResultNodes","CommonBits","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","numBits","signExpBits","numSignExp","numCommonMostSigMantissaBits","zeroLowerBits","numStr","padStr","bitStr","getBit","nBits","prop","num1","num2","CommonBitsRemover","addCommonBits","Translater","_commonCoord","removeCommonBits","invCoord","getCommonCoordinate","_ccFilter","CommonCoordinateFilter","_commonBitsX","_commonBitsY","SnapOverlayOp","overlayOp","UNION","symDifference","SYMDIFFERENCE","difference","DIFFERENCE","selfSnap","_cbr","remGeom","prepareResult","prepGeom","SnapIfNeededOverlayOp","isSuccess","savedException","GeometryGraphOperation","_arg","setComputationPrecision","_resultPrecisionModel","geom1","gov","geomOv","createEmptyResult","resultDimension","dim0","dim1","overlayOpCode","loc0","loc1","cancelDuplicateResultEdges","_resultPolyList","resultPointList","resultLineList","opcode","replaceCollapsedEdges","newEdges","updateNodeLabelling","computeOverlay","_resultGeom","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","lineBuilder","pointBuilder","labelIncompleteNode","graphNode","newNode","ni","nodeCount","PolygonizeDirectedEdge","setRing","getRing","PolygonizeEdge","ConnectedInteriorTester","findDifferentPoint","visitInteriorRing","intDe","visitLinkedDirectedEdges","visitShellInteriors","_disconnectedRingcoord","setInteriorEdgesInResult","startDe","buildEdgeRings","hasUnvisitedShellEdge","isInteriorsConnected","_geomGraph","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","isNodeEdgeAreaLabelsConsistent","_nodeGraph","hasDuplicateRings","eeb","isNodeConsistentArea","intersector","IndexedNestedRingTester","buildIndex","_rings","getNestedPoint","_nestedPt","isNonNested","innerRing","innerRingPts","results","searchRing","searchRingPts","innerRingPt","IsValidOp","findPtNotNode","isInside","_totalEnv","TopologyValidationError","getErrorType","_errorType","getMessage","errMsg","locStr","errorType","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","testCoords","searchEdge","isValidOp","checkInvalidCoordinates","_validErr","checkHolesNotNested","nestedTester","innerHole","checkConsistentArea","cat","isValidArea","_parentGeometry","checkShellInsideHole","shellPts","holePts","shellPt","insideHole","holePt","insideShell","checkNoSelfIntersectingRings","checkNoSelfIntersectingRing","checkConnectedInteriors","cit","nodeSet","isFirst","checkHolesInShell","pir","outside","checkTooFewPoints","getValidationError","checkClosedRing","checkClosedRings","_isSelfTouchingRingFormingHoleValid","checkShellsNotNested","setSelfTouchingRingFormingHoleValid","checkShellNotNested","polyShell","insidePolyShell","badNestedPt","parentGeometry","findDirEdgesInRing","startDE","minShellEnv","tryShellRing","tryShellEnv","isIncluded","_isIncluded","_ringPts","_deList","isIncludedSet","_isIncludedSet","isOuterHole","hasShell","getPolygon","isProcessed","_isProcessed","holeER","setIncluded","getOuterHole","adjRing","computeHole","isOuterShell","getLineString","updateIncluded","adjShell","setProcessed","EnvelopeComparator","r0","r1","_lowestEdge","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","toNode","Polygonizer","findOuterShells","outerHoleER","extractPolygons","includeAll","polyList","assignHolesToShells","holeList","assignHoleToShell","findDisjointShells","isMoreToScan","polygonize","_extractOnlyPolygonal","_polyList","getInvalidRingLines","_invalidRingLines","findValidRings","validEdgeRingList","invalidRingList","_dangles","_cutEdges","_isCheckingRingsValid","findShellsAndHoles","_holeList","getDangles","getCutEdges","_lineStringAdder","setCheckRingsValid","isCheckingRingsValid","LineStringAdder","extractOnlyPolygonal","RelateComputer","computeProperIntersectionIM","dimA","dimB","hasProper","hasProperInterior","labelIsolatedEdges","thisIndex","labelIsolatedEdge","_isolatedEdges","target","computeDisjointIM","labelIsolatedNodes","ee0","ee1","labelNodeEdges","labelIntersectionNodes","labelIsolatedNode","ga","gb","_im","arg","RectangleContains","rectangle","rc","isContainedInBoundary","isPointContainedInBoundary","isLineStringContainedInBoundary","isLineSegmentContainedInBoundary","_rectEnv","RectangleLineIntersector","segEnv","isSegUpwards","_diagDown0","_diagDown1","_diagUp0","_diagUp1","rectEnv","RectangleIntersects","rp","EnvelopeIntersectsVisitor","ecpVisitor","GeometryContainsPointVisitor","_rectangle","riVisitor","RectangleIntersectsSegmentVisitor","_intersects","elementEnv","_containsPoint","rectPt","_rectSeq","checkIntersectionWithLineStrings","testLine","checkIntersectionWithSegments","seq1","_rectIntersector","RelateOp","getIntersectionMatrix","touches","relate","relOp","crosses","_relate","PointGeometryUnion","pointGeom","unioner","exteriorCoords","_pointGeom","_otherGeom","ptComp","CascadedPolygonUnion","restrictToPolygons","reduceToGeometries","geomTree","unionTree","extractByEnvelope","disjointGeoms","intersectingGeoms","elem","unionOptimized","g0Env","g1Env","combo","unionActual","commonEnv","unionUsingEnvelopeIntersection","_inputPolys","STRTREE_NODE_CAPACITY","itemTree","unionAll","binaryUnion","unionSafe","repeatedUnion","common","disjointPolys","g0Int","g1Int","overallUnion","bufferUnion","gColl","UnaryUnionOp","unionNoOpt","unionWithNull","_polygons","unionPoints","ptGeom","unionLines","lineGeom","unionPolygons","unionLA","PrecisionReducerCoordinateOperation","reducedCoords","_targetPM","noRepeatedCoordList","noRepeatedCoords","minLength","collapsedCoords","_removeCollapsed","targetPM","removeCollapsed","GeometryPrecisionReducer","reducer","reducePointwise","setPointwise","fixPolygonalTopology","geomToBuffer","_changePrecisionModel","changePM","bufGeom","finalGeom","geomEdit","newFactory","createFactory","finalRemoveCollapsed","reduceGeom","newPM","geomEditor","createEditor","setRemoveCollapsedComponents","inputFactory","setChangePrecisionModel","changePrecisionModel","reducePW","_isPointwise","isPointwise","DouglasPeuckerLineSimplifier","simplifySection","_usePt","DouglasPeuckerSimplifier","tss","setEnsureValid","isEnsureValidTopology","_isEnsureValidTopology","DPTransformer","rawGeom","rawAreaGeom","removeDegenerateRings","simpResult","TaggedLineSegment","getParent","TaggedLineString","segs","addToResult","_resultSegs","asLineString","_parentLine","getResultSize","resultSegsSize","getSegment","_segs","getParentCoordinates","getMinimumSize","_minimumSize","asLinearRing","getSegments","getResultCoordinates","parentLine","minimumSize","LineSegmentIndex","querySeg","LineSegmentVisitor","itemsFound","_querySeg","TaggedLineStringSimplifier","isInLineSection","sectionIndex","flatten","_linePts","newSeg","_outputIndex","hasBadIntersection","candidateSeg","hasBadOutputIntersection","hasBadInputIntersection","isValidToSimplify","worstCaseSize","furthestPtIndex","findFurthestPoint","querySegs","maxDist","midPt","_inputIndex","inputIndex","outputIndex","TaggedLinesSimplifier","taggedLines","tlss","TopologyPreservingSimplifier","_linestringMap","LineStringMapBuilderFilter","_lineSimplifier","LineStringTransformer","taggedLine","linestringMap","minSize","tps","VWLineSimplifier","simplifyVertex","vwLine","curr","minArea","minVertex","isLive","VWVertex","first","v","setPrev","updateArea","_area","_prev","MAX_AREA","tmpPrev","tmpNext","_isLive","VWSimplifier","VWTransformer","SplitSegment","pointAlongReverse","splitAt","minFrac","_minimumLen","_segLen","_splitPt","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","toPoint","isInCircleDDFast","aTerm","triAreaDDFast","bTerm","cTerm","pTerm","cc","ccRadius","pRadiusDiff","isInCircleNormalized","triAreaDDSlow","isInCircleRobust","t1","t2","Vertex","ptLen","pz","circleCenter","cab","cbc","hcc","nre","err","dot","magn","getZ","interpolateZValue","xm","ym","zm","crossProduct","setZ","_z","times","cross","classify","sa","BEHIND","BEYOND","ORIGIN","DESTINATION","BETWEEN","circumRadiusRatio","edgeLength","el","ConstraintVertex","getConstraint","_constraint","setOnConstraint","isOnConstraint","_isOnConstraint","setConstraint","constraint","QuadEdge","makeEdge","q0","q3","_rot","setOrig","setDest","oPrev","lNext","rot","beta","t3","t4","connect","equalsNonOriented","qe","equalsOriented","toLineSegment","_vertex","dNext","lPrev","rPrev","invRot","delete","rNext","getPrimary","dPrev","IncrementalDelaunayTriangulator","insertSite","_subdiv","isVertexOfEdge","isOnEdge","insertSites","vertices","_isUsingTolerance","subdiv","getTolerance","QuadEdgeLocator","LastFoundQuadEdgeLocator","_lastEdge","locateFromEdge","LocateFailureException","msgWithSpatial","TriangleVisitor","triEdges","QuadEdgeSubdivision","getTriangleEdges","startQE","triEdge","getTriangleVertices","includeFrame","TriangleVertexListVisitor","visitTriangles","isFrameVertex","_frameVertex","_quadEdges","getVoronoiCellPolygon","cellPts","cellPoly","setLocator","locator","_locator","initSubdiv","ea","ec","isFrameBorderEdge","leftTri","rightTri","vLeftTriOther","vRightTriOther","triVisitor","_visitedKey","edgeStack","_startingEdge","visitedEdges","fetchTriangleToVisit","isFrameEdge","_edgeCoincidenceTolerance","_frameEnv","createFrame","getTriangleCoordinates","TriangleCoordinatesVisitor","getTriangles","getVertices","vd","edgeCount","isFrame","_triEdges","quadEdges","getPrimaryEdges","getVertexUniqueEdges","visitedVertices","qd","TriangleEdgesListVisitor","priQE","eSym","eRot","eRotSym","iter","maxIter","getVoronoiCellPolygons","TriangleCircumcentreVisitor","cells","getVoronoiDiagram","vorCells","triPtsList","tris","triPt","locEdge","ccVertex","_triList","checkTriangleSize","_coordList","_triCoords","EDGE_COINCIDENCE_TOL_FACTOR","Segment","_ls","getEndZ","getStartZ","getStart","getEnd","getEndY","getStartX","getStartY","getEndX","z1","z2","ConformingDelaunayTriangulator","computeVertexEnvelope","getInitialVertices","_initialVertices","getKDT","_kdt","enforceConstraints","addConstraintVertices","splits","enforceGabriel","_segments","MAX_SPLIT_ITER","getVertexFactory","_vertexFactory","getPointArray","_segVertices","setConstraints","segments","segVertices","computeConvexHull","hull","_convexHull","findNonGabrielPoint","segRadius","closestNonGabriel","nextNode","testRadius","testDist","getConstraintSegments","setSplitPointFinder","splitFinder","_splitFinder","segsToInsert","newSegments","segsToRemove","splitVertex","createVertex","insertedVertex","getSubdivision","computeBoundingBox","vertexEnv","allPointsEnv","_computeAreaEnv","setVertexFactory","vertexFactory","formInitialDelaunay","_incDel","kdnode","snappedV","initialVertices","DelaunayTriangulationBuilder","extractUniqueCoordinates","unique","coordsCopy","toVertices","verts","siteEnv","_siteCoords","triangulator","setTolerance","setSites","ConformingDelaunayTriangulationBuilder","createConstraintSegments","constraintSegs","createSiteVertices","_constraintVertexMap","_constraintLines","createVertices","sites","cdt","constraintLines","VoronoiDiagramBuilder","clipGeometryCollection","clipEnv","clipPoly","clipped","_diagramEnv","_clipEnv","getDiagram","setClipEnvelope","LinearLocation","getEndLocation","linear","setToEnd","pointAlongSegmentByFraction","compareLocationValues","componentIndex0","segmentIndex0","segmentFraction0","componentIndex1","segmentIndex1","segmentFraction1","_segmentIndex","getComponentIndex","_componentIndex","isEndpoint","linearGeom","lineComp","nseg","_segmentFraction","toLowest","getSegmentFraction","lastLine","isOnSameSegment","snapToVertex","getSegmentLength","lenToStart","lenToEnd","isVertex","componentIndex","doNormalize","LinearIterator","segmentEndVertexIndex","_currentLine","getVertexIndex","_vertexIndex","getSegmentEnd","loadCurrentLine","_numLines","_linearGeom","getSegmentStart","isEndOfLine","LocationIndexOfPoint","indexOfAfter","minIndex","indexOfFromStart","minComponentIndex","minSegmentIndex","segDistance","candidateComponentIndex","candidateSegmentIndex","endLoc","closestAfter","LocationIndexOfLine","indicesOf","subLine","locPt","subLineLoc","LinearGeometryBuilder","endLine","getLastCoordinate","_lastPt","_ignoreInvalidLines","rawPts","_fixInvalidLines","validCoordinateSequence","setFixInvalidLines","fixInvalidLines","allowRepeatedPoints","setIgnoreInvalidLines","ignoreInvalidLines","validPts","ExtractLineByLocation","computeLinear","computeLine","startSegmentIndex","lastSegmentIndex","newCoordinateArray","LocationIndexedLine","clampIndex","checkGeometryType","extractPoint","indexLow","isValidIndex","extractLine","LengthIndexOfPoint","ptMeasure","segmentStartMeasure","segMeasureToPt","segmentNearestMeasure","projFactor","LengthLocationMap","resolveLower","totalLength","resolveHigher","compIndex","forwardLength","getLocationForward","LengthIndexedLine","positiveIndex","locationOf","locLow","lil","startIndex2","endIndex2","resolveStartLower","CollectionUtil","func","Boolean","Function","CoordinateArrayFilter","CoordinateCountFilter","_n","ObjectCounter","_counts","UnionOp","coveredBy","within","disjoint","args","intersectionPattern","centPt","interiorPt","toText","writer","version"],"mappings":"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"}