{"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/PointLocator.js","../src/org/locationtech/jts/noding/Octant.js","../src/org/locationtech/jts/noding/SegmentString.js","../src/org/locationtech/jts/noding/BasicSegmentString.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/SpatialIndex.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/noding/SegmentPointComparator.js","../src/org/locationtech/jts/noding/SegmentNode.js","../src/org/locationtech/jts/noding/SegmentNodeList.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/geomgraph/Quadrant.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/geom/TopologyException.js","../src/org/locationtech/jts/noding/SegmentIntersector.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/geomgraph/Position.js","../src/org/locationtech/jts/geomgraph/TopologyLocation.js","../src/org/locationtech/jts/geomgraph/Label.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/geomgraph/GraphComponent.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/geomgraph/DirectedEdge.js","../src/org/locationtech/jts/geomgraph/NodeFactory.js","../src/org/locationtech/jts/geomgraph/PlanarGraph.js","../src/org/locationtech/jts/operation/overlay/PolygonBuilder.js","../src/org/locationtech/jts/operation/overlay/LineBuilder.js","../src/org/locationtech/jts/operation/overlay/PointBuilder.js","../src/org/locationtech/jts/operation/overlay/snap/LineStringSnapper.js","../src/org/locationtech/jts/operation/overlay/snap/GeometrySnapper.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/geomgraph/EdgeEndStar.js","../src/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","../src/org/locationtech/jts/operation/overlay/OverlayNodeFactory.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/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/Edge.js","../src/org/locationtech/jts/geomgraph/GeometryGraph.js","../src/org/locationtech/jts/operation/GeometryGraphOperation.js","../src/org/locationtech/jts/noding/OrientedCoordinateArray.js","../src/org/locationtech/jts/geomgraph/EdgeList.js","../src/org/locationtech/jts/operation/overlay/OverlayOp.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/MinimumBoundingCircle.js","../src/org/locationtech/jts/algorithm/MinimumDiameter.js","../src/org/locationtech/jts/densify/Densifier.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/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/quadtree/Quadtree.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/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/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/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/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 class Long {\n high = 0\n low = 0\n constructor (high, low) {\n this.low = low\n this.high = high\n }\n static toBinaryString (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}\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 */\nexport default class Collection {\n /**\n * Ensures that this collection contains the specified element (optional\n * operation).\n * @param {Object} e\n * @return {boolean}\n */\n add () { }\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 */\n addAll () { }\n /**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\n isEmpty () { }\n /**\n * Returns an iterator over the elements in this collection.\n * @return {javascript.util.Iterator}\n */\n iterator () { }\n /**\n * Returns an iterator over the elements in this collection.\n * @return {number}\n */\n size () { }\n /**\n * Returns an array containing all of the elements in this collection.\n * @return {Array}\n */\n toArray () { }\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 */\n remove () { }\n};\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 */\nexport default class List extends Collection {\n /**\n * Returns the element at the specified position in this list.\n * @param {number} index\n * @return {Object}\n */\n get () { }\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 */\n set () { }\n /**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\n isEmpty () { }\n}\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 */\nexport default class ArrayList extends List {\n interfaces_ = [List, Collection]\n #array = []\n\n constructor(o) {\n super()\n if (o instanceof Collection)\n this.addAll(o)\n }\n\n ensureCapacity() { }\n\n add(e) {\n if (arguments.length === 1)\n this.#array.push(e)\n else\n this.#array.splice(arguments[0], 0, arguments[1])\n return true\n }\n\n clear() {\n this.#array = []\n }\n\n addAll(c) {\n for (let i = c.iterator(); i.hasNext();)\n this.add(i.next())\n return true\n }\n\n set(index, element) {\n const oldElement = this.#array[index]\n this.#array[index] = element\n return oldElement\n }\n\n iterator() {\n return new Iterator(this)\n }\n\n get(index) {\n if (index < 0 || index >= this.size())\n throw new IndexOutOfBoundsException()\n return this.#array[index]\n }\n\n isEmpty() {\n return this.#array.length === 0\n }\n\n size() {\n return this.#array.length\n }\n\n toArray() {\n return this.#array.slice()\n }\n\n remove(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\n removeAll(c) {\n for (let i = c.iterator(); i.hasNext();)\n this.remove(i.next())\n return true\n }\n}\n\nclass Iterator {\n #arrayList\n #position = 0\n\n constructor(arrayList) {\n this.#arrayList = arrayList\n }\n\n next() {\n if (this.#position === this.#arrayList.size())\n throw new NoSuchElementException()\n return this.#arrayList.get(this.#position++)\n }\n\n hasNext() {\n return this.#position < this.#arrayList.size()\n }\n\n // TODO: should be in ListIterator\n set(element) {\n return this.#arrayList.set(this.#position - 1, element)\n }\n\n remove() {\n this.#arrayList.remove(this.#arrayList.get(this.#position))\n }\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 class Integer {\n #value\n constructor(value) {\n this.#value = value\n }\n intValue () {\n return this.#value\n }\n compareTo (o) {\n if (this.#value < o) return -1\n if (this.#value > o) return 1\n return 0\n }\n static isNan(n) {\n return Number.isNaN(n)\n }\n}","export default class Character {\n static isWhitespace (c) {\n return ((c <= 32 && c >= 0) || c === 127)\n }\n\n static toUpperCase (c) {\n return c.toUpperCase()\n }\n}\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 class System {\n static 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\n static getProperty (name) {\n return {\n 'line.separator': '\\n'\n }[name]\n }\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 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 isEquivalentClass (other) {\n return this.getClass() === other.getClass()\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 */\nexport default class Map {\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 */\n get () { }\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 */\n put () { }\n\n /**\n * Returns the number of key-value mappings in this map.\n * @return {number}\n */\n size () { }\n\n /**\n * Returns a Collection view of the values contained in this map.\n * @return {javascript.util.Collection}\n */\n values () { }\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 */\n entrySet () { }\n}\n","import Map from './Map'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html\n */\nexport default class SortedMap extends 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 class Set extends Collection {\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 */\n contains () { }\n}\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 */\nexport default class HashSet extends Set {\n array_ = []\n\n constructor(o) {\n super()\n if (o instanceof Collection)\n this.addAll(o)\n }\n\n contains(o) {\n return this.array_.indexOf(o) != -1\n }\n\n add(o) {\n if (this.contains(o))\n return false\n this.array_.push(o)\n return true\n }\n\n addAll(c) {\n for (let i = c.iterator(); i.hasNext();)\n this.add(i.next())\n return true\n }\n\n remove(o) {\n throw new UnsupportedOperationException()\n }\n\n size() {\n return this.array_.length\n }\n\n isEmpty() {\n return this.array_.length === 0\n }\n\n toArray() {\n return this.array_.slice()\n }\n\n iterator() {\n return new Iterator(this)\n }\n};\n\n\nclass Iterator {\n #hashSet\n #position = 0\n\n constructor(hashSet) {\n this.#hashSet = hashSet\n }\n\n next() {\n if (this.#position === this.#hashSet.size())\n throw new NoSuchElementException()\n return this.#hashSet.array_[this.#position++]\n }\n\n hasNext() {\n if (this.#position < this.#hashSet.size())\n return true\n else\n return false\n }\n\n remove() {\n throw new UnsupportedOperationException()\n }\n\n}\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 */\nexport default class TreeMap extends SortedMap {\n #root = null\n #size = 0\n\n get(key) {\n let p = this.#root\n while (p !== null) {\n let 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 put(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 let t = this.#root; let parent; let 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 let oldValue = t.value\n t.value = value\n return oldValue\n }\n } while (t !== null)\n let 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 */\n fixAfterInsertion(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 values() {\n let arrayList = new ArrayList()\n let 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 entrySet() {\n let hashSet = new HashSet()\n let 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 */\n rotateLeft(p) {\n if (p != null) {\n let 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 */\n rotateRight(p) {\n if (p != null) {\n let 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 */\n getFirstEntry() {\n let 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 */\n static successor(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 let ch = t\n while (p !== null && ch === p.right) {\n ch = p\n p = p.parent\n }\n return p\n }\n }\n\n size() {\n return this.#size\n }\n\n containsKey(key) {\n let p = this.#root\n while (p !== null) {\n let 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\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 */\nexport default class SortedSet extends 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 */\nexport default class TreeSet extends SortedSet {\n array_ = []\n\n constructor(o) {\n super()\n if (o instanceof Collection)\n this.addAll(o)\n }\n\n contains(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 add(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 addAll(c) {\n for (let i = c.iterator(); i.hasNext();) {\n this.add(i.next())\n }\n return true\n }\n\n remove(e) {\n throw new UnsupportedOperationException()\n }\n\n size() {\n return this.array_.length\n }\n\n isEmpty() {\n return this.array_.length === 0\n }\n\n toArray() {\n return this.array_.slice()\n }\n\n iterator() {\n return new Iterator(this)\n }\n}\n\nclass Iterator {\n #treeSet\n #position = 0\n\n constructor(treeSet) {\n this.#treeSet = treeSet\n }\n\n next() {\n if (this.#position === this.#treeSet.size())\n throw new NoSuchElementException()\n return this.#treeSet.array_[this.#position++]\n }\n\n hasNext() {\n return this.#position < this.#treeSet.size()\n }\n\n remove() {\n throw new UnsupportedOperationException()\n }\n\n}\n\n","import ArrayList from './ArrayList'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html\n */\nexport default class Arrays {\n static sort () {\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 */\n static asList (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}\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 */\nexport default class HashMap extends MapInterface {\n #map = new Map()\n\n get(key) {\n return this.#map.get(key) || null\n }\n\n put(key, value) {\n this.#map.set(key, value)\n return value\n }\n\n values() {\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 entrySet() {\n const hashSet = new HashSet()\n this.#map.entries().forEach(entry => hashSet.add(entry))\n return hashSet\n }\n\n size() {\n return this.#map.size()\n }\n\n}\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 let geometry, type, str\n wkt = wkt.replace(/[\\n\\r]/g, ' ')\n let 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 const type = geometry.getGeometryType().toLowerCase()\n if (!extract[type]) {\n return null\n }\n const wktType = type.toUpperCase()\n let 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 const 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 const 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 const 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 const 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 const 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 const 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 const 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 const coords = str.trim().split(regExes.spaces)\n const 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 let point\n const points = str.trim().split(',')\n const 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 const points = str.trim().split(',')\n const components = []\n let 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 const points = str.trim().split(',')\n const components = []\n let 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 let line\n const lines = str.trim().split(regExes.parenComma)\n const 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 let ring, linestring, linearring\n const rings = str.trim().split(regExes.parenComma)\n let shell\n const 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 let polygon\n const polygons = str.trim().split(regExes.doubleParenComma)\n const 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 const wktArray = str.trim().split('|')\n const 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 return this.parser.read(wkt)\n }\n}\n","/* eslint-disable no-undef */\n\n/**\n * @module org/locationtech/jts/io/OL3Parser\n */\n\nimport Coordinate from '../geom/Coordinate'\nimport GeometryFactory from '../geom/GeometryFactory'\n\nfunction p2c (p) { 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 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 class LinkedList {\n #array = []\n addLast (e) {\n this.#array.push(e)\n }\n removeFirst () {\n return this.#array.shift()\n }\n isEmpty () {\n return this.#array.length === 0\n }\n}\n","import HashSet from '../../../../../java/util/HashSet'\nimport Position from '../../geomgraph/Position'\nimport Stack from '../../../../../java/util/Stack'\nimport RightmostEdgeFinder from './RightmostEdgeFinder'\nimport TopologyException from '../../geom/TopologyException'\nimport LinkedList from '../../../../../java/util/LinkedList'\nimport Comparable from '../../../../../java/lang/Comparable'\nimport ArrayList from '../../../../../java/util/ArrayList'\nimport Envelope from '../../geom/Envelope'\nexport default class BufferSubgraph {\n constructor () {\n BufferSubgraph.constructor_.apply(this, arguments)\n }\n\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 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 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 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'\nimport OverlayOp from '../operation/overlay/OverlayOp'\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 = OverlayOp.intersection(clipPoly, g)\n result.setUserData(g.getUserData())\n }\n if (result !== null && !result.isEmpty()) {\n clipped.add(result)\n }\n }\n return geom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(clipped))\n }\n\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 return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.equals = function (g) {\n if (g instanceof Geometry) {\n if (g === null) return false\n return RelateOp.equalsTopo(this, g)\n } else if (g instanceof Object) {\n if (!(g instanceof Geometry)) return false\n const g = o\n return this.equalsExact(g)\n }\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}\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","ensureCapacity","push","splice","clear","hasNext","next","index","element","oldElement","Iterator","slice","found","len","removeAll","arrayList","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","isNan","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","equalsExact","geometryChanged","geometryChangedFilter","geometryChangedAction","_envelope","equalsNorm","g","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","isEquivalentClass","isGeometryCollectionOrDerived","TYPECODE_MULTIPOINT","TYPECODE_MULTILINESTRING","TYPECODE_MULTIPOLYGON","hasNonEmptyElements","geometries","hasNullElements","array","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","array_","hashSet","BLACK","RED","colorOf","color","parentOf","parent","setColor","leftOf","left","rightOf","right","TreeMap","key","cmp","getValue","getKey","oldValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","l","containsKey","Lineal","SortedSet","TreeSet","treeSet","Arrays","sort","comparator","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","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","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","equalsTopo","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","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","PointLocator","locateInPolygonRing","updateLocationInfo","_isIn","_numBoundaries","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","ml","mpoly","ptCoord","_boundaryRule","boundaryRule","Octant","octant","adx","ady","SegmentString","setData","getData","BasicSegmentString","getSegmentOctant","_data","Boundable","getBounds","ItemBoundable","getItem","_bounds","bounds","PriorityQueue","poll","minItem","_size","reorder","child","SpatialIndex","itemEnv","AbstractNode","getLevel","_childBoundables","getChildBoundables","addChildBoundable","childBoundable","computeBounds","level","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","nodes","build","removeItem","childToRemove","itemsTree","valuesTree","valuesTreeForNode","valuesTreeForChild","_built","_itemBoundables","boundablesAtLevel","boundables","top","boundable","createNode","createHigherLevels","getRoot","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","IntersectsOp","DEFAULT_NODE_CAPACITY","nodeCapacity","ItemDistance","item1","item2","STRtree","avg","kNearestNeighbors","items","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","searchEnv","yComparator","minLeafCount","xComparator","nearestNeighbour","itemDist","initBndPair","tree","maxDistance","distanceLowerBound","minPair","bndPair","currentDistance","bnd","bp1","bp2","aBounds","bBounds","SegmentPointComparator","relativeSign","xSign","ySign","compareValue","compareSign0","compareSign1","SegmentNode","print","_segmentOctant","maxSegmentIndex","_isInterior","isInterior","_segString","segString","segmentOctant","SegmentNodeList","getSplitCoordinates","addEndpoints","eiPrev","ei","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","_edge","ei0","ei1","lastSegStartPt","useIntPt1","_nodeMap","addSplitEdges","edgeList","newEdge","createSplitEdge","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","isCollapsed","getEdge","maxSegIndex","NodedSegmentString","eiNew","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","pt0","splitn","splitnPts","ptn","edge","NodableSegmentString","addIntersection","getNodedSubstrings","segStrings","resultEdgelist","ss","getNodeList","safeOctant","addIntersectionNode","_nodeList","normalizedSegmentIndex","nextSegIndex","nextPt","addIntersections","geomIndex","MonotoneChainOverlapAction","overlap","mc1","start1","mc2","start2","getLineSegment","_overlapSeg1","_overlapSeg2","MonotoneChain","computeSelect","start0","end0","mcs","select","_end","_start","computeOverlaps","mc","mco","end1","overlaps","mid0","setId","id","_id","_env","getEndIndex","getStartIndex","getContext","_context","getId","context","Quadrant","isNorthern","quad","NE","NW","isOpposite","quad1","quad2","commonHalfPlane","isInHalfPlane","halfPlane","SE","SW","quadrant","MonotoneChainBuilder","getChainStartIndices","startIndexList","findChainEnd","startIndex","toIntArray","safeStart","chainQuad","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","si","TopologyException","msgWithCoord","SegmentIntersector","e0","segIndex0","e1","segIndex1","InteriorIntersectionFinder","createAllIntersectionsFinder","finder","setFindAllIntersections","createAnyIntersectionFinder","createIntersectionCounter","setKeepIntersections","getInteriorIntersection","_interiorIntersection","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","_isCheckEndSegmentsOnly","getIntersectionSegments","_intSegments","_intersectionCount","getIntersections","_intersections","findAllIntersections","_findAllIntersections","keepIntersections","_keepIntersections","isEndSegPresent","isEndSegment","p00","p01","p10","p11","_li","FastNodingValidator","computeIntersections","nv","execute","checkInteriorIntersections","_isValid","noder","_segStrings","checkValid","getErrorMessage","intSegs","EdgeNodingValidator","toSegmentStrings","edges","validator","_nv","Position","opposite","position","ON","TopologyLocation","setAllLocations","locValue","location","setAllLocationsIfNull","isLine","merge","gl","newLoc","getLocations","flip","setLocations","on","posIndex","isArea","isAnyNull","setLocation","locIndex","isEqualOnSide","allPositionsEqual","Label","toLineLabel","label","lineLabel","getGeometryCount","elt","lbl","side","toLine","onLoc","leftLoc","rightLoc","EdgeRing","computeRing","_ring","_geometryFactory","_isHole","isIsolated","_label","computePoints","_startDe","de","isFirstEdge","getEdgeRing","_edges","getLabel","mergeLabel","addPoints","isForward","setEdgeRing","getNext","getLinearRing","computeMaxNodeDegree","_maxNodeDegree","getNode","degree","getEdges","getOutgoingDegree","isHole","setInResult","containsPoint","isShell","getMaxNodeDegree","getShell","deLabel","setShell","toPolygon","holeLR","MinimalEdgeRing","er","setMinEdgeRing","getNextMin","MaximalEdgeRing","buildMinimalRings","minEdgeRings","getMinEdgeRing","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","GraphComponent","setVisited","isVisited","_isVisited","isInResult","_isInResult","isCovered","_isCovered","isCoveredSet","_isCoveredSet","setLabel","setCovered","updateIM","computeIM","Node","isIncidentEdgeInResult","_coord","computeMergedLocation","label2","eltIndex","nLoc","argIndex","onLocation","thisLoc","setNode","setLabelBoundary","NodeMap","find","nodeMap","addNode","nodeFact","getBoundaryNodes","bdyNodes","EdgeEnd","compareDirection","_dx","_dy","_quadrant","_p0","_p1","getDy","_node","className","lastDotPos","lastIndexOf","getDirectedCoordinate","getDx","getQuadrant","computeLabel","boundaryNodeRule","DirectedEdge","depthFactor","currLocation","nextLocation","_nextMin","getDepth","_depth","computeDirectedLabel","_isForward","_next","setDepth","depthVal","isInteriorAreaEdge","setNextMin","nextMin","getDepthDelta","minEdgeRing","_minEdgeRing","isLineEdge","isExteriorIfArea0","isExteriorIfArea1","edgeRing","_edgeRing","depthDelta","getSym","_sym","printEdge","printReverse","setSym","setVisitedEdge","setEdgeDepths","directionFactor","oppositePos","delta","oppositeDepth","setNext","NodeFactory","PlanarGraph","linkResultDirectedEdges","nodeit","printEdges","eiList","_nodes","getNodeIterator","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","_edgeEndList","debugPrint","getEdgeIterator","findEdgeInSameDirection","eCoord","insertEdge","findEdgeEnd","ee","addEdges","edgesToAdd","de1","de2","getNodes","findEdge","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","graph","LineBuilder","collectLines","opCode","_op","getGraph","collectLineEdge","_lineEdgesList","collectBoundaryTouchEdge","labelIsolatedLine","targetIndex","_ptLocator","getArgGeometry","findCoveredLineEdges","buildLines","_resultLineList","OverlayOp","isResultOfOp","isCoveredByA","labelIsolatedLines","edgesList","INTERSECTION","ptLocator","PointBuilder","filterCoveredNodeToPoint","isCoveredByLA","_resultPointList","extractNonCoveredResultNodes","getDegree","LineStringSnapper","snapVertices","srcCoords","snapPts","_isClosed","srcPt","snapVert","findSnapForVertex","_snapTolerance","snapTo","_srcPts","snapSegments","newPts","distinctPtCount","snapPt","findSegmentIndexToSnap","snapIndex","_seg","_allowSnappingToSourceVertices","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","srcLine","snapTolerance","srcPts","GeometrySnapper","snap","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","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","getResultGeometry","UNION","symDifference","SYMDIFFERENCE","difference","DIFFERENCE","selfSnap","_cbr","remGeom","prepareResult","prepGeom","SnapIfNeededOverlayOp","isSuccess","savedException","EdgeEndStar","getNextCW","_edgeList","iNextCW","propagateSideLabels","startLoc","currLoc","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","getBoundaryNodeRule","checkAreaLabelsConsistent","lastEdgeIndex","startLabel","findIndex","eSearch","_edgeMap","_ptInAreaLocation","computeLabelling","hasDimensionalCollapseEdge","insertEdgeEnd","DirectedEdgeStar","getResultAreaEdges","firstOut","incoming","state","_SCANNING_FOR_INCOMING","_resultAreaEdgeList","nextOut","nextIn","_LINKING_TO_OUTGOING","getRightmostEdge","de0","deLast","quad0","updateLabelling","nodeLabel","prevOut","firstIn","computeDepths","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","currDepth","nextDe","mergeSymLabels","eLabel","eLoc","OverlayNodeFactory","mce","computeIntersectsForChain","chainIndex","SweepLineEvent","isDelete","_eventType","DELETE","setDeleteEventIndex","deleteEventIndex","_deleteEventIndex","getObject","_obj","pe","_xValue","getInsertEvent","_insertEvent","isInsert","INSERT","isSameLabel","ev","getDeleteEventIndex","insertEvent","EdgeSetIntersector","isAdjacentSegments","isTrivialIntersection","getProperIntersectionPoint","_properIntersectionPoint","setIsDoneIfProperInt","isDoneWhenProperInt","_isDoneWhenProperInt","hasProperInteriorIntersection","_hasProperInterior","isBoundaryPointInternal","hasProperIntersection","_hasProper","_hasIntersection","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","_bdyNodes","numTests","_recordIsolated","setIsolated","_numIntersections","_includeProper","_isSelfIntersection","includeProper","recordIsolated","SimpleMCSweepLineIntersector","prepareEvents","events","nOverlaps","processOverlaps","edges0","edges1","testAllSegments","addEdge","edgeSet","getMonotoneChainEdge","getStartIndexes","ev0","mc0","ev1","EdgeIntersection","getSegmentIndex","EdgeIntersectionList","Edge","MonotoneChainIndexer","MonotoneChainEdge","chainIndex0","chainIndex1","computeIntersects","mcb","Depth","depthAtLocation","NULL_VALUE","depthValue","minDepth","newValue","getDelta","getCollapsedEdge","newe","_isIsolated","setName","isEqualForward","isEqualReverse","iRev","_depthDelta","getMaximumSegmentIndex","_mce","isPointwiseEqual","setDepthDelta","getEdgeIntersectionList","GeometryGraph","determineBoundary","insertBoundaryPoint","_boundaryNodeRule","computeSelfNodes","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","_parentGeom","computeAllSegments","addSelfIntersectionNodes","_argIndex","computeSplitEdges","edgelist","computeEdgeIntersections","hasTooFewPoints","_hasTooFewPoints","insertPoint","addPolygon","addPolygonRing","addLineString","_invalidPoint","_lineEdgeMap","getInvalidPoint","getBoundaryPoints","_boundaryNodes","addSelfIntersectionNode","_useBoundaryDeterminationRule","lr","cwLeft","cwRight","eiIt","addCollection","_areaPtLocator","parentGeom","GeometryGraphOperation","_arg","setComputationPrecision","_resultPrecisionModel","OrientedCoordinateArray","orientation","compareOriented","orientation1","orientation2","limit1","limit2","compPt","done1","done2","oca","_orientation","EdgeList","edgeColl","findEdgeIndex","findEqualEdge","matchEdge","_ocaMap","geom1","gov","geomOv","createEmptyResult","resultDimension","dim0","dim1","overlayOpCode","loc0","loc1","insertUniqueEdge","existingEdge","existingLabel","labelToMerge","_graph","cancelDuplicateResultEdges","sym","_resultPolyList","computeGeometry","resultPointList","resultLineList","opcode","replaceCollapsedEdges","newEdges","updateNodeLabelling","computeOverlay","_resultGeom","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","polyBuilder","lineBuilder","pointBuilder","labelIncompleteNode","graphNode","newNode","ni","InteriorPointArea","bisector","horizontalBisector","intersections","widestIntersection","widestGeometry","_interiorPoint","_maxWidth","getInteriorPoint","bisectY","SafeBisectorFinder","getBisectorY","updateInterval","_centreY","_loY","_hiY","process","_poly","InteriorPointLine","addInterior","_centroid","_minDistance","InteriorPointPoint","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","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","DensifyTransformer","_distanceTolerance","roughGeom","createValidArea","roughAreaGeom","HalfEdge","oNext","_orig","insertAfter","ecmp","ePrev","orig","save","compareAngularDirection","quadrant2","prevNode","MarkHalfEdge","setMarkBoth","isMarked","setMark","markBoth","mark","_isMarked","EdgeGraph","isValidEdge","eAdj","_vertexMap","eAdjDest","createEdge","eSame","getVertexEdges","DissolveHalfEdge","setStart","_isStart","isStart","DissolveEdgeGraph","LineDissolver","dissolve","getResult","updateRingStartEdge","_ringStartEdge","computeResult","eNode","stackEdges","buildRing","eStartRing","eNext","buildLine","eStart","_nodeEdgeStack","component","lineString","doneStart","KdNodeVisitor","KdNode","isRepeated","_count","getRight","_right","setLeft","_left","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","isSearchMatch","visitItems","maxSubDepth","sqd","DoubleBits","exponent","CVTFWD","powerOf2","NumW","Qty","Sign","Expo","Mant","Bin","Inf","ExW","Key","computeQuadLevel","dMax","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","isZeroX","isZeroY","Quadtree","ensureExtent","collectStats","insertEnv","_minExtent","queryAll","foundItems","posEnv","delX","delY","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","ScaledNoder","rescale","_scaleFactor","_offsetX","_offsetY","nodedSegmentStrings","roundPts","roundPtsNoDup","isIntegerPrecision","splitSS","_noder","_isScaled","intSegStrings","scaleFactor","IsSimpleOp","isSimpleMultiPoint","mp","_nonSimpleLocation","isSimplePolygonal","isSimpleLinearGeometry","hasClosedEndpointIntersection","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","usePrev","_orientedDe","findRightmostEdgeAtNode","star","dirEdgeList","rightmostSide","LinkedList","addLast","removeFirst","shift","BufferSubgraph","clearVisitedEdges","_dirEdgeList","getRightmostCoordinate","_rightMostCoord","computeNodeDepth","startEdge","copySymDepths","computeDepth","outsideDepth","_finder","addReachable","findResultEdges","nodesVisited","nodeQueue","startNode","adjNode","edgeEnv","dirEdge","nodeStack","symNode","getDirectedEdges","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","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","IntersectionAdder","getLineIntersector","numIntersections","numInteriorIntersections","_hasInterior","numProperIntersections","hasInteriorIntersection","BufferBuilder","lLoc","rLoc","convertSegStrings","setWorkingPrecisionModel","_workingPrecisionModel","mergeDelta","existingDelta","newDelta","buildSubgraphs","subgraphList","processedGraphs","subgraph","locater","createSubgraphs","createEmptyResultGeometry","emptyGeom","getNoder","_workingNoder","curveSetBuilder","bufferSegStrList","computeNodedEdges","resultGeom","nodedSegStrings","oldLabel","setNoder","NodingValidator","checkEndPtVertexIntersections","ss0","pts0","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","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","isNodeAdded","_isNodeAdded","_parentEdge","_hotPixelVertexIndex","_hotPixel","InteriorIntersectionFinderAdder","_interiorIntersections","getInteriorIntersections","MCIndexSnapRounder","checkCorrectness","inputSegmentStrings","resultSegStrings","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","_pointSnapper","_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","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","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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"}