Hvordan beregne gjennomsnittsavstanden mellom poengsett som mål for nærhet

Jeg har tre serier (eller tabeller) av poeng i PostGIS som jeg vil sammenligne. Jeg vil gjerne vite hvor «nær» hver serie er sammenlignet med de to andre. Med andre ord vil jeg trenge noe mål som gjennomsnittet av gjennomsnittsavstanden for hvert punkt med alle de andre (det vil si gjennomsnittet av avstandsmatrisen) … Høres komplisert ut, men jeg er sikker på at det finnes noen vanlig statistikk å sammenligne rekke poeng.

Hvordan ville forespørselen min se ut?

Kommentarer

  • Hvis du velger som mål, vil rotverdiens kvadratavstand være mellom poeng, reduseres kompleksiteten i beregningen fra O (N ^ 2) til O (N), fordi RMSE-avstanden er lik sqrt (2N / (N-1)) ganger RMSE-avstanden mellom N-punktene og deres midtpunkt.
  • Hvis du gjør det på din måte, vil du ' havne i en situasjon hvor det å sammenligne et sett med seg selv vil ende opp med en avstand som ikke er null. Det er at du vil sammenligne hvor nær punktene i settet ikke bare er mellom to sett.
  • @Jakub En vanlig og effektiv måte å måle graden av klynging innenfor et sett med punkter som er delt inn i " klynger " er å bruke et mål på gjennomsnittsavstanden innenfor et hvilket som helst sett. Å sammenligne tiltaket for hele settet med summen (eller en annen passende kombinasjon) av tiltakene fra klyngene, vurderer mengden klynging. Dermed påpeker kommentaren din, som noen kan lese som en innvending mot Francesco ' s prosedyre, hvorfor den er interessant og nyttig.
  • I ikke vet hva som er poenget med disse beregningene, men hvis du bare vil vite om poeng i sett A er nærmere hverandre, så vil poeng i sett B kanskje være å telle arealet av skroget deres (ST_Area + ST_ConcaveHull )
  • Er det en grunn til at du vil ha gjennomsnittet av gjennomsnittet av ALLE avstandene mellom punkter? Hver gjennomsnittsberegning blir forvrengt av den maksimale avstanden mellom funksjoner, når alle sett med funksjoner kan være ganske nær hverandre.

Svar

Som jeg nevnte i en kommentar, vil gjennomsnittsavstanden bli forvrengt av de største avstandene mellom punkter. For eksempel kan du ha en punktsky som er 100 km over, som du deretter skifter sideveis med 1 m for å danne en ny tabell. gjennomsnittsavstand for ethvert punkt i tabell A til tabell B vil være nærmere 100 km enn 1 m. nærmeste avstand for ethvert punkt i tabell A til tabell B vil være 1 m, og gjennomsnittlig nærmeste avstand vil være 1 m.

Med det til side vil jeg vise hvordan man beregner gjennomsnittet for nærmeste avstand, som du deretter kan utvide som du vil.

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 

Og deretter for å beregne gjennomsnittlig nærmeste avstand:

SELECT avg(distance) FROM a_b_distances 

Kommentarer

  • Dette er flott! Hvordan kan dette utvides for å finne den maksimale nærmeste avstanden?
  • Bytt ut avg for max
  • Kjempebra! Kan dette være skrevet for å gå tilbake for å returnere maks direkte? Jeg ' gjør dette på alle linjene mine
  • På dette punktet vil du kanskje stille ditt eget spørsmål og jeg ' Vi prøver gjerne å svare på det, vi ' l Jeg får bedre detaljer enn dette frem og tilbake i kommentarfeltet
  • Lagt til her (også redigert) gis.stackexchange.com/questions/190237/…

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *