Jak vypočítat průměrnou vzdálenost mezi sadou bodů jako měřítko blízkosti

Mám v PostGIS tři řady (nebo tabulky) bodů, které chci porovnat. Chtěl bych vědět, jak „blízká“ je každá série ve srovnání s ostatními dvěma. Jinými slovy, potřeboval bych určitá měřítka, jako je průměr průměrné vzdálenosti každého bodu se všemi ostatními (tj. Průměr matice vzdálenosti) … Zní to komplikovaně, ale jsem si jist, že existuje nějaká běžná statistika pro srovnání řada bodů.

Jak by vypadal můj dotaz?

Komentáře

  • Pokud jako měřítko vyberete kořenovou střední mocninu vzdálenosti mezi body, pak se složitost výpočtu snižuje z O (N ^ 2) na O (N), protože RMSE vzdálenost se rovná sqrt (2N / (N-1)) krát RMSE vzdálenost mezi N body a jejich těžištěm.
  • Pokud to uděláte po svém, ' skončíte v situaci, kdy porovnání sady k sobě skončí nenulovou vzdáleností. To znamená, že porovnáte, jak blízko jsou body v sadě nejen mezi dvěma sadami.
  • @Jakub Běžný a efektivní způsob měření míry shlukování v sadě bodů, které byly rozděleny do " clustery " je použít určitou míru průměrné vzdálenosti v libovolné množině bodů. Porovnáním míry pro celou sadu se součtem (nebo jinou vhodnou kombinací) opatření klastrů se hodnotí množství shlukování. Váš komentář, který by někdo mohl číst jako námitku proti postupu Francesca ', tedy ve skutečnosti poukazuje na to, proč je zajímavý a užitečný.
  • I nevím, jaký je smysl těchto výpočtů, ale pokud chcete jen vědět, zda jsou body v sadě A blíže k sobě, pak body v sadě B možná bude řešením spočítat plochu jejich trupu (ST_Area + ST_ConcaveHull )
  • Existuje důvod, proč chcete průměr průměru VŠECH vzdáleností mezi body? Každý průměrný výpočet bude zkreslen maximální vzdáleností mezi objekty, když mohou být všechny sady prvků blízko u sebe.

Odpovědět

Jak jsem uvedl v komentáři, průměrná vzdálenost bude zkreslena největšími vzdálenostmi mezi body. Například můžete mít mračno bodů o průměru 100 km, které poté posunete příčně o 1 m a vytvoříte novou tabulku. průměrná vzdálenost pro jakýkoli bod v tabulce A až B bude blíže 100 km než 1 m. nejbližší vzdálenost pro jakýkoli bod v tabulce A až B bude 1 m a průměrná nejbližší vzdálenost bude 1 m.

Kromě toho ukážu, jak vypočítat průměr nejbližší vzdálenosti, kterou pak můžete libovolně prodloužit.

SELECT DISTINCT ON(a.id) a.id AS a_id, b.id AS b_id, ST_DISTANCE(a.geom, b.geom) as distance INTO a_b_distances FROM a, b ORDER BY a.id, a.geom <-> b.geom 

A poté vypočítat průměrnou nejbližší vzdálenost:

SELECT avg(distance) FROM a_b_distances 

Komentáře

  • To je skvělé! Jak by to mohlo být rozšířeno, aby se zjistila maximální nejbližší vzdálenost?
  • Vyměnit avg pro max
  • Skvělé! Mohlo by to být napsáno pro návrat, aby se vrátilo maximum přímo? Dělám to ' na všech mých řádcích
  • V tomto okamžiku možná budete chtít položit vlastní otázku div id = „85890be293″>

Rád na to zkusím odpovědět, ' l V sekci komentářů získávám lepší podrobnosti než sem a tam

  • Přidáno zde (také upraveno) gis.stackexchange.com/questions/190237/…
  • Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *