portaldacalheta.pt
  • หลัก
  • การทำกำไรและประสิทธิภาพ
  • การออกแบบ Ux
  • เทคโนโลยี
  • การออกแบบตราสินค้า
เทคโนโลยี

การผจญภัยในการเขียนโปรแกรมและการพัฒนา GPS: บทแนะนำเกี่ยวกับภูมิสารสนเทศ



ทั้งหมดนี้เริ่มต้นจากการเดินทางไปยัง Žbevnica มากกว่า 10 ปีที่แล้ว ฉันมี GPS ใหม่กับฉันและเพื่อนของฉันมี GPS ที่เชื่อมต่อกับโทรศัพท์ Windows ME การขึ้นเขานั้นยอดเยี่ยมมาก แต่เมื่อเรากลับไปที่รถเราประหลาดใจเมื่อเห็นว่า GPS เครื่องหนึ่งอ้างว่าเราเดินไป 6.2 กม. ในขณะที่อีกเครื่องรายงานว่า 6.7 กม. คนหนึ่งอ้างว่าการเพิ่มระดับความสูงของเรา (นั่นคือผลรวมของส่วนที่ขึ้นเขาทั้งหมดของการขึ้นเขาของเรา) คือ 300 เมตรในขณะที่อีกคนหนึ่งรายงานว่าเป็น 500 เมตร

เป็นโปรแกรมเมอร์ (และในที่สุดก็เป็น โปรแกรม GIS ) ฉันรู้สึกทึ่งกับปัญหาทันที ฉันพูดกับตัวเองว่า“ นี่ควร ไม่ ยากที่จะแก้ไขด้วยสคริปต์ง่ายๆ” ท้ายที่สุดแทร็ก GPS เป็นเพียงรายการสิ่งที่ดึงดูดในรูปแบบของ (ละติจูด, ลองจิจูด, ความสูง) ใช่มั้ย?



ดีไม่จริง



ดังนั้นจึงเริ่มต้นการเดินทางของฉันไปสู่โลกที่น่าสนใจของแทร็ก GPS การติดตามข้อผิดพลาดและโดยทั่วไปแล้วการเขียนโปรแกรม GIS



Geospatial Information Systems (GIS) เป็นโดเมนขนาดใหญ่และซับซ้อนครอบคลุมการคาดการณ์แผนที่และข้อมูล geodetic)) การประมวลผลข้อมูลแบบ raste และ vecto และการสำรวจระยะไกล คำแนะนำที่ครอบคลุมเกี่ยวกับโดเมนนี้อยู่นอกเหนือขอบเขตของบทความนี้ และเนื่องจากการมุ่งเน้นไปที่ปัญหาเฉพาะมักจะเป็นวิธีที่มีประโยชน์ในการแนะนำตัวเองให้รู้จักกับโดเมนใหม่ฉันจะนำเสนอความท้าทายด้าน GIS บางประการที่พบและวิธีแก้ไขที่เป็นไปได้ กล่าวคือ:

  • วิธีการรับรู้ทำความเข้าใจและแก้ไขข้อผิดพลาดในการติดตาม GPS ด้วยโปรแกรม
  • วิธีคำนวณและรับข้อมูลที่เป็นประโยชน์เพิ่มเติมจากแทร็ก GPS

สำหรับการเริ่มต้นแทร็ก GPS คือ ไม่ เพียงชุดของ (ละติจูด, ลองจิจูด, ความสูง) สิ่งทอ อุปกรณ์ที่ใช้ GPS จำนวนมากจะให้ข้อมูลเมตาเช่นเวลาอัตราการเต้นของหัวใจและอื่น ๆ อุปกรณ์ GPS บางรุ่นจะให้ข้อมูลว่าข้อมูลนั้นแม่นยำเพียงใด a.k.a. ,“ การเจือจางความแม่นยำ ”. แต่น่าเสียดายที่อุปกรณ์ GPS ส่วนใหญ่โดยเฉพาะอย่างยิ่งอุปกรณ์ระดับล่างที่ครองตลาดจะไม่ให้ข้อมูลนี้และเราถูกทิ้งให้อยู่กับความท้าทายในการหักล้างความแม่นยำของอุปกรณ์ด้วยตัวเราเอง (และควรแก้ไขตามความเหมาะสมหากเป็นไปได้ ).



วิธีสร้างบอทโทรเลข

เริ่มต้นด้วยอัลกอริทึมที่เป็นไปได้อย่างหนึ่งในการตรวจจับอุปกรณ์ GPS ระดับล่าง (เช่นสมาร์ทโฟนส่วนใหญ่) ซึ่งมักจะมีข้อมูล GPS คุณภาพต่ำ

ข้อผิดพลาดในการยกระดับและลักษณะเฉพาะ

หากคุณอาศัยอยู่ในบางส่วนของโลกคุณอาจสังเกตเห็นอะไรแปลก ๆ เกี่ยวกับความแม่นยำในการยกระดับ GPS เมื่อคุณบันทึกเส้นทางด้วยสมาร์ทโฟนของคุณ เมื่อคุณตรวจสอบระดับความสูงจะมีการบันทึกไว้อย่างสม่ำเสมอว่าสูงกว่าหรือต่ำกว่า (ตามค่าคงที่) มากกว่าระดับความสูงที่เหมาะสม ตัวอย่างเช่นฉันอาศัยอยู่ในVišnjan (โครเอเชีย) และ Android ของฉันก็คอยบอกฉันว่าฉันสูงกว่าระดับความสูงจริงประมาณ 35-40 เมตร



