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
59 lines (58 loc) • 2.01 kB
JavaScript
import CommonBitsRemover from './CommonBitsRemover'
export default class CommonBitsOp {
constructor() {
CommonBitsOp.constructor_.apply(this, arguments)
}
static constructor_() {
this._returnToOriginalPrecision = true
this._cbr = null
if (arguments.length === 0) {
CommonBitsOp.constructor_.call(this, true)
} else if (arguments.length === 1) {
const returnToOriginalPrecision = arguments[0]
this._returnToOriginalPrecision = returnToOriginalPrecision
}
}
computeResultPrecision(result) {
if (this._returnToOriginalPrecision) this._cbr.addCommonBits(result)
return result
}
union(geom0, geom1) {
const geom = this.removeCommonBits(geom0, geom1)
return this.computeResultPrecision(geom[0].union(geom[1]))
}
intersection(geom0, geom1) {
const geom = this.removeCommonBits(geom0, geom1)
return this.computeResultPrecision(geom[0].intersection(geom[1]))
}
removeCommonBits() {
if (arguments.length === 1) {
const geom0 = arguments[0]
this._cbr = new CommonBitsRemover()
this._cbr.add(geom0)
const geom = this._cbr.removeCommonBits(geom0.copy())
return geom
} else if (arguments.length === 2) {
const geom0 = arguments[0], geom1 = arguments[1]
this._cbr = new CommonBitsRemover()
this._cbr.add(geom0)
this._cbr.add(geom1)
const geom = new Array(2).fill(null)
geom[0] = this._cbr.removeCommonBits(geom0.copy())
geom[1] = this._cbr.removeCommonBits(geom1.copy())
return geom
}
}
buffer(geom0, distance) {
const geom = this.removeCommonBits(geom0)
return this.computeResultPrecision(geom.buffer(distance))
}
symDifference(geom0, geom1) {
const geom = this.removeCommonBits(geom0, geom1)
return this.computeResultPrecision(geom[0].symDifference(geom[1]))
}
difference(geom0, geom1) {
const geom = this.removeCommonBits(geom0, geom1)
return this.computeResultPrecision(geom[0].difference(geom[1]))
}
}