Skip to content

Prajuab Riabroy's Blog

Survey Application – GNSS – UAV – Programing – Python – Dart&Flutter – Rust

Menu
  • Home
  • About Us
  • Survey Application
    • Surveyor Pocket Tools
    • Traverse Pro
    • XSection Plot
    • Geoid Height Pro
    • Spot Fire
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-5800P
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-9860G II SD
  • Download
  • Privacy Policy
Menu

เครื่องมือช่วยออกแบบเส้นโครงแผนที่ความคลาดเคลื่อนต่ำ ด้วย LDP Companion เพื่อนคู่คิดมิตรคู่ใจ (#กำลังพัฒนา #Rust #Slint)

Posted on 19/01/2025

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

ความจริงเครื่องมือช่วยออกแบบเส้นโครงแผนที่ความคลาดเคลื่อนต่ำ (LDP – Low Distortion Projection) นั้นมีอยู่แล้วใน Surveyor Pocket Tools แต่ผมเองในฐานะผู้พัฒนาด้วยภาษาไพทอนยังมองว่าใช้งานยากไปนิด ก็เลยมีความคิดจะแยกโครงการนี้มาทำต่างหาก โดยเน้นไปที่การใช้งานให้ง่ายที่สุด สุดท้ายกลายเป็นโครงการ “LDP Companion” ที่โปรแกรมนี้จะถูกเขียนด้วยภาษา Rust ขึ้นกราฟฟิคติดต่อผู้ใช้ (User Interface) ด้วย Slint

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

LDP Companion เพื่อนคู่คิด มิตรคู่ใจ

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

Calculate K0

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

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

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

Create LDP

เมื่อได้ค่า K0 แล้ว ขั้นตอนต่อไปจะมาเลือกชนิดเส้นโครงแผนที่ ซึ่งสามารถเลือกได้สามรูปแบบคือ Transverse Mercator (TM), Lamber Conformal Conic (LCC) และ Obliquied Mercator (OM) ขึ้นกับลักษณะพื้นที่ที่ต้องการสร้าง เช่นถ้าเป็นลักษณะสี่เหลี่ยมผืนผ้าด้านสูงอยู่ในแนวตั้งจะใช้ TM ถ้าเป็นสี่เหลี่ยมผืนผ้าแบบด้านยาวนอนจะใช้ LCC หรือถ้าเฉียงไม่สามารถจัดสี่เหลี่ยมผืนผ้าแบบตั้งและแบบนอนได้พอดี แนะนำ OM ที่เหมือนกับการหมุดสี่เหลี่ยมผืนผ้าไปตามแนวแกนของพื้นที่

ตรงผลลัพธ์จาก Create LDP ในตอนนี้จะสร้างแค่สายอักขระ PROJ เท่านั้น ซึ่งสามารถก๊อปปี้ไปใช้งานในโปรแกรมอื่นได้เช่น QGIS และอนาคตผมจะให้สามารถจัดเก็บในฐานข้อมูลที่จะไปใช้ร่วมกับ Surveyor Pocket Tools ได้

ทูลส์ที่ยังไม่ได้พัฒนา

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

ทูลส์ตัวต่อไปคือ Check Area ตัวนี้จะสามารถดูพื้นที่ว่า LDP ที่สร้างมานั้นครอบคลุมไปแค่ไหน ผมหนักใจว่า Slint ยังไม่มีความสามารถในด้านแผนที่มากนัก การแสดงแผนที่อาจจะเป็นเรื่องที่ยุ่งยาก

และที่ขาดไม่ได้คือ Transform Coordinates สำหรับแปลงพิกัดระหว่างระบบพิกัดยูทีเอ็มและเส้นโครงแผนที่ความคลาดเคลื่อนต่ำ ความตั้งใจคือจะใช้ไลบรารี Rust Geodesy เป็นหลัก

และท้ายที่สุดทูลส์ LDP Database สามารถเปิดฐานข้อมูล LDP ที่เก็บไว้ได้ ผมตั้งใจว่าจะให้แสดงเป็นตารางและสามารถ Export ไปยัง Excel ได้

หนทางยังอีกยาวไกล

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

Related

3 thoughts on “เครื่องมือช่วยออกแบบเส้นโครงแผนที่ความคลาดเคลื่อนต่ำ ด้วย LDP Companion เพื่อนคู่คิดมิตรคู่ใจ (#กำลังพัฒนา #Rust #Slint)”

  1. ajung says:
    06/03/2025 at 12:05

    ขอบคุณสำหรับบทความที่ให้ความรู้ครับ

    Reply
  2. waree says:
    22/03/2025 at 11:41

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

    Reply
    1. priabroy says:
      13/04/2025 at 18:43

      ขอบคุณมากๆครับ จากนี้ไปแสงสปอร์ตไลท์คงจางๆแล้วหันไปทางอื่นครับ เนื่องอายุอานามมากพอสมควรแล้วครับ

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Blog Stats

There was an issue retrieving stats. Please try again later.

Recent Posts

  • เร็วแรงทะลุนรกกับ POCUT (POint Cloud UTils)
  • อัพเดทแอพ “SurveyStar LDP Thailand” เพื่อรับกับยกร่างมาตรฐาน “TH-LDP”
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 2
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • โปรแกรมแปลงไฟล์แคดข้ามระบบพิกัด (Drawing Transformer)
  • มาตรฐานระบบพิกัดแผนที่แบบแอลดีพีของประเทศไทยสำหรับงานวิศวกรรมและการก่อสร้าง (Thailand Low Distortion Map Coordinate System for Engineering and Construction)
  • ประสบการณ์ใช้งาน Kimi K3 Code เขมือบแบบสยอง
  • สร้างแพลตฟอร์มดู Point Cloud บนเว็บด้วย Potree + CesiumJS — เรื่องเล่าจากสนามบินอู่ตะเภา
  • เมื่อวิศวกรสำรวจคำนวณเรื่องน้ำ – วิเคราะห์ระบบระบายน้ำบริเวณ RESA
  • แนะนำหนังสือ “จีออเดซี” ที่ยอดเยี่ยมของดร.พุทธิพล
  • ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน
  • กรณีศึกษา – คืนชีพ SDL30 ปี 2000 ด้วย ESP32 และแอพทำเอง SDL30 Collector
  • DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • รีวิวกูปรี (CoPre2) โปรแกรมประมวลผลไลดาร์จากค่าย CHCNav
  • DIY RTK Base Station (survey-grade) รุ่น V3.2 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 3
  • DIY RTK Base Station (survey-grade) รุ่น V3 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 2
  • เส้นทางและไทม์ไลน์ของใบรับรองความรู้ความชำนาญในการประกอบอาชีพวิศวกรรม(สำรวจ)ระดับวิศวกรวิชาชีพ
  • มัดแหนมรวมสามโปรแกรมไปใช้บนสโตร์ Snap ฝั่งลีนุกซ์
  • ปัดฝุ่น Traverse Pro เพิ่มรายละเอียดรายการคำนวณใหม่แบบแนวนอน (Landscape) และธีมมืด
  • DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32 ตอนที่ 1
  • สร้าง NTRIP Caster ด้วย BNC บนคลาวด์แบบ DIY สำหรับ RTK Base Station ใช้ CHCNav P5
  • จับ AI มาไตรกรีฬา สร้างตัวติดตั้ง Snap สำหรับ Surveyor Pocket Tools กับประเด็นแฝงเร้นความเป็นส่วนตัวของผู้ใช้
  • ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • เมื่อ AI เป็นพิษชักจูงผู้ใช้ด้วยข้อมูลผิดๆ

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 115 other subscribers

Archives

  • October 2026
  • September 2026
  • August 2026
  • July 2026
  • May 2026
  • April 2026
  • March 2026
  • January 2026
  • December 2025
  • November 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • July 2024
  • May 2024
  • April 2024
  • January 2024
  • November 2023
  • October 2023
  • September 2023
  • July 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • July 2022
  • May 2022
  • December 2021
  • October 2021
  • September 2021
  • August 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • August 2016
  • November 2015
  • March 2015
  • August 2014
  • March 2014
  • January 2014
  • December 2013
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • April 2011
  • February 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • June 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Recent Comments

  • priabroy on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • richard on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • priabroy on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • Konexana Yomleuangsa on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • เฟือง เถา on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
©2026 Prajuab Riabroy's Blog | Design: Newspaperly WordPress Theme