ความเป็นมา
- ปกติผมเป็นคนชอบพกเครื่องมือสารพัดประโยชน์เช่นมีดพับในกระเป๋ากางเกง เพราะสะดวกรวมทุกสิ่งทุกอย่างทั้งไขควง มีด กรรไกร ตะไบ ที่เปิดขวด ยี่ห้อที่ชอบได้แก่ Leatherman, Victorinox เมื่อสองปีที่แล้วไปโมซัมบิค อาฟริกา ท่านศุลกากรที่นั่นเปิดกระเป๋าเดินทางเพื่อตรวจก่อนออกจากสนามบิน แอบสอย Victorinox ของผมไปหน้าตาเฉย เสียดายครับเพราะใช้มาหลายสิบปี แต่ก็อโหสิกรรมให้ท่านผู้นั้นไปแล้ว โปรแกรมที่จะแนะนำก็คล้ายกับมีดพับสารพัดประโยชน์แบบเดียวกัน
- ที่ใช้บ่อยสำหรับคนที่ทำงานสนามคือโปรแกรมแปลงพิกัดค่ากริดยูทีเอ็ม (UTM) แปลงไป แลตติจูด/ลองจิจูด (Geographic) หรือกลับกัน ส่วนใหญ่จะเปิดคำนวณผ่านออนไลน์ ได้ค่ามาแล้ว บางทีก็ copy มาวางที่่ google earth หรือ google map เพื่อปักหมุดให้รู้ว่าจุดตัวนั้นอยู่ตรงไหน หลายขั้นตอนบางครั้งรู้สึกรำคาญ
- ไปๆมาๆ เขียนใช้เองดีกว่า ตรงใจที่สุด ป้อนค่าพิกัดเสร็จก็คลิกแปลงพิกัดทันที เสร็จแล้วก็ปักหมุดลงใน google maps ทันที
- สิ่งที่ตั้งใจไว้ก็คือจะเขียนโปรแกรมคำนวณย่อยเล็กๆเอามารวมกัน ที่ใช้บ่อยในงานสนาม ตอนนี้โปรแกรมยังเป็นแค่รุ่น 0.35 รุ่นทดลองใช้ ยังมีอีกหลายอย่างที่จะใส่เพิ่มเข้ามาอีกในรุ่นหน้า ตอนนี้เอาแค่นี้ก่อน
ใครคือผู้ใช้งานโปรแกรม
- ดูจากชื่อโปรแกรมเหมือนกับเอาไว้ให้ ช่างสำรวจใช้อย่างเดียว แต่ไม่ใช่ครับ ใครก็เอาไปใช้ได้ เพราะโปรแกรมผมได้พยายามออกแบบให้ใช้งานได้ง่ายๆ
ดาวน์โหลดและติดตั้ง
- ดูลิ๊งค์ด้านขวามือ “ดาวน์โหลด (Download)” มองหาโปรแกรม Surveyor Pocket Tools จะมีรุ่นและ build ปกติดูที่ build เป็นหลัก เนื่องจากโปรแกรมนี้อยู่ในระหว่างพัฒนาตัวเลข build จะเพิ่มขึ้นเรื่อยๆ
- คลิกเพื่อดาวน์โหลด เสร็จแล้วแตกไฟล์ zip ออกมาจะได้ไฟล์ .exe พร้อมทำการติดตั้ง เมื่อติดตั้งแล้วจะเห็นไอคอนรูปกล้องเซอร์เวย์
เริ่มใช้งาน
- เมื่อเปิดโปรแกรมมาจะเห็นหน้าตาดังรูปด้านล่าง แต่ละไอคอนจะมีโปรแกรมย่อยๆให้ใช้งาน
- มาดูกันว่าแต่ละโปรแกรมย่อยทำอะไรได้บ้าง เรียงเลยครับจากบนลงล่าง
โปรแกรมแปลงพิกัดกริดยูทีเอ็ม (UTM – Geo Converter)
- สำหรับแปลงพิกัดกริด UTM ได้แก่ค่า Northing(N), Easting(E) ไปค่าพิกัดภูมิศาสตร์ Latitude, Longitude ในที่นี้จะแปลงค่าพิกัดบนรูปทรงรี WGS84 เท่านั้น แต่สามารถแปลงจากพิกัดภูมิศาสตร์ไปค่าพิกัดกริดยูทีเอ็ม เมื่อดับเบิ้ลคลิกที่ไอคอนจะเห็นหน้าต่างโปรแกรมแปลงพิกัดเล็กๆแสดงออกมาด้านขวา มีช่องพิกัดให้กรอกช่องด้านซ้ายหรือด้านขวา
- ช่องด้านซ้ายมือผู้อ่านจะเป็นช่องให้ป้อนค่าพิกัดกริดยูทีเอ็ม มีช่อง Point Name คือป้อนชื่อจุด และเรียงลงมาคือป้อนค่า N, E สุดท้ายต้องบอกโซนด้วยครับเพราะระบบกริดยูทีเอ็มมีหลายโซนทั้งโลก ค่าพิกัดอาจซ้ำกันถ้าไม่ระบุโซนจะไม่รู้เลยว่าอยู่ที่ไหน
- ผมจะลองแปลงพิกัดจากกริดยูทีเอ็มไปหาค่าพิกัดภูมิศาสตร์ โดยที่จุดหรือหมุดมีค่าพิกัดดังนี้ ชื่อหมุด “006 -031” ค่า N = 1598702.276 ค่า E=707105.198 Zone No. = UTM Zone 47N ดังรูปด้านล่าง
- จากนั้นคลิกที่ไอคอนรูปลูกศรเพื่อแปลงค่าพิกัดจะเห็นค่าพิกัดแปลงไปเป็นค่าพิกัดภูมิศาสตร์ดังรูปด้านบน ล่างขวาจะเห็นรูปแบบที่จะแสดงมุมได้สามอย่างคือแบบทศนิยม แบบแยกองศา ลิปดา ฟิลิปดา (DD°MM’SS.SSSS”) และแบบที่สามคือองศา ทศนิยมของลิปดา (DD°MM.MMMM’)
- กรณีค่าแลตติจูดเป็นค่าบวกคืออยูเหนือเส้นศูนย์สูตร จะมีคำว่า “N” เป็น suffix ไปแปะไว้ด้านหลัง ถ้าอยู่ต่ำกว่าเส้นศูนย์สูตรจะใข้คำว่า “S” เช่นเดียวกันกับค่าลองจิจูดถ้าค่าเป็นบวกจะใช้คำว่า “E” ย่อมาจาก East แปะด้านหลัง ถ้าค่าเป็นลบจะใช้คำ “W” ย่อมาจาก West แปะไว้ด้านหลัง
- ลองเปลี่ยนรูปแบบมุมเป็น DD°MM.MMMM’
ปักหมุดบน Google Maps
- ต่อไปจะปักหมุดบน google maps กระบวนการนี้ต้องออนไลน์นะครับ คลิกที่ไอคอนด้านล่างตามรูป โปรแกรมจะเรียก web browser ที่ใช้งานมาแสดง
- รูปด้านล่างแสดง google maps พร้อมหมุดที่ปักแล้ว สะดวกดีครับ ดูตรง address bar จะเห็นว่าเรียกไฟล์จากเครื่องที่ติดตั้งโปรแกรมใช้งานอยู่ดูเหมือนจะออฟไลน์ แต่ไม่ใช่ครับ ยังออนไลน์สามารถซูมเข้าออกได้ปกติ
ปักหมุดบน Google Earth
- มาลองปักหมุดบน google earth ดูกัน เครื่องที่ใช้ต้องติดตั้ง google earth ด้วยนะครับ คลิกที่ไอคอนดังรูปด้านล่าง
- โปรแกรมจะถามชื่อไฟล์เพื่อจัดเก็บไว้ เผื่อกรณีต้องการใช้ภายหลัง แล้วจะสวิชต์เข้าโปรแกรม google earth ทันที จะเห็นหมุดสีเหลืองปักกลางรูป
- มาลองแปลงค่าพิกัดภูมิศาสตร์ไปเป็นค่าพิกัดกริดยูทีเอ็ม ทีนี้จะลองรูปแบบมุมเป็นทศนิยมดีกรี ผมป้อนค่าพิกัดที่อยู่ที่โมซัมบิค อาฟริกาที่เคยไปทำงานอยู่ดังรูป คลิกไอคอนเพื่อแปลงพิกัด
- จะเห็นว่าโปรแกรมจะแปลงพิกัดให้พร้อมทั้งคำนวณ UTM Zone ให้ได้ถูกต้อง จุดนี้อยู่ในประเทศโมซัมบิค ทวีปอาฟริกาอยู่ใต้เส้นศูนย์สูตรและยูทีเอ็มโซนคือ UTM Zone 37S
- ลองปักหมุดบน google earth
จัดเก็บข้อมูลจุดที่ใช้งานเข้าฐานข้อมูล
- เนื่องจากเป็นโปรแกรมขนาดเล็กๆ ไม่ได้ตั้งใจจะออกแบบให้อ่านเขียนไฟล์ข้อมูลได้เป็นเรื่องเป็นราว ผมจึงทำฐานข้อมูลขนาดเล็กๆ สามารถเก็บจุดที่ใช้งานได้ เผื่อต้องการเรียกนำมาใช้งานได้อีก ก็สามารถลากจากตารางฐานข้อมูลเข้าช่องป้อนตัวเลข
- ต้องการจัดเก็บก็คลิกที่ไอคอนรูปหมุดที่มีเครื่องหมายบวก โปรแกรมจะถามคอนเฟิร์มอีกทีตอบ “OK”
- จากนั้นโปรแกรมจะเปิดตารางข้อมูล ตรวจสอบว่าข้อมูลเข้าไปเรียบร้อยแล้วดังรูป ส่วนจุดอื่นๆที่ปรากฎในตารางผมได้เพิ่มมาก่อนหน้านี้แล้ว
วิธีใช้งานตารางข้อมูลกริดยูทีเอ็ม
- ในตอนนี้ผมจัดทำตาราง (Table) เก็บค่าพิกัดที่เป็นกริดแยกกับตารางที่เก็บค่าพิกัดภูมิศาสตร์ แต่อยู่ในฐานข้อมูลเดียวกัน มาดูวิธีใช้งาน คลิกที่ไอคอนดังรูป
- จะเห็นตารางข้อมูลขึ้นมา ตอนนี้จะใช้งาน ต้องการค่าพิกัดตัวไหนก็ใช้เมาส์เลื่อนสกรอลบาร์ไปได้ ถ้าคลิกที่ปุ่ม “First” จะไปที่ตัวแรก ถ้าคลิกที่ “Last” จะไปที่ตัวสุดท้าย ถ้าต้องการลบก็คลิกที่ “Delete”
- ตอนนี้สมมุติว่าผมต้องการค่าพิกัด “AC-01-GPS” มาใช้งาน คลิกเมาส์ที่ค่าพิกัดตัวนี้แล้วลากไปวางที่ช่อง UTM ดังรูป
- จะได้ค่าพิกัดจากตารางข้อมูลมาปรากฎในช่อง UTM ดังรูป แปลงพิกัดก็คลิกที่รูปลูกศรขวาได้เลย
- ลองลากค่าพิกัดกริดยูทีเอ็มจากตารางข้อมูลไปที่ช่อง Geographic เพื่อแปลงพิกัด
- โปรแกรมจะเตือนว่าผู้ใช้ต้องการแปลงพิกัด
- คลิก “OK” จะได้ผลลัพธ์
วิธีการใช้ตารางข้อมูลค่าพิกัดภูมิศาสตร์
- จากที่กล่าวไปแล้วตารางข้อมูล (table) มีสองแบบ ที่นี้มาลองใช้ตารางค่าพิกัดภูมิศาสตร์ดูบ้าง ตอนนี้จะจัดเก็บจุด “006-053” เข้าตารางข้อมูล คลิกที่ไอคอนรูปหมุดดังรูป
- จะเห็นตารางข้อมูลขึ้นมา และค่าพิกัดถูกจัดเก็บเข้าไปเรียบร้อยดังรูปด้านล่าง จะเห็นตารางข้อมูลสองตารางที่ลากขยับหน้าต่างเรียงกันใหม่
- ลองคลิกไอคอนลูกศรไปทางซ้ายเพื่อแปลงพิกัดจากพิกัดภูมิศาสตร์ไปหาพิกัดกริดยูทีเอ็ม จะได้ค่าเดิมก่อนหน้านี้
โปรแกรมแปลงพิกัดข้ามพื้นหลักฐาน (Transform Coordinates)
- โปรแกรมที่แล้วสำหรับแปลงพิกัดบนพื้นหลักฐาน WGS84 เท่านั้น แต่ถ้าต้องการแปลงข้ามพื้นหลักฐาน (datum) จะทำยังไง โปรแกรมที่สองที่ผมเขียนขึ้นมาเพื่อตอบโจทย์นี้ แต่เนื่องจาก datum และเส้นโครงแผนที่ (Map Projection) ในโลกนี้มันมีมากมายมหาศาลต่างประเทศต่างใช้หลากหลายกันไป สำหรับประเทศไทยมีสองพื้นหลักฐานที่ใช้กันคือ WGS84 และ Indian 1975 เส้นโครงแผนที่ของบ้านเราใช้ UTM
- จากโปรแกรมหลักเมื่อคลิกโปรแกรมที่สอง จะเห็นหน้าตาแบบนี้ ด้านซ้ายเป็นระบบพิกัด ที่สามารถเลือกพิ้นหลักฐานและเส้นโครงแผนที่ได้ ด้านขวาก็เช่นเดียวกันสามารถเลือกได้อิสระ
การป้อนรูปแบบของมุม
- การป้อนมุมสำหรับโปรแกรมชุดนี้
ค่อนข้างต้องเป๊ะครับผมจะอธิบายให้พอเข้าใจ ถึงที่มาที่ไป ในทางโปรแกรมมิ่งผมใช้ที่เขาเรียกว่า Regular Express คอยสอดส่องว่าผู้ใช้กำลังป้อนอะไรเข้ามา ตรงไหนเป็นตัวเลข 0-9 ตัวไหนเป็นสัญลักษณ์เช่นองศา ° ลิปดา ‘ ฟิลิปดา ” หรือตรงไหนเป็นตัวอักษร d, N, S, E, Wและต้องไม่มีช่องว่าง รูปแบบ DD MM SS.SSSS เช่น 14°36’44.21988″N ต้องไม่มีช่องว่างและต้องป้อนสัญลักษณ์ให้ครบทั้งสาม แต่สัญลักษณ์องศาให้ใช้ตัว d แทนได้เช่น 14d36’44.21988″N- โปรแกรมแก้ไขเรื่องป้อนมุม ดูที่ build 375 ขึ้นไป การป้อนมุมมีช่องว่างได้ครับ 14°36’44.21988″N สามารถป้อนแบบนี้ได้ 14d 36′ 44.21988″ N ถ้าป้อนไปแล้วผิดให้เอาเคอร์เซอร์มาไว้ที่ท้ายสุดแล้วกด backspace ไปเรื่อยๆ ดูโปรแกรมว่า build เท่าไหร่เปิดดูที่ About ครับ
- ก่อนจะมาว่ากันต่อคงต้องยกยอดไปตอนที่ 2 ครับ
เครดิตและโปรแกรมมิ่ง
- โปรแกรมนี้สำเร็จมาใช้งานไม่ได้เลย ถ้าไม่มีไลบรารีภาษาไพธอน (Python) ที่แจกให้ใช้ฟรีเหล่านี้ ผมขอยกเครดิตความดีให้
- PyProj โดย Jeff Whitaker ที่พัฒนามาจาก Proj.4 ช่วยให้งานคำนวณแปลงพิกัดข้ามพื้นหลักฐานอันุยุ่งยากกลายเป็นเรื่องง่าย
- GeographicLib โดย Charles F. F. Karney ช่วยในการคำนวณระยะทางสั้นที่สุดบนอิลลิปซอยด์โดยวิธี Geodesic distance
- SimpleKML โดย Kyle Lancaster ช่วยในการปักหมุดลงใน Google Earth
- gmplot โดย Michael Woods ช่วยในการปักหมุดลง Google Maps
- EGM96 เป็นโค้ดภาษาซี ผมแปลงเป็นภาษาไพธอนเพื่อคำนวณ Geoid Separation ด้วยโมเดล EGM96
- EGM2008 เป็นโค้ดภาษาซี โค้ดดั้งเดิมอยู่ในโครงการ Geotrans เช่นกันผมแปลงเป็นภาษาไพธอน เพื่อนำมาคำนวณหา Geoid Separation ด้วยโมเดล EGM2008 แบบ 2.5′ x 2.5′
- โปรแกรมพัฒนาด้วย Python 3.5 กราฟฟิค User Interface ด้วย PyQt5 ตอนนี้รุ่น 5.5.7 สภาพแวดล้อมในการพัฒนาโปรแกรมไพธอนใช้ Eric Python IDE ดีมากจนไม่เคยคิดจะกลับไปใช้ตัวอื่นอีกเลย
- พบกันตอนใหม่ครับ
ติดตั้งได้ แต่เปีดใช้งานไม่ได้ “Failed to execute script main” 🙁
window 10, 64bit
พบปัญหานี้บนบางเครื่องครับ แต่ยังหาสาเหตุไม่พบ ตอนสร้างโปรแกรม Install น่าจะขนไลบรารีไปไม่ครบ ต้องใช้เวลาสักพักครับ