ตัวอย่างเช่นนี่คือกราฟระดับความสูงของ GPS จากการเดินขึ้นระยะสั้นที่ฉันใช้เมื่อสองสามเดือนก่อน:

กราฟนี้แสดงปัญหาเกี่ยวกับความแม่นยำในการยกระดับ GPS ในการเขียนโปรแกรม GIS



สองสิ่งที่ควรทราบที่นี่

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



ประการที่สองสิ่งที่อาจสำคัญกว่า (และ ไม่ ปรากฏบนกราฟ) นั่นคือ กราฟทั้งหมดไม่ถูกต้อง . ค่าระดับความสูงได้รับการรายงานอย่างสม่ำเสมอว่าสูงกว่าความเป็นจริงประมาณ 30-40 เมตรดังที่เราจะกล่าวถึงในรายละเอียดเพิ่มเติมในบทความนี้

เมื่อเราตรวจพบว่าแทร็กมีข้อผิดพลาดเหล่านี้เราสามารถอนุมานได้ว่าอุปกรณ์น่าจะเป็น GPS คุณภาพต่ำ

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



ข้อผิดพลาดในการยกระดับการเริ่มต้น

โดยพื้นฐานแล้วมีสองเทคนิคที่อุปกรณ์ GPS ใช้ในการกำหนดระดับความสูง: 'ความสูงของ GPS' (ตามที่ระบบดาวเทียม GPS รายงานไปยังอุปกรณ์) และ 'ความสูงของบรรยากาศ' (คำนวณโดยอุปกรณ์ตามการอ่านค่าความดันบรรยากาศ) ไม่สมบูรณ์แบบ

ค่าความสูงของ GPS อาจมีข้อผิดพลาดเล็ก ๆ น้อย ๆ (โดยทั่วไปอยู่ในช่วง +/- 10 เมตร) ซึ่งอาจเป็นปัญหาอย่างยิ่งหากเราตัดสินใจคำนวณค่าความสูงสะสมในภายหลัง ในทางกลับกันความสูงของบรรยากาศมีความอ่อนไหวไม่เพียง แต่ต่อระดับความสูงเท่านั้น แต่ยังรวมถึงสภาพอากาศด้วยซึ่งสามารถนำเสนอชุดความไม่ถูกต้องของตัวเองได้

อุปกรณ์บางอย่างจึงใช้วิธีการแบบผสมผสานโดยใช้การอ่านค่าบรรยากาศในการบันทึกระดับความสูง แต่ใช้การอ่าน GPS เพื่อช่วยในการปรับเทียบค่าเหล่านั้นเพื่อช่วยพิจารณาการเปลี่ยนแปลงสภาพอากาศ (ความดัน) และอื่น ๆ ด้วยอุปกรณ์ดังกล่าวเมื่อเริ่มต้นการติดตามความสูงของบรรยากาศอาจผิดพลาดได้อย่างสิ้นเชิง แต่จากนั้นการปรับเทียบใหม่ด้วยข้อมูลดาวเทียม GPS ที่มากขึ้นข้อมูลระดับความสูงจะมีความน่าเชื่อถือมากขึ้น ดังนั้นจึงไม่ใช่เรื่องแปลกที่อุปกรณ์ดังกล่าวจะพบข้อผิดพลาดในการเริ่มต้น 'เนินเขาปลอม' ประเภทที่เราสังเกตเห็นก่อนหน้านี้บนกราฟระดับความสูงของเรา

ความไม่ถูกต้องของการยกระดับ GPS อย่างต่อเนื่อง

เพื่ออธิบายข้อผิดพลาดที่สอดคล้องกันในการรายงานระดับความสูงเราจำเป็นต้องกลับไปที่ภูมิศาสตร์ของโรงเรียนประถม ครูภูมิศาสตร์มักจะอธิบายว่าโลกไม่ใช่ทรงกลม แต่เป็น ทรงรี . หากนี่เป็นความจริงอย่างเคร่งครัดระดับความสูงจะคำนวณทางคณิตศาสตร์ได้ง่าย แต่มันไม่ใช่ โลกผิดปกติ ในความเป็นจริงมันคล้ายกับไฟล์ มันฝรั่งคล้ายทรงรี มากกว่าทรงรีที่สมบูรณ์แบบซึ่งหมายความว่าสำหรับการพัฒนาระบบ GIS คุณต้องมีชุดข้อมูลระดับความสูงโดยละเอียดสำหรับเกือบทุกจุดบนโลก ใน geodesy การอ้างอิงนี้ ellipsoid (a.k.a. datum) เป็นพื้นผิวที่กำหนดโดยทางคณิตศาสตร์ซึ่งใกล้เคียงกับ geoid ร่างที่ 'แท้จริง' ของโลก

ยิ่งไปกว่านั้นสิ่งสำคัญคือต้องตระหนักว่าแม้แต่ข้อมูลเหล่านี้ก็เป็นเพียงข้อมูลเท่านั้น การประมาณ ของรูปร่างจริงของพื้นผิวโลก บางส่วนทำงานได้ดีกว่าในบางส่วนของโลกและบางส่วนทำงานได้ดีกว่าในบางส่วนของโลก ดังตัวอย่างภาพด้านล่าง (สร้างโดยใช้ ห้องสมุด Ruby ของฉัน ) แสดงให้เห็นว่าโลกแตกต่างจากแบบจำลองทรงรีที่ใช้กันทั่วไปอย่างไร (ไฟล์ วันที่ WGS84 ). ส่วนสีดำแสดงถึงส่วนต่างๆของโลกด้านบนและสีขาวหมายถึงบางส่วนของโลกด้านล่างซึ่งเป็นรูปทรงรีในอุดมคติ (รูปทรงทวีปและเกาะแสดงด้วยสีแดง)

แผนภูมินี้แสดงถึงโลก

คุณจะเห็นได้ว่าอินเดียอยู่ต่ำกว่า WGS84 ทรงรีโดยทางตอนใต้มีค่าต่ำสุดแน่นอน (เกือบ -100 เมตร!) และยุโรปอยู่เหนือมัน

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

การตรวจจับและแก้ไขข้อผิดพลาดในการยกระดับ GPS

ในการพัฒนาแอพ GPS การตรวจจับว่าอุปกรณ์ที่บันทึกเส้นทางของเรามีข้อผิดพลาดประเภทนี้สามารถทำได้โดยใช้ไฟล์ ชุดข้อมูล Earth Gravitational Model EGM2008 หรือบางครั้งเรียกว่าชุดข้อมูล 'geoid undulations' ด้วย EGM2008 เราสามารถประมาณความแตกต่างระหว่างพื้นผิวโลกจริงกับทรงรีในอุดมคติได้

ด้วย EGM2008 เราสามารถประมาณความแตกต่างระหว่างพื้นผิวโลกจริงกับทรงรีในอุดมคติได้

แต่หากต้องการทราบว่า ของเรา ติดตาม GPS มีข้อผิดพลาดนี้เราต้องการอีกสิ่งหนึ่ง - จริง ระดับความสูง ฐานข้อมูลสาธารณะที่มีประโยชน์สำหรับวัตถุประสงค์นี้คือไฟล์ ภารกิจภูมิประเทศเรดาร์กระสวย (SRTM) . SRTM เป็นฐานข้อมูลแบบแรสเตอร์ที่ให้ค่าระดับความสูงที่ความละเอียดประมาณทุกๆ 30 เมตร (ที่เส้นศูนย์สูตร) ​​สำหรับสหรัฐอเมริกาและทุกๆ 90 เมตรสำหรับส่วนที่เหลือของโลก ตัวอย่างเช่นเมื่อคำนวณค่า SRTM สำหรับจุดในแทร็กด้านบนกราฟที่แตกต่างกัน (เส้นสีน้ำเงิน) จะปรากฏขึ้น:

เครื่องมือที่ยอดเยี่ยมสำหรับการพัฒนาแอพ GPS คือฐานข้อมูล SRTM ของค่าระดับความสูง GIS

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

นี่คือแผนภูมิข้อมูลการยกระดับ GPS ที่ราบรื่นจากฐานข้อมูล SRTM

ทั้งหมดนี้สามารถทำได้อย่างง่ายดายโดยบังเอิญโดยใช้ไลบรารี GPS Python ของฉัน:

  • srtm.py : ตัวแยกวิเคราะห์ python สำหรับข้อมูลระดับความสูงของ Shuttle Radar Topography Mission (SRTM)
  • gpxpy : ไลบรารี python อย่างง่ายสำหรับการแยกวิเคราะห์และจัดการไฟล์ GPX ( GPX รูปแบบการแลกเปลี่ยน GPS เป็นรูปแบบข้อมูล XML ที่มีน้ำหนักเบาสำหรับข้อมูล GPS)

สำหรับ ผู้ใช้ Ruby นอกจากนี้ยังมีไฟล์ ไลบรารีตัวแยกวิเคราะห์ Geoelevations.rb สำหรับคลื่น SRTM และ EGM2008

เมื่อตรวจพบความผิดปกติเหล่านี้ขึ้นอยู่กับประเภทของซอฟต์แวร์ที่เรากำลังทำงานด้วยเราสามารถ (a) แก้ไขข้อผิดพลาดโดยอัตโนมัติด้วยตัวเองหรือ (b) แจ้งให้ผู้ใช้ทราบว่ามีการตรวจพบความไม่ถูกต้องในข้อมูลระดับความสูง

การซื้อกิจการที่มีเลเวอเรจ (lbo)

นอกจากนี้เนื่องจากมีอัลกอริทึมที่แตกต่างกันที่สามารถใช้เพื่อแก้ไขข้อผิดพลาดในการยกระดับ GPS เหล่านี้ด้วยโปรแกรมเราจึงอาจต้องการให้ผู้ใช้มีทางเลือกในการเลือกอัลกอริทึมที่จะใช้ (เช่นผู้ใช้ต้องการให้เราใช้ข้อมูล SRTM แบบเรียบหรือไม่ “ ตามสภาพ” หรือผู้ใช้ต้องการให้เราใช้ข้อมูล SRTM เพื่อช่วยแก้ไขระดับความสูงที่อุปกรณ์รายงาน)

ปรับแทร็กให้เรียบและลบค่าผิดปกติ

หากนักฟุตบอลสวมอุปกรณ์ GPS และบันทึกเกมการติดตามที่เกิดขึ้นจะยุ่งเหยิง สนามแข่งขันจะเต็มไปด้วยแทร็กที่เต็มไปด้วยการเลี้ยวหักศอกการเร่งความเร็วและการชะลอตัวมากมาย

โชคดีที่กรณีส่วนใหญ่ที่ผู้คนใช้ GPS จะไม่มีรูปแบบเดียวกันนี้ - เส้นติดตาม GPS (และการเร่งความเร็ว) จะค่อนข้างราบรื่น ในกรณีเช่นนี้จุดที่ไม่แน่นอนในแทร็กของเราสามารถสันนิษฐานได้ว่าเกิดจากความผิดพลาดดังนั้นจึงสามารถลบค่าผิดปกติดังกล่าวได้อย่างสมเหตุสมผลด้วยฟังก์ชันการปรับให้เรียบ

ในฐานะผู้พัฒนา GIS การทำให้ราบรื่นมักทำได้โดยการทำซ้ำตามจุดและ การเปลี่ยนแปลง พิกัดตามค่าของพิกัดใกล้เคียง ตัวอย่างเช่นเราสามารถเปลี่ยนละติจูดและลองจิจูดทุกรายการด้วยอัลกอริทึมดังต่อไปนี้:

points[n].latitude = points[n-1].latitude * 0.3 + points[n].latitude * .4 + points[n+1].latitude * .3 points[n].longitude = points[n-1].longitude * 0.3 + points[n].longitude * .4 + points[n+1].longitude * .3

ค่าสัมประสิทธิ์ยิ่งใหญ่ผลกระทบของจุดใกล้เคียงที่สอดคล้องกันมากขึ้น o ตำแหน่งที่แก้ไขของจุดปัจจุบัน ค่าสัมประสิทธิ์ที่ฉันใช้ในตัวอย่างนี้ (0.3, 0.4, 0.3) ค่อนข้างเป็นคำบรรยาย แต่ในกรณีส่วนใหญ่คุณจะต้องการให้ผลรวมเท่ากับ 1.0 (ตัวอย่างเช่นวิธีการที่ซับซ้อนมากขึ้นคือการใช้ระยะห่างระหว่างจุดแล้วยิ่งใกล้จุดมากเท่าไหร่ค่าสัมประสิทธิ์ที่สอดคล้องกันก็จะยิ่งใหญ่ขึ้น)

นี่คือตัวอย่างของแทร็กที่มีข้อผิดพลาดแบบสุ่มจำนวนมาก:

ความท้าทายในการติดตาม GPS ที่ใหญ่ที่สุดอย่างหนึ่งในการพัฒนา GIS คือการติดตามที่มีข้อผิดพลาดแบบสุ่มจำนวนมาก

สังเกตว่าแทร็กไม่ไปตามเส้นทางได้ดีมีการเลี้ยวที่คมและขรุขระมากมายและบางครั้งก็เบี่ยงเบนเส้นทางที่คาดไว้โดยสิ้นเชิง

หลังจากการทำซ้ำสองสามครั้งแทร็กเดียวกันนี้จะเปลี่ยนเป็น:

หลังจากแก้ไขข้อผิดพลาดในการติดตามแล้วการติดตาม GPS ในโปรแกรมนี้ยังไม่สมบูรณ์ แต่ดีกว่า

แม้ว่าจะดีกว่ามาก แต่ก็ยังไม่สมบูรณ์แบบ โปรดทราบว่ายังมีสถานที่ต่างๆ (โดยเฉพาะบริเวณกลางทาง) ที่แทร็กยังคงเบี่ยงเบนไปจากถนน

มีสิ่งอื่น ๆ ให้คุณได้ลองทำ ในบางภูมิภาคและสำหรับแอพพลิเคชั่น GPS บางตัวคุณยังสามารถใช้ไฟล์ OpenStreetMap (OSM) ข้อมูลเพื่อพยายามเดาเส้นทางที่ถูกต้องจากนั้น 'สแนป' ชี้ไปที่บรรทัดใหม่นี้ แม้ว่าสิ่งนี้มักจะเป็นประโยชน์ แต่ก็อาจมีความไม่สมบูรณ์เช่นในกรณีที่ข้อมูล OSM มีเส้นคู่ขนานสองเส้น (เช่นทางหลวงและถนนใกล้เคียง) หรือเส้นทางใกล้เคียงจำนวนมาก

หากเราสามารถสรุปได้ว่าเส้นทางดังกล่าวเป็นเส้นทางเดินป่าและมีตัวเลือกในการเข้าสู่ทางหลวงหรือเส้นทางใกล้เคียงเราสามารถสรุปได้อย่างปลอดภัยว่าการเดินป่านั้นเป็นไปตามเส้นทางไม่ใช่บนทางหลวง

ในกรณีเช่นนี้วิธีแก้ไขที่เป็นไปได้คือการพยายามตรวจหาประเภทของกิจกรรมโดยใช้เทคนิคบางอย่างที่กล่าวถึงเพิ่มเติมในบทความนี้ ตัวอย่างเช่นหากเราสามารถอนุมานได้ว่าเส้นทางดังกล่าวเป็นเส้นทางเดินป่าและมีตัวเลือกในการเข้าสู่ทางหลวงหรือเส้นทางใกล้เคียงเราสามารถสรุปได้อย่างปลอดภัยว่าการเดินป่านั้นเป็นไปตามเส้นทางไม่ใช่ทางหลวง

ข้อมูลเบื้องต้นเกี่ยวกับข้อมูลขนาดใหญ่ด้วย apache spark

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

ตัวอย่างของประโยชน์เพิ่มเติมและการใช้การทำให้เรียบอาจรวมถึง:

  • การคำนวณการเพิ่มระดับความสูงทั้งหมด ในการคำนวณการเพิ่มระดับความสูงทั้งหมดในแทร็กนั้นไม่เพียงพอที่จะรวมการ 'กระโดด' ขึ้นเนินเล็ก ๆ ทั้งหมดเนื่องจากมักจะมีข้อผิดพลาดเล็กน้อย การปรับระดับความสูงให้เรียบก่อนทำผลรวมมักจะช่วยบรรเทาปัญหานี้ได้
  • การลบค่าผิดปกติ หลังจาก 'ปรับให้เรียบ' จุดที่อยู่ห่างจากแทร็กเกินไปจะตรวจพบได้ง่ายขึ้น สิ่งเหล่านี้มักจะถือว่าเป็นค่าผิดปกติและผู้ใช้สามารถแจ้งให้ถามว่าควรนำออกหรือไม่

มีปัญหาอยู่อย่างหนึ่งที่อัลกอริทึมนี้ใช้งานไม่ได้: ในบางกรณี GPS จะบันทึกเส้นทางที่ราบรื่น แต่เส้นทางจะ 'เลื่อน' โดยความแตกต่างคงที่ในบางทิศทาง ในกรณีเช่นนี้การปรับให้เรียบอาจทำให้เส้นเรียบขึ้นอีก แต่จะไม่แก้ไขข้อผิดพลาดของกะนี้

ปัญหาเพิ่มเติมที่ชัดเจนน้อยกว่า แต่มีนัยสำคัญเกี่ยวกับเทคนิคการปรับผิวเรียบอย่างง่ายที่เราได้อธิบายไว้คือการเปลี่ยนแปลงจะแก้ไขจุดทั้งหมด (หรือเกือบทั้งหมด) ในเส้นทางแม้กระทั่งจุดที่อาจไม่ผิดพลาด แม้ว่าวิธีการที่ง่ายกว่านี้มีแนวโน้มที่จะเป็นวิธีการแก้ปัญหาที่เหมาะสมสำหรับผู้ใช้ GPS ทั่วไป แต่อัลกอริธึมการปรับให้เรียบที่ซับซ้อนกว่านั้นสามารถใช้งานได้ในการเขียนโปรแกรม GIS ในบางกรณีอาจเป็นการดีกว่าที่จะลบสิ่งผิดปกติออกโดยไม่ต้องดำเนินการใด ๆ ให้ราบรื่นขึ้นอยู่กับผู้ใช้อุปกรณ์และแอปพลิเคชัน

ตรวจจับความเร็วสูงสุด

การตรวจจับความเร็วสูงสุดของแทร็กนั้นค่อนข้างง่ายหากเรามีพิกัดและการประทับเวลาของทุกจุดบนเส้นทาง เพียงแค่คำนวณความเร็วระหว่างจุดและหาค่าสูงสุด ดูเหมือนตรงไปตรงมา

แต่อย่าลืมว่าเรากำลังติดต่อกับอุปกรณ์ GPS ระดับล่างและเราไม่เชื่อถือข้อมูลอย่างเต็มที่ซึ่งอาจมีผลต่อการคำนวณของเราอย่างมาก หากอุปกรณ์บันทึกตำแหน่งทุกๆ 5 เมตรและเมื่อถึงจุดหนึ่งเกิดความผิดพลาดโดยการวางจุดผิด 10 เมตรส่วนนั้นของแทร็กอาจเร็วกว่าเดิม 3 เท่า!

แนวทางหนึ่งที่พบบ่อยในโลกแห่งการพัฒนา GIS คือการดึงความเร็วทั้งหมดระหว่างจุดต่างๆจากนั้นเพียงแค่ลบ 5% แรก (เช่นใช้เปอร์เซ็นไทล์ที่ 95) โดยหวังว่า 5% ที่ถูกกำจัดจะแสดงถึงข้อผิดพลาดส่วนใหญ่ แต่สิ่งนี้ไม่เป็นไปตามหลักวิทยาศาสตร์และไม่ได้ผลลัพธ์ที่ถูกต้อง ในการทดลองใช้เทคนิคนี้ฉันได้ลองใช้ค่าเปอร์เซ็นไทล์ที่แตกต่างกันและพบว่าอุปกรณ์บางอย่างใช้ได้ดีกับอุปกรณ์ GPS เครื่องหนึ่งซึ่งบางเครื่องก็ใช้ได้ดีกับอุปกรณ์อื่น ๆ บางอย่างใช้ได้ดีสำหรับการเดินป่าและอื่น ๆ สำหรับการปั่นจักรยาน แต่ในกรณีส่วนใหญ่ผลลัพธ์ไม่ได้ รู้สึก ถูกต้องสำหรับฉัน

หลังจากลองใช้อัลกอริธึมมากมายอะไร เคยทำ การทำงานสำหรับฉันนั้นง่ายมาก: การเพิ่มตัวกรองอื่นเพื่อลบความสุดขั้วไม่เพียง แต่ด้วยความเร็วเท่านั้น แต่ยังรวมถึงระยะทางด้วยดังนี้:

ความแตกต่างระหว่าง llc s corp และ c corp
  1. จัดเรียงจุด ตามระยะทาง ระหว่างเพื่อนบ้านและลบ 5% แรก
  2. (ไม่บังคับ :) ปรับแทร็กให้เรียบ (ในแนวนอนและ / หรือแนวตั้ง)
  3. จัดเรียงจุด ด้วยความเร็ว ระหว่างเพื่อนบ้านและลบ 5% แรก
อัลกอริทึมนี้ให้ผลลัพธ์ที่ค่อนข้างน่าเชื่อถือแม้กระทั่งสำหรับการติดตามจากอุปกรณ์ GPS ราคาถูกที่มีข้อผิดพลาดแบบสุ่ม

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

ประเภทกิจกรรมหักล้าง

ในหลายกรณีความเร็วเฉลี่ยเพียงพอที่จะกำหนดประเภทกิจกรรม ตัวอย่างเช่นหากความเร็วเฉลี่ยคือ 5 กม. ต่อชั่วโมงอาจเป็นทางเดิน / ไต่เขาในขณะที่ความเร็วเฉลี่ยคือ 30 กม. ต่อชั่วโมงอาจเป็นลู่ปั่นจักรยานเป็นต้น

แต่ถ้าความเร็วเฉลี่ย 12 กม. ต่อชั่วโมงคุณจะไม่แน่ใจว่าผู้ใช้ปั่นจักรยานเสือภูเขาหรือวิ่งอยู่ ในกรณีเช่นนี้ไฟล์ ขีดสุด บางครั้งความเร็วสามารถช่วยแยกความแตกต่างระหว่างกิจกรรมทั้งสองประเภทได้ โดยเฉพาะอย่างยิ่งเราสามารถใช้ข้อเท็จจริงที่ว่านักวิ่งแทบจะทำความเร็วได้ไม่เกินสองเท่าของค่าเฉลี่ยในขณะที่นักปั่นเป็นประจำ (เช่นขณะลงเขาบนเส้นทางที่ไม่ท้าทายเกินไป)

ดังนั้นอาจมีการบันทึกแทร็กที่มีความเร็วเฉลี่ย 12kmh และความเร็วสูงสุด 18kmh ในขณะที่กำลังวิ่งในขณะที่ track ที่มีความเร็วเฉลี่ย 12kmh และความเร็วสูงสุด 30kmh อาจถูกบันทึกขณะปั่นจักรยานเสือภูเขา (แน่นอนเราต้องแน่ใจว่าความเร็วสูงสุดที่คำนวณได้ของเรานั้นถูกต้องเพื่อให้สิ่งนี้ทำงานได้อย่างน่าเชื่อถือ)

เปอร์เซ็นต์ของท้องฟ้าที่มองเห็นได้: พร็อกซีที่ชาญฉลาดสำหรับการตรวจจับข้อผิดพลาดของ GPS

ความแม่นยำของการวัด GPS แต่ละครั้ง (เช่นละติจูดลองจิจูดและระดับความสูง) ขึ้นอยู่กับจำนวนดาวเทียมที่มองเห็นได้ในขณะบันทึก ดังนั้นหากเราสามารถระบุได้ว่ามีดาวเทียม 'อยู่ในมุมมอง' จำนวนเท่าใดในเวลาที่บันทึกแต่ละครั้งเราสามารถใช้วิธีนี้เพื่อประมาณความแม่นยำของการบันทึกนั้นได้ ตัวอย่างเช่นหากเรารู้ว่าดาวเทียม GPS ที่จำเป็นทั้งหมดอยู่ในมุมมองเราสามารถสันนิษฐานได้ว่าข้อมูล GPS ที่เกี่ยวข้องมีความแม่นยำสูง ในทางกลับกันถ้าเรารู้ว่าไม่มีดาวเทียม GPS อยู่ในมุมมองเราก็ถือว่าข้อมูลนั้นมีโอกาสเกิดข้อผิดพลาดได้

แต่ก่อนที่คุณจะตื่นเต้นเกินไปให้พิจารณาความซับซ้อนของการพยายามแก้ปัญหา GIS ดังกล่าว ก่อนอื่นคุณต้องทราบว่าอุปกรณ์ของคุณสามารถสื่อสารกับระบบดาวเทียม GPS ใดได้ มีต้นฉบับอยู่ในสหรัฐอเมริกา ระบบกำหนดตำแหน่งบนโลก , ยุโรป กัลลิเลโอ และรัสเซีย GLONASS ระบบ. อุปกรณ์บางอย่างใช้งานได้กับดาวเทียมทุกประเภทเหล่านี้ แต่หลายอย่างไม่ทำงาน และอุปกรณ์จำนวนมากยังไม่รายงานว่าใช้ระบบใด

แต่มีวิธีที่ชาญฉลาดในการหลีกเลี่ยงความซับซ้อนนี้และบรรลุการประมาณจำนวนดาวเทียมที่อยู่ในมุมมองโดยประมาณ: ใช้เปอร์เซ็นต์ของท้องฟ้าที่มองเห็นได้เป็นพร็อกซีสำหรับจำนวนดาวเทียมที่มองเห็นได้ . ท้องฟ้าที่มองเห็นได้น้อยลงหมายความว่า GPS ของเราสามารถ 'มองเห็น' (หรือมองเห็นได้) โดยดาวเทียมน้อยลง แต่เราจะคำนวณเปอร์เซ็นต์ของท้องฟ้าที่มองเห็นได้บนจุดใด ๆ บนโลกได้อย่างไร? วิธีแก้ปัญหานั้นค่อนข้างง่าย: เราสามารถคำนวณเส้นขอบฟ้ารอบตัวเราโดยใช้ข้อมูล SRTM ที่กล่าวถึงก่อนหน้านี้

ตัวอย่างเช่นนี่คือเส้นขอบฟ้าหากคุณอยู่ในหุบเขาร้อง Triglav (ยอดสูงสุดของสโลวีเนีย) ซึ่งคำนวณโดยใช้ SRTM:

ภาพขอบฟ้าของหุบเขาด้านล่าง Triglav สร้างขึ้นโดยใช้รหัส GIS

(สำหรับผู้ที่สนใจรหัสของฉันในการสร้างภาพนี้สามารถพบได้ ที่นี่ .)

โดยพื้นฐานแล้วภาพนี้สร้างขึ้นจากชั้นของกราฟระดับความสูงที่เท่ากันซึ่งมองเห็นได้จากจุดศูนย์กลาง ยิ่งพื้นที่สีน้ำเงินเข้มเท่าไรชั้นความสูงก็ยิ่งอยู่ห่างออกไปมากขึ้นเท่านั้น ยิ่งพื้นที่สีน้ำเงินอ่อนลงเท่าไหร่ก็ยิ่งใกล้ระดับความสูงมากขึ้นเท่านั้น จุดสูงสุดที่วาดแทนเส้นขอบฟ้า หากดาวเทียม GPS อยู่ต่ำกว่าเส้นนี้บนท้องฟ้าอุปกรณ์ของเราอาจไม่สามารถมองเห็น (หรือมองเห็น) ได้ (อย่างไรก็ตามโปรดทราบว่าแม้ว่าภาพจะถูกวาดเป็นรูปสี่เหลี่ยมผืนผ้าแบน แต่ในความเป็นจริงคุณจะต้องมีความรู้พื้นฐานเกี่ยวกับเรขาคณิตทรงกลมเพื่อคำนวณพื้นที่ใต้ขอบฟ้าอย่างถูกต้อง)

วิธีนี้จะเป็นประโยชน์ในสถานการณ์ต่างๆเช่นการเดินป่าบนภูเขาซึ่งคุณอาจไปจากการอยู่ในหุบเขาลึก (ด้วยการรับสัญญาณ GPS ที่ไม่ดี) ไปสู่การอยู่บนสันเขา (พร้อมการรับสัญญาณที่ดีกว่ามาก) นี่อาจเป็นตัวบ่งชี้ที่มีประโยชน์ว่าส่วนใดของแทร็กของคุณอาจเกิดข้อผิดพลาดได้ง่ายกว่า

สิ่งที่ควรทราบอีกประการหนึ่งคือนี่ไม่ใช่กระสุนเงินสำหรับตรวจจับข้อผิดพลาดในการยกระดับ GPS ประการแรกพื้นที่ส่วนใหญ่ของโลกไม่ได้เป็นภูเขาและแม้ว่าจะอยู่ในสภาพแวดล้อมทางจิตวิทยาของเราที่จะประเมินระดับความสูงที่สูงเกินไป เปอร์เซ็นต์ที่แท้จริงของท้องฟ้าที่มองเห็นได้นั้นมากกว่า 75% ในพื้นที่ส่วนใหญ่ที่มีคนอาศัยอยู่ . แต่ถึงกระนั้นวิธีนี้ก็มีประโยชน์ในบางสถานการณ์เช่นการเดินป่าบนภูเขาซึ่งคุณอาจต้องจากการอยู่ในหุบเขาลึก (ที่รับสัญญาณ GPS ไม่ดี) ไปอยู่บนสันเขา (ซึ่งการรับสัญญาณดาวเทียมน่าจะดีกว่ามาก) แม้ว่าวิธีนี้จะไม่ได้เป็นการวัดจำนวนข้อผิดพลาดที่แน่นอน แต่ก็เป็นตัวบ่งชี้ที่มีประโยชน์ว่าส่วนใดของแทร็กของคุณอาจมีข้อผิดพลาดมากกว่าวิธีอื่น ๆ

