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
146 lines (144 loc) • 4.07 kB
JavaScript
import Geometry from './Geometry'
import CoordinateFilter from './CoordinateFilter'
import hasInterface from '../../../../hasInterface'
import GeometryComponentFilter from './GeometryComponentFilter'
import Dimension from './Dimension'
import GeometryFilter from './GeometryFilter'
import CoordinateSequenceFilter from './CoordinateSequenceFilter'
import Puntal from './Puntal'
import Envelope from './Envelope'
import Assert from '../util/Assert'
export default class Point extends Geometry {
constructor (coordinates, factory) {
super(factory)
this._coordinates = coordinates || null
this.init(this._coordinates)
}
computeEnvelopeInternal () {
if (this.isEmpty()) {
return new Envelope()
}
var env = new Envelope()
env.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0))
return env
}
getSortIndex () {
return Geometry.SORTINDEX_POINT
}
getCoordinates () {
return this.isEmpty() ? [] : [this.getCoordinate()]
}
equalsExact () {
if (arguments.length === 2) {
const other = arguments[0]
const tolerance = arguments[1]
if (!this.isEquivalentClass(other)) {
return false
}
if (this.isEmpty() && other.isEmpty()) {
return true
}
if (this.isEmpty() !== other.isEmpty()) {
return false
}
return this.equal(other.getCoordinate(), this.getCoordinate(), tolerance)
} else return Geometry.prototype.equalsExact.apply(this, arguments)
}
normalize () {}
getCoordinate () {
return this._coordinates.size() !== 0 ? this._coordinates.getCoordinate(0) : null
}
getBoundaryDimension () {
return Dimension.FALSE
}
getDimension () {
return 0
}
getNumPoints () {
return this.isEmpty() ? 0 : 1
}
reverse () {
return this.copy()
}
getX () {
if (this.getCoordinate() === null) {
throw new Error('getX called on empty Point')
}
return this.getCoordinate().x
}
compareToSameClass () {
if (arguments.length === 1) {
const other = arguments[0]
const point = other
return this.getCoordinate().compareTo(point.getCoordinate())
} else if (arguments.length === 2) {
const other = arguments[0]
const comp = arguments[1]
var point = other
return comp.compare(this._coordinates, point._coordinates)
}
}
apply () {
if (hasInterface(arguments[0], CoordinateFilter)) {
let filter = arguments[0]
if (this.isEmpty()) {
return null
}
filter.filter(this.getCoordinate())
} else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {
let filter = arguments[0]
if (this.isEmpty()) return null
filter.filter(this._coordinates, 0)
if (filter.isGeometryChanged()) this.geometryChanged()
} else if (hasInterface(arguments[0], GeometryFilter)) {
let filter = arguments[0]
filter.filter(this)
} else if (hasInterface(arguments[0], GeometryComponentFilter)) {
let filter = arguments[0]
filter.filter(this)
}
}
getBoundary () {
return this.getFactory().createGeometryCollection(null)
}
clone () {
var p = Geometry.prototype.clone.call(this)
p._coordinates = this._coordinates.clone()
return p
}
getGeometryType () {
return 'Point'
}
copy () {
return new Point(this._coordinates.copy(), this._factory)
}
getCoordinateSequence () {
return this._coordinates
}
getY () {
if (this.getCoordinate() === null) {
throw new Error('getY called on empty Point')
}
return this.getCoordinate().y
}
isEmpty () {
return this._coordinates.size() === 0
}
init (coordinates) {
if (coordinates === null) {
coordinates = this.getFactory().getCoordinateSequenceFactory().create([])
}
Assert.isTrue(coordinates.size() <= 1)
this._coordinates = coordinates
}
isSimple () {
return true
}
interfaces_ () {
return [Puntal]
}
getClass () {
return Point
}
static get serialVersionUID () { return 4902022702746614570 }
}