UNPKG

node-red-contrib-tak-registration

Version:

A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK

74 lines (72 loc) 2.19 kB
import GeometrySnapper from './GeometrySnapper' import System from '../../../../../../java/lang/System' import CommonBitsRemover from '../../../precision/CommonBitsRemover' import OverlayOp from '../OverlayOp' export default class SnapOverlayOp { constructor (g1, g2) { this._geom = new Array(2).fill(null) this._snapTolerance = null this._cbr = null this._geom[0] = g1 this._geom[1] = g2 this.computeSnapTolerance() } selfSnap (geom) { var snapper0 = new GeometrySnapper(geom) var snapGeom = snapper0.snapTo(geom, this._snapTolerance) return snapGeom } removeCommonBits (geom) { this._cbr = new CommonBitsRemover() this._cbr.add(geom[0]) this._cbr.add(geom[1]) var remGeom = new Array(2).fill(null) remGeom[0] = this._cbr.removeCommonBits(geom[0].copy()) remGeom[1] = this._cbr.removeCommonBits(geom[1].copy()) return remGeom } prepareResult (geom) { this._cbr.addCommonBits(geom) return geom } getResultGeometry (opCode) { var prepGeom = this.snap(this._geom) var result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode) return this.prepareResult(result) } checkValid (g) { if (!g.isValid()) { System.out.println('Snapped geometry is invalid') } } computeSnapTolerance () { this._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1]) } snap (geom) { var remGeom = this.removeCommonBits(geom) var snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], this._snapTolerance) return snapGeom } interfaces_ () { return [] } getClass () { return SnapOverlayOp } static overlayOp (g0, g1, opCode) { var op = new SnapOverlayOp(g0, g1) return op.getResultGeometry(opCode) } static union (g0, g1) { return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION) } static intersection (g0, g1) { return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION) } static symDifference (g0, g1) { return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE) } static difference (g0, g1) { return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE) } }