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

63 lines (59 loc) 1.89 kB
import GeometryFactory from '../../geom/GeometryFactory' import Coordinate from '../../geom/Coordinate' import ArrayList from '../../../../../java/util/ArrayList' export default class OffsetSegmentString { constructor() { OffsetSegmentString.constructor_.apply(this, arguments) } static constructor_() { this._ptList = null this._precisionModel = null this._minimimVertexDistance = 0.0 this._ptList = new ArrayList() } getCoordinates() { const coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE) return coord } setPrecisionModel(precisionModel) { this._precisionModel = precisionModel } addPt(pt) { const bufPt = new Coordinate(pt) this._precisionModel.makePrecise(bufPt) if (this.isRedundant(bufPt)) return null this._ptList.add(bufPt) } reverse() {} addPts(pt, isForward) { if (isForward) for (let i = 0; i < pt.length; i++) this.addPt(pt[i]) else for (let i = pt.length - 1; i >= 0; i--) this.addPt(pt[i]) } isRedundant(pt) { if (this._ptList.size() < 1) return false const lastPt = this._ptList.get(this._ptList.size() - 1) const ptDist = pt.distance(lastPt) if (ptDist < this._minimimVertexDistance) return true return false } toString() { const fact = new GeometryFactory() const line = fact.createLineString(this.getCoordinates()) return line.toString() } closeRing() { if (this._ptList.size() < 1) return null const startPt = new Coordinate(this._ptList.get(0)) const lastPt = this._ptList.get(this._ptList.size() - 1) if (startPt.equals(lastPt)) return null this._ptList.add(startPt) } setMinimumVertexDistance(minimimVertexDistance) { this._minimimVertexDistance = minimimVertexDistance } } OffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null)