名前

ST_HausdorffDistance — 二つのジオメトリ間のハウスドルフ距離を返します.基本的にジオメトリが似ているかどうかを計測するものです.単位はジオメトリの空間参照系の単位です.

概要

float ST_HausdorffDistance(geometry g1, geometry g2);

float ST_HausdorffDistance(geometry g1, geometry g2, float densifyFrac);

説明

「離散ハウスドルフ距離」とみなすことができる距離基準を計算します.これは,一つのジオメトリの離散点に制限されたハウスドルフ距離です.Hausdorff distance に関するWikiPedia英語版の記事Martin Davis note on how Hausdorff Distance calculation was used to prove correctness of the CascadePolygonUnion approach.などを参照して下さい.

densifyFracが指定された際には,この関数は離散ハウスドルフ距離を計算する前に区分の高密度化を行います. densifyFracパラメータは,高密度化を行うための小数です.総延長の小数が与えられた値に近くなるように,区分ごとに等しい長さに分割します.

[注意]

現在の実装では,バーテックのみを離散位置としてサポートします.任意の密度でポイントを使用することができるよう拡張されています.

[注意]

このアルゴリズムは標準的なハウスドルフ距離と等価では*ありません*.しかし,使用可能な場面の大部分で正しくなる近似計算がなされています.重要なものに,それぞれが概ね平行で概ね等しい長さのラインストリングがあります.これはラインのマッチングに役立つ基準です.

初出バージョン: 1.5.0 - GEOS >= 3.2.0が必要です.

postgis=# SELECT st_HausdorffDistance(
				'LINESTRING (0 0, 2 0)'::geometry,
				'MULTIPOINT (0 1, 1 0, 2 1)'::geometry);
 st_hausdorffdistance
 ----------------------
					 1
(1 row)
			
postgis=# SELECT st_hausdorffdistance('LINESTRING (130 0, 0 0, 0 150)'::geometry, 'LINESTRING (10 10, 10 150, 130 10)'::geometry, 0.5);
 st_hausdorffdistance
 ----------------------
					70
(1 row)