Cum se calculează distanța medie între setul de puncte ca măsură a apropierii

Am trei serii (sau tabele) de puncte în PostGIS pe care vreau să le compar. Aș vrea să știu cât de „aproape” este fiecare serie în comparație cu celelalte două. Cu alte cuvinte, aș avea nevoie de unele măsuri, cum ar fi media distanței medii a fiecărui punct cu toate celelalte (adică media matricei distanței) … Sună complicat, dar sunt sigur că există statistici comune pentru a compara serie de puncte.

Cum ar arăta interogarea mea?

Comentarii

  • Dacă selectați ca măsură distanța pătrată medie a rădăcinii între puncte, atunci complexitatea calculului se reduce de la O (N ^ 2) la O (N), deoarece distanța RMSE este egală cu sqrt (2N / (N-1)) ori distanța RMSE dintre punctele N și centroul lor.
  • Dacă o faci în felul tău, ' vei ajunge într-o situație în care compararea unui set cu el însuși va ajunge la o distanță diferită de zero. Adică veți compara cât de aproape sunt punctele din set nu numai între două seturi.
  • @Jakub Un mod comun și eficient de a măsura gradul de grupare într-un set de puncte care a fost partiționat în " clustere " este de a utiliza o anumită măsură a distanței medii în orice set de puncte. Comparând măsura pentru întregul set cu suma (sau o altă combinație adecvată) a măsurilor grupurilor se evaluează cantitatea de grupare. Astfel, comentariul dvs., care ar putea fi citit de unii ca o obiecție la procedura lui Francesco ', arată de fapt că este unul interesant și util.
  • I nu știu care este scopul acestor calcule, dar dacă doriți doar să știți dacă punctele din setul A sunt sau nu mai apropiate unele de altele, atunci punctele din setul B poate că soluția va fi să numărați suprafața corpului lor (ST_Area + ST_ConcaveHull )
  • Există un motiv pentru care doriți media mediei TOATE distanțele dintre puncte? Fiecare calcul mediu va fi distorsionat de distanța maximă dintre caracteristici, atunci când toate seturile de caracteristici pot fi destul de apropiate.

Răspuns

După cum am menționat într-un comentariu, distanța medie va fi distorsionată de cele mai mari distanțe dintre puncte. De exemplu, ați putea avea un nor de punct care are o lățime de 100 km, pe care apoi îl deplasați lateral cu 1 m pentru a forma un nou tabel. distanța medie pentru orice punct de pe tabelul A până la tabelul B va fi mai aproape de 100 km decât 1 m. cea mai apropiată distanță pentru orice punct de pe tabelul A până la tabelul B va fi de 1 m, iar distanța medie cea mai apropiată va fi de 1 m.

Cu acest lucru deoparte, voi arăta cum să calculez media celei mai apropiate distanțe, pe care îl puteți extinde după bunul plac.

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 

Și apoi pentru a calcula cea mai apropiată distanță medie:

SELECT avg(distance) FROM a_b_distances 

Comentarii

  • Este minunat! Cum s-ar putea extinde acest lucru pentru a găsi cea mai apropiată distanță maximă?
  • Schimbați avg pentru max
  • Minunat! Ar putea fi acest lucru scris pentru a reveni pentru a returna maximul direct? ' fac asta pe toate liniile mele
  • În acest moment poate doriți să vă puneți propria întrebare și eu ' vom fi fericiți să încercăm să răspundem, noi ' Obțin detalii mai bune decât acestea înainte și înapoi în secțiunea de comentarii
  • Adăugat aici (de asemenea editat) gis.stackexchange.com/questions/190237/…

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *