Kuinka lasketaan keskimääräinen etäisyys pistejoukosta läheisyyden mittana

Minulla on kolme sarjaa (tai taulukkoa) PostGIS: ssä, joita haluan verrata. Haluaisin tietää, kuinka ”lähellä” jokainen sarja on verrattuna kahteen muuhun. Toisin sanoen tarvitsisin jonkin verran mittausta, kuten kunkin pisteen keskimääräisen etäisyyden keskiarvo kaikkien muiden kanssa (toisin sanoen etäisyysmatriisin keskiarvo) … Kuulostaa monimutkaiselta, mutta olen varma, että vertailua varten on olemassa joitain yleisiä tilastoja sarja pisteitä.

miltä kyselyni näyttää?

Kommentit

  • Jos valitset mittaukseksi neliökeskiarvon pisteitä, laskennan monimutkaisuus pienenee O: sta (N ^ 2) arvoon O (N), koska RMSE-etäisyys on yhtä suuri kuin sqrt (2N / (N-1)) kertaa N-pisteen ja niiden keskipisteen välinen RMSE-etäisyys. li>
  • Jos teet sen omalla tavallasi, ' pääset tilanteeseen, jossa joukon vertaaminen itseensä johtaa nollasta poikkeavaan etäisyyteen. Eli verrataan kuinka lähellä joukon pisteet eivät ole pelkästään kahden joukon välillä.
  • @Jakub Yleinen ja tehokas tapa mitata klusteroitumisen taso joukossa pisteitä, jotka on jaettu osiin " klusterit " on käytettävä jonkin verran keskimääräisen etäisyyden mittaria missä tahansa pistejoukossa. Klusteroinnin määrää arvioidaan vertaamalla koko joukon mittausta klustereiden mittojen summaan (tai johonkin muuhun sopivaan yhdistelmään). Näin ollen kommenttisi, jonka jotkut saattavat lukea vastaväitteenä Francescon ' menettelyyn, osoittaa itse asiassa, miksi se on mielenkiintoinen ja hyödyllinen.
  • I tiedä mikä on näiden laskelmien tarkoitus, mutta jos haluat vain tietää, ovatko A-ryhmän pisteet lähempänä toisiaan, sitten joukon B pisteet voivat olla ratkaisu niiden rungon pinta-alan laskemiseen (ST_Area + ST_ConcaveHull )
  • Onko jokin syy, miksi haluat kaikkien pisteiden välisten etäisyyksien keskiarvon? Ominaisuuksien välinen suurin etäisyys vääristää jokaista keskimääräistä laskutoimitusta, kun kaikki ominaisuusjoukot voivat olla melko lähellä toisiaan.

Vastaa

Kuten mainitsin kommentissa, keskimääräinen etäisyys vääristyy suurimpien pisteiden välisten etäisyyksien vuoksi. Sinulla voi olla esimerkiksi 100 km: n pisteinen pilvi, jonka jälkeen siirryt sivusuunnassa 1 m muodostaaksesi uuden pöydän. keskimääräinen etäisyys minkä tahansa taulukon A pisteen ja taulukon B välinen etäisyys on lähempänä 100 km kuin 1 m. lähin etäisyys missä tahansa taulukon A ja taulukon B kohdassa on 1 m ja keskimääräinen lähin etäisyys on 1 m.

Tämän lisäksi näytän, kuinka lasketaan lähimmän matkan keskiarvo, jonka voit pidentää haluamallasi tavalla.

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 

Ja sitten laskea keskimääräinen lähin etäisyys:

SELECT avg(distance) FROM a_b_distances 

kommentit

  • Tämä on hienoa! Kuinka tätä voitaisiin laajentaa niin, että löydetään suurin mahdollinen lähin etäisyys?
  • Vaihda avg kohteelle max
  • Mahtava! Voisiko tämä olla kirjoitettu palata palauttamaan maksimi suoraan? I ' m teen tämän kaikilla riveilläni
  • Tässä vaiheessa haluat ehkä kysyä oman kysymyksesi ja minä ' ll yrittää mielelläni vastata siihen, me ' l Saan tätä tarkempia yksityiskohtia kommenttiosassa
  • Lisätty tähän (myös muokattu) gis.stackexchange.com/questions/190237/…

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *