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
24 lines (23 loc) • 877 B
JavaScript
import SimilarityMeasure from './SimilarityMeasure'
import Envelope from '../../geom/Envelope'
import DiscreteHausdorffDistance from '../distance/DiscreteHausdorffDistance'
export default class HausdorffSimilarityMeasure {
static diagonalSize(env) {
if (env.isNull()) return 0.0
const width = env.getWidth()
const hgt = env.getHeight()
return Math.sqrt(width * width + hgt * hgt)
}
measure(g1, g2) {
const distance = DiscreteHausdorffDistance.distance(g1, g2, HausdorffSimilarityMeasure.DENSIFY_FRACTION)
const env = new Envelope(g1.getEnvelopeInternal())
env.expandToInclude(g2.getEnvelopeInternal())
const envSize = HausdorffSimilarityMeasure.diagonalSize(env)
const measure = 1 - distance / envSize
return measure
}
get interfaces_() {
return [SimilarityMeasure]
}
}
HausdorffSimilarityMeasure.DENSIFY_FRACTION = 0.25