Hogyan lehet kiszámítani az átlagos távolságot a pontok között a közelség mércéjeként?

A PostGIS-ben három pontsorozat (vagy táblázat) van, amelyeket összehasonlítani szeretnék. Szeretném tudni, hogy az egyes sorozatok mennyire “szorosak”, összehasonlítva a másik kettővel. Más szavakkal, szükségem lenne valamilyen mérésre, például az egyes pontok átlagos távolságának átlagával a többivel (vagyis a távolságmátrix átlagával) … Bonyolultnak hangzik, de biztos vagyok benne, hogy van néhány közös statisztika összehasonlításra pontsorozat.

Hogyan nézne ki a lekérdezésem?

Megjegyzések

  • Ha mérésként kiválasztja a középső négyzet távolságot a pontot, akkor a számítás bonyolultsága O-ról (N ^ 2) O-ra (N) csökken, mert az RMSE távolság egyenlő az Nrt pontok és azok centroidja közötti RMSE távolság szorzatának (2N / (N-1)) szorzatával.
  • Ha a maga módján csinálod, ' olyan helyzetbe kerülsz, hogy egy halmaz önmagához való hasonlítása nulla távolságtól eltér. Ez azt fogja összehasonlítani, hogy a halmaz pontjai milyen közel vannak nemcsak két halmazhoz.
  • @Jakub Gyakori és hatékony módszer a klaszterezés mértékének mérésére egy olyan csoporton belül, amelyre " klaszterek " az, hogy az átlagos távolság valamilyen mértékét bármely pontkészleten belül használják. Összehasonlítva a teljes halmaz mértékét a klaszterek intézkedéseinek összegével (vagy valamilyen más megfelelő kombinációval), értékeljük a klaszterezés mértékét. Így észrevétele, amelyet egyesek a Francesco ' eljárás kifogásaként olvashatnak, valójában rámutat arra, hogy miért érdekes és hasznos.
  • I nem tudom, mi értelme van ennek a számításnak, de ha csak azt akarja tudni, hogy az A halmaz pontjai közelebb vannak-e egymáshoz, akkor a B halmaz pontjai talán a megoldást jelentik, ha megszámoljuk a testük területét (ST_Area + ST_ConcaveHull )
  • Van-e oka annak, hogy a pontok közötti távolságok MINDEN átlagának átlagát szeretné? Minden átlagos számítást torzít a jellemzők közötti maximális távolság, amikor az összes jellemzőkészlet meglehetősen közel lehet egymáshoz.

Válasz

Amint azt egy megjegyzésemben említettem, az átlagos távolságot a pontok közötti legnagyobb távolság torzítja. Például lehet egy 100 km-es pontfelhője, amelyet 1 m-rel oldalirányban eltolva új táblázatot képez. Az A táblázat bármely pontjának B osztályához tartozó átlagos távolsága 100 km-nél közelebb lesz, mint 1 m. A legközelebbi távolság az A. táblázat bármelyik pontján a B táblázatig 1 m, a átlagos legközelebbi távolság 1 m lesz.

Ettől eltekintve megmutatom, hogyan kell kiszámítani a legközelebbi távolság átlagát, amelyet aztán tetszése szerint meghosszabbíthat.

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 

Ezután kiszámítja az átlagos legközelebbi távolságot:

SELECT avg(distance) FROM a_b_distances 

megjegyzések

  • Ez nagyszerű! Hogyan lehet ezt kibővíteni, hogy megtalálják a legközelebbi távolságot?
  • Cserélje ki a avg max
  • Félelmetes! azt írva, hogy visszatérjek, hogy közvetlenül visszaadjam a max-ot? I ' m minden soromon ezt csinálom
  • Ezen a ponton érdemes feltenni a saját kérdését, és én ' l örömmel próbálom megválaszolni, mi ' l Ennél jobb részleteket kapok oda-vissza a megjegyzések részben.
  • Ide került (szerkesztve is) gis.stackexchange.com/questions/190237/…

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük