Coordinate GPS approssimative per un punto da n posizioni previste


9

Sto cercando di trovare le coordinate del mio punto di attenzione (punto X, contrassegnato in blu). Ho usato il dispositivo GPS della mia auto per raccogliere le coordinate in base a dove ho parcheggiato il mio veicolo ogni volta che ho visitato il punto x. Quindi, dopo aver seguito questo esercizio per 16 giorni, sono riuscito a ottenere 16 serie di coordinate, distribuite attorno al mio punto di attenzione.

Dopo aver tracciato queste coordinate sulla mappa, ho osservato quanto segue: Due o tre volte su dieci volte, il mio dispositivo GPS ha fornito un insieme errato di coordinate che si sono rivelate silenziose lontano dal punto X. A causa del traffico, a volte sono incapace di parcheggiare vicino al punto x e quindi anche in questo caso, le coordinate ottenute sono lontane dal punto X.

Problema: dalle 16 serie di coordinate ottenute, quale processo devo utilizzare per restringere una serie di coordinate che si trova nelle immediate vicinanze del mio punto di attenzione (punto X)?

L'immagine supporta la descrizione del problema sopra


hai informazioni su PDOP fornite dal tuo dispositivo GPS? questo potrebbe aiutarti a identificare i punti inaffidabili.
Radouxju,

Metterei questo nelle risposte ma non sono sicuro se questo è esattamente quello che stai cercando di fare, ma lanciare i valori anomali e usare una regolazione dei minimi quadrati credo possa risolvere il tuo problema. utdallas.edu/~aiken/GPSCLASS/ch11.pdf
ed.hank

Risposte:


13

Un modo per affrontare questo interessante problema è quello di vederlo come un solido stimatore del centro di una distribuzione di punti bivariati. Una (ben nota) soluzione è quella di staccare gli scafi convessi fino a quando non viene lasciato nulla . Il centroide dell'ultimo scafo non vuoto individua il centro.

(Questo è correlato al bagplot . Per ulteriori informazioni, cercare nel Web " valori anomali multivariati di peeling convessi dello scafo.")

figura

Il risultato per i 16 punti illustrati è mostrato come il triangolo centrale in questa mappa. I tre poligoni circostanti mostrano i successivi scafi convessi. I cinque punti periferici (30% del totale!) Sono stati rimossi nei primi due passaggi.


L'esempio è stato calcolato in R. L'algoritmo stesso è implementato nel blocco centrale, "peeling convesso". Utilizza la chullroutine integrata , che restituisce gli indici dei punti sullo scafo. Questi punti vengono rimossi mediante l'espressione di indicizzazione negativa xy[-hull, ]. Questo si ripete fino a quando non verranno rimossi gli ultimi punti. Nell'ultimo passaggio, il centroide viene calcolato facendo la media delle coordinate.

Si noti che in molti casi la proiezione dei dati non è nemmeno necessaria: gli scafi convessi non cambieranno a meno che le caratteristiche originali non si estendano sull'antimeridiano (+/- 180 gradi di longitudine), su entrambi i poli, o siano così estese che la curvatura dei segmenti tra di loro fare la differenza. (Anche in questo caso la curvatura sarà di scarsa preoccupazione, perché il peeling convergerà comunque in un punto centrale.)

#
# Project the data.
#
dy <- c(8,7,5,10,7,17,19,19,21,22,22,22,24,24,26,26)
dx <- c(66,67,66,89,89,79,78,76,75,81,78,77,75,80,77,83)
lat <- (28.702 + dy/1e5) / 180 * pi
lon <- (77.103 + dx/1e5) / 180 * pi
y <- dy
x <- cos(mean(lat)) * dx
#
# Convex peeling.
#
xy <- cbind(x, y)
while(TRUE) {
  hull <- chull(xy)
  if (length(hull) < nrow(xy)) {
    xy <- xy[-hull, ]
  } else {
    xy.0 <- matrix(apply(xy, 2, mean), 1, 2)
    break
  }
}
#
# Plot the data `xy` and the solution `xy.0`.
#
plot(range(x), range(y), type="n", asp=1)
points(x, y, pch=21, bg="#a01010")
points(xy.0, pch=24, cex=1.2, bg="#404080")

Bello. Un pensiero: sarebbe opportuno scartare eventuali dati errati prima di calcolare gli scafi, basandosi esclusivamente su come sono stati raccolti (incapacità di parcheggiare nelle vicinanze) ma NON sulla base dell'ispezione dei dati?
Simbamangu,

@Simba Questo è un approccio ragionevole.
whuber

Se abbiamo più siti come questo, ognuno con un numero diverso di osservazioni (come questo aveva 16), in un file Excel, come potremmo modificare il codice per quello.
user3587184,

@ user3587184 Idealmente, non faresti il ​​lavoro in Excel. Se è necessario, quindi scrivere una macro per passare in rassegna i gruppi di osservazioni.
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.