จากบทความที่แล้ว ผมได้พาย้อนรอยไปดูระบบพิกัดที่ใช้ในโครงการรถไฟความเร็วสูงไทยจีน และทางดร.ไพศาล ได้มาไขความกระจ่างว่าวิธีการออกแบบในโครงการนี้เป็นการขยายรูปทรงรีแบบอัตราส่วน (Scale reference ellipsoid) ตามค่าความสูง project plane ที่ทางผู้ออกแบบโครงการนี้ให้มา โดยที่ค่า K0 = 1.0 เป็นค่าคงที่ พร้อมได้เอื้อเฟื้อโค้ดไพทอนสำหรับการแปลงค่าพิกัดมาให้ดูเป็นตัวอย่าง ผมขอขอบคุณมา ณ ที่นี้เป็นอย่างสูง ดังนั้นผมขอนำเสนอรายละเอียดระบบพิกัดเส้นโครงแผนที่ความเพี้ยนต่ำอีกครั้ง ทางผู้ออกแบบได้ใช้ระบบพิกัดความเพี้ยนต่ำโดยการขยายขนาดทรงรี WGS84 (Scaled reference ellipsoid) โดยที่ขนาดมาตรฐานมีค่า a = 6378137.0 และ b…
Category: Surveying
โปรแกรมมิ่ง: เขียนโค้ดไพทอนสร้างเส้นชั้นความสูง (contours) ด้วยไลบรารี matplotlib
เป็นความฝันของผมอันหนึ่งตั้งแต่สมัยจบใหม่ๆที่จะเขียนโปรแกรมสร้างชั้นความสูงจากข้อมูลจุดงานสำรวจ x, y, z แต่จนแล้วจนเล่าโครงการนี้ไม่เคยเกิดสักที เนื่องจากความรู้ความสามารถและทักษะไม่เพียงพอ ด้วยความยากในการคิดอัลกอริทึมที่จะสร้างสามเหลี่ยมด้านที่สั้นที่สุดจากจุด (point) งานสำรวจ จนกระทั่งเลยวัยแห่งความฝันอันนั้นมาไกลมากแล้ว ปัจจุบันในยุค open source มีไลบรารีด้านนี้ที่มีโมดูลส่วนหนึ่งที่มีความสามารถใกล้เคียงที่สามารถนำมาสร้างเส้นชั้นความสูงได้คือ matplotlib ไลบรารี matplotlib ตัว matplotlib เองถูกนำไปใช้ร่วมกับ numpy, pandas สุดยอดของไลบรารีไพทอนที่นำไปประมวลผลงานด้าน Data Science & Data Analysis ตลอดจน Machine Learning ทะลุไปถึง…
พอร์ท:โปรแกรมเขียนแบบรูปตัด (XSection Plot) มาใช้บนแมคโอเอส
โปรแกรมเขียนแบบรูปตัด (XSection Plot) นับว่าเป็นโปรแกรมลำดับที่สามที่ผมพอร์ทมาใช้บนแมคโอเอส ถัดจาก Traverse Pro และ Surveyor Pocket Tools ติดตามบทความเดิมได้ด้านล่าง XSection Plot พัฒนาด้วยภาษาไพทอน (Python) กราฟฟิคติดต่อผู้ใช้ใช้ PySide2 (Qt for Python) บนแมคโอเอส ผมใช้ PyCharm (Community Edition) เป็นตัว IDE ในการพัฒนา ใช้ PyInstaller สำหรับการทำไฟล์…
DIY: โครงการเรือสำรวจรีโมทไร้คนขับ (Unmanned Survey Vessel ) ตอนที่ 2 – สร้างลำเรือ ติดตั้งอุปกรณ์และทดสอบ
ขั้นตอนที่ 1 สร้างลำเรือ ผมทำงานอยู่ต่างประเทศ เมื่อกลับมาพักในเมืองไทยก็พอมีโอกาสได้ลองสร้างลำเรือต้นแบบ เริ่มต้นจากไปซื้อพลาสวู๊ดจากโกลบอลเฮาส์มาหนึ่งแผ่น ราคาสามร้อยกว่าบาท ยอมรับว่าไม่เคยใช้มาก่อน เอาแบบลำเรือที่ปริ๊นท์มาทาบลงไป ลากเส้นแล้วทำการตัดด้วยมีดคัตเตอร์ ไม่ยากตัดง่าย แต่ปัญหาที่เกิดขึ้นคือพลาสวู๊ดนั้นเปราะไม่เหนียวทำให้หักง่ายเมื่อต้องดัดให้ได้รูปร่างที่ต้องการ จากนั้นต่อชิ้นส่วนด้วยกาวร้อน จะได้รูปร่างของเรือ ขั้นตอนที่ 2 เสริมความแข็งแรงด้วยไฟเบอร์กลาส ใช้นำ้ยาเรซิ่นผสมน้ำยาตัวเร่งที่เหมาะสม ใช้แปรงจุ่มน้ำยาผสมทาที่ลำเรือด้านล่างก่อน เอาแผ่นใยแก้วหรือไพเบอร์กลาสทาบลง จัดการทาน้ำยาผสมทับลงไป รอจนแห้งพลิกลำเรือมาด้านบน ทาน้ำยาผสมแล้ววางแผ่นไฟเบอร์กลาสทาทับด้วยน้ำยาผสมแบบเดียวกัน เนื่องจากมือใหม่ ไม่เคยใช้มาก่อน ตอนแรกใส่น้ำยาเร่งไปน้อย ทำให้ต้องรอจนกว่าไฟเบอร์กลาสแห้งต้องทิ้งไว้หนึ่งคืน เมื่อแห้งแล้วผมทำการเลาะโครงด้านในทิ้งเพราะด้วยความแข็งแรงของไฟเบอร์กลาสด้านนอกนั้นเพียงพอแล้ว ถ้าผสมน้ำยาตัวเร่งลงไปมากขึ้นทำให้แห้งเร็วมากจนทาไม่ทัน ดังนั้นงานที่ต้องการความละเมียดละไม่ควรผสมในปริมาณที่มากนัก เพราะจะมีเวลาแต่งด้วยแปรงมากขึ้น ชุดน้ำยาเรซิ่นกับตัวเร่งและแผ่นไฟเบอร์กลาสสั่งมาจากลาซาด้า…
พอร์ท:โปรแกรมเครื่องมือสำหรับช่างสำรวจฉบับกระเป๋า (Surveyor Pocket Tools) มาใช้บนแมคโอเอส
สำหรับสถิติการใช้งานระบบปฏิบัติทั้งโลกนี้สำหรับคอมพิวเตอร์ตั้งโต๊ะทั้งพีซีและโน๊ตบุ๊คในปี 2020 วินโดส์ทุกรุ่นประมาณ 79% แมคโอเอสทุกรุ่น 15% ลีินุกซ์ทุกดิสโทร 2% ที่เหลืออื่นๆเช่น ChromeOS เมื่อมามองดูแมคโอเอสก็ไม่ได้น้อยอย่างที่ผมคิด โปรแกรมตัวที่แล้วที่ผมพอร์ทมาใช้งานคือโปรแกรมคำนวณวงรอบ Traverse Pro ที่พัฒนาด้วย Lazarus + Free pascal compiler (fpc) มาถึงตอนนี้ถึงคิว Surveyor Pocket Tools ที่พัฒนาด้วยภาษา Python ใช้ระบบกราฟฟิคติดต่อผู้ใช้ด้วย PySide2 (Qt for Python)…
พอร์ท:โปรแกรมคำนวณวงรอบ Traverse Pro สำหรับแมคโอเอส
แมคโอเอส macOS Catalina ผมไม่ได้ใช้แมคมาเนิ่นนานมากนับเป็นเวลา 6 ปีกว่า มาในปีนี้ได้จับแมค Catalina หรือว่า 10.15 รุ่นหลักคือโอเอสเท็น (OSX) รุ่นแรกออกมาในปี 2001 ส่วนรุ่นย่อยคือ 15 ที่มีระยะเวลาการพัฒนามายาวนานมากกว่า 18 ปีแล้ว จากความที่ห่างหายไปนานเมื่อมาลองใช้ระยะแรกๆจะขัดๆ แต่ไม่นานนักก็ชินไปเอง ส่ิงที่ผมยอมรับคือแมคนั้นมีสาวกที่เหนียวแน่น จากความดีที่เนียน สวยงาม เสถียร ลื่นไหล นั่นเอง ผมยังนั่งคิดว่าในอดีตยี่สิบปีที่แล้ว ถ้าราคาไม่แพงกว่า PC มากนัก อาจจะมีกลุ่มผู้ใช้งานมากกว่านี้…
DIY: โครงการเรือสำรวจรีโมทไร้คนขับ (Unmanned Survey Vessel ) ตอนที่ 1 – วางผังโครงการและจัดซื้ออุปกรณ์
ปัจจุบันเข้าสู่ยุคคอมพิวเตอร์ขนาดเล็กเช่น Raspberry Pi, Arduino ที่สามารถนำมาขยายความสามารถโดยการเขียนโปรแกรมเพิ่มได้ง่าย และส่วนมากก็เป็นฮาร์ดแวร์ที่เปิด คนสามารถนำไปผลิตต่อยอดได้ทำให้อุปกรณ์พวกนี้เฟื่องฟู ขยายตัวอย่างรวดเร็ว นักศึกษาสามารถนำมาทำหุ่นยนต์ (Robot) ได้ง่ายกว่าสมัยแต่ก่อนมาก ฮาร์ดแวร์ราคาถูก มีไลบรารีที่ผู้อื่นพัฒนาแล้วนำมาใช้งานต่อยอดได้สะดวกและมากมาย ในยุคนี้ที่โดรนมีคนใช้มากมายหลากหลายวัตถุประสงค์จากสามารถนำไปทำงานต่างๆจนถึงสันทนาการ มีตั้งแต่เสียเงินซื้อทั้งที่ราคาถูกจนถึงราคาแพงลิบลิ่ว ยังมีพวก DIY ที่สามารถประกอบเองได้ มีฮาร์ดแวร์ที่ขายในราคาที่จับต้องได้ทั้งเฟรม (Frame Kit) ของโดรนรวมไปถึง ระบบควบคุมการบิน ( Flight Controller) ทางฝั่งซอฟท์แวร์มีโครงการเปิดโค้ดที่โด่งดังคือ ArduPilot นับได้ว่าเป็น platform หนึ่งที่สามารถนำมาเขียนเฟิร์มแวร์เข้ากับระบบควบคุมการบิน สามารถนำไปประกอบโดรนให้สามารถบินขึ้นไปได้ตามต้องการ…
Update: โปรแกรม Surveyor Pocket Tools เพื่อเตรียมพร้อมสำหรับไลบรารี PROJ รุ่น 7 (PROJ.7)
เนื่องจากในเดิมที Surveyor Pocket Tools โปรแกรมเครื่องมือสำหรับช่างสำรวจฉบับกระเป๋าได้ใช้ไลบรารี PROJ รุ่น 4 หรือเรียกสั้นๆว่า PROJ.4 มาโดยตลอด ในช่วงที่ผ่านมาปีที่แล้ว ปี 2018 ทางโครงการ PROJ ได้รปรับปรุงขนานใหญ่จาก PROJ.5 มาเป็น PROJ.6 ทำให้โค้ดบางส่วนมีอันต้องแตกคือใช้ไม่ได้ เรียกว่าไม่ compatible ย้อนหลัง ผมใช้เวลามานั่งแก้โค้ดใหม่พอสมควร แต่ปัญหาไม่ได้จบแค่นี้ เมื่อ PROJ.7 มาถึงในปีหน้าหรือ 2020 ความเข้ากันได้ของโค้ดจะยิ่งแตกต่างกับ PROJ.4…
Update: โปรแกรมคำนวณวงรอบ Traverse Pro V2.75
พอมีเวลาเลยเอา Traverse Pro มาปัดฝุ่น แก้ไขตอนคำนวณข้อมูลแล้วการแสดงผลลงตารางช้ามากในรุ่น V2.73 มีผู้ใช้บ่นกันมามาก ผมนั่งดูโค้ดโปรแกรมแล้วเจอสาเหตุที่ช้า เลยทำการปรับปรุงโค้ดใหม่ ตอนนี้ผมปรับรุ่นโปรแกรมมาเป็น V2.75 ก็มาดูครับว่ามีรายการอะไรบ้าง ปรับปรุงตารางป้อนข้อมูล แยกสีสันในตารางป้อนข้อมูล ให้ดูง่ายว่าคอลัมน์ไหนเป็นมุม ระยะทาง ค่าพิกัด ย่อขยายคอลัมน์ ผมเอาโปรแกรมไปติดตั้งในวินโดส์ 7 ซึ่งผมคิดว่าอาจจะมีผู้ใช้บางท่านที่ยังใช้งานอยู่พบว่า ตรงหัวแถวไม่ขยายขนาดให้ ผมปรับปรุงให้สามารถลากเมาส์ขยายขนาดคอลัมน์ให้ได้ [Update] ในวินโดส์ 7 ปรับปรุงโค้ดให้ความสูงของหัวแถวเป็นปกติแล้วใน build 6289 ปรับปรุงการแสดงผลลัพธ์คำนวณ จากเดิมเมื่อคลิกไอคอนรูปเครื่องคิดเลขเพื่อทำการคำนวณ อาจจะต้องกันเป็น…
ย้อนรอยวิธีสร้างไฟล์รูปแบบ PGM ของ TGM2017 สำหรับใช้ใน GeographicLib
ผมได้เขียนบล็อกเกี่ยวกับ TGM2017 (Thailand Geoid Model 2017) มาหลายตอนแล้ว ไม่นานมานี้ทางรุ่นพี่ที่เคารพอาจารย์ดร.ไพศาล สันติธรรมนนท์ ได้วานให้ตรวจสอบไฟล์ TGM2017-1.PGM ที่ทางอาจารย์ได้สร้างไว้ด้วยโค้ดไพทอนเพื่อนำมาใช้ในไลบรารี GeographicLib ผมทดสอบแล้วใช้งานได้ดี ในขณะเดียวกันผมเห็นว่าน่าสนใจเพราะสามารถเผยแพร่การใช้งาน TGM2017 ให้ใช้งานได้หลากหลายในวงกว้างยิ่งๆขึ้นไป ผมขอสรุปรูปแบบการใช้งานดังนี้ รูปแบบแอสกี้: TGM2017.ASC เป็นไฟล์รูปแบบ ASCII คำนวณโดย TGM2017.EXE ที่ทางผู้จัดทำแบบจำลอง TGM2017 ดร.พุทธิพลและทีมงาน ได้นำมาเผยแพร่ และผมขอขอบคุณทีมงานมา ณ ที่นี้ รูปแบบ…