@mkerkstra/jsts-cjs
Version:
A CommonJS fork of JSTS: A JavaScript library of spatial predicates and functions for processing geometry
40 lines (38 loc) • 1.28 kB
JavaScript
import ArrayList from '../../../../../java/util/ArrayList.js'
import OverlayOp from './OverlayOp.js'
export default class PointBuilder {
constructor() {
PointBuilder.constructor_.apply(this, arguments)
}
static constructor_() {
this._op = null
this._geometryFactory = null
this._resultPointList = new ArrayList()
const op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2]
this._op = op
this._geometryFactory = geometryFactory
}
build(opCode) {
this.extractNonCoveredResultNodes(opCode)
return this._resultPointList
}
extractNonCoveredResultNodes(opCode) {
for (let nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {
const n = nodeit.next()
if (n.isInResult()) continue
if (n.isIncidentEdgeInResult()) continue
if (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {
const label = n.getLabel()
if (OverlayOp.isResultOfOp(label, opCode))
this.filterCoveredNodeToPoint(n)
}
}
}
filterCoveredNodeToPoint(n) {
const coord = n.getCoordinate()
if (!this._op.isCoveredByLA(coord)) {
const pt = this._geometryFactory.createPoint(coord)
this._resultPointList.add(pt)
}
}
}