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

60 lines (58 loc) 2.19 kB
import PreparedPolygonIntersects from './PreparedPolygonIntersects' import FastSegmentSetIntersectionFinder from '../../noding/FastSegmentSetIntersectionFinder' import SegmentStringUtil from '../../noding/SegmentStringUtil' import PreparedPolygonContainsProperly from './PreparedPolygonContainsProperly' import PreparedPolygonContains from './PreparedPolygonContains' import PreparedPolygonCovers from './PreparedPolygonCovers' import BasicPreparedGeometry from './BasicPreparedGeometry' import IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator' import RectangleContains from '../../operation/predicate/RectangleContains' import RectangleIntersects from '../../operation/predicate/RectangleIntersects' export default class PreparedPolygon extends BasicPreparedGeometry { constructor (poly) { super(poly) this._isRectangle = null this._segIntFinder = null this._pia = null this._isRectangle = this.getGeometry().isRectangle() } containsProperly (g) { if (!this.envelopeCovers(g)) return false return PreparedPolygonContainsProperly.containsProperly(this, g) } getPointLocator () { if (this._pia === null) this._pia = new IndexedPointInAreaLocator(this.getGeometry()) return this._pia } covers (g) { if (!this.envelopeCovers(g)) return false if (this._isRectangle) { return true } return PreparedPolygonCovers.covers(this, g) } intersects (g) { if (!this.envelopesIntersect(g)) return false if (this._isRectangle) { return RectangleIntersects.intersects(this.getGeometry(), g) } return PreparedPolygonIntersects.intersects(this, g) } contains (g) { if (!this.envelopeCovers(g)) return false if (this._isRectangle) { return RectangleContains.contains(this.getGeometry(), g) } return PreparedPolygonContains.contains(this, g) } getIntersectionFinder () { if (this._segIntFinder === null) this._segIntFinder = new FastSegmentSetIntersectionFinder(SegmentStringUtil.extractSegmentStrings(this.getGeometry())) return this._segIntFinder } interfaces_ () { return [] } getClass () { return PreparedPolygon } }