@mkerkstra/jsts-cjs
Version:
A CommonJS fork of JSTS: A JavaScript library of spatial predicates and functions for processing geometry
24 lines (23 loc) • 886 B
JavaScript
import SimilarityMeasure from './SimilarityMeasure.js'
import Envelope from '../../geom/Envelope.js'
import DiscreteHausdorffDistance from '../distance/DiscreteHausdorffDistance.js'
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