Surveyor Pocket Tools โปรแกรมรวมเครื่องมือฉบับกระเป๋าสำหรับช่างสำรวจ (แจกฟรี) – ตอนที่ 4 (ตอนจบ)

  • ผ่านไปแล้วสามโปรแกรมย่อยๆ นี่คือโปรแกรมที่สี่ โปรแกรม  EGM คำนวณหาค่า Geoid Separation ไม่ใช่โปรแกรมสุดท้ายนะครับ เพราะ Surveyor Pocket Tools จะเพิ่มโปรแกรมพื้นฐานสำหรับช่างสำรวจต่อไปเรื่อยๆ

intro-surveyor-pokcet-tools

  • โปรแกรมนี้ผมเคยเขียนมาแล้วชุดใหญ่ใช้ชื่อว่า Geoid Height Calculator  ลองดูด้านขวามือตรง Download เป็นโปรแกรมที่มีกราฟฟิคให้ดูด้วยเมื่อป้อนค่าพิกัด Latitude/Longitude เข้าไปสามารถโหลดไฟล์ CSV มาคำนวณได้ สนใจชุดใหญ่ก็โปรแกรม Geoid Height Calculator ครับ ถ้าชุดเล็กๆแบบพกไปในกระเป๋าติดตามต่อไป

geoidheight_2016-11-17_19-27-51

ทำไมต้องคำนวณ Geoid Separation

  • เนื่องจาก GPS ที่เราใช้งานในปัจจุบัน ระบบพิกัดผูกอยู่กับพื้นหลักฐาน World Geodetic System 1984 ใช้ทรงรี WGS84 สำหรับค่าพิกัดแลตติจูดและลองจิจูดแล้วไม่มีปัญหาครับ ปัญหาคือค่าระดับในแนวดิ่ง ที่อ้างอิงกับทรงรีเรียกความสูงนี้ว่า Ellipsoidal Height(h) แต่ความสูงที่นำมาใช้งานด้านแผนที่รวมทั้งงานก่อสร้างสาธารณูปโภคทั้งหลาย กลับอ้างอิงกับระดับน้ำทะเลปานกลาง Mean Sea Level (MSL) ที่เราคุ้นเคยกันดี แล้วความสูงสองระบบนี่มันเกี่ยวข้องกันอย่างไร
  • ความสูงเทียบกับระดับน้ำทะเลปานกลางหรือที่เรียกกันอย่างหนึ่งว่า Orthometric Height (H) ความสูงตัวนี้กลับไปอ้างอิงกับรูปทรงจีออยด์ ที่ถือกันว่าเป็นรูปทรงทางคณิตศาสตร์ของโลกตามแรงดึงดูด รูปทรงประมาณแล้วเป็นผิวที่ทับกันสนิทกับผิวเฉลี่ยของมหาสมุทรหรือระดับน้ำทะเลปานกลางนั่นเอง ระหว่างทรงรีกับรูปทรงจีออยด์ ทั่วทั้งโลกนี้มีความสูงต่างกันไม่เกิน ±100 เมตรเท่านั้นเอง
  • ความสัมพันธ์ความสูงสองระบบนี้ก็ง่ายๆครับ H = h – N โดยที่ N คือค่า Geoid Height หรือ Geoid Separation  นั่นเอง โปรแกรมนี้คือโปรแกรมที่เขียนขึ้นมาเพื่อคำนวณหาค่า N โดยเฉพาะ
  • ดังนั้นเมื่อเรารู้พิกัดแล็ตติจูดลองจิจูด เราสามารถคำนวณหา N ได้เอาไปลบจาก Ellipsoidal Height (h) ก็จะกลายเป็นความสูงเทียบกับระดับน้ำทะเลปานกลางที่เราสามารถนำมาใช้ได้
geoid2_lg

ภาพจาก esri.com

โมเดลที่ใช้ในการคำนวณ

  • มีสองโมเดล ตามอายุที่ออกมาใช้ครับ EGM96 ออกในปี 1996 ง่ายๆเขาแบ่งตามขนาดกริด 30’x30′ ประมาณ 55 กม.  x 55 กม. จะมีหนึ่งค่าเมื่อขยับไปกริดช่องต่อไปค่า N ก็จะเปลี่ยน โมเดลจะเก็บไว้ในไฟล์ เวลาติดตั้งโปรแกรมจะไปด้วย เมื่อผู้ใช้ป้อนค่าพิกัดโปรแกรมจะไปอ่านไฟล์ดึงค่ามาคำนวณค่า N ให้
  • โมเดลที่สองคือ EGM2008 ออกมาในปี 2008 รุ่นนี้แบ่งเป็นสองขนาดย่อยละเอียดสุดคือช่องกริดแบ่งไว้ประมาณ 1′ x 1′ หรือประมาณ 1.8 กม. x 1.8 กม. ขนาดที่สองละเอียดน้อยลงมานิดหนึ่งใช่ช่องกริดขนาด 2.5′ x 2.5′ หรือประมาณ 4.6 กม. x 4.6 กม. โปรแกรมนี้ใช้กริดขนาด 2.5′ x 2.5′ ครับ  เวลาติดตั้งจะขนไฟล์ขนาดมากกว่า 100 MB ที่เก็บกริดนี้ไปด้วย ทำให้ดูเหมือนโปรแกรมใหญ่โต แต่ที่โตเพราะข้อมูลนี้ครับ
  • ถ้าใช้โมเดลแบบละเอียด 1’x1′ จะต้องใช้ไฟล์ข้อมูลเกือบกิกะไบต์เลย ผมเลยไม่ได้เขียนในส่วนนี้ ความละเอียดเท่าที่ทดสอบดูจากโปรแกรมอื่นๆ ค่าแทบไม่แตกต่างกันเลย แตกต่างกันน้อยมาก บางจุดน้อยกว่าเศษของมิลลิเมตร

ความถูกต้อง

  • ไม่มีอะไรสมบูรณ์พูนผลไปทั้งหมด โมเดล EGM96 กับ EGM2008 ก็เหมือนกัน งานรังวัด GPS แบบ Static หรือ Fast Static ที่ให้ค่าละเอียดระดับมิลลิเมตร ดีทั้ง x, y, z เมื่ออ้างอิงกับทรงรี (ย้ำทรงรี) การจะได้ค่าระดับเทียบกับระดับน้ำทะเลปานกลาง จะเรียกใช้โมเดล EGM96 หรือล่าสุดกว่าก็ EGM2008 เพื่อแปลงค่าความสูงจาก Ellipsoidal Height เป็น Orthometric Height แต่เนื่องจากโมเดลไม่ได้สมบูรณ์ ดังนั้นค่าระดับที่ได้เทียบเท่างานระดับชั้นสาม แต่ไม่ยืนยัน ส่วนใหญ่งานก่อสร้างที่มีค่าระดับ Grade มาเกี่ยวข้อง จึงต้องเดินระดับแบบแยกมาต่างหากจากงานรังวัด GPS ครับยกตัวอย่างเช่นงานสร้างทางรถไฟ งานสร้างถนนสายหลัก
  • ประสบการณ์ที่ผ่านมา งานรังวัด GPS ค่าระดับเมื่อแปลงเป็นระดับน้ำทะลปานกลางแล้ว พอใช้ได้ครับ ไม่เคยเจอตรงไหนที่เพี้ยนจนรับไม่ได้ งานที่ไม่ได้กังวลเรื่องค่าระดับมากนักจะนำค่าระดับที่แปลงค่ามาแล้วใช้งานได้เลย

วิธีใช้งานโปรแกรม

  • มาดูวิธีการใช้ คลิกที่โปรแกรม EGM ตามรูป
spt_egm_01

โปรแกรม EGM

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

spt_egm_02

  • ลองป้อนจุดดังนี้ ชื่อ “GPS-KBM” Latitude = 14.6109419444 Longitude= 98.0315881139 รูปแบบมุมเป็น degree คลิกที่ไอคอนลูกศรเพืือคำนวณได้ค่า -38.9148 m. บนโมเดล EGM2008

surveyor-pocket-tools_2016-11-18_13-34-28

  • ลองเปลี่ยนโมเดลเป็น EGM96

surveyor-pocket-tools_2016-11-18_13-35-42

  • มาลองจุดอื่นๆดูบ้างครับ ชื่อ “Caia” latitude= 17d 49′ 55.917″S longitude= 35d 20′ 10.706″E ป้อนแล้วคำนวณดู จากนั้นทำการเก็บค่าพิกัดด้วยการคลิกไอคอนรูปหมุดที่มีเครื่องหมายบวกสีแดง แล้วก็ลองปักหมุดที่ google maps เป็นขั้นตอนสุดท้าย

spt_egm_04

  • ปักหมุดแล้ว

firefox_2016-11-18_14-36-56

  • ก็ขอจบตอนสุดท้ายเพียงเท่านี้ครับ

 

Surveyor Pocket Tools โปรแกรมรวมเครื่องมือฉบับกระเป๋าสำหรับช่างสำรวจ (แจกฟรี) – ตอนที่ 3

Geodesic Distance

  • ผ่านไปแล้วสองโปรแกรม วันนี้มาว่ากันเรื่องโปรแกรมวัดระยะทางที่กำหนดค่าพิกัดให้สองจุด การวัดระยะทางไปตามผิวของทรงรีแนวที่สั้นที่สุดเรียกว่า Geodesic distance ใช้ค่าพิกัดภูมิศาสตร์ แลตติจูดและลองจิจูด ถ้าเป็นระบบกริดอยู่ในโซนเดียวกัน ศูนย์กำเนิดเดียวกันสามารถหาระยะทางได้จากสูตรง่ายๆ ที่ผมเรียนกันตอนมัธยมต้น (หลักสูตรสมัยใหม่ประถมก็เรียนแล้ว)  ระยะทาง = √((x2x1)²+(y2y1)²)
  • มาดูโปรแกรม Geodesic distance เรียงจากบนลงมาไอคอนที่สาม ใช้งานก็ดับเบิ้ลคลิกเลยครับ

spt_introduction

 

  •  ลักษณะรูปร่างของเส้น Geodesic (จาก Wikipedia) จากรูปเส้น s12 ก็คือเส้น geodesic จากจุด A ไปจุด B ส่วน N คือขั้วโลกเหนือ เส้น EFH คือเส้นศูนย์สูตร

440px-geodesic_problem_on_an_ellipsoid-svg

เปิดโปรแกรม

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

geodesic_dist01

  • และที่ไม่ลืมคือปักหมุดลง Google maps เพื่อดูว่าจุดอยู่ไหนบนโลกนี้ และปักหมุดลง Google earth

วิธีการใช้งาน

  • วันนี้จะพากลับไปที่โรงเรียนอีกครั้ง ไม่ทราบว่าหลักสูตรวิชาภูมิศาสตร์สมัยนี้เป็นยังไง สมัยผมยังโลว์เทค ครูเอาลูกโลกจำลองขึ้นมาวางโต๊ะหน้าห้อง แล้วครูก็ชี้ให้ดูทวีปต่างๆ แล้วก็ไล่เรียงมาแต่ละประเทศ สุดท้ายก็เมืองหลวงของแต่ละประเทศ ที่จำได้แม่นคือจำแบบรูปภาพ ประเทศอิตาลีทรงเหมือนรองเท้าบู๊ต ประเทศอินเดียทรงเหมือนรังผึ้ง ส่วนประเทศไทยทรงเหมือนด้ามขวาน
  • มีหลายเวปไซต์ที่เก็บค่าพิกัดคร่าวๆของเมืองสำคัญของโลกนี้ลองค้นดูจะเห็นหลายเวปไซต์ ผมจะใช้โปรแกรมลองหาระยะทางระหว่างเมืองหลวงแล้วปักหมุดลง google map และ google earth ตามลำดับ
  • จะลองหาพิกัดจากเมือง “Suva” เมืองหลวงของประเทศฟิจิ ค่าพิกัดแล็ต ลองดังนี้ครับ -18.13333333, 178.416667 อีกเมืองคือพนมเปญ “ភ្នំពេញ” ของบ้านใกล้เรือนเคียงเราครับ ค่าพิกัดแล็ต ลองคือ  11.55, 104.916667 เนื่องจากพิกัดเป็น degree ที่โปรแกรมปรับรูปแบบมุมให้ตรงกัน ค่าพิกัดนี้คร่าวๆนะครับ บางทีผม copy บางเมืองมาลองปักดู แต่ตกทะเลก็มีครับ ป้อนแล้วดังรูปด้านล่าง คลิกไอคอนลูกศรลงเพื่อคำนวณ

geodesic_dist02

  • จะได้ผลลัพธ์ 8,713.178 กม. ถ้าจุดอยู่ใกล้ๆกันลองเปลี่ยนหน่วยจาก Km.  เป็น m. ได้ จากนี้ลองคลิกที่ปักหมุดดู

geodesic_dist03