สรุป

เราได้พูดถึงข้อผิดพลาดในการติดตาม GPS ที่พบได้ทั่วไปบางประเภทที่อาจเกิดขึ้นกับอุปกรณ์ GPS ระดับล่าง เราได้ให้ความเข้าใจถึงสาเหตุตลอดจนเทคนิคการเขียนโปรแกรม GIS บางประการสำหรับการแก้ไข

ในบางกรณีเราสามารถแก้ไขแทร็กได้อย่างมั่นใจ ในกรณีอื่น ๆ อย่างน้อยเราสามารถแจ้งเตือนผู้ใช้ถึงบางส่วนของแทร็กที่ดูน่าสงสัย ในกรณีที่เราไม่แน่ใจมีตัวเลือกในการให้ผู้ใช้แก้ไขเส้นทางด้วยตัวเองได้เสมอโดยได้รับความช่วยเหลือจากภาพถ่ายทางอากาศและแผนที่ การคาดเดาความน่าจะเป็นของเราสามารถช่วยเน้นส่วนต่างๆของแทร็กที่เราตรวจพบว่ามีโอกาสเกิดข้อผิดพลาดสูงขึ้น

ในหลาย ๆ กรณีเทคนิคที่เราได้อธิบายไว้อาจเป็น 'โซลูชัน 80%' ที่น่าพอใจซึ่งช่วยให้ผู้ใช้อุปกรณ์ GPS ระดับล่างได้รับการปรับปรุงความแม่นยำของแทร็ก GPS โดยอัตโนมัติในระดับที่เหมาะสม

การกำจัดคนเก็บขยะ: วิธี RAII

ส่วนหลัง

การกำจัดคนเก็บขยะ: วิธี RAII
ข้อผิดพลาดบนดาดฟ้าสนาม

ข้อผิดพลาดบนดาดฟ้าสนาม

นักลงทุนและเงินทุน

โพสต์ยอดนิยม
Ractive.js - เว็บแอพที่ทำได้ง่าย
Ractive.js - เว็บแอพที่ทำได้ง่าย
การสอน Mirror API: Google Glass สำหรับนักพัฒนาเว็บ
การสอน Mirror API: Google Glass สำหรับนักพัฒนาเว็บ
ตลาดล้านดอลลาร์ดีกว่าตลาดพันล้านดอลลาร์หรือไม่?
ตลาดล้านดอลลาร์ดีกว่าตลาดพันล้านดอลลาร์หรือไม่?
ทำไมฉันต้องใช้ Node.js การสอนเป็นกรณี ๆ ไป
ทำไมฉันต้องใช้ Node.js การสอนเป็นกรณี ๆ ไป
รองประธานองค์กร
รองประธานองค์กร
 
สงครามเย็นแห่งเทคโนโลยี: ยังคงอยู่ที่นี่และยังคงถูกใช้
สงครามเย็นแห่งเทคโนโลยี: ยังคงอยู่ที่นี่และยังคงถูกใช้
ปรับขนาดด้วยความเร็ว: อธิบายเครือข่ายสายฟ้าของ Bitcoin
ปรับขนาดด้วยความเร็ว: อธิบายเครือข่ายสายฟ้าของ Bitcoin
ส่วนประกอบของปฏิกิริยาที่มีประสิทธิภาพ: คำแนะนำในการเพิ่มประสิทธิภาพการตอบสนอง
ส่วนประกอบของปฏิกิริยาที่มีประสิทธิภาพ: คำแนะนำในการเพิ่มประสิทธิภาพการตอบสนอง
คำแนะนำสำหรับนักพัฒนา Android เกี่ยวกับรูปแบบการเรียกดูตัวอย่างข้อมูล
คำแนะนำสำหรับนักพัฒนา Android เกี่ยวกับรูปแบบการเรียกดูตัวอย่างข้อมูล
การรับรองและการประกันการรับประกัน: เครื่องมือการควบรวมกิจการที่ผู้ขายทุกคนควรทราบ
การรับรองและการประกันการรับประกัน: เครื่องมือการควบรวมกิจการที่ผู้ขายทุกคนควรทราบ
โพสต์ยอดนิยม
  • ความแตกต่าง s corp c corp
  • สื่อดิจิทัล vs การออกแบบกราฟิก
  • ฟังก์ชันโหนด js ส่งคืนค่า
  • โดนแฮกบัตรเครดิตด้วยเงิน
  • ความแตกต่างระหว่าง llc c corp และ s corp
หมวดหมู่
  • การทำกำไรและประสิทธิภาพ
  • การออกแบบ Ux
  • เทคโนโลยี
  • การออกแบบตราสินค้า
  • © 2022 | สงวนลิขสิทธิ์

    portaldacalheta.pt