Beklenen n konumdan bir nokta için GPS koordinatlarına yaklaşma


9

Dikkatimin koordinatlarını bulmaya çalışıyorum (X noktası, mavi işaretli). X noktasını her ziyaret ettiğimde aracımı park ettiğim yere göre koordinatları toplamak için arabamın GPS cihazını kullandım. Bu egzersizi 16 gün boyunca takip ettikten sonra, dikkatimi çeken 16 koordinat seti elde etmeyi başardım.

Bu koordinatları haritaya çizdikten sonra, aşağıdakileri gözlemledim: On kereden iki veya üç kez, GPS cihazım X noktasından uzak olduğu ortaya çıkan yanlış bir koordinat seti verdi. Ayrıca trafik nedeniyle, bazen x noktasına yakın park edemediğinden, bu durumda da elde edilen koordinatlar X noktasından uzaktır.

Sorun: Elde edilen 16 koordinat setinden, dikkatime (X noktası) yakın olan bir koordinat setine daraltmak için hangi işlemi kullanmalıyım?

Görüntü yukarıdaki sorun açıklamasını destekliyor


GPS cihazınız tarafından sağlanan PDOP hakkında bilginiz var mı? bu güvenilmez noktaları belirlemenize yardımcı olabilir.
radouxju

Bunu cevaplara koyacağım ama tam olarak ne yapmaya çalıştığınızdan emin değilim, ama aykırı değerleri savurmak ve en küçük kareler ayarını kullanarak sorununuzu çözebileceğine inanıyorum. utdallas.edu/~aiken/GPSCLASS/ch11.pdf
ed.hank

Yanıtlar:


13

Bu ilginç soruna yaklaşmanın bir yolu, onu iki değişkenli nokta dağılımının merkezinin sağlam bir tahmincisi olarak görmektir. (İyi bilinen) bir çözüm, hiçbir şey kalmayana kadar dışbükey gövdeleri soymaktır . Son boş olmayan gövdenin centroidi merkezi bulur.

(Bu bagplot ile ilgilidir . Daha fazla bilgi için Web'de "dışbükey gövde soyma çok değişkenli aykırı değerlerini arayın").

şekil

Gösterilen 16 noktanın sonucu, bu haritada merkezi üçgen olarak gösterilmiştir. Çevredeki üç çokgen birbirini izleyen dışbükey gövdeleri gösterir. İlk iki adımda (toplamın% 30'u!) İlk iki adımda çıkarıldı.


Örnek hesaplandı R. Algoritmanın kendisi orta blokta "dışbükey peeling" içinde uygulanır. chullGövdedeki noktaların dizinlerini döndüren yerleşik rutini kullanır . Bu noktalar negatif indeksleme ifadesi ile kaldırılır xy[-hull, ]. Bu, son noktalar kaldırılana kadar tekrarlanır. Son adımda, sentroid koordinatların ortalaması alınarak hesaplanır.

Çoğu durumda verilerin projelendirilmesi bile gerekli değildir: dışbükey gövdeler orijinal özellikler antimeridian (+/- 180 derece boylam), kutuplardan herhangi birini veya o kadar genişse aralarındaki segmentlerin eğriliğini kapsıyorsa değişmeyecektir. bir fark yarat. (O zaman bile eğrilik çok endişe verici olacaktır, çünkü soyma hala merkezi bir noktaya yakınlaşacaktır.)

#
# 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")

Güzel. Bir düşünce: tekneleri hesaplamadan önce olası kötü verileri atmak uygun mudur - sadece nasıl toplandığına (yakın park edememe) dayalı, ancak verilerin incelenmesine dayalı DEĞİL?
Simbamangu

@Simba Bu makul bir yaklaşım.
whuber

Bunun gibi birden fazla sitemiz varsa (her biri farklı sayıda gözlem içeren (bunun gibi 16)) bir excel dosyasında, bunun kodunu nasıl değiştiririz.
user3587184

@ user3587184 İdeal olarak, işi Excel'de yapmazsınız. Gerekirse, gözlem grupları üzerinde döngü yapmak için bir makro yazın.
whuber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.