2016-11-08_21-23-38

  • จะเห็นเส้น geodesic เมื่อปรากฎบนแผนที่ในระนาบราบจะกลายเป็นเส้นโค้งๆบิดๆ
  • ต่อไปลองปักที่ google earth ตั้งชื่อไฟล์ก่อน ลองใช้เมาส์จับรูปลูกโลกของกูเกิ้ลเอิร์ทหมุนๆดู จะเห็นเส้นสีน้ำเงิน นั่นแหละครับเส้น geodesic  เบื้องหลังเส้น geodesic จะมีจุดทั้งหมดประมาณ 200 จุดต่อๆกันครับ ถ้าอยากดูเบื้องหลังลองเปิดไฟล์ kml  ด้วยโปรแกรม Notepad, Notepad++ดูครับ

2016-11-08_21-33-10

  • ลองซูมเข้าไปฝั่งกรุงพนมเปญ พิกัดจากเวปไซต์ตกย่านชุมชนหนาแน่น

2016-11-09_05-04-44

  • ซูมดูอีกฝั่งตกทะเลตามความคาดหมาย

googleearth_2016-11-09_05-03-44

ใช้ค่าพิกัดฐานข้อมูล

  • จะมาลองใช้ฐานข้อมูลที่เก็บค่าพิกัดไว้ เปิดตารางแล้วลากมาใช้งาน ดูรูปด้านล่าง คลิกเปิดตารางข้อมูลที่ไอคอนดัง (1) จะคลิกไอคอนจากด้านซ้ายหรือด้านขวาได้เหมือนกัน จากนั้นจะเห็นตารางข้อมูล ในที่นี้ผมเก็บค่าพิกัดไว้หลายจุด จะลองใช้เมาส์ลากค่าพิกัดจาก (2) ไปช่องตามลูกศรสีแดง วางค่าพิกัดไว้ที่ช่อง Coordinate point 1 การลากก็ธรรมดาครับต้องการค่าไหนในตารางก็กดค้างแล้วลากไปวางที่ช่องป้อนข้อมูลได้
  • เช่นเดียวกันลากค่าพิกัดจาก (3) ไปตามลูกศรสีน้ำเงิน ไปวางไว้ที่ Coordinate point 2 รูปแบบมุมที่เก็บไว้แบบไหน ลากมาแล้วโปรแกรมจะเปลี่ยนตามให้อัตโนมัติครับ

geodesic_dist04

  • คลิกคำนวณดูระยะทางบนทรงรี ได้ระยะทาง 308.548 กม.

geodesic_dist05

  • คลิกที่ไอคอนปักหมุดบน google maps ดูครับ หมุดทั้งคู่ได้จากหมุด GPS ครับ

firefox_2016-11-09_05-40-43

ตัวอย่าง Geodesic line ที่ยาวมาก

  • มาลองข้อมูลที่ผมเก็บไว้ในฐานข้อมูล ค่าพิกัดเมืองแรกเป็นเมือง Valparaíso อยู่ในชีลี ทวีปอเมริกาใต้ ค่าพิกัดที่สองเป็นเมืองเซี่ยงไฮ้ (上海) ประเทศจีนแผ่นดินใหญ่  เจอแล้วลอง drag and drop ค่าพิกัดมาที่ช่องป้อนได้เลย

geodesic_dist06

  • คำนวณดูได้ 18,752.494 กม. ลองปักหมุดดู จะเห็นเส้น  geodesic ยาวมาก ความยาวเกินครึ่งหนึ่งความยาวรอบโลก ลักษณะเส้นจะบิดเป็นเส้นโค้งบนระนาบราบ

firefox_2016-11-09_19-18-55

  • ลองปักดูบน google earth ปรากฎกูเกิ้ลเอิร์ท งง บิดอีกด้านมาให้ ใช้เมาส์จับลูกโลกหมุนไปอีกด้านจะเห็นเส้น geodesic สีน้ำเงิน เนื่องจากเส้นยาวมากไม่สามารถมองเห็นปลายเส้นทั้งสองพร้อมๆกันได้

2016-11-09_19-26-14googleearth_2016-11-09_19-26-44

 

  • ก็ขอจบตอนสำหรับการใช้งานโปรแกรม Geodesic Distance เพียงเท่านี้

โปรแกรมคำนวณหาระยะทางที่สั้นที่สุดบนทรงกลมของโลก (Great Circle Distance)

  • วิธีการนี้สูตรไม่ซับซ้อนเท่า geodesic distance ถือว่าละเอียดน้อยกว่า เพราะสัณฐานของโลกค่อนมาทางทรงรีมากกว่าทรงกลม โบราณใช้คำนวณหาแนวเดินเรือซึ่งเพียงพอ
  • โปรแกรมอยู่ตามลูกศรสีเหลือง เมื่อเปิดจะเห็นให้ป้อนรัศมีของโลกซึ่งค่าที่ใช้ประมาณนี้ครับ 6371-6373 กม. (แนะนำว่าไม่ต้องแก้ไข)

soffice-bin_2016-11-09_19-39-03

  • การใช้งานเหมือนกับโปรแกรมย่อย Geodesic distance เป๊ะเลยครับ ผมจะขอข้ามวิธีการใช้งานไป แต่จะลองคำนวณระยะทางระหว่างเมือง Valparaíso กับเซี่ยงไฮ้ (上海) ได้ระยะทาง 18,742.658 กม. แตกต่างวิธี Geodesic distance ประมาณ 10 กม.ครับ ดูเยอะนะครับแต่ต้องไม่ลืมว่าเส้นนี้ยาวมาก เทียบเป็นเปอร์เซ็นต์แล้วประมาณ 0.05% เท่านั้นsoffice-bin_2016-11-09_19-51-46

การป้อนรูปแบบของมุม

  • การป้อนมุมสำหรับโปรแกรมชุดนี้ ค่อนข้างต้องเป๊ะครับ ผมจะอธิบายให้พอเข้าใจ ถึงที่มาที่ไป ในทางโปรแกรมมิ่งผมใช้ที่เขาเรียกว่า 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 ครับ

surveyor-pocket-tools_2016-11-14_13-58-54

  • ก็ขอจบตอนแค่นี้ครับ ติดตามต่อตอนสุดท้าย การคำนวณหาความสูงจีออยด์ (Geoid separation)

Surveyor Pocket Tools โปรแกรมรวมเครื่องมือฉบับกระเป๋าสำหรับช่างสำรวจ (แจกฟรี) – ตอนที่ 2

  • ตอนที่ 1 ผมได้แนะนำโปรแกรมย่อย UTM – Geo Converter สำหรับแปลงพิกัดบนพื้นหลักฐาน WGS84 มาถึงตอนนี้จะมาดูโปรแกรมแปลงพิกัดข้ามพื้นหลักฐาน (datum) กันว่าเป็นอย่างไร จากรูปด้านล่าง ดับเบิ้ลคลิกที่โปรแกรมที่สอง “Transform Coordinatesintro-surveyor-pokcet-tools
  •  เปิดโปรแกรมมาจะมีช่อง input/output ด้านซ้ายและด้านขวา ตรงกลางจะมีไอคอนลูกศรแสดงการแปลงพิกัดจากซ้ายไปขวาหรือจากขวามาซ้ายก็ได้

spt_utm2utm-01

โปรแกรม Transform Coordinates

  • สำหรับโปรแกรมผมตัวนี้ รุ่นแรกๆตั้งเป้าเอาแค่พอใช้งานได้ก่อน เนื่องจากมีเส้นโครงแผนที่ (Map Projection) หลายอย่างที่ไม่เคยได้ใช้มาก่อนเลย ทำให้ขาดความเข้าใจอย่างลึกซึ้งเช่นพวก Conic Projection หรือ Azimuthal Projection ที่สำคัญอีกอย่างคือไม่มีข้อมูลมาลองด้วยครับ
  • แต่ Library ที่ผมนำมาใช้คือ Proj.4 นั้นมีความสามารถพอที่จะคำนวณจากพื้นหลักฐานไหนก็ได้ด้วยเส้นโครงแผนที่ไหนก็ได้ในโลกนี้ ขอให้รู้หมายเลข EPSG ต้นทาง ปลายทางเท่านั้นพอ โจทย์ของการเขียนโปรแกรมคือจะจัดกลุ่มให้ใช้งานได้ง่ายๆอย่างไร และผู้ใช้ค้นหาพื้นหลักฐานและเส้นโครงแผนที่ให้เร็วๆได้อย่างไร

ระบบพิกัด (Coordinate System)

  • พื้นหลักฐาน (Datum) ถ้าจะนิยามกันจริงๆผมขออ้างอิงจาก Proj.4 ดังนี้ Datum = Coordinate Frame + Reference Ellipsoid
    • Coordinate Frame คือระบบพิกัดที่คำนวณมาจากการเลือกทรงรีอ้างอิงมาใช้ที่ให้ค่าความต่างความสูงระหว่างจีออยด์กับทรงรีที่น้อยที่สุด ในบริเวณนั้นๆfirefox_2016-11-03_19-34-20
    • ใช้เฉพาะพื้นที่ ดังนั้นพื้นหลักฐานแต่ละประเทศก็ใช้ต่างๆกันไป ทั่วทั้งโลกมีหลายร้อยพื้นหลักฐานครับ
  • ระบบพิกัดจะเป็นระบบที่ผูกพื้นหลักฐานเข้ากับเส้นโครงแผนที่ ตัวอย่างพื้นหลักฐาน Indian 1975 ที่เราใช้งานอยู่จะใช้ทรงรี Everest 1830 แต่เส้นโครงแผนที่จะใช้ UTM ซึ่งมีสองโซนคือ 47 และ 48 เท่านั้น

 

  •  มาดูระบบพิกัดว่าที่จะกำหนดในโปรแกรมมีอะไรบ้าง

transform_coor_01transform_coor_01

  • ช่อง Group จะเป็นกลุ่มของระบบพิกัด แบ่งเป็นสองประเภทคือ Geographic Coordinate System  ค่าพิกัดจะเป็น  แลตติจูด/ลองจิจูด เท่านั้น และต้องระวังนะครับ ค่า latitude/longitude จะไม่เท่ากันนะครับขึ้นอยู่ว่าใช้ทรงรีอันไหน
  • กลุ่มประเภทที่สองคือ Projected Coordinate System ได้แก่ค่าพิกัดที่อยู่บนฉายมาอยู่บนเส้นโครงแผนที่ (Map Projection) แล้ว ที่เราคุ้นเคยก็คือ UTM ที่ใช้เส้นโครงแผนที่แบบ Transverse Mercator ที่ใช้ทรงกระบอกวางในแนวนอนตัดกับทรงรีให้มีรอยตัด (Secant) 2 รอย  (ภาพจาก Map Projections) ส่วนอีกรูปล่างติดกันเป็น top view มองจากด้านบน ตรงรอยตัดนั้นเป็นที่ทราบดีว่า Scale = 1.0 ส่วน Central Meridian กำหนดให้ Scale = 0.9996  ตามมาตรฐานของ UTM

mappro-4-15bmappro-4-4-1b

ตัวอย่างการใช้งาน

  • อ่านแล้วมึนหัวไหมครับ ในฐานะผู้ใช้ธรรมดาก็ไม่ต้องกังวล (แต่ในฐานะคนทำแผนที่ควรที่จะต้องรู้) มาดูวิธีการใช้ โปรแกรมนี้เปิดมา Indian 1975 จะเป็นค่าปริยายอยู่ด้านขวามือ แต่ถ้าจะเลือกระบบพิกัดอันดับแรกให้ที่ “Group” ดูว่าเราต้องการใช้ค่าพิกัดภูมิศาสตร์ แล็ตติจูด/ลองจิจูดไหม หรือต้องการค่าพิกัดระบบกริด N,E เช่นถ้าต้องการระบบพิกัดกริดเลือกเป็น “Projected Coordinate System” ดูรูปด้านล่าง ลำดับจะไม่เรียง ต่อไปเลือกพื้นหลักฐานให้คลิกที่ “Datum” มันเยอะมากครับ ใช้วิธีกดอักษรตัวหน้าที่เป็นภาษาอังกฤษเช่น “I” เมื่อต้องการหา Indian 1975 แต่อาจจะต้องเคาะตัวหนังสือหลายๆครั้งเนื่องจากตัวหน้าซ้ำกันมาก (โปรแกรมรุ่นหน้าจะทำให้ค้นหาง่ายๆ)
  • เมื่อเลือกพื้นหลักฐานแล้วก็มาเลือก “System” ต่อ ความจริงมันคือเส้นโครงแผนที่ครับ ถ้าเป็น Indian 1975 ผมกำหนดให้มีสองโซนของ UTM คือ 47 และ 48

transform_coor_02

  • มาดูระบบพิกัดด้านซ้าย ผมเลือกตามรูปด้านล่าง ตอนนี้ต้องการแปลงค่าพิกัดระบบกริดจากพื้นหลักฐาน WGS84 ไปยัง Indian 1975 โดยเลือกโซน 47N ดังรูปด้านล่าง

 

surveyor-pocket-tools_2016-11-03_20-35-02

  • ผมจุดและมีค่าพิกัด ชื่อจุด “006 030” N= 1598253.177 E = 703564.224 ต้องการแปลงระบบพิกัดไปยังกริดยูทีเอ็มของ Indian 1975 ป้อนตัวเลขดังนี้ครับ เสร็จก็คลิกที่ไอคอนรูปลูกศรไปด้านขวา

