PointBuilder.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import ArrayList from '../../../../../java/util/ArrayList'
  2. import OverlayOp from './OverlayOp'
  3. export default class PointBuilder {
  4. constructor() {
  5. PointBuilder.constructor_.apply(this, arguments)
  6. }
  7. static constructor_() {
  8. this._op = null
  9. this._geometryFactory = null
  10. this._resultPointList = new ArrayList()
  11. const op = arguments[0], geometryFactory = arguments[1], ptLocator = arguments[2]
  12. this._op = op
  13. this._geometryFactory = geometryFactory
  14. }
  15. filterCoveredNodeToPoint(n) {
  16. const coord = n.getCoordinate()
  17. if (!this._op.isCoveredByLA(coord)) {
  18. const pt = this._geometryFactory.createPoint(coord)
  19. this._resultPointList.add(pt)
  20. }
  21. }
  22. extractNonCoveredResultNodes(opCode) {
  23. for (let nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext(); ) {
  24. const n = nodeit.next()
  25. if (n.isInResult()) continue
  26. if (n.isIncidentEdgeInResult()) continue
  27. if (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {
  28. const label = n.getLabel()
  29. if (OverlayOp.isResultOfOp(label, opCode))
  30. this.filterCoveredNodeToPoint(n)
  31. }
  32. }
  33. }
  34. build(opCode) {
  35. this.extractNonCoveredResultNodes(opCode)
  36. return this._resultPointList
  37. }
  38. }