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
82 lines (81 loc) • 2.21 kB
JavaScript
import CommonBits from './CommonBits'
import CoordinateFilter from '../geom/CoordinateFilter'
import Coordinate from '../geom/Coordinate'
import CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter'
export default class CommonBitsRemover {
constructor() {
CommonBitsRemover.constructor_.apply(this, arguments)
}
static constructor_() {
this._commonCoord = null
this._ccFilter = new CommonCoordinateFilter()
}
addCommonBits(geom) {
const trans = new Translater(this._commonCoord)
geom.apply(trans)
geom.geometryChanged()
}
removeCommonBits(geom) {
if (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) return geom
const invCoord = new Coordinate(this._commonCoord)
invCoord.x = -invCoord.x
invCoord.y = -invCoord.y
const trans = new Translater(invCoord)
geom.apply(trans)
geom.geometryChanged()
return geom
}
getCommonCoordinate() {
return this._commonCoord
}
add(geom) {
geom.apply(this._ccFilter)
this._commonCoord = this._ccFilter.getCommonCoordinate()
}
}
class CommonCoordinateFilter {
constructor() {
CommonCoordinateFilter.constructor_.apply(this, arguments)
}
static constructor_() {
this._commonBitsX = new CommonBits()
this._commonBitsY = new CommonBits()
}
filter(coord) {
this._commonBitsX.add(coord.x)
this._commonBitsY.add(coord.y)
}
getCommonCoordinate() {
return new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())
}
get interfaces_() {
return [CoordinateFilter]
}
}
class Translater {
constructor() {
Translater.constructor_.apply(this, arguments)
}
static constructor_() {
this.trans = null
const trans = arguments[0]
this.trans = trans
}
filter(seq, i) {
const xp = seq.getOrdinate(i, 0) + this.trans.x
const yp = seq.getOrdinate(i, 1) + this.trans.y
seq.setOrdinate(i, 0, xp)
seq.setOrdinate(i, 1, yp)
}
isDone() {
return false
}
isGeometryChanged() {
return true
}
get interfaces_() {
return [CoordinateSequenceFilter]
}
}
CommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter
CommonBitsRemover.Translater = Translater