ประมาณพิกัด GPS สำหรับจุดจากตำแหน่งที่คาดไว้


9

ฉันพยายามค้นหาพิกัดของจุดสนใจของฉัน (จุด X, เครื่องหมายสีน้ำเงิน) ฉันใช้อุปกรณ์ GPS ในรถของฉันเพื่อรวบรวมพิกัดตามตำแหน่งที่ฉันจอดยานพาหนะของฉันทุกครั้งที่ฉันไปที่จุด x ดังนั้นหลังจากทำแบบฝึกหัดนี้เป็นเวลา 16 วันฉันก็สามารถหาพิกัดได้ 16 ชุดกระจายไปทั่วจุดที่ฉันสนใจ

หลังจากพล็อตพิกัดเหล่านี้บนแผนที่ฉันสังเกตสิ่งต่อไปนี้สองครั้งหรือสามครั้งจากสิบครั้งอุปกรณ์ GPS ของฉันให้พิกัดที่ผิดซึ่งกลายเป็นเงียบไกลจากจุด X นอกจากนี้เนื่องจากการจราจรบางครั้งฉัน ไม่สามารถจอดใกล้จุด x และด้วยเหตุนี้ในกรณีนี้เช่นกันพิกัดที่ได้อยู่ไกลจากจุด X

ปัญหา: จากพิกัด 16 ชุดที่ได้รับฉันจะใช้กระบวนการใดในการ จำกัด พิกัดหนึ่งชุดซึ่งอยู่ใกล้กับจุดสนใจของฉัน (จุด X)

ภาพรองรับคำอธิบายปัญหาด้านบน


คุณมีข้อมูลเกี่ยวกับ PDOP จากอุปกรณ์ GPS ของคุณหรือไม่? สิ่งนี้จะช่วยให้คุณระบุจุดที่ไม่น่าเชื่อถือได้
radouxju

ฉันจะตอบคำถามนี้ แต่ฉันไม่แน่ใจว่านี่เป็นสิ่งที่คุณพยายามทำ แต่การโยนค่าผิดปกติและใช้การปรับกำลังสองน้อยที่สุดฉันเชื่อว่าสามารถแก้ปัญหาของคุณได้ utdallas.edu/~aiken/GPSCLASS/ch11.pdf
ed.hank

คำตอบ:


13

วิธีหนึ่งในการแก้ไขปัญหาที่น่าสนใจนี้คือการมองว่าเป็นตัวประมาณค่าที่แข็งแกร่งของจุดศูนย์กลางของการกระจายจุดแบบไบวาเรีย A (ที่รู้จักกันดี) แก้ปัญหาคือการลอกเปลือกออกไปนูนจนไม่มีอะไรเหลือ เซนทรอยด์ของฮัลล์ที่ไม่ว่างตัวสุดท้ายอยู่ตรงกลาง

(สิ่งนี้เกี่ยวข้องกับพล็อตสำหรับข้อมูลเพิ่มเติมค้นหาเว็บเพื่อหา "ตัวนูนนูนออกมาหลายตัวแปร")

รูป

ผลลัพธ์สำหรับ 16 จุดที่แสดงนั้นจะแสดงเป็นรูปสามเหลี่ยมกลางในแผนที่นี้ รูปหลายเหลี่ยมทั้งสามล้อมรอบแสดงลำตัวนูนต่อเนื่อง ห้าคะแนนรอบนอก (30% ของยอดรวม!) ถูกลบออกในสองขั้นตอนแรก


Rตัวอย่างที่ได้รับการคำนวณใน อัลกอริทึมนั้นถูกนำไปใช้ในบล็อกตรงกลาง "การลอกแบบนูน" มันใช้chullรูทีนในตัวซึ่งจะส่งกลับดัชนีของจุดบนตัวถัง xy[-hull, ]จุดเหล่านี้จะถูกลบออกโดยวิธีการของการจัดทำดัชนีการแสดงออกเชิงลบ สิ่งนี้ซ้ำไปซ้ำมาจนกว่าจะลบคะแนนสุดท้าย ในขั้นตอนสุดท้ายเซนทรอยด์จะถูกคำนวณโดยหาค่าพิกัดโดยเฉลี่ย

โปรดทราบว่าในหลาย ๆ กรณีการฉายข้อมูลนั้นไม่จำเป็นด้วยซ้ำ: ตัวถังนูนจะไม่เปลี่ยนแปลงเว้นแต่คุณสมบัติดั้งเดิมจะขยาย antimeridian (+/- 180 องศาลองจิจูด) ไม่ว่าจะเป็นเสาหรือบริเวณที่มีความโค้งของเซ็กเมนต์ระหว่างพวกมัน สร้างความแตกต่าง. (ถึงกระนั้นความโค้งก็ยังเป็นที่น่ากังวลอยู่เล็กน้อยเพราะการลอกจะยังคงเป็นจุดศูนย์กลาง)

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

ดี หนึ่งความคิด: มันจะเหมาะสมหรือไม่ที่จะทิ้งข้อมูลที่ไม่ดีใด ๆ ที่เป็นไปได้ก่อนที่จะคำนวณลำเรือ - แต่เพียงผู้เดียวตามวิธีการรวบรวม (ไม่สามารถจอดใกล้) แต่ไม่ได้ขึ้นอยู่กับการตรวจสอบข้อมูล
Simbamangu

@Simba นั่นเป็นวิธีการที่สมเหตุสมผล
whuber

หากเรามีเว็บไซต์หลายแห่งเช่นนี้แต่ละแห่งมีจำนวนการสังเกตที่แตกต่างกัน (เช่นนี้มี 16 แห่ง) ในไฟล์ excel เราจะแก้ไขโค้ดอย่างไร
user3587184

@ user3587184 ตามหลักแล้วคุณจะไม่ทำงานใน Excel หากคุณต้องการให้เขียนแมโครเพื่อวนลูปกลุ่มการสังเกต
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.