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 (62 loc) • 2.15 kB
JavaScript
import Location from '../Location'
import ComponentCoordinateExtracter from '../util/ComponentCoordinateExtracter'
import SimplePointInAreaLocator from '../../algorithm/locate/SimplePointInAreaLocator'
export default class PreparedPolygonPredicate {
constructor (prepPoly) {
this._prepPoly = null
this._targetPointLocator = null
this._prepPoly = prepPoly
this._targetPointLocator = prepPoly.getPointLocator()
}
isAnyTargetComponentInAreaTest (testGeom, targetRepPts) {
const piaLoc = new SimplePointInAreaLocator(testGeom)
for (const i = targetRepPts.iterator(); i.hasNext();) {
const p = i.next()
const loc = piaLoc.locate(p)
if (loc !== Location.EXTERIOR) return true
}
return false
}
isAllTestComponentsInTarget (testGeom) {
const coords = ComponentCoordinateExtracter.getCoordinates(testGeom)
for (const i = coords.iterator(); i.hasNext();) {
const p = i.next()
const loc = this._targetPointLocator.locate(p)
if (loc === Location.EXTERIOR) return false
}
return true
}
isAnyTestComponentInTargetInterior (testGeom) {
const coords = ComponentCoordinateExtracter.getCoordinates(testGeom)
for (const i = coords.iterator(); i.hasNext();) {
const p = i.next()
const loc = this._targetPointLocator.locate(p)
if (loc === Location.INTERIOR) return true
}
return false
}
isAllTestComponentsInTargetInterior (testGeom) {
const coords = ComponentCoordinateExtracter.getCoordinates(testGeom)
for (const i = coords.iterator(); i.hasNext();) {
const p = i.next()
const loc = this._targetPointLocator.locate(p)
if (loc !== Location.INTERIOR) return false
}
return true
}
isAnyTestComponentInTarget (testGeom) {
const coords = ComponentCoordinateExtracter.getCoordinates(testGeom)
for (const i = coords.iterator(); i.hasNext();) {
const p = i.next()
const loc = this._targetPointLocator.locate(p)
if (loc !== Location.EXTERIOR) return true
}
return false
}
interfaces_ () {
return []
}
getClass () {
return PreparedPolygonPredicate
}
}