{"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/lang/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/CoordinateSequenceFilter.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/lang/UnsupportedOperationException.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/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/planargraph/Subgraph.js","../src/org/locationtech/jts/planargraph/algorithm/ConnectedSubgraphFinder.js","../src/org/locationtech/jts/operation/linemerge/LineSequencer.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 '../lang/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","export default class CoordinateSequenceFilter {\n constructor () {\n CoordinateSequenceFilter.constructor_.apply(this, arguments)\n }\n\n filter (seq, i) {}\n isDone () {}\n isGeometryChanged () {}\n getClass () {\n return CoordinateSequenceFilter\n }\n\n get interfaces_ () {\n return []\n }\n}\nCoordinateSequenceFilter.constructor_ = function () {}\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 size () {}\n getOrdinate (index, ordinateIndex) {}\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 getDimension () {}\n getX (index) {}\n expandEnvelope (env) {}\n copy () {}\n getY (index) {}\n toCoordinateArray () {}\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 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 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 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 UnsupportedOperationException (message) {\n this.message = message || ''\n};\nUnsupportedOperationException.prototype = new Error()\n\n/**\n * @type {string}\n */\nUnsupportedOperationException.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 UnsupportedOperationException from '../lang/UnsupportedOperationException'\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 UnsupportedOperationException()\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 UnsupportedOperationException()\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 UnsupportedOperationException from '../lang/UnsupportedOperationException'\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 UnsupportedOperationException()\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 UnsupportedOperationException()\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 getClass () {\n return GeometryFilter\n }\n\n get interfaces_ () {\n return []\n }\n}\nGeometryFilter.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 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 UnsupportedOperationException from '../../../../java/lang/UnsupportedOperationException'\nimport ArrayList from '../../../../java/util/ArrayList'\nimport RuntimeException from '../../../../java/lang/RuntimeException'\nimport Assert from '../util/Assert'\nimport TreeMap from '../../../../java/util/TreeMap'\nexport default class SegmentNodeList {\n constructor () {\n SegmentNodeList.constructor_.apply(this, arguments)\n }\n\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 size () {}\n getCoordinate (i) {}\n isClosed () {}\n setData (data) {}\n getData () {}\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 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 getNodedSubstrings () {}\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 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 UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException'\nimport CoordinateArrays from '../../geom/CoordinateArrays'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Distance from '../../algorithm/Distance'\nimport MultiLineString from '../../geom/MultiLineString'\nimport Triangle from '../../geom/Triangle'\nexport default class OffsetCurveSetBuilder {\n constructor () {\n OffsetCurveSetBuilder.constructor_.apply(this, arguments)\n }\n\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 isDone () {}\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 HashSet from '../../../../java/util/HashSet'\nimport NodeMap from './NodeMap'\nimport ArrayList from '../../../../java/util/ArrayList'\nexport default class Subgraph {\n constructor () {\n Subgraph.constructor_.apply(this, arguments)\n }\n\n dirEdgeIterator () {\n return this._dirEdges.iterator()\n }\n\n edgeIterator () {\n return this._edges.iterator()\n }\n\n getParent () {\n return this._parentGraph\n }\n\n nodeIterator () {\n return this._nodeMap.iterator()\n }\n\n contains (e) {\n return this._edges.contains(e)\n }\n\n add (e) {\n if (this._edges.contains(e)) return null\n this._edges.add(e)\n this._dirEdges.add(e.getDirEdge(0))\n this._dirEdges.add(e.getDirEdge(1))\n this._nodeMap.add(e.getDirEdge(0).getFromNode())\n this._nodeMap.add(e.getDirEdge(1).getFromNode())\n }\n\n getClass () {\n return Subgraph\n }\n\n get interfaces_ () {\n return []\n }\n}\nSubgraph.constructor_ = function () {\n this._parentGraph = null\n this._edges = new HashSet()\n this._dirEdges = new ArrayList()\n this._nodeMap = new NodeMap()\n const parentGraph = arguments[0]\n this._parentGraph = parentGraph\n}\n","import Stack from '../../../../../java/util/Stack'\nimport Subgraph from '../Subgraph'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport GraphComponent from '../GraphComponent'\nexport default class ConnectedSubgraphFinder {\n constructor () {\n ConnectedSubgraphFinder.constructor_.apply(this, arguments)\n }\n\n addReachable (startNode, subgraph) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.addEdges(node, nodeStack, subgraph)\n }\n }\n\n findSubgraph (node) {\n const subgraph = new Subgraph(this._graph)\n this.addReachable(node, subgraph)\n return subgraph\n }\n\n getConnectedSubgraphs () {\n const subgraphs = new ArrayList()\n GraphComponent.setVisited(this._graph.nodeIterator(), false)\n for (let i = this._graph.edgeIterator(); i.hasNext();) {\n const e = i.next()\n const node = e.getDirEdge(0).getFromNode()\n if (!node.isVisited()) {\n subgraphs.add(this.findSubgraph(node))\n }\n }\n return subgraphs\n }\n\n addEdges (node, nodeStack, subgraph) {\n node.setVisited(true)\n for (let i = node.getOutEdges().iterator(); i.hasNext();) {\n const de = i.next()\n subgraph.add(de.getEdge())\n const toNode = de.getToNode()\n if (!toNode.isVisited()) nodeStack.push(toNode)\n }\n }\n\n getClass () {\n return ConnectedSubgraphFinder\n }\n\n get interfaces_ () {\n return []\n }\n}\nConnectedSubgraphFinder.constructor_ = function () {\n this._graph = null\n const graph = arguments[0]\n this._graph = graph\n}\n","import TreeSet from '../../../../../java/util/TreeSet'\nimport LineString from '../../geom/LineString'\nimport Geometry from '../../geom/Geometry'\nimport hasInterface from '../../../../../hasInterface'\nimport GeometryFactory from '../../geom/GeometryFactory'\nimport Collection from '../../../../../java/util/Collection'\nimport Coordinate from '../../geom/Coordinate'\nimport Integer from '../../../../../java/lang/Integer'\nimport LineMergeGraph from './LineMergeGraph'\nimport LinkedList from '../../../../../java/util/LinkedList'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport ConnectedSubgraphFinder from '../../planargraph/algorithm/ConnectedSubgraphFinder'\nimport Assert from '../../util/Assert'\nimport MultiLineString from '../../geom/MultiLineString'\nimport GraphComponent from '../../planargraph/GraphComponent'\nexport default class LineSequencer {\n constructor () {\n LineSequencer.constructor_.apply(this, arguments)\n }\n\n static findUnvisitedBestOrientedDE (node) {\n let wellOrientedDE = null\n let unvisitedDE = null\n for (let i = node.getOutEdges().iterator(); i.hasNext();) {\n const de = i.next()\n if (!de.getEdge().isVisited()) {\n unvisitedDE = de\n if (de.getEdgeDirection()) wellOrientedDE = de\n }\n }\n if (wellOrientedDE !== null) return wellOrientedDE\n return unvisitedDE\n }\n\n static findLowestDegreeNode (graph) {\n let minDegree = Integer.MAX_VALUE\n let minDegreeNode = null\n for (let i = graph.nodeIterator(); i.hasNext();) {\n const node = i.next()\n if (minDegreeNode === null || node.getDegree() < minDegree) {\n minDegree = node.getDegree()\n minDegreeNode = node\n }\n }\n return minDegreeNode\n }\n\n static isSequenced (geom) {\n if (!(geom instanceof MultiLineString)) {\n return true\n }\n const mls = geom\n const prevSubgraphNodes = new TreeSet()\n let lastNode = null\n const currNodes = new ArrayList()\n for (let i = 0; i < mls.getNumGeometries(); i++) {\n const line = mls.getGeometryN(i)\n const startNode = line.getCoordinateN(0)\n const endNode = line.getCoordinateN(line.getNumPoints() - 1)\n if (prevSubgraphNodes.contains(startNode)) return false\n if (prevSubgraphNodes.contains(endNode)) return false\n if (lastNode !== null) {\n if (!startNode.equals(lastNode)) {\n prevSubgraphNodes.addAll(currNodes)\n currNodes.clear()\n }\n }\n currNodes.add(startNode)\n currNodes.add(endNode)\n lastNode = endNode\n }\n return true\n }\n\n static reverse (line) {\n const pts = line.getCoordinates()\n const revPts = new Array(pts.length).fill(null)\n const len = pts.length\n for (let i = 0; i < len; i++) {\n revPts[len - 1 - i] = new Coordinate(pts[i])\n }\n return line.getFactory().createLineString(revPts)\n }\n\n static sequence (geom) {\n const sequencer = new LineSequencer()\n sequencer.add(geom)\n return sequencer.getSequencedLineStrings()\n }\n\n addLine (lineString) {\n if (this._factory === null) {\n this._factory = lineString.getFactory()\n }\n this._graph.addEdge(lineString)\n this._lineCount++\n }\n\n hasSequence (graph) {\n let oddDegreeCount = 0\n for (let i = graph.nodeIterator(); i.hasNext();) {\n const node = i.next()\n if (node.getDegree() % 2 === 1) oddDegreeCount++\n }\n return oddDegreeCount <= 2\n }\n\n computeSequence () {\n if (this._isRun) {\n return null\n }\n this._isRun = true\n const sequences = this.findSequences()\n if (sequences === null) return null\n this._sequencedGeometry = this.buildSequencedGeometry(sequences)\n this._isSequenceable = true\n const finalLineCount = this._sequencedGeometry.getNumGeometries()\n Assert.isTrue(this._lineCount === finalLineCount, 'Lines were missing from result')\n Assert.isTrue(this._sequencedGeometry instanceof LineString || this._sequencedGeometry instanceof MultiLineString, 'Result is not lineal')\n }\n\n findSequences () {\n const sequences = new ArrayList()\n const csFinder = new ConnectedSubgraphFinder(this._graph)\n const subgraphs = csFinder.getConnectedSubgraphs()\n for (let i = subgraphs.iterator(); i.hasNext();) {\n const subgraph = i.next()\n if (this.hasSequence(subgraph)) {\n const seq = this.findSequence(subgraph)\n sequences.add(seq)\n } else {\n return null\n }\n }\n return sequences\n }\n\n addReverseSubpath (de, lit, expectedClosed) {\n const endNode = de.getToNode()\n let fromNode = null\n while (true) {\n lit.add(de.getSym())\n de.getEdge().setVisited(true)\n fromNode = de.getFromNode()\n const unvisitedOutDE = LineSequencer.findUnvisitedBestOrientedDE(fromNode)\n if (unvisitedOutDE === null) break\n de = unvisitedOutDE.getSym()\n }\n if (expectedClosed) {\n Assert.isTrue(fromNode === endNode, 'path not contiguous')\n }\n }\n\n findSequence (graph) {\n GraphComponent.setVisited(graph.edgeIterator(), false)\n const startNode = LineSequencer.findLowestDegreeNode(graph)\n const startDE = startNode.getOutEdges().iterator().next()\n const startDESym = startDE.getSym()\n const seq = new LinkedList()\n const lit = seq.listIterator()\n this.addReverseSubpath(startDESym, lit, false)\n while (lit.hasPrevious()) {\n const prev = lit.previous()\n const unvisitedOutDE = LineSequencer.findUnvisitedBestOrientedDE(prev.getFromNode())\n if (unvisitedOutDE !== null) this.addReverseSubpath(unvisitedOutDE.getSym(), lit, true)\n }\n const orientedSeq = this.orient(seq)\n return orientedSeq\n }\n\n reverse (seq) {\n const newSeq = new LinkedList()\n for (let i = seq.iterator(); i.hasNext();) {\n const de = i.next()\n newSeq.addFirst(de.getSym())\n }\n return newSeq\n }\n\n orient (seq) {\n const startEdge = seq.get(0)\n const endEdge = seq.get(seq.size() - 1)\n const startNode = startEdge.getFromNode()\n const endNode = endEdge.getToNode()\n let flipSeq = false\n const hasDegree1Node = startNode.getDegree() === 1 || endNode.getDegree() === 1\n if (hasDegree1Node) {\n let hasObviousStartNode = false\n if (endEdge.getToNode().getDegree() === 1 && endEdge.getEdgeDirection() === false) {\n hasObviousStartNode = true\n flipSeq = true\n }\n if (startEdge.getFromNode().getDegree() === 1 && startEdge.getEdgeDirection() === true) {\n hasObviousStartNode = true\n flipSeq = false\n }\n if (!hasObviousStartNode) {\n if (startEdge.getFromNode().getDegree() === 1) flipSeq = true\n }\n }\n if (flipSeq) return this.reverse(seq)\n return seq\n }\n\n buildSequencedGeometry (sequences) {\n const lines = new ArrayList()\n for (let i1 = sequences.iterator(); i1.hasNext();) {\n const seq = i1.next()\n for (let i2 = seq.iterator(); i2.hasNext();) {\n const de = i2.next()\n const e = de.getEdge()\n const line = e.getLine()\n let lineToAdd = line\n if (!de.getEdgeDirection() && !line.isClosed()) lineToAdd = LineSequencer.reverse(line)\n lines.add(lineToAdd)\n }\n }\n if (lines.size() === 0) return this._factory.createMultiLineString(new Array(0).fill(null))\n return this._factory.buildGeometry(lines)\n }\n\n getSequencedLineStrings () {\n this.computeSequence()\n return this._sequencedGeometry\n }\n\n isSequenceable () {\n this.computeSequence()\n return this._isSequenceable\n }\n\n add () {\n if (hasInterface(arguments[0], Collection)) {\n const geometries = arguments[0]\n for (let i = geometries.iterator(); i.hasNext();) {\n const geometry = i.next()\n this.add(geometry)\n }\n } else if (arguments[0] instanceof Geometry) {\n const geometry = arguments[0]\n geometry.apply(new (class {\n get interfaces_ () {\n return [GeometryComponentFilter]\n }\n\n filter (component) {\n if (component instanceof LineString) {\n this.addLine(component)\n }\n }\n })())\n }\n }\n\n getClass () {\n return LineSequencer\n }\n\n get interfaces_ () {\n return []\n }\n}\nLineSequencer.constructor_ = function () {\n this._graph = new LineMergeGraph()\n this._factory = new GeometryFactory()\n this._lineCount = 0\n this._isRun = false\n this._sequencedGeometry = null\n this._isSequenceable = false\n}\n","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 UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException'\nimport IndexedNestedRingTester from './IndexedNestedRingTester'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector'\nimport TopologyValidationError from './TopologyValidationError'\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator'\nimport Assert from '../../util/Assert'\nexport default class IsValidOp {\n constructor () {\n IsValidOp.constructor_.apply(this, arguments)\n }\n\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 equalsTopo (g1, g2) {\n if (!g1.getEnvelopeInternal().equals(g2.getEnvelopeInternal())) return false\n return RelateOp.relate(g1, g2).isEquals(g1.getDimension(), g2.getDimension())\n }\n\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 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 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 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","CoordinateSequenceFilter","filter","seq","isDone","isGeometryChanged","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","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","UnsupportedOperationException","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","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","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","Subgraph","getParent","_parentGraph","parentGraph","ConnectedSubgraphFinder","findSubgraph","getConnectedSubgraphs","toNode","LineSequencer","findUnvisitedBestOrientedDE","wellOrientedDE","unvisitedDE","findLowestDegreeNode","minDegree","minDegreeNode","isSequenced","mls","prevSubgraphNodes","currNodes","revPts","sequence","sequencer","getSequencedLineStrings","_lineCount","hasSequence","oddDegreeCount","computeSequence","_isRun","sequences","findSequences","_sequencedGeometry","buildSequencedGeometry","_isSequenceable","finalLineCount","csFinder","findSequence","addReverseSubpath","lit","expectedClosed","unvisitedOutDE","startDE","startDESym","listIterator","hasPrevious","previous","orientedSeq","newSeq","addFirst","endEdge","flipSeq","hasDegree1Node","hasObviousStartNode","lineToAdd","isSequenceable","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","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","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","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","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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"}