transform_coor_03

  •  มาดูผลลัพธ์กัน โปรแกรมจะคำนวณค่าพิกัดกริดยูทีเอ็มและค่าพิกัดภูมิศาตร์ ของ Indian 1975 ให้และยังค่าแลตติจูด ลองจิจูดของพื้นหลักฐานต้นทางในที่นี้คือ  WGS84 ให้ด้วย ตอนนี้ Scale factor กับ convergence ยังไม่ได้ implement ไม่คำนวณให้ในรุ่นนี้

surveyor-pocket-tools_2016-11-03_21-03-44

  • ถ้ามีพิกัดกริดยูทีเอ็มของ Indian 1975 ก็สามารถเอามาป้อนด้านซ้ายแล้วคำนวณไปด้านขวาได้เช่นเดียวกัน

การป้อนรูปแบบของมุม

  • การป้อนมุมสำหรับโปรแกรมชุดนี้ ค่อนข้างต้องเป๊ะครับ ผมจะอธิบายให้พอเข้าใจ ถึงที่มาที่ไป ในทางโปรแกรมมิ่งผมใช้ที่เขาเรียกว่า 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 ครับ

surveyor-pocket-tools_2016-11-14_13-58-54

  • รูปแบบ DD MM.MMMM ไม่มีฟิลิปดาเพราะเศษฟิลิปดาถูกนำไปรวมเป็นทศนิยมของลิปดาแทน รูปแบบนี้นิยมสำหรับคนเดินเรือ เช่น  14°36.736998’N ต้องป้อนให้ครบทั้งสัญลักษณ์และตัวอักษร ตัวสัญลักษณ์องศาใช้ตัวอักษร d แทนได้ ป้อนแบบนี้ 14d36.736998’N
  • รูปแบบ Degree ง่ายที่สุดครับ แลตติจุดด้านเหนือป้อนธรรมดาไม่มีเครื่องหมายบวก แต่ด้านใต้ศูนย์สูตรต้องป้อนลบนำหน้าเช่น -17.877347

อนาคตของโปรแกรม

  • โปรแกรมย่อยตัวนี้ยังต้องทำอะไรอีกมาก ยังไม่ได้จัดการข้อผิดพลาด บางครั้งผู้ใช้ใส่อะไรไปที่โปรแกรมคาดไม่ถึง อาจจะแครชไปไม่ร่ำลา ก็ฝาก Surveyor Pocket Tools ไว้ใช้งานกันครับ ตอนหน้ามาว่ากันใหม่กับโปรแกรมคำนวณหาระยะทาง Geodesic Distance และ Great Circle Distance
  • พบกันตอนที่ 3 ครับ :)

Surveyor Pocket Tools โปรแกรมรวมเครื่องมือฉบับกระเป๋าสำหรับช่างสำรวจ (แจกฟรี) – ตอนที่ 1

ความเป็นมา

  • ปกติผมเป็นคนชอบพกเครื่องมือสารพัดประโยชน์เช่นมีดพับในกระเป๋ากางเกง เพราะสะดวกรวมทุกสิ่งทุกอย่างทั้งไขควง มีด กรรไกร ตะไบ ที่เปิดขวด ยี่ห้อที่ชอบได้แก่  Leatherman, Victorinox เมื่อสองปีที่แล้วไปโมซัมบิค อาฟริกา ท่านศุลกากรที่นั่นเปิดกระเป๋าเดินทางเพื่อตรวจก่อนออกจากสนามบิน  แอบสอย Victorinox ของผมไปหน้าตาเฉย เสียดายครับเพราะใช้มาหลายสิบปี แต่ก็อโหสิกรรมให้ท่านผู้นั้นไปแล้ว โปรแกรมที่จะแนะนำก็คล้ายกับมีดพับสารพัดประโยชน์แบบเดียวกัน
  • ที่ใช้บ่อยสำหรับคนที่ทำงานสนามคือโปรแกรมแปลงพิกัดค่ากริดยูทีเอ็ม (UTM) แปลงไป  แลตติจูด/ลองจิจูด (Geographic)  หรือกลับกัน ส่วนใหญ่จะเปิดคำนวณผ่านออนไลน์ ได้ค่ามาแล้ว บางทีก็ copy มาวางที่่  google earth หรือ google map  เพื่อปักหมุดให้รู้ว่าจุดตัวนั้นอยู่ตรงไหน หลายขั้นตอนบางครั้งรู้สึกรำคาญ
  • ไปๆมาๆ เขียนใช้เองดีกว่า ตรงใจที่สุด ป้อนค่าพิกัดเสร็จก็คลิกแปลงพิกัดทันที เสร็จแล้วก็ปักหมุดลงใน google maps ทันที

spt_intro

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

ใครคือผู้ใช้งานโปรแกรม

  • ดูจากชื่อโปรแกรมเหมือนกับเอาไว้ให้ ช่างสำรวจใช้อย่างเดียว แต่ไม่ใช่ครับ ใครก็เอาไปใช้ได้ เพราะโปรแกรมผมได้พยายามออกแบบให้ใช้งานได้ง่ายๆ

ดาวน์โหลดและติดตั้ง

  • Surveyor Pocket Tools หรือถ้าลิ๊งค์ตรงนี้ขาดให้ดูลิ๊งค์ด้านขวามือมองหาโปรแกรม Surveyor Pocket Tools

 

  • คลิกเพื่อดาวน์โหลด เสร็จแล้วแตกไฟล์ zip ออกมาจะได้ไฟล์ .exe พร้อมทำการติดตั้ง เมื่อติดตั้งแล้วจะเห็นไอคอนรูปกล้องเซอร์เวย์

icon_sptเริ่มใช้งาน

  • เมื่อเปิดโปรแกรมมาจะเห็นหน้าตาดังรูปด้านล่าง แต่ละไอคอนจะมีโปรแกรมย่อยๆให้ใช้งาน

intro-surveyor-pokcet-tools

  • มาดูกันว่าแต่ละโปรแกรมย่อยทำอะไรได้บ้าง เรียงเลยครับจากบนลงล่าง

โปรแกรมแปลงพิกัดกริดยูทีเอ็ม (UTM – Geo Converter)

  • สำหรับแปลงพิกัดกริด UTM ได้แก่ค่า Northing(N), Easting(E) ไปค่าพิกัดภูมิศาสตร์ Latitude, Longitude  ในที่นี้จะแปลงค่าพิกัดบนรูปทรงรี WGS84 เท่านั้น แต่สามารถแปลงจากพิกัดภูมิศาสตร์ไปค่าพิกัดกริดยูทีเอ็ม เมื่อดับเบิ้ลคลิกที่ไอคอนจะเห็นหน้าต่างโปรแกรมแปลงพิกัดเล็กๆแสดงออกมาด้านขวา มีช่องพิกัดให้กรอกช่องด้านซ้ายหรือด้านขวา

spt_utm2geo-01

  • ช่องด้านซ้ายมือผู้อ่านจะเป็นช่องให้ป้อนค่าพิกัดกริดยูทีเอ็ม มีช่อง Point Name คือป้อนชื่อจุด และเรียงลงมาคือป้อนค่า N, E สุดท้ายต้องบอกโซนด้วยครับเพราะระบบกริดยูทีเอ็มมีหลายโซนทั้งโลก ค่าพิกัดอาจซ้ำกันถ้าไม่ระบุโซนจะไม่รู้เลยว่าอยู่ที่ไหน
  • ผมจะลองแปลงพิกัดจากกริดยูทีเอ็มไปหาค่าพิกัดภูมิศาสตร์ โดยที่จุดหรือหมุดมีค่าพิกัดดังนี้ ชื่อหมุด “006 -031” ค่า N = 1598702.276 ค่า E=707105.198 Zone No. = UTM Zone 47N ดังรูปด้านล่าง

spt_utm2geo-03

  • จากนั้นคลิกที่ไอคอนรูปลูกศรเพื่อแปลงค่าพิกัดจะเห็นค่าพิกัดแปลงไปเป็นค่าพิกัดภูมิศาสตร์ดังรูปด้านบน ล่างขวาจะเห็นรูปแบบที่จะแสดงมุมได้สามอย่างคือแบบทศนิยม แบบแยกองศา ลิปดา ฟิลิปดา (DD°MM’SS.SSSS”) และแบบที่สามคือองศา ทศนิยมของลิปดา (DD°MM.MMMM’)

spt_utm2geo-04

  • กรณีค่าแลตติจูดเป็นค่าบวกคืออยูเหนือเส้นศูนย์สูตร จะมีคำว่า “N” เป็น suffix ไปแปะไว้ด้านหลัง ถ้าอยู่ต่ำกว่าเส้นศูนย์สูตรจะใข้คำว่า “S”  เช่นเดียวกันกับค่าลองจิจูดถ้าค่าเป็นบวกจะใช้คำว่า “E” ย่อมาจาก East แปะด้านหลัง ถ้าค่าเป็นลบจะใช้คำ “W” ย่อมาจาก West  แปะไว้ด้านหลัง
  • ลองเปลี่ยนรูปแบบมุมเป็น DD°MM.MMMM’

spt_utm2geo-05

ปักหมุดบน Google Maps

  •   ต่อไปจะปักหมุดบน google maps กระบวนการนี้ต้องออนไลน์นะครับ  คลิกที่ไอคอนด้านล่างตามรูป โปรแกรมจะเรียก  web browser ที่ใช้งานมาแสดง

spt_utm2geo-06

  • รูปด้านล่างแสดง google maps พร้อมหมุดที่ปักแล้ว สะดวกดีครับ ดูตรง address bar จะเห็นว่าเรียกไฟล์จากเครื่องที่ติดตั้งโปรแกรมใช้งานอยู่ดูเหมือนจะออฟไลน์ แต่ไม่ใช่ครับ ยังออนไลน์สามารถซูมเข้าออกได้ปกติ

gm_006031

ปักหมุดบน Google Earth

  • มาลองปักหมุดบน google earth ดูกัน เครื่องที่ใช้ต้องติดตั้ง google earth ด้วยนะครับ คลิกที่ไอคอนดังรูปด้านล่าง

spt_utm2geo-07

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

googleearth01

  • มาลองแปลงค่าพิกัดภูมิศาสตร์ไปเป็นค่าพิกัดกริดยูทีเอ็ม ทีนี้จะลองรูปแบบมุมเป็นทศนิยมดีกรี ผมป้อนค่าพิกัดที่อยู่ที่โมซัมบิค อาฟริกาที่เคยไปทำงานอยู่ดังรูป คลิกไอคอนเพื่อแปลงพิกัด

spt_utm2geo-08

  • จะเห็นว่าโปรแกรมจะแปลงพิกัดให้พร้อมทั้งคำนวณ UTM Zone ให้ได้ถูกต้อง จุดนี้อยู่ในประเทศโมซัมบิค ทวีปอาฟริกาอยู่ใต้เส้นศูนย์สูตรและยูทีเอ็มโซนคือ  UTM Zone 37S

spt_utm2geo-10

  • ลองปักหมุดบน google earth

googleearth02

จัดเก็บข้อมูลจุดที่ใช้งานเข้าฐานข้อมูล

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

spt_utm2geo-11

  • จากนั้นโปรแกรมจะเปิดตารางข้อมูล ตรวจสอบว่าข้อมูลเข้าไปเรียบร้อยแล้วดังรูป ส่วนจุดอื่นๆที่ปรากฎในตารางผมได้เพิ่มมาก่อนหน้านี้แล้ว

spt_utm2geo-12

วิธีใช้งานตารางข้อมูลกริดยูทีเอ็ม

  •  ในตอนนี้ผมจัดทำตาราง (Table) เก็บค่าพิกัดที่เป็นกริดแยกกับตารางที่เก็บค่าพิกัดภูมิศาสตร์ แต่อยู่ในฐานข้อมูลเดียวกัน มาดูวิธีใช้งาน คลิกที่ไอคอนดังรูป

spt_utm2geo_opentable-01

  • จะเห็นตารางข้อมูลขึ้นมา ตอนนี้จะใช้งาน ต้องการค่าพิกัดตัวไหนก็ใช้เมาส์เลื่อนสกรอลบาร์ไปได้ ถ้าคลิกที่ปุ่ม “First” จะไปที่ตัวแรก ถ้าคลิกที่ “Last”  จะไปที่ตัวสุดท้าย ถ้าต้องการลบก็คลิกที่ “Delete”
  • ตอนนี้สมมุติว่าผมต้องการค่าพิกัด “AC-01-GPS” มาใช้งาน คลิกเมาส์ที่ค่าพิกัดตัวนี้แล้วลากไปวางที่ช่อง UTM ดังรูป

spt_utm2geo_draganddrop-01

  • จะได้ค่าพิกัดจากตารางข้อมูลมาปรากฎในช่อง UTM ดังรูป แปลงพิกัดก็คลิกที่รูปลูกศรขวาได้เลย

spt_utm2geo_draganddrop-02

  • ลองลากค่าพิกัดกริดยูทีเอ็มจากตารางข้อมูลไปที่ช่อง Geographic เพื่อแปลงพิกัด

spt_utm2geo_draganddrop-03

  • โปรแกรมจะเตือนว่าผู้ใช้ต้องการแปลงพิกัด

spt_utm2geo_draganddrop-04

  • คลิก “OK” จะได้ผลลัพธ์

spt_utm2geo_draganddrop-05

