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

64 lines (61 loc) 1.64 kB
import Quadtree from '../index/quadtree/Quadtree' import ItemVisitor from '../index/ItemVisitor' import LineSegment from '../geom/LineSegment' import ArrayList from '../../../../java/util/ArrayList' import Envelope from '../geom/Envelope' import TaggedLineString from './TaggedLineString' export default class LineSegmentIndex { constructor () { this._index = new Quadtree() } remove (seg) { this._index.remove(new Envelope(seg.p0, seg.p1), seg) } add () { if (arguments[0] instanceof TaggedLineString) { let line = arguments[0] const segs = line.getSegments() for (let i = 0; i < segs.length; i++) { const seg = segs[i] this.add(seg) } } else if (arguments[0] instanceof LineSegment) { let seg = arguments[0] this._index.insert(new Envelope(seg.p0, seg.p1), seg) } } query (querySeg) { const env = new Envelope(querySeg.p0, querySeg.p1) const visitor = new LineSegmentVisitor(querySeg) this._index.query(env, visitor) const itemsFound = visitor.getItems() return itemsFound } interfaces_ () { return [] } getClass () { return LineSegmentIndex } } class LineSegmentVisitor { constructor () { this._querySeg = null this._items = new ArrayList() let querySeg = arguments[0] this._querySeg = querySeg } visitItem (item) { const seg = item if (Envelope.intersects(seg.p0, seg.p1, this._querySeg.p0, this._querySeg.p1)) this._items.add(item) } getItems () { return this._items } interfaces_ () { return [ItemVisitor] } getClass () { return LineSegmentVisitor } }