วิธีการใช้ตารางข้อมูลค่าพิกัดภูมิศาสตร์

  • จากที่กล่าวไปแล้วตารางข้อมูล (table) มีสองแบบ ที่นี้มาลองใช้ตารางค่าพิกัดภูมิศาสตร์ดูบ้าง ตอนนี้จะจัดเก็บจุด “006-053” เข้าตารางข้อมูล คลิกที่ไอคอนรูปหมุดดังรูป

spt_ge2utm_draganddrop-02

  • จะเห็นตารางข้อมูลขึ้นมา และค่าพิกัดถูกจัดเก็บเข้าไปเรียบร้อยดังรูปด้านล่าง จะเห็นตารางข้อมูลสองตารางที่ลากขยับหน้าต่างเรียงกันใหม่

spt_geo_table

  • ลองคลิกไอคอนลูกศรไปทางซ้ายเพื่อแปลงพิกัดจากพิกัดภูมิศาสตร์ไปหาพิกัดกริดยูทีเอ็ม จะได้ค่าเดิมก่อนหน้านี้

โปรแกรมแปลงพิกัดข้ามพื้นหลักฐาน (Transform Coordinates)

  • โปรแกรมที่แล้วสำหรับแปลงพิกัดบนพื้นหลักฐาน WGS84 เท่านั้น แต่ถ้าต้องการแปลงข้ามพื้นหลักฐาน (datum) จะทำยังไง โปรแกรมที่สองที่ผมเขียนขึ้นมาเพื่อตอบโจทย์นี้ แต่เนื่องจาก datum และเส้นโครงแผนที่ (Map Projection) ในโลกนี้มันมีมากมายมหาศาลต่างประเทศต่างใช้หลากหลายกันไป สำหรับประเทศไทยมีสองพื้นหลักฐานที่ใช้กันคือ WGS84 และ Indian 1975 เส้นโครงแผนที่ของบ้านเราใช้ UTM
  • จากโปรแกรมหลักเมื่อคลิกโปรแกรมที่สอง จะเห็นหน้าตาแบบนี้  ด้านซ้ายเป็นระบบพิกัด ที่สามารถเลือกพิ้นหลักฐานและเส้นโครงแผนที่ได้ ด้านขวาก็เช่นเดียวกันสามารถเลือกได้อิสระ

surveyor-pocket-tools_2016-10-27_07-30-03

การป้อนรูปแบบของมุม

  • การป้อนมุมสำหรับโปรแกรมชุดนี้ ค่อนข้างต้องเป๊ะครับ ผมจะอธิบายให้พอเข้าใจ ถึงที่มาที่ไป ในทางโปรแกรมมิ่งผมใช้ที่เขาเรียกว่า 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 ครับ

surveyor-pocket-tools_2016-11-14_13-58-54

  • ก่อนจะมาว่ากันต่อคงต้องยกยอดไปตอนที่ 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 ดีมากจนไม่เคยคิดจะกลับไปใช้ตัวอื่นอีกเลย
  • พบกันตอนใหม่ครับ

The Return of Spot Fire ก้าวกลับมาอีกครั้งของ Spot Fire รุ่น 2.10 (ล่าสุด)

Spot Fire V2.10 รุ่นล่าสุด

  • และแล้วก็ได้เวลา upgrade โปรแกรมอีกตัว ซึ่งโปรแกรมเขียนตัวเลขค่าระดับส่งเข้า Autocad โดยตรง เป็นโปรแกรมเล็กมากๆ เรียกว่าเป็นทูลส์ (tools) ก็ได้ครับ ขนาดไฟล์ติดตั้ง 1.5 MB แค่นั้นเอง
  • เดิมทีโปรแกรมพัฒนาด้วย Delphi ซึ่งติดเรื่องลิขสิทธิ์ ผมพอร์ทโปรแกรมมา Lazarus ซึ่งใช้ Free pascal compiler เป็นคอมไพเลอร์ ที่ฟรีและ opensource เนื่องจากโค๊ดของ Dephi เป็นปาสคาลอยู่แล้วการพอร์ทโค๊ดมา Lazarus ซึ่งเป็นภาษาปาสคาลเหมือนกัน จึงเป็นเรื่องง่ายๆ และได้อัพเกรดความสามารถหลายๆอย่างเพิ่มเติมครับ
  • รองรับจอ 4K เหมือนทุกโปรแกรมที่อัพเดทก่อนหน้านี้

SpotFire_Intro

จุดกำเนิดโปรแกรม

  • งานสำรวจทางทะเลหรือแม่น้ำ สำรวจความลึกท้องทะเล (sea bed) หรือท้องแม่น้ำ (river bed) เรียกให้แคบในภาษาปัจจุบันคือ  Bathymetric Survey จะมีเอกลักษณ์เฉพาะตัว คือการเขียนเลขน้ำ (เขียนค่าระดับหรือความลึกตรงบริเวณจุดสำรวจ)

bathy_example

  • งานทางน้ำทางทะเล เลขน้ำลึกตัวเลขจะบวก ที่ตื้นค่าระดับจะเป็นลบ เลขน้ำทางสากล จะไม่เขียนจุดทศนิยม ถ้าเลขทศนิยมเป็นศูนย์ เช่น 1.0, 2.0 จะไม่เขียนเลขทศนิยมคือเลขศูนย์ ตัวเลขทศนิยมจะเป็นตัวห้อย ตัวหนังสือจะเล็กว่าเลขหลักประมาณ 70-80% (ดูรูปด้านบน ผมดาวน์โหลดจากอินเทอร์เน็ต) ถ้าเป็นเลขลบจะขีดเส้นใต้ตัวเลขตัวหลัก ส่วนทศนิยมจะไม่มีขีดด้านล่าง
  • ตัวหนังสือนิยมเขียนตัวเอียงแบบ oblique อีกเอียงโย้ไปด้านหลังประมาณ 15 องศา ลองดูแผนที่เดินเรือแบบสากล สังเกตที่ตื้นๆสีเขียวเข้มๆด้านขวาค่าระดับจะเป็นลบ จะมีขีดใต้ตัวเลขหลัก

portion-of-raster-chart

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

ดาวน์โหลดและติดตั้ง

  • ดาวน์โหลดได้ที่ SpotFire V2.10 แบบ 64 bit และ SpotFire V2.10 แบบ 32 bit ตอนนี้เป็น build 2370 หรือถ้าลิ๊งค์ตรงนี้ขาดให้ดูด้านขวามือของ blog ในส่วน Download เมื่อดาวน์โหลดมาแล้วก็ unzip แล้วทำการติดตั้งง่ายๆ ติดตั้งแล้วจะเห็นไอคอนของโปรแกรมอยู่บน desktop ดับเบิ้ลคลิกเพื่อเปิดโปรแกรม

spotfire_icon_desktop

เปิดโปรแกรม

  • เปิดมาหน้าแรกจะเป็นหน้าต่างของแท็บ “Options” ที่เป็นหน้าให้ป้อนค่าตัวเลือกเพื่อควบคุมตัวเลขค่าระดับ ตั้งแต่กำหนดมาตราส่วนของแผนที่ ฟอนต์ ขนาดตัวเลข และอื่นๆ
  • ส่วนทูลบาร์ มีแค่สองไอคอนคือเปิดไฟล์ กับส่งตัวเลขค่าระดับเข้า Autocad

spotfire_introduction

  • อีกหน้าจะเป็นหน้าต่างของแท็บ “Points” ไว้แสดงข้อมูล X,Y,Z หรือ N,E,Z ที่อ่านได้จากไฟล์ CSV ตอนนี้ยังโล่งเพราะยังไม่มีข้อมูล

SpotFire_points

ทดสอบข้อมูล

  • ข้อมูลตัวอย่างเก็บไว้ที่ “C:\Users\ชื่อผู้ใช้\Appdata\Roaming\Spot Fire\Examples Data” ซึ่งจะเป็นโฟลเดอร์ที่ซ่อนไว้ จะใช้ตัวช่วย คลิกที่เมนู “Help > Examples Data Folder…” ดังรูป

spotfire_open_examples_folder

  • โปรแกรมจะบอกว่าได้ก๊อปปี้พาท (path) ของโฟลเดอร์ตัวอย่างข้อมูลไปไว้ในคลิปบอร์ดเรียบร้อยแล้ว คลิก “OK” เพื่อปิด

spotfire_copytoclipboard

  • โปรแกรมจะเปิด Windows Explorer แสดงพาทที่เก็บข้อมูล จะเห็นไฟล์ชื่อ “Cavite-NEZ.csv” เราจะทดสอบไฟล์นี้ก่อน ไฟล์ข้อมูลจะเป็น text file ที่เก็บจุดงานสำรวจ (point) ไว้ในรูปแบบ NEZ โดยที่ใช้ตัวคั่นคือเครื่องหมายคอมม่า

spotfire_tested_file

เปิดไฟล์ข้อมูล

  • กลับมาที่โปรแกรมกันต่อ ที่ทูลบาร์คลิกไอคอน “Open CSV text file…

spotfire_open_file_icon

  • จะเห็นไฟล์ไดอะล็อก เนื่องจากพาทข้อมูลที่วินโดส์ซ่อนไว้ ถ้า browse จะมองไม่เห็น วิธีการคือเอาพาทที่เราก็อปปี้ไปไว้ในคลิปบอร์ดมาวาง (pasted) บนพาทของไดอะล็อก กด “Enter” ที่คีย์บอร์ดครั้งหนึ่ง เลือกไฟล์ เลือกรูปแบบไฟล์เป็น N,E,Z แล้วเปิดไฟล์ ดูรูปประกอบ

spotfire_selected_file

  • ตอนเลือกรูปแบบไฟล์ต้องเลือกให้ตรง เพราะบางท่านนิยมเก็บไว้ในรูปแบบ E,N,Z ค่า N และ E บางครั้งมีค่าใกล้เคียงกัน ผมไม่สามารถโปรแกรมให้อ่านไฟล์ แล้วตัดสินใจเลือกว่าคอลัมน์ไหนเป็น N หรือ E ซึ่งอาจจะผิดพลาด ผู้ใช้ต้องเลือกเองครับ
  • Format ของ CSV มี 4 รูปแบบที่โปรแกรมอ่านได้คือ
    • P,N,E,Z,D (P = Point No. D=Description) และ P,N,E,Z
    • P,E,N,Z,D และ P,E,N,Z
    • N,E,Z,D และ N,E,Z
    • E,N,Z,D และ E,N,Z

ตรวจสอบข้อมูล

  • ไฟล์ข้อมูล “Cavite-NEZ.csv” ที่เปิด จะมีจำนวนจุดประมาณ 19789 จุด โปรแกรมใช้เวลาอ่านนิดเดียว คลิกที่แท็บ “Points” มาดูข้อมูลบนตารางข้อมูล ตารางนี้ดูได้อย่างเดียวไม่สามารถแก้ไขได้

spotfire_data_table

  • เปิดเมนู “File > Properties” จะเห็นค่าระดับลึกสุด = 43.160 เมตร ค่าตื้นสุด = -1.060 เมตร ไฟล์งานนี้เป็นไฟล์สำรวจ seabed ของทะเล

spotfire_file_properties

ตั้งค่าตัวเลือกเพื่อตั้งรูปแบบตัวเลขค่าระดับ

  • คลิกแท็บกลับมาที่ “Options” รูปด้านล่างดูแล้วอาจจะลายตา ทนเอาหน่อยครับ หน้านี้เป็นการกำหนดรูปแบบให้ตัวเลข อย่างเช่นอันดับแรกมาตราส่วน ผมเลือกมาตราส่วน 1 : 20000 เพราะงานสำรวจเป็นพื้นที่ขนาดใหญ่ในทะเลติดชายฝั่งแห่งหนึ่ง

spotfire_set_options

  • มาตราส่วนแผนที่จะเป็นสิ่งแรกที่เราคิดไว้ก่อนสิ่งอื่น 1 : 20000 เทียบแบบนี้จะเข้าใจง่าย 1 มม. บนแผนที่ = ขนาดจริงบนโลก 20000 มม. หรือ 1 มม.บนแผนที่ = 20 เมตร (หาร 20000 ด้วย 1000) ฉะนั้นเวลากำหนดตัวอักษรสูงขนาด 2 มม. เวลาเขียนแบบตัวอักษรใน CAD จะต้องตั้งความสูงเท่ากับ 2 x 20 = 40 เมตร (ถ้าเรากำหนดหน่วยเขียนแบบใน CAD เป็นหน่วยเมตร) แต่ไม่ต้องปวดหัวครับ ถ้าตั้งมาตราส่วนเท่าไหร่โปรแกรมจะคำนวณมาให้ถูกต้องได้ถูกต้องเท่านั้น
  • Text layer สามารถเลือกเป็น “Single layer” โปรแกรมจะใช้ชื่อเลเยอร์ “SpotText” โดยอัตโนมัติ แต่ถ้าเลือก “Multiple layers” โปรแกรมจะสร้างให้ตามชั้นหรือช่วงของค่าระดับ (Color band)
  • เลือกฟอนต์ไว้เป็น “Romans” เพราะตัวเลขจะออกมาสวย เลือกความสูงตัวเลขหลัก 2 มม. ตัวทศนิยมจะเป็นตัวห้อยขนาดเล็กกว่า ขนาด 1.5 มม. ไม่หมุนตัวเลข จัดให้ตัวเลขเอียงไปด้านหลัง (Oblique) 15 องศา
  • รูปแบบเครื่องหมายลบ เลือก “Underlineขีดเส้นใต้ล่างตัวเลขหลัก กำหนดจำนวนทศนิยม 1 ตำแหน่ง ไม่แสดงเครื่องหมายจุดทศนิยม
  • จะเขียน point ลงให้ไปด้วย ตั้งชื่อเลเยอร์ “Points
  • เลือกจำนวนจุด (Select point every) ในเบื้องต้นตั้งเป็น 1 สามารถตั้งค่าอื่นได้เช่น ตั้งเป็น 4 ถ้าจุดเรียงกันไป 1,2,3,4,5,6,7,8…. โปรแกรมจะเลือกจุดที่ 1 จุดต่อไปจะเลือกจุดที่ 5 (ทุกๆ 4)
  • ในตอนนี้โปรแกรมจะตั้งค่าปริยาย Automatic color band interval = 5 เมตร ถ้าเปลี่ยนค่าโปรแกรมจะคำนวณให้ใหม่โดยคลิกที่ปุ่มยาวๆ “Apply” ด้านล่าง
  • จะเห็นว่าแบ่งค่าระดับจากมากไปน้อยได้ 10 ระดับ โปรแกรมจะเลือกสีมาให้เช่นกัน 10 สี และตั้งค่าเลเยอร์ตามค่าระดับอีก 10 เลเยอร์

ปั๊มตัวเลขค่าระดับเข้า Autocad

  • ก่อนจะปั๊มตัวเลขเข้า ขอให้เปิดโปรแกรม Autocad  ไว้ก่อน เพราะไม่งั้น Autocad ใช้เวลาเปิดนาน โปรแกรม Spot Fire อาจจะรวน
  • ที่ทูลบาร์คลิกที่ไอคอน Autocad

spotfire_fire_to_acad_icon

  • เมื่อสถานะการส่งจุดครบ 100% ไปที่โปรแกรม Autocad จะเห็นจุดดังรูป

autocad_all_points_cavite

  • ลอง Zoom เข้าไปดูใกล้ๆ จะเห็นว่าจุดแน่น ตัวเลขค่าระดับติดกันเป็นพรืด

dense_points

  • ที่ Options ตรงเลือกจุด (Select point every) เพิ่มจาก  1 เป็น 4 แล้วส่งจุดเข้า Autocad อีกครั้ง เมื่อครบ 100%  ซูมดูอีกครั้ง จะเห็นตัวเลขอยู่ห่างกันพอประมาณ และสีตัวเลขเป็นไปตามช่วงค่าระดับที่ตั้งไว้ ส่วนตัวเลขทับกันตรงที่แนวตัดกัน ต้องอาศัยลบออกด้วยมือครับ

dense_points_level2

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

points_onshore

  • ตรวจสอบเลเยอร์ใน Autocad ที่ Layer properties ว่าโปรแกรมเขียนมาให้ตามที่ต้องการไหม ก็โอเคครับ

Autocad_layers_banding

 

เลือกรูปแบบที่กำหนดไว้แล้ว

  • ในแท็บ “Options” ตรง Annotation style จะมี “User define” ถ้าเลือกตัวนี้ ผู้ใช้จะเป็นคนกำหนดเอง แต่ถ้าเลือก Preset style จะเป็นสไตล์ที่โปรแกรมเตรียมไว้ให้ จะขอกล่าวถึง Preset Style #1 อันเป็นการเขียนเลขน้ำสไตล์กรมเจ้าท่าของไทย ที่มีเอกลักษณ์เฉพาะตัว ตัวเลขจะเอียงไปด้านหลัง 15 องศา ตัวทศนิยมตัวเล็กกว่าแต่จะไม่ห้อย เขียนเสมอกับตัวเลขหลัก จุดทศนิยมใช้เครื่องหมายคอมม่า ที่ขีดตรงๆ ถ้าค่าเป็นลบ จะขีดเส้นใต้เครื่องหมายคอมม่า

spotfire_preset_style_1

  • เลือก  “Preset style #1” แล้วส่งจุดเข้าโปรแกรม Autocad อีกครั้ง ดูตัวเลขสไตล์ของกรมเจ้าท่า สวยงามครับ

points_doh_style

  • หรือตัวเลขติดลบบนฝั่ง เครื่องหมายลบใช้ขีดใต้เครื่องหมายคอมม่า

points_doh_style_onshore

  • ลองทดสอบดู “Preset Style #3” ตัวเลขจะหมุนทวนเข็ม 15 องศา

points_preset_style_3

สรุป

  • Spot Fire เป็นโปรแกรมตัวเล็กๆมาอำนวยความสะดวกในการเขียนตัวเลขค่าระดับ นอกจากใช้งานทางน้ำเป็นพิเศษ ผมว่าก็ดัดแปลงใช้งานบกได้ถ้าต้องการ สำหรับรุ่นต่อไปผมจะเขียนให้สามารถบันทึกไฟล์เป็น DXF ได้โดยไม่ต้องพึ่ง Autocad มากเกินไป โปรแกรมนี้ก็ยังแจกฟรีเหมือนเดิม นำไปใช้งานและแจกจ่ายได้ พบกันใหม่ครับ

SpotFire_About

สิ้นสุดการรอคอย XSection Plot รุ่น 4.10 มาแล้ว ตอนที่ 3 (จบ)

10.การจัดเรียงรูปตัดบนกระดาษเขียนแบบ (Page Layout)

  • การจัดเรียงรูปตัด เลือกทูลบาร์และคลิกที่ “Page layout” ได้ดังรูป

page_layout_toolbar

  • ความยาวของรูปตัดแต่ละรูปตัด ความกว้างในแนวดิ่ง มาตราส่วน จะมีผลต่อขนาดของรูปตัดแต่ละรูป ที่่จะวางบนกระดาษเขียนแบบ  การจัดเรียงรูปตัดให้เหมาะสม ผู้ใช้สามารถเลือกจำนวนรูปตัดในแนวดิ่ง จำนวนรูปตัดในแนวนอน ลองตั้งค่าตามรูปด้านล่าง เนื่องจากข้อมูลที่เรากำลังทดลองใช้งานอยู่มี 4 รูปตัดและความกว้างของรูปตัดประมาณ 1300 เมตร จึงยาวจรดกระดาษซ้ายขวา จำนวนรูปตัดในแนวดิ่งจึงเลือกเป็น 1 ส่วนจำนวนรูปตัดในแนวนอนเลือกเป็น 4

page_layout_1

  • มาดูตั้งค่าให้กริดทางราบ จัดระยะราบจาก CL (ค่าที่ X = 0) ไปด้านซ้าย ตั้งไว้ 700 เมตร เผื่อยาวเกินกว่าข้อมูลไว้นิดหนึ่งไม่ให้รูปตัดไปชน ด้านขวาตั้งไว้ 650 เมตร ส่วนระยะราบของกริดแต่ละช่อง(grid spacing) เลือกไว้ 10 เมตร

page_layout_2

  • มาดูการตั้งกริดทางดิ่ง ผมตั้งไว้ 21 เมตร ระยะของช่องกริดทางดิ่ง (มาตราส่วน 1:200) 1 เมตร ดูรูปกราฟฟิคที่ลากลูกศรเชื่อมโยงด้านล่างเพื่อความเข้าใจ และตั้งระยะของช่องกริดทางดิ่ง 1 เมตร

page_layout_3

  • เวลาเปลี่ยนค่า ต้องกปุ่ม “Apply” เพื่อโปรแกรมจะได้จัดวางรูปตัดให้ใหม่ ถ้ารูปตัดทับซ้อนกันโปรแกรมจะเตือนให้ทราบ ผมเตรียมไอคอนบนทูลบาร์ด้านบน เพื่อ  copy ค่าพิกัดของรูปตัดเมื่อเทียบกับค่าพิกัดของกระดาษ มุมล่างซ้าย x,y = 0,0 หน่วยเป็น ซม.ครับ เมื่อคลิกที่ไอคอน โปรแกรมจะคัดลอกค่าพิกัดลงไปตารางข้อมูล จากนั้นคลิก “OK” เพื่อปิดหน้าต่างไดอะล็อก

page_layout_coors

  • บันทึกไฟล์ข้อมูลลงดิสค์ ให้เรียบร้อย

11.แสดงรูปตัดตามขวาง (Section Viewer)

  • ในที่สุดก็มาดูรูปตัดที่เราตั้งค่าไว้ ว่าตรงตามที่ต้องการหรือไม่ ที่ทูลบาร์ คลิก “Section Viewer”

section_viewer_toolbar

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

section_viewer_elements

  • ค่าที่เราตั้งค่าสำหรับรูปตัดไว้ก่อนหน้านี้ เช่นค่าระดับกริดเส้นบน (Top grid elevation) หรือไม่รูปแบบการเขียนตัวเลข จะส่งผลต่อรูปตัด พิจารณาดูรูปด้านล่างที่แสดงเส้นลูกศรเชื่อมโยง

section_viewer_shown_topgrid_int

  • ส่วนค่าอื่นๆเช่นตั้งค่าให้คำนวณหาพื้นที่ดินตัด (cut) หรือดินถม (fill) หรือหาจุดตัดระหว่าง typical  และเส้นดินเดิม

section_viewer_shown_calcarea_interval

  • สังเกตรูปตัดด้านบนจะเห็นว่าตัวรูปตัดตกจากเส้นกริดลงมาด้านล่างเนื่องจากค่าระดับกริดเส้นบนใส่ค่ามากไป จากที่โปรแกรมคำนวณมาให้ ลองกลับไปตั้งค่าใหม่จาก 6 เมตร เป็น 4 เมตร จะเห็นว่ารูปตัดเลื่อนขึ้นไปอยู่ในกริด แต่เส้น existing ground ล้นกริดด้านบนไปแทน ซึ่งสามารถ trim ออกได้ในโปรแกรมด้าน CAD ในภายหลัง

section_viewer_shown_new_topgrid_elev

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

section_viewer_interactive

  • ลองคลิกที่ลูกศรเพื่อขยับไปดูรูปตัดถัดไป เสร็จแล้วจะออกจากการแสดงผลก็คลิกที่ไอคอน รูปประตู

section_viewer_next_prev12.บันทึกไฟล์ Autocad DXF (Save to DXF)

  • เมื่อตั้งค่ารูปตัดทั้งหลายจนเป็นที่พอใจ กระบวนการสุดท้ายที่ต้องการคือ แผนที่แสดงรูปตัดตามขวาง ที่สามารถส่งงานกันได้ ซึ่งจะใช้โปรแกรมอะไรด้าน CAD ความสามารถโปรแกรมเหล่านี้คือสามารถอ่านเขียนไฟล์ฟอร์แม็ต dxf ได้เพราะเจ้าของคือ Autodesk เปิดเป็นสาธารณะ ที่ทูลบาร์เลือกคลิก “Save to DXF

save_to_dxf_toolbar

  • โปรแกรมจะแสดงไดอะล็อก คลิกที่รูปไอคอนรูปดิสเก็ตเพื่อเลือกโฟลเดอร์ที่จะจัดเก็บตลอดทั้งป้อนชื่อไฟล์ทึ่จะบันทึกเป็น dxf ดังรูป

save_to_dxf_inputfile

  • เมื่อเสร็จสิ้นโปรแกรมจะขึ้น message box ว่าจัดเก็บเรียบร้อย คลิก “OK” และ “Close” เพื่อปิด

save_to_dxf_ready

13.เปิดไฟล์ด้วยโปรแกรมด้าน CAD

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

draftsight2d-first

  • จะเห็นว่าตัว hatch สำหรับพื้นที่ดินตัด ดินถม ทึบสนิท ทั้งๆที่ผมตั้ง scale ของแฮ็ทช์ไว้ 1.0 ปัญหาไม่ใช่ของ Draftsight แต่มาจากไฟล์ dxf ซึ่งผมคิดว่าน่าจะเป็นไลบรารีเขียน dxf ที่ผมใช้งานอยู่คือ ezdxf แต่ไม่เป็นไรวิธีแก้กลับคือไปคลิกเลือก hatch ทุก section ที่ property มองหา scale เจอแล้วจะเห็นตัวเลข 1.000 ป้อนค่าใหม่เป็น 10.000 (หรืออะไรก็ได้) จากนั้นป้อนกลับไปค่าเดิมอีกครั้งเป็น 1.000 เหมือนเดิม จะเห็น hatch เปลี่ยนเป็นโปร่งขึ้น
  • ปัญหา hatch นี้เปิดใน Autocad ก็เป็นครับ

 

draftsight2d-hatch_ok

  • ผมลองเปิดข้อมูลเก่าที่ Titleblock เป็นภาษาไทย ลองดูก็ใช้ได้บน Draftsight สำหรับ Draftsight แบบสองมิติ อ่านดูในเน็ตเห็นว่ารุ่นนี้ฟรี (แต่ต้องลงทะเบียน ซึ่งง่ายๆ ถามไม่กี่คำถาม) แต่ก็ไม่แน่ใจว่าฟรีไปตลอดหรือไม่ ซึ่งก็น่าใช้งานมากครับถ้าฟรีตลอด สำหรับท่านที่ใช้งานแคด ที่ไม่ได้มีงานสามมิติเข้ามาเกี่ยวข้อง ดีกว่าไปละเมิดลิขสิทธิ์

draftsight2d_thai_ok

สรุป

  • โปรแกรมนี้ใช้เวลาพัฒนาประมาณ 2 ปีกว่าๆ แต่ไม่ได้ต่อเนื่องนะครับ เนื่องจากเขียนเป็นงานอดิเรก ไม่มีความกดดันอะไร ถือว่าเป็นการศึกษาด้านโปรแกรมมิ่งในตัวโดยเฉพาะ python เขียนสนุก กระชับ ทรงพลัง มีแง่บางอย่างที่นึกไม่ถึงว่าภาษาสามารถทำได้ และที่สำคัญมีไลบรารีหรือโมดูลให้ใช้มากมาย ส่วนใหญ่ฟรี เมื่อมารวมกับ Qt framework ที่เก่งอยู่แล้ว โปรแกรมที่เขียนออกมาแล้วจึงดูเป็นมืออาชีพพอสมควร แต่ก็แจ้งเตือนก่อนว่าโปรแกรม XSection Plot รุ่นนี้ยังมีบั๊กอยู่บ้าง ถ้าพบก็แจ้งมาได้ที่ blog นี้
  • เกือบลืมบอกไป โปรแกรมนี้สนับสนุนจอ 4K เรียบร้อยแล้ว ไม่มีปัญหาเรื่องไอคอนเล็ก ตัวหนังสือเล็ก

xsectionplot_about

  • ก่อนจากกันก็ขอบอกว่าโปรแกรมทุกโปรแกรมที่ผมพัฒนาขึ้นมายังคง concept เหมือนเดิมคือให้ใช้ฟรี และสำหรับช่างสำรวจและช่างโยธา เหมือนเดิมครับ

สิ้นสุดการรอคอย XSection Plot รุ่น 4.10 มาแล้ว ตอนที่ 2

6.เปิดไฟล์ข้อมูล (Open file)

  • ขั้นตอนต่อไปจะมาเปิดไฟล์ข้อมูล เริ่มจากไฟล์ Typical section ที่จัดเก็บไว้ใน Documents ขั้นตอนตามรูปด้านล่าง ขั้นตอนที่ 3 เลือกประเภทของไฟล์เป็น .txml โปรแกรมจะอ่านข้อมูล และแสดงผลบนตารางในแท็บ “Typical section”

open_typical_section_file

  • ต่อไปเช่นเดียวกันเปิดไฟล์ Existing Ground section

open_ground_section_file

7.ป้อนข้อมูลโครงการ

  • ตอนนี้ข้อมูลของเราที่ได้จาก import  จาก text file มีแต่รูปตัดในตารางเท่านั้น เราจะทำการบันทึกข้อมูลโครงการของงาน นอกจากบันทึกเพื่อจำแล้วยังสามารถนำไปเขียนเป็น Titleblock ใน Autocad คลิกที่ Toolbar ดังรูปด้านล่างedit_titleblock
  • จะเห็นหน้าต่างไดอะล็อกให้ป้อนข้อมูล ถ้ามีข้อมูลอะไรให้ลบออกหมด เนื่องจากโปรแกรมจะบันทึกสถานะครั้งสุดท้ายที่ใช้เอาไว้set_project_info_procedure
  • ป้อนข้อมูลโครงการเข้าไป (ข้อมูลมาจากการสำรวจจริง แต่ชื่อโครงการ บริษัท ชื่อคน สมมุติหมด)

set_project_info_filled

เลือกภาษาให้  Titleblock

  • ที่ผมเตรียมไว้ให้มีภาษาไทยกับอังกฤษเท่านั้น ถ้าต้องการใช้ภาษาไทยก็คลิกตามรูป

set_project_info_locale

8.ตั้งขนาดกระดาษสำหรับเขียนแบบ (Page Setup)

  • สำหรับงานเขียนแบบใน Autocad แล้วขนาดกระดาษที่เราใช้มักจะเป็นขนาดกระดาษมาตรฐานได้แก่ A4, A3, A2, A1 และ A0 ขึ้นอยู่กับขนาด printer หรือ plotter ที่ใช้ด้วย ที่ทูลบาร์หลักคลิกที่ “Page Setup”

page_setup_toolbar

  • จะมีหน้าต่างไดอะล๊อกให้เลือกตั้งขนาดกระดาษ (ขนาดกระดาษกำหนดโดยผู้ใช้  Custom Paper Size โปรแกรมตอนนี้ยังไม่ support) เลือก A1 ดังรูป

page_setup

9.ตั้งค่ารูปตัด (Cross-section settings)

  • รูปแบบรูปตัดเช่นการเลือกมาตราส่วนทางราบและทางดิ่งให้ตรงกับความต้องการ การจัดรูปแบบตัวอักษร ค่า x,y (offset/elevation) หรือการตั้งจำนวนทศนิยม สามารถตั้งค่าได้ที่นี่ จากทูลบาร์หลักเลือก “Xsection Settings” ดังรูป

section_settings_toolbarตั้งค่าทั่วไป

  • จะเห็นหน้าต่างไดอะล็อก มีแท็บทั้งหมด 4 แท็บ แยกค่าที่จะตั้งเป็นสัดส่วน มาดูหน้าแรกสำหรับตั้งค่ารูปตัดทั่วๆไป

section_settings_page1_desc

  • ข้อสังเกตรูปตัดจะเห็นว่าใช้มาตราส่วนทางราบ 1 : 2000 คิดง่ายๆ ในแผนที่วัดได้ 1 มม. = ระยะจริงในสนามได้ 2 เมตร หรือในแผนที่วัดได 1 ซม. เท่ากับระยะจริงในสนาม 20 เมตร ขนาดกระดาษ A1 594 x 871 มม. แต่ขนาดที่ปริ๊นท์ได้เท่ากับ 517 x 817 มม. ถ้าวางกระดาษในแนวนอน (landscape) ความยาวคร่าวๆคือ 800 มม. สามารถเขียนแบบรูปตัดตามขวางได้เท่ากับระยะในสนาม = 2 x 800 เมตร = 1600 เมตร
  • ถ้ากลับไปดูข้อมูลในตารางจะเห็นว่าจากซ้ายไปขวาประมาณ 1300 เมตร ซึ่งกระดาษ A1 และมาตราส่วนนี้สามารถเขียนแบบได้โดยที่ไม่ล้นกระดาษ

ตั้งค่ารูปแบบตารางแสดงตัวเลข offset/elevation

  • จากหน้าต่างไดอะล็อก คลิกที่แท็บที่ 2 เลือกรูปแบบแสดงตัวเลข  offset/elevation  จาก 3 รูปแบบที่มีรูปตัวอย่างแสดงไว้ให้เห็นง่ายๆ ที่นี้ผมเลือก  Type 3 ดังรูปด้านล่าง

section_settings_page2_desc

ตั้งค่าตัวหนังสือคำหน้า/ตามหลัง ค่าระดับ datum

  •  ที่หน้าต่างไดอะล็อกคลิกที่แท็บตัวที่ 3 “Grid datum postfix/prefix” เลือกแบบที่สาม เขียนตัวหนังสือ CD (Chard Datum)  ตามหลังค่าระดับ 0.0  บางครั้งงานทางทะเลจะระบุว่าค่า 0.0 เมตร อิงอยู่กับอะไรเช่นน้ำทะเลปานกลาง (MSL) หรือ Chart Datum (CD)

section_settings_page3_desc

 ตั้งค่าระดับเส้นกริด

  • เป็นการตั้งค่าระดับเส้นกริดตัวบนสุด ปรับได้ตามต้องการเพื่อให้รูปตัดอยู่กลางๆรูปตัด จะได้ดูง่าย ไม่อึดอัด

section_settings_page4_desc

  • แต่ก็สามารถเลือกตั้งได้อัตโนมัติโดยโปรแกรม ดูรูปด้านล่างประกอบ เมื่อเสร็จสิ้นการตั้งค่ารูปตัด สามารถคลิกปุ่ม “OK” เพื่อออกจากไดอะล็อก

section_settings_page4_auto

  • ต่อไปบันทึกข้อมูลลงไฟล์ ที่เราแก้ไขตั้งค่ารูปตัด โปรแกรมจะเก็บค่าทั้งหลายเอาไว้ในไฟล์ Existing ground section รวมทั้งข้อมูล offset/elevation ในตารางทุก  section
  • ก่อนจะทำอะไรต่อ ให้คลิกรูปดิสค์เก็ตที่ทูลบาร์ เพื่อบันทึกข้อมูลลงดิสค์ โลกสวยด้วยมือเราครับ

เปิดดูไฟล์ข้อมูล

  • ลองเปิดไฟล์ข้อมูลด้วยโปรแกรมเช่น  Notepad, Notepad++  จะเห็นข้อมูลดังข้างล่าง (คลิกที่สี่เหลี่ยมลิ๊งค์ด้านล่าง เพื่อขยายออกมา)
<root version="1.0">
  <!--Generated by XSection Plot-->
  <!--This data file is Existing ground section-->
  <Header>
    <AppName>XSection Plot</AppName>
    <Developer>Prajuab Riabroy</Developer>
    <Version>4.1.512</Version>
    <SectionType>Ground</SectionType>
    <DateCreated>2016-08-15 21:09:30.751163</DateCreated>
  </Header>
  <ProjectInfo>
    <ProjectName>Macuzy International Port</ProjectName>
    <ClientName>MX Port Authority</ClientName>
    <ContractorName>East West Construction &amp; Engineering</ContractorName>
    <DrawingTitle>X-Section of Approach Channel</DrawingTitle>
    <DrawnName>Sergio Motezia</DrawnName>
    <ApprovedName>Prati Wisas</ApprovedName>
    <ClientApprovedName>Mario P. Tenes</ClientApprovedName>
    <CheckedName>Antonio Molibzo</CheckedName>
    <SurveyorName>Suras Malcom</SurveyorName>
    <SurveyedDate>1-7/03/2016</SurveyedDate>
    <DrawingNo>2017-MZ-001-PLN-020</DrawingNo>
    <SheetNo>1 / 50</SheetNo>
    <DrawingDate>1-7/03/2016</DrawingDate>
    <Revision></Revision>
    <UseLocaleLanguage>False</UseLocaleLanguage>
    <MapTexts>
      <MapText Label="Client" Locale="เจ้าของโครงการ"/>
      <MapText Label="Contractor" Locale="ผู้รับจ้าง"/>
      <MapText Label="Drawn" Locale="เขียน"/>
      <MapText Label="Design" Locale="ออกแบบ"/>
      <MapText Label="Surveyor" Locale="ผู้สำรวจ"/>
      <MapText Label="Surveyed Date" Locale="วันที่สำรวจ"/>
      <MapText Label="Checked" Locale="ตรวจสอบ"/>
      <MapText Label="Approved" Locale="อนุมัติ"/>
      <MapText Label="Client Approved" Locale="ผู้คุมงานอนุมัติ"/>
      <MapText Label="Drawing No." Locale="แบบเลขที่"/>
      <MapText Label="Plotted Date" Locale="แบบวันที่"/>
      <MapText Label="Project" Locale="โครงการ"/>
      <MapText Label="Drawing Title" Locale="แผนที่แสดง"/>
      <MapText Label="Sheet No." Locale="แบบเลขที่"/>
      <MapText Label="Scale" Locale="มาตราส่วน"/>
      <MapText Label="Vertical" Locale="ทางดิ่ง"/>
      <MapText Label="Horizontal" Locale="ทางราบ"/>
      <MapText Label="Vertical Scale" Locale="มาตราส่วนทางดิ่ง"/>
      <MapText Label="Horizontal Scale" Locale="มาตราส่วนทางราบ"/>
      <MapText Label="Legend" Locale="สัญลักษณ์"/>
      <MapText Label="Note" Locale="หมายเหตุ"/>
      <MapText Label="Geodetic Information" Locale="ข้อมูลระบบพิกัด"/>
      <MapText Label="No." Locale="ครั้งที่"/>
      <MapText Label="Amendments" Locale="ความเห็น"/>
      <MapText Label="By" Locale="โดย"/>
      <MapText Label="Date" Locale="วันที่"/>
      <MapText Label="Revision" Locale="ครั้งที่แก้ไข"/>
    </MapTexts>
  </ProjectInfo>
  <SectionOptions>
    <VerticalScale>200.0</VerticalScale>
    <HorizontalScale>2000.0</HorizontalScale>
    <HozGridSpace>10.0</HozGridSpace>
    <VertGridSpace>1.0</VertGridSpace>
    <GridLineType>0</GridLineType>
    <CalcIntersection>True</CalcIntersection>
    <CalcArea>True</CalcArea>
    <TrimTypical>False</TrimTypical>
    <NumDecimalElev>3</NumDecimalElev>
    <NumDecimalDist>3</NumDecimalDist>
    <UseIntervalText>True</UseIntervalText>
    <IntervalDist>20.0</IntervalDist>
    <PrefixText></PrefixText>
    <PostfixText>CD</PostfixText>
    <UsePostPrefix>0</UsePostPrefix>
    <UseOffsetElevFormat>2</UseOffsetElevFormat>
    <CalcPlotAreaCut>True</CalcPlotAreaCut>
    <CalcPlotAreaFill>True</CalcPlotAreaFill>
    <NumVertCLLeft>70</NumVertCLLeft>
    <NumVertCLRight>65</NumVertCLRight>
    <NumHozTopBottom>21</NumHozTopBottom>
    <LeftSideText>LT.</LeftSideText>
    <RightSideText>RT.</RightSideText>
    <StationText>Km.</StationText>
    <SelectedTBlock>2</SelectedTBlock>
    <NumSectionRows>4</NumSectionRows>
    <NumSectionColumns>1</NumSectionColumns>
    <SurveyType>0</SurveyType>
    <PlotTBlock>True</PlotTBlock>
    <SwapLeftAndRight>False</SwapLeftAndRight>
  </SectionOptions>
  <PageSetup>
    <Size>A1</Size>
    <Width>817</Width>
    <Height>570</Height>
  </PageSetup>
  <Sections>
    <NumSections>4</NumSections>
    <Section Name="-0+078">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>94</NumPoints>
      <Points>
        <Point Elevation="5.696" Offset="-600.0"/>
        <Point Elevation="5.693" Offset="-596.305"/>
        <Point Elevation="5.337" Offset="-587.506"/>
        <Point Elevation="2.271" Offset="-526.489"/>
        <Point Elevation="0.579" Offset="-507.151"/>
        <Point Elevation="-1.19" Offset="-490.954"/>
        <Point Elevation="-2.314" Offset="-471.14"/>
        <Point Elevation="-2.766" Offset="-462.616"/>
        <Point Elevation="-2.875" Offset="-457.815"/>
        <Point Elevation="-3.6" Offset="-434.419"/>
        <Point Elevation="-4.104" Offset="-414.736"/>
        <Point Elevation="-4.128" Offset="-406.659"/>
        <Point Elevation="-4.356" Offset="-380.964"/>
        <Point Elevation="-4.382" Offset="-376.491"/>
        <Point Elevation="-4.406" Offset="-375.215"/>
        <Point Elevation="-4.989" Offset="-349.559"/>
        <Point Elevation="-5.161" Offset="-338.86"/>
        <Point Elevation="-5.347" Offset="-322.669"/>
        <Point Elevation="-5.812" Offset="-302.883"/>
        <Point Elevation="-5.942" Offset="-297.584"/>
        <Point Elevation="-6.148" Offset="-283.939"/>
        <Point Elevation="-6.342" Offset="-272.05"/>
        <Point Elevation="-6.387" Offset="-267.862"/>
        <Point Elevation="-6.733" Offset="-246.07"/>
        <Point Elevation="-7.111" Offset="-231.836"/>
        <Point Elevation="-7.372" Offset="-217.745"/>
        <Point Elevation="-7.824" Offset="-194.494"/>
        <Point Elevation="-7.882" Offset="-191.371"/>
        <Point Elevation="-7.834" Offset="-183.933"/>
        <Point Elevation="-7.668" Offset="-165.389"/>
        <Point Elevation="-8.54" Offset="-139.979"/>
        <Point Elevation="-8.98" Offset="-123.408"/>
        <Point Elevation="-9.255" Offset="-115.989"/>
        <Point Elevation="-9.487" Offset="-93.719"/>
        <Point Elevation="-9.566" Offset="-88.009"/>
        <Point Elevation="-9.732" Offset="-85.635"/>
        <Point Elevation="-11.591" Offset="-57.803"/>
        <Point Elevation="-11.779" Offset="-43.322"/>
        <Point Elevation="-11.967" Offset="-27.782"/>
        <Point Elevation="-11.928" Offset="-5.492"/>
        <Point Elevation="-11.967" Offset="-1.247"/>
        <Point Elevation="-12.16" Offset="11.274"/>
        <Point Elevation="-12.318" Offset="20.29"/>
        <Point Elevation="-12.301" Offset="22.958"/>
        <Point Elevation="-12.249" Offset="39.553"/>
        <Point Elevation="-12.303" Offset="48.517"/>
        <Point Elevation="-12.25" Offset="59.398"/>
        <Point Elevation="-12.081" Offset="76.972"/>
        <Point Elevation="-12.057" Offset="79.758"/>
        <Point Elevation="-12.02" Offset="83.034"/>
        <Point Elevation="-11.703" Offset="98.323"/>
        <Point Elevation="-11.569" Offset="104.196"/>
        <Point Elevation="-11.562" Offset="105.697"/>
        <Point Elevation="-11.365" Offset="116.141"/>
        <Point Elevation="-11.25" Offset="117.347"/>
        <Point Elevation="-10.732" Offset="135.54"/>
        <Point Elevation="-10.625" Offset="146.227"/>
        <Point Elevation="-10.077" Offset="158.793"/>
        <Point Elevation="-8.681" Offset="177.76"/>
        <Point Elevation="-8.592" Offset="181.044"/>
        <Point Elevation="-8.401" Offset="194.035"/>
        <Point Elevation="-8.271" Offset="203.535"/>
        <Point Elevation="-7.923" Offset="213.249"/>
        <Point Elevation="-7.728" Offset="217.373"/>
        <Point Elevation="-7.095" Offset="235.24"/>
        <Point Elevation="-6.982" Offset="241.693"/>
        <Point Elevation="-6.682" Offset="247.206"/>
        <Point Elevation="-6.075" Offset="256.627"/>
        <Point Elevation="-5.455" Offset="278.481"/>
        <Point Elevation="-5.337" Offset="282.26"/>
        <Point Elevation="-5.042" Offset="294.845"/>
        <Point Elevation="-5.019" Offset="295.988"/>
        <Point Elevation="-4.347" Offset="321.161"/>
        <Point Elevation="-4.189" Offset="329.073"/>
        <Point Elevation="-3.808" Offset="348.654"/>
        <Point Elevation="-3.664" Offset="355.277"/>
        <Point Elevation="-3.317" Offset="372.887"/>
        <Point Elevation="-3.154" Offset="382.261"/>
        <Point Elevation="-2.776" Offset="410.279"/>
        <Point Elevation="-2.765" Offset="410.995"/>
        <Point Elevation="-2.704" Offset="413.887"/>
        <Point Elevation="-2.197" Offset="439.138"/>
        <Point Elevation="-1.967" Offset="448.435"/>
        <Point Elevation="-1.716" Offset="464.705"/>
        <Point Elevation="-1.481" Offset="485.302"/>
        <Point Elevation="-1.403" Offset="489.714"/>
        <Point Elevation="-1.251" Offset="498.925"/>
        <Point Elevation="-0.928" Offset="517.874"/>
        <Point Elevation="-0.799" Offset="529.258"/>
        <Point Elevation="-0.604" Offset="548.73"/>
        <Point Elevation="-1.169" Offset="576.146"/>
        <Point Elevation="-1.18" Offset="579.205"/>
        <Point Elevation="-1.305" Offset="585.252"/>
        <Point Elevation="-1.468" Offset="600.0"/>
      </Points>
    </Section>
    <Section Name="0+172">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>104</NumPoints>
      <Points>
        <Point Elevation="4.21" Offset="-600.0"/>
        <Point Elevation="3.865" Offset="-590.197"/>
        <Point Elevation="3.192" Offset="-572.372"/>
        <Point Elevation="1.492" Offset="-534.461"/>
        <Point Elevation="-1.278" Offset="-510.761"/>
        <Point Elevation="-1.773" Offset="-506.708"/>
        <Point Elevation="-2.262" Offset="-496.208"/>
        <Point Elevation="-3.027" Offset="-480.587"/>
        <Point Elevation="-3.26" Offset="-473.089"/>
        <Point Elevation="-4.034" Offset="-454.61"/>
        <Point Elevation="-4.281" Offset="-430.868"/>
        <Point Elevation="-4.355" Offset="-425.789"/>
        <Point Elevation="-4.35" Offset="-412.009"/>
        <Point Elevation="-4.367" Offset="-398.744"/>
        <Point Elevation="-4.437" Offset="-394.505"/>
        <Point Elevation="-4.911" Offset="-371.013"/>
        <Point Elevation="-5.369" Offset="-344.896"/>
        <Point Elevation="-5.909" Offset="-321.896"/>
        <Point Elevation="-5.972" Offset="-318.479"/>
        <Point Elevation="-6.203" Offset="-307.947"/>
        <Point Elevation="-6.559" Offset="-290.298"/>
        <Point Elevation="-6.742" Offset="-282.919"/>
        <Point Elevation="-7.278" Offset="-261.654"/>
        <Point Elevation="-7.19" Offset="-241.456"/>
        <Point Elevation="-7.206" Offset="-234.351"/>
        <Point Elevation="-7.744" Offset="-212.894"/>
        <Point Elevation="-7.972" Offset="-205.898"/>
        <Point Elevation="-8.011" Offset="-204.056"/>
        <Point Elevation="-8.937" Offset="-181.613"/>
        <Point Elevation="-9.613" Offset="-169.45"/>
        <Point Elevation="-10.568" Offset="-155.252"/>
        <Point Elevation="-11.306" Offset="-139.728"/>
        <Point Elevation="-11.435" Offset="-136.455"/>
        <Point Elevation="-11.67" Offset="-122.543"/>
        <Point Elevation="-11.836" Offset="-115.516"/>
        <Point Elevation="-11.845" Offset="-113.826"/>
        <Point Elevation="-12.223" Offset="-102.969"/>
        <Point Elevation="-12.219" Offset="-100.525"/>
        <Point Elevation="-12.572" Offset="-83.796"/>
        <Point Elevation="-12.666" Offset="-73.185"/>
        <Point Elevation="-12.605" Offset="-61.703"/>
        <Point Elevation="-12.379" Offset="-44.437"/>
        <Point Elevation="-12.45" Offset="-41.849"/>
        <Point Elevation="-12.273" Offset="-20.661"/>
        <Point Elevation="-12.271" Offset="-15.995"/>
        <Point Elevation="-12.279" Offset="-14.536"/>
        <Point Elevation="-12.193" Offset="7.86"/>
        <Point Elevation="-12.049" Offset="12.127"/>
        <Point Elevation="-11.97" Offset="26.792"/>
        <Point Elevation="-11.482" Offset="39.803"/>
        <Point Elevation="-11.428" Offset="47.755"/>
        <Point Elevation="-11.244" Offset="53.548"/>
        <Point Elevation="-10.805" Offset="70.223"/>
        <Point Elevation="-10.718" Offset="74.57"/>
        <Point Elevation="-10.702" Offset="75.913"/>
        <Point Elevation="-10.087" Offset="96.66"/>
        <Point Elevation="-9.799" Offset="103.819"/>
        <Point Elevation="-9.63" Offset="112.183"/>
        <Point Elevation="-9.234" Offset="126.254"/>
        <Point Elevation="-8.999" Offset="137.384"/>
        <Point Elevation="-8.476" Offset="159.55"/>
        <Point Elevation="-8.445" Offset="160.778"/>
        <Point Elevation="-8.271" Offset="164.407"/>
        <Point Elevation="-7.259" Offset="184.045"/>
        <Point Elevation="-7.127" Offset="189.256"/>
        <Point Elevation="-6.92" Offset="198.448"/>
        <Point Elevation="-6.48" Offset="207.958"/>
        <Point Elevation="-6.04" Offset="221.897"/>
        <Point Elevation="-5.474" Offset="242.469"/>
        <Point Elevation="-5.364" Offset="247.769"/>
        <Point Elevation="-5.253" Offset="251.096"/>
        <Point Elevation="-4.998" Offset="265.24"/>
        <Point Elevation="-4.818" Offset="275.102"/>
        <Point Elevation="-4.715" Offset="277.979"/>
        <Point Elevation="-4.027" Offset="298.699"/>
        <Point Elevation="-3.738" Offset="309.727"/>
        <Point Elevation="-3.575" Offset="322.408"/>
        <Point Elevation="-3.105" Offset="340.851"/>
        <Point Elevation="-2.937" Offset="346.115"/>
        <Point Elevation="-2.855" Offset="359.315"/>
        <Point Elevation="-2.833" Offset="366.127"/>
        <Point Elevation="-2.816" Offset="367.498"/>
        <Point Elevation="-2.675" Offset="385.31"/>
        <Point Elevation="-2.596" Offset="391.895"/>
        <Point Elevation="-2.673" Offset="406.1"/>
        <Point Elevation="-2.465" Offset="418.482"/>
        <Point Elevation="-2.516" Offset="427.315"/>
        <Point Elevation="-2.328" Offset="445.356"/>
        <Point Elevation="-2.337" Offset="446.342"/>
        <Point Elevation="-2.626" Offset="452.604"/>
        <Point Elevation="-3.486" Offset="470.977"/>
        <Point Elevation="-3.693" Offset="476.912"/>
        <Point Elevation="-3.777" Offset="496.074"/>
        <Point Elevation="-3.932" Offset="501.72"/>
        <Point Elevation="-4.018" Offset="513.362"/>
        <Point Elevation="-3.474" Offset="529.259"/>
        <Point Elevation="-3.265" Offset="532.878"/>
        <Point Elevation="-2.893" Offset="543.264"/>
        <Point Elevation="-2.834" Offset="544.691"/>
        <Point Elevation="-2.372" Offset="551.966"/>
        <Point Elevation="-1.374" Offset="568.651"/>
        <Point Elevation="-1.184" Offset="572.608"/>
        <Point Elevation="-0.9" Offset="589.873"/>
        <Point Elevation="-0.265" Offset="600.0"/>
      </Points>
    </Section>
    <Section Name="0+422">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>98</NumPoints>
      <Points>
        <Point Elevation="2.527" Offset="-600.0"/>
        <Point Elevation="1.923" Offset="-583.886"/>
        <Point Elevation="1.147" Offset="-573.7"/>
        <Point Elevation="0.148" Offset="-560.844"/>
        <Point Elevation="-1.561" Offset="-534.717"/>
        <Point Elevation="-1.604" Offset="-534.134"/>
        <Point Elevation="-2.764" Offset="-502.908"/>
        <Point Elevation="-3.147" Offset="-490.643"/>
        <Point Elevation="-3.634" Offset="-472.527"/>
        <Point Elevation="-4.199" Offset="-442.515"/>
        <Point Elevation="-4.26" Offset="-440.183"/>
        <Point Elevation="-4.353" Offset="-435.493"/>
        <Point Elevation="-4.626" Offset="-412.074"/>
        <Point Elevation="-4.836" Offset="-400.43"/>
        <Point Elevation="-4.963" Offset="-383.964"/>
        <Point Elevation="-5.335" Offset="-361.676"/>
        <Point Elevation="-5.378" Offset="-357.711"/>
        <Point Elevation="-5.461" Offset="-354.483"/>
        <Point Elevation="-5.587" Offset="-348.617"/>
        <Point Elevation="-6.599" Offset="-306.504"/>
        <Point Elevation="-6.923" Offset="-292.309"/>
        <Point Elevation="-7.646" Offset="-260.816"/>
        <Point Elevation="-7.665" Offset="-260.005"/>
        <Point Elevation="-8.267" Offset="-238.897"/>
        <Point Elevation="-9.466" Offset="-215.915"/>
        <Point Elevation="-9.939" Offset="-205.494"/>
        <Point Elevation="-10.636" Offset="-192.184"/>
        <Point Elevation="-11.499" Offset="-177.238"/>
        <Point Elevation="-11.845" Offset="-170.731"/>
        <Point Elevation="-12.281" Offset="-152.944"/>
        <Point Elevation="-12.343" Offset="-150.873"/>
        <Point Elevation="-12.345" Offset="-150.114"/>
        <Point Elevation="-12.485" Offset="-127.286"/>
        <Point Elevation="-12.474" Offset="-120.381"/>
        <Point Elevation="-12.427" Offset="-111.488"/>
        <Point Elevation="-12.447" Offset="-105.883"/>
        <Point Elevation="-12.651" Offset="-87.792"/>
        <Point Elevation="-12.622" Offset="-78.078"/>
        <Point Elevation="-12.53" Offset="-55.591"/>
        <Point Elevation="-12.495" Offset="-52.513"/>
        <Point Elevation="-12.115" Offset="-31.23"/>
        <Point Elevation="-12.009" Offset="-23.783"/>
        <Point Elevation="-11.488" Offset="-9.776"/>
        <Point Elevation="-11.236" Offset="4.184"/>
        <Point Elevation="-10.416" Offset="13.232"/>
        <Point Elevation="-10.641" Offset="20.134"/>
        <Point Elevation="-10.28" Offset="44.002"/>
        <Point Elevation="-10.292" Offset="44.652"/>
        <Point Elevation="-10.289" Offset="44.792"/>
        <Point Elevation="-10.828" Offset="56.567"/>
        <Point Elevation="-10.797" Offset="59.917"/>
        <Point Elevation="-10.401" Offset="76.981"/>
        <Point Elevation="-10.186" Offset="85.234"/>
        <Point Elevation="-10.076" Offset="91.139"/>
        <Point Elevation="-9.671" Offset="106.374"/>
        <Point Elevation="-9.556" Offset="114.729"/>
        <Point Elevation="-9.018" Offset="131.881"/>
        <Point Elevation="-8.96" Offset="133.976"/>
        <Point Elevation="-8.938" Offset="135.194"/>
        <Point Elevation="-8.59" Offset="157.634"/>
        <Point Elevation="-8.516" Offset="163.615"/>
        <Point Elevation="-8.379" Offset="182.167"/>
        <Point Elevation="-8.093" Offset="194.118"/>
        <Point Elevation="-7.878" Offset="204.774"/>
        <Point Elevation="-7.548" Offset="221.957"/>
        <Point Elevation="-7.482" Offset="225.607"/>
        <Point Elevation="-7.519" Offset="237.596"/>
        <Point Elevation="-7.537" Offset="244.959"/>
        <Point Elevation="-7.524" Offset="247.228"/>
        <Point Elevation="-7.202" Offset="265.159"/>
        <Point Elevation="-6.937" Offset="273.625"/>
        <Point Elevation="-6.791" Offset="280.238"/>
        <Point Elevation="-6.674" Offset="286.833"/>
        <Point Elevation="-6.486" Offset="295.474"/>
        <Point Elevation="-6.408" Offset="313.252"/>
        <Point Elevation="-6.365" Offset="316.221"/>
        <Point Elevation="-6.294" Offset="327.463"/>
        <Point Elevation="-6.2" Offset="337.22"/>
        <Point Elevation="-6.207" Offset="338.339"/>
        <Point Elevation="-5.867" Offset="355.513"/>
        <Point Elevation="-5.65" Offset="362.307"/>
        <Point Elevation="-5.567" Offset="375.271"/>
        <Point Elevation="-5.433" Offset="387.259"/>
        <Point Elevation="-5.152" Offset="396.436"/>
        <Point Elevation="-4.378" Offset="413.203"/>
        <Point Elevation="-4.146" Offset="425.427"/>
        <Point Elevation="-4.099" Offset="435.841"/>
        <Point Elevation="-3.993" Offset="439.726"/>
        <Point Elevation="-3.418" Offset="457.353"/>
        <Point Elevation="-2.943" Offset="467.452"/>
        <Point Elevation="-2.548" Offset="480.037"/>
        <Point Elevation="-1.52" Offset="499.033"/>
        <Point Elevation="-1.085" Offset="505.573"/>
        <Point Elevation="-0.707" Offset="509.068"/>
        <Point Elevation="-0.564" Offset="514.17"/>
        <Point Elevation="1.044" Offset="545.131"/>
        <Point Elevation="3.671" Offset="586.351"/>
        <Point Elevation="4.257" Offset="600.0"/>
      </Points>
    </Section>
    <Section Name="0+672">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>101</NumPoints>
      <Points>
        <Point Elevation="0.751" Offset="-600.0"/>
        <Point Elevation="0.17" Offset="-590.282"/>
        <Point Elevation="-0.185" Offset="-585.509"/>
        <Point Elevation="-1.698" Offset="-564.455"/>
        <Point Elevation="-2.012" Offset="-556.049"/>
        <Point Elevation="-2.541" Offset="-536.428"/>
        <Point Elevation="-2.738" Offset="-526.646"/>
        <Point Elevation="-3.164" Offset="-510.314"/>
        <Point Elevation="-3.581" Offset="-498.217"/>
        <Point Elevation="-3.967" Offset="-482.548"/>
        <Point Elevation="-4.17" Offset="-466.638"/>
        <Point Elevation="-4.63" Offset="-454.111"/>
        <Point Elevation="-4.885" Offset="-437.444"/>
        <Point Elevation="-4.739" Offset="-426.605"/>
        <Point Elevation="-4.755" Offset="-407.163"/>
        <Point Elevation="-4.887" Offset="-399.338"/>
        <Point Elevation="-5.348" Offset="-377.159"/>
        <Point Elevation="-5.455" Offset="-371.865"/>
        <Point Elevation="-6.085" Offset="-345.987"/>
        <Point Elevation="-6.145" Offset="-343.34"/>
        <Point Elevation="-6.428" Offset="-331.877"/>
        <Point Elevation="-6.448" Offset="-330.864"/>
        <Point Elevation="-7.104" Offset="-309.854"/>
        <Point Elevation="-7.356" Offset="-296.783"/>
        <Point Elevation="-7.378" Offset="-295.786"/>
        <Point Elevation="-8.31" Offset="-272.558"/>
        <Point Elevation="-9.344" Offset="-249.668"/>
        <Point Elevation="-9.524" Offset="-246.49"/>
        <Point Elevation="-10.115" Offset="-236.3"/>
        <Point Elevation="-10.351" Offset="-218.394"/>
        <Point Elevation="-10.714" Offset="-213.348"/>
        <Point Elevation="-11.674" Offset="-204.751"/>
        <Point Elevation="-11.699" Offset="-201.381"/>
        <Point Elevation="-11.744" Offset="-193.463"/>
        <Point Elevation="-12.329" Offset="-178.033"/>
        <Point Elevation="-12.592" Offset="-165.284"/>
        <Point Elevation="-12.777" Offset="-155.308"/>
        <Point Elevation="-12.43" Offset="-144.408"/>
        <Point Elevation="-12.528" Offset="-139.081"/>
        <Point Elevation="-12.669" Offset="-133.221"/>
        <Point Elevation="-12.262" Offset="-121.876"/>
        <Point Elevation="-12.13" Offset="-110.999"/>
        <Point Elevation="-12.286" Offset="-98.019"/>
        <Point Elevation="-12.367" Offset="-89.578"/>
        <Point Elevation="-11.654" Offset="-75.025"/>
        <Point Elevation="-11.598" Offset="-71.369"/>
        <Point Elevation="-12.418" Offset="-63.45"/>
        <Point Elevation="-12.586" Offset="-57.395"/>
        <Point Elevation="-12.029" Offset="-40.428"/>
        <Point Elevation="-11.941" Offset="-37.225"/>
        <Point Elevation="-12.05" Offset="-17.903"/>
        <Point Elevation="-11.919" Offset="-14.255"/>
        <Point Elevation="-10.878" Offset="5.213"/>
        <Point Elevation="-10.987" Offset="7.781"/>
        <Point Elevation="-12.241" Offset="17.876"/>
        <Point Elevation="-12.175" Offset="19.902"/>
        <Point Elevation="-12.679" Offset="37.309"/>
        <Point Elevation="-12.779" Offset="41.445"/>
        <Point Elevation="-12.756" Offset="41.967"/>
        <Point Elevation="-12.147" Offset="62.308"/>
        <Point Elevation="-12.189" Offset="63.587"/>
        <Point Elevation="-11.804" Offset="83.447"/>
        <Point Elevation="-11.748" Offset="85.224"/>
        <Point Elevation="-11.68" Offset="105.223"/>
        <Point Elevation="-11.648" Offset="107.415"/>
        <Point Elevation="-11.299" Offset="124.477"/>
        <Point Elevation="-11.183" Offset="129.8"/>
        <Point Elevation="-10.608" Offset="145.77"/>
        <Point Elevation="-10.491" Offset="152.394"/>
        <Point Elevation="-10.528" Offset="156.006"/>
        <Point Elevation="-10.486" Offset="170.955"/>
        <Point Elevation="-10.376" Offset="180.254"/>
        <Point Elevation="-10.183" Offset="192.924"/>
        <Point Elevation="-10.122" Offset="198.333"/>
        <Point Elevation="-9.995" Offset="209.165"/>
        <Point Elevation="-9.803" Offset="220.192"/>
        <Point Elevation="-9.727" Offset="230.156"/>
        <Point Elevation="-9.793" Offset="235.687"/>
        <Point Elevation="-9.444" Offset="249.066"/>
        <Point Elevation="-9.308" Offset="258.031"/>
        <Point Elevation="-9.253" Offset="261.971"/>
        <Point Elevation="-8.511" Offset="283.111"/>
        <Point Elevation="-8.163" Offset="289.464"/>
        <Point Elevation="-7.102" Offset="307.459"/>
        <Point Elevation="-6.902" Offset="312.383"/>
        <Point Elevation="-6.731" Offset="322.229"/>
        <Point Elevation="-6.609" Offset="326.578"/>
        <Point Elevation="-6.011" Offset="346.572"/>
        <Point Elevation="-5.822" Offset="350.33"/>
        <Point Elevation="-4.461" Offset="371.66"/>
        <Point Elevation="-4.318" Offset="373.491"/>
        <Point Elevation="-1.818" Offset="396.911"/>
        <Point Elevation="-1.583" Offset="398.654"/>
        <Point Elevation="1.249" Offset="416.959"/>
        <Point Elevation="1.897" Offset="437.491"/>
        <Point Elevation="3.568" Offset="467.863"/>
        <Point Elevation="6.567" Offset="551.744"/>
        <Point Elevation="6.606" Offset="552.895"/>
        <Point Elevation="6.604" Offset="553.18"/>
        <Point Elevation="6.591" Offset="553.868"/>
        <Point Elevation="5.965" Offset="600.0"/>
      </Points>
    </Section>
  </Sections>
</root>

 

จบตอนที่ 2

  • พบกันตอนหน้า ตอนที่ 3 ครับ