Tag: Elevation

ติดปีกเครื่องคิดเลขเทพ Casio fx 9860G II SD ด้วยโปรแกรมภาษาซีบน AddIn ตอนที่ 8 โปรแกรมคำนวณสเกลแฟคเตอร์ (Scale Factor)

ติดปีกเครื่องคิดเลขเทพ Casio fx 9860G II SD ด้วยโปรแกรมภาษาซีบน AddIn ตอนที่ 8 โปรแกรมคำนวณสเกลแฟคเตอร์ (Scale Factor)

โปรแกรมคำนวณสเกลแฟคเตอร์ (Scale Factor) สำหรับเครื่องคิดเลข Casio fx-9860 G

ช่วงนี้อยู่ในชุดซีรี่ย์โปรแกรมเครื่องคิดเลข Casio fx-9860G  ต่อไปขอนำเสนอโปรแกรมคำนวณสเกลแฟคเตอร์ (Scale Factor) ตัวโปรแกรมพัฒนาด้วยภาษาซี  ใช้เป็นโปรแกรม AddIn ดังรูปด้านล่าง

ปัญหาการคำนวณสเกลแฟคเตอร์

สเกลแฟคเตอร์ในที่นี้ผมจะขอหมายถึง Elevation Scale Factor (ESF), Grid Scale Factor (GSF) ตลอดจน Combined Scale Factor (CSF) สามารถอ่านได้จาก blog ก่อนหน้านี้ของผมได้ที่ใช้โปรแกรม Surveyor Pocket Tools มาช่วยคำนวณ ผู้อ่านอาจจะเคยสังเกตว่าจะไม่เคยเห็นโปรแกรมคำนวณสเกลแฟคเตอร์ในเครื่องคิดเลขเท่าใดนัก ในกรณีนี้คือพวกเราใช้ค่าระดับที่อิงระดับน้ำทะเลปานกลาง (แทนด้วยสัญลักษณ์ตัว “H“) กันเป็นหลัก น้ำทะเลปานกลางนี้สามารถใช้พื้นผิวจีออยด์ (Geoid) แทนได้ แต่การคำนวณหา Elevation Scale Factor เราจะต้องทราบค่าระดับที่อ้างอิงกับ Ellipsoid (แทนด้วยสัญลักษณ์ตัว “h“) ไม่ใช่เทียบกับระดับน้ำทะเลปานกลาง ความต่างระหว่างพื้นผิวจีออยด์และพื้นผิวทรงรี เราเรียกว่า Geoid Separation (แทนด้วยสัญลักษณ์ตัว “N“) ความสัมพันธ์ระหว่างสามสิ่งนี้คือ h = H + N

การหา Geoid Separation (N) จะต้องใช้ Earth Gravity Model ซึ่งก่อนหน้านี้ใช้ EGM96 ปัจจุบันใช้ EGM2008 ที่มีความละเอียดถูกต้องมากกว่า ซึ่งโมเดลต่างๆเหล่านี้จะเป็นไฟล์ที่มีขนาดค่อนข้างใหญ่จนใหญ่มาก ทำให้ไม่สามารถนำมาใช้กับเครื่องคิดเลขในระดับนี้ได้ และถ้าเขียนโปรแกรมด้วย Casio Basic ก็คงหมดสิทธิ์ครับเพราะไม่มีคำสั่งในการอ่านเขียนไฟล์

ปัญหาและทางออก

ผมพยายามใช้โค้ดภาษาซีในการอ่านไฟล์โมเดล EGM96  ด้วย egm96-f477.c โปรแกรมสามารถคอมไพล์และบิวท์ผ่าน แต่ตอนประมวลผลอ่านไฟล์ เนื่องจากต้องใช้เมโมรีเครื่องคิดเลขมาอ่านไฟล์เข้าไปเก็บในหน่วยความจำพบว่า เมโมรีไม่พอ พยายาม optimize ด้วยตัวเองหลายๆทางแต่ไม่สำเร็จ จนมาพบโดยบังเอิญในเว็ปไซต์ ตามลิ๊งค์นี้ จุดประสงค์ทางผู้พัฒนาไลบรานี้เพื่อเขียนแอพลงบนโทรศัพท์มือถือแอนดรอยด์ วิธีการคือเขาได้ Normalize ค่า geoid separation จาก EGM2008 ขนาดเต็มลงมาเหลือขนาดแถวคอลัมน์ 181 x 91 ความถูกต้องจะถูกลดทอนลง ผมสนใจเลยเอามาคอมไพล์บน Casio SDK พบว่าทำงานได้ ใช้เมโมรีเครื่องคิดเลขที่มีอยู่เพียงพอ แต่ก็จวนเจียนจะใช้หมดเหมือนกัน เอาละความคิดที่เคยจะเขียนโปรแกรมคำนวณสเกลแฟคเตอร์บเครื่องคิดเลขก็มาเป็นจริง อาจจะได้ค่าสเกลแฟคเตอร์ที่ไม่ละเอียดเท่าคำนวณจากคอมพิวเตอร์แต่ในระดับทศนิยมหกตำแหน่ง ถือว่าได้ครับ

เครดิตผู้พัฒนาไลบรารี Geoid

ต้องขอบคุณผู้พัฒนาคือ Stefan Röttger (stefan@stereofx.org) มา ณ ที่นี้ ติดตามผลงานได้ที่เว็บไซต์ http://www.open-terrain.org/index.php ไลบรานี้ใช้สัญญาอนุญาตแบบ New BSD License

เตือนสติเรื่องสเกลแฟคเตอร์

ผมชอบวาทะของอ.ดีบุญ เมธากุลชาติ ก็ขออนุญาตเอาจากสไลด์มาแสดง ณ ที่นี้ด้วย อ.ดีบุญเรียก Grid Scale Factor ว่าตัวประกอบมาตราส่วน ส่วน Elevation Scale Factor เรียกว่าตัวประกอบความสูง ได้ใจความครบถ้วนดีครับ และก็เตือนสติคนใช้แผนที่ดังนี้

Grid Scale Factor เมื่อคูณกับ Elevation Scale Factor จะได้ Combined Scale Factor ตัวประกอบตัวนี้คือตัวสำคัญที่จะนำไปคูนกับระยะทางที่วัดบนพื้นผิวโลกเพื่อทอนลงมาบนระนาบราบของแผนที่ (Grid Distance)

ใช้ไลบรารีแปลงพิกัด MGRS

เนื่องจากโปรแกรมนี้ต้องแปลงค่าพิกัดจากระบบพิกัดฉาก  UTM  บนดาตั้ม WGS84 ไปยังค่าพิกัดภูมิศาสตร์ เพื่อส่งไปให้ฟังก์ชั่นคำนวณหาค่าสเกลแฟคเตอร์ที่ต้องการทราบค่าละติจูด ดังนั้นผมใช้ไลบรารี mrgs พัฒนาโดย Howard Butler ไลบรานี้ใช้สัญญาอนุญาตแบบ MIT License

สิ่งที่โปรแกรมต้องการ

โปรแกรมสามารถคำนวณได้ 2 แบบคือแบบ Point Scale Factor คือแบบจุดเดี่ยวๆ สามารถคำนวณมาใช้แทนพื้นที่เล็กๆประมาณ 1 กม. x 1 กม. ได้ดี และรูปแบบที่ 2 คือ Line Scale Factor ใช้สำหรับพื้นที่ที่ใหญ่ขึ้นมา ใช้ค่าพิกัด 2 จุดหัวและท้าย โปรแกรมจะต้องการทราบค่าดังนี้

  1. เลือกโซนของยูทีเอ็ม (UTM  Zone) ตั้งแต่โซน 1 ถึง 60 และเลือกซีกโลก (Hemisphere)  เลือกได้สองอย่างคือเหนือหรือใต้เส้นศูนย์สูตร
  2. ค่าพิกัดและค่าระดับของจุดที่ต้องการทราบค่าสเกลแฟคเตอร์ ต้องการค่าพิกัดเหนือใต้ในระบบยูทีเอ็มและค่าระดับที่อ้างอิงเหนือระดับน้ำทะเลปานกลาง (Orthometric Height above Meas sea level)

ในการคำนวณตัวประกอบความสูง (Elevation Scale Factor) โปรแกรมจะนำค่าความสูงเหนือระดับน้ำทะเลปานกลางมาคำนวณเป็นค่าระดับความสูงเทียบกับระดับทรงรี (Ellipsoid Height) ที่เราไม่สามารถนำค่าระดับความสูงเหนือระดับน้ำทะเลปานกลางมาใช้คำนวณเพราะว่า ตัวอย่างเข่นในประเทศไทย ค่าระดับน้ำทะเลปานกลางจะอยู่ใต้ทรงรีประมาณ 6-42 เมตร ถ้านำไปคำนวณจะได้ค่าตัวประกอบความสูงที่ไม่ถูกต้อง

ดาวน์โหลดโปรแกรม

ไปที่หน้าดาวน์โหลด Download มองหาโปรแกรม Scale Factor สำหรับเครื่องคิดเลข Casio fx-9860 G II SD ดาวน์โหลดไฟล์โปรแกรมชื่อ SFACTOR.G1A ติดตั้งลงเครื่องคิดเลข

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

เมื่อเมนูหลัก (Main Menu) เมื่อเลื่อนลูกศรมาที่ไอคอนโปรแกรมกดคีย์ “EXE” จะเข้ามาในโปรแกรมดังรูปด้านล่าง จะเห็นเมนูด้านล่างเรียงรายกันไป ได้แก่

Sett- Setting (ตั้งค่าโซนยูทีเอ็มและเลือกซีกโลก)

PSF – Point Scale Factor ( คำนวณหาค่าสเกลแฟคเตอร์ของจุดเดี่ยว

LSF – Line Scale Factor (คำนวณหาค่าสเกลแฟคเตอร์เฉลี่ยจากจุดสองจุด)

Info – Information (แสดงไลบรารีที่ผมใช้งานอยู่ ให้เครดิตแก่พัฒนา)

Exit – Exit Program (ออกจากโปรแกรม)

ตั้งค่ายูทีเอ็ม (UTM Settings)

ทีเมนูหลักกดคีย์ F1 – Sett จะเห็นหน้าตาจอภาพเครื่องคิดเลขดังนี้

เนื่องจากโปรแกรมบนเครื่องคิดเลขมีข้อจำกัดมากๆ ผมไม่สามารถใส่ระบบพิกัดได้มากเหมือน Surveyor Pocket Tools จึงจำกัดแค่ datum “WGS84” เท่านั้น สำหรับประเทศไทยก็เลือกโซนได้สองโซนคือ 47 และ 48 ตัวอย่างที่จะแสดงต่อไปเลือกเป็นโซน 47 ส่วนซีกโลก (Hemisphere) เลือกเป็น “North” กดคีย์ F6 – OK

 

คำนวณ Point Scale Factor

ตัวอย่างที่คำนวณต่อไปจะยกมาจากตัวอย่างที่แสดงในบล็อกของ Surveyor Pocket Tools เพื่อเปรียบ

เทียบผลลัพธ์กันได้ กลับมาที่เมนูหลักกดคีย์ F1-Sett ป้อนค่าพิกัด N=1499662.173, E=683068.285, H=0.791 

เสร็จแล้วกดคีย์ F1 – Calc เพื่อคำนวณสเกลแฟคเตอร์ของจุดนี้

ผลลัพธ์จะแสดงออกมาดังรูปด้านล่าง โปรแกรมจะแสดงค่าพิกัดและค่าระดับมาให้ จากนั้นแสดงค่าละติจูดและลองจิจูด แสดงความสูงเทียบกับทรงรี = -29.598 m กดคีย์ F2-PgDn เพื่อเลื่อนไปดูหน้าต่อไป

จะเห็นค่า Geoid Separation หรือ Geoid Height = -30.389 m และได้ค่า Elevation Scale Factor = 1.00000465, Grid Scale Factor = 1.00001458 สุดท้ายค่า Combine Scale Factor = 1.00001924 ลองเทียบกับค่าที่คำนวณด้วย Surveyor Pocket Tools ดังนี้

ค่า Combined Scale Factor  = 1.0000192644 ต่างกันที่ทศนิยมแปด ผมถือว่าใช้ได้เพราะเราใช้แค่ทศนิยมที่หกก็เพียงพอแล้ว ความต่างที่แตกต่างจากที่ผมเคยบอกไปแล้วคือมาจากค่า Ellipsoid height ที่คำนวณจากโปรแกรมเครื่องคิดเลขได้ -29.598 เมตร ส่วนค่าความสูงทรงรีที่ได้จาก Surveyor Pocket Tools ได้ค่า -29.776 เมตร ต่างกันประมาณ 20 ซม.

คำนวณหาค่า Line Scale Factor

จะแสดงไดอะแกรมของการคำนวณค่าสเกลแฟคเตอร์เฉลี่ยดังรูปด้านล่าง

ที่โปรแกรมเครื่องคิดเลขกลับมาที่เมนูหลัก

กดคีย์ F3-LSF จะเห็นหน้าตาโปรแกรมดังรูปด้านล่าง ป้อนค่าพิกัดจุดที่ 1 และกดคีย์ F2-Next เพื่อไปป้อนจุดที่ 2

พร้อมแล้วกดคีย์ F1-Calc ต่อไปจะได้ผลลัพธ์ดังนี้ เลื่อนลงไปดูหน้าต่อไปก็กดคีย์ F2-PgDn

สรุปแล้วจะได้ค่าเฉลี่ย Combined Scale Factor = 1.00082320

เปรียบเทียบกับค่าที่ได้จาก Surveyor Pocket Tools เท่ากับ 1.0008232302 เช่นเคยค่าต่างกันที่ทศนิยมแปด สามารถนำไปใช้งานได้

จัดเก็บข้อมูลและเรียกมาใช้ภายหลัง

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

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

จากนั้นนำ SDCard มาเสียบบนเครื่องคิดเลขอีกครั้ง เมื่อนำไปใช้งานได้สักพักถ้าเอามาเปิดอีกครั้งจะเห็นไฟล์หลายๆไฟล์ มีนามสกุลเป็น “CFG”  หมายถึง config ตัวอย่างถ้าใช้โปรแกรมคำนวณหาสเกลแฟคเตอร์นี้ไฟล์ที่จัดเก็บข้อมุลคือ “SFACTOR.CFG

เครดิตไลบรารี

ที่เมนูหลักกดคีย์ F5-Info จะเห็นเครดิตดังรูปด้านล่าง

โปรแกรมนี้มีขนาดใหญ่กว่าโปรแกรมอื่นๆก่อนเกือบสองเท่าเพราะว่าใช้ไลบรารีอื่นๆสามไลบรารีด้วยกัน ก็ติดตามชุดโปรแกรมเครื่องคิดเลข Casio fx-9860 G กันต่อไปครับ

Surveyor Pocket Tools – คำนวณพื้นที่ เรื่องธรรมดาที่ไม่ธรรมดา (ตอนที่ 1)

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

ย้อนรอยสูตรคำนวณหาพื้นที่

  • Surveyor Pocket Tools รุ่นก่อนหน้านี้ส่วนใหญ่จะเป็นงานคำนวณในงานเซอร์เวย์เรื่อง Advance เช่นงานคำนวณหาระยะทางบน Ellipsoid งานคำนวณหาความสูงของจีออยด์ การแปลงพิกัด ตอนนี้จะกลับมาเรื่องพื้นฐานคือการคำนวณหาพื้นที่
  • การคำนวณหาพื้นที่ ปกติที่เราคุ้นหูคุ้นตาคือ การเอาค่าพิกัด X,Y ในระบบพิกัดฉากมาวางเรียงกันในแนวนอนหรือแนวตั้งแล้วจัดการเอาค่า X คูนค่า Y สลับแบบผูกเชือกรองเท้า คูนขึ้นเป็นบวก คูนลงเป็นลบ เรียกสูตรนี้ว่า  สูตรเชือกผูกรองเท้า (Shoelace’s formula) แต่เนื่องจากช่างสำรวจคงใช้สูตรนี้กันมากกว่าเพื่อนเลยเรียกอีกชื่อหนึ่งว่า Surveyor’s formula
soffice-bin_2016-12-22_11-12-12
Shoelace Formula (รูปดัดแปลงจากรูปต้นฉบับ wikipedia.org)
  • โดยที่ข้อแม้สูตรนี้คือจุดจะต้องเรียงกันไปไม่มีการไขว้กันเด็ดขาดแบบรูปด้านล่างsoffice-bin_2016-12-22_11-34-25
  • งานสำรวจแบบโลกเก่าคือออกพิกัดลอยของใครของมัน ใช้กล้อง Total station หรือโบราณกว่านั้นดึงเทปวัดมุม เก็บมุมพื้นที่ของแปลงแล้วนำค่าพิกัดรูปปิดมาคำนวณ ข้อดีคือได้พื้นที่จริงๆมาใช้งาน แต่ข้อเสียคือแผนที่ต่างคนต่างออกจากศูนย์พิกัดต่างกัน ถ้าแปลงติดๆกันไม่สามารถเอามาต่อกันได้ เอาไปเขียนลง google earth ก็ไม่ได้ ไม่รู้ว่ามันอยู่ตรงไหนของโลกนี้

ปัญหาการคำนวณพื้นที่กับค่า Scale factor

  • ในการทำแผนที่พื้นที่ใหญ่ๆ เนื่องพื้นผิวโลกมีความโค้ง ดังนั้นการทำแผนที่บนผิวโลกแล้วนำมาเขียนลงบนระบบแบนราบแบบกระดาษ จะเกิดความเพี้ยน (distortion) ยิ่งไกลมากยิ่งเพี้ยนมาก นักคณิตศาสตร์รุ่นเก่าจึงแก้ปัญหานี้โดยการคิดค้นประดิษฐ์เส้นโครงแผนที่ (Map projection) ที่เป็นระนาบราบ (ระบบพิกัดฉาก) โดยมีการฉาย (project) จุดจากบนผิวโลกลงมาจุดบนระนาบ
  • มีได้ย่อมมีเสีย ข้อดีคือแผนที่ต่างคนต่างทำ แต่อยู่บนระบบพิกัดฉากเดียวกัน ศูนย์กำเนิดเดียวกันสามารถนำมาต่อกันได้เพราะอยู่ในระบบเดียวกัน ข้อเสียคือแต่ละจุดบนเส้นโครงแผนทีจะมี Scale factor ที่แตกต่างกันไปไม่เท่ากัน การทำแผนที่บนเส้นพิกัดฉาก ในทางปฏิบัติจะต้องมีการทอนระยะทางที่วัดได้บนพื้นโลกด้วยการคูนเข้าค่าคูนมาตราส่วน (scale factor) จึงจะได้ระยะทางบนระบบพิกัดฉาก ปัญหาที่ scale factor แต่ละที่ไม่เท่ากันจึงเป็นปัญหาคลาสสิคที่สร้างความเวียนหัวให้กับคนทำแผนที่พอสมควร
  • ดังนั้นการทำแผนที่บนระบบพิกัดฉากเช่น UTM ทุกสิ่งทุกอย่างที่วัดบนพื้นโลกจะถูกทอนลงมาบนระบบพิกัดฉากด้วยค่า scale factor ปัญหาก็คือ ถ้านำค่าพิกัดของรูปปิด (polygon) ระบบพิกัดฉากมาคำนวณจะได้พื้นที่เรียกว่า Grid-based area จะไม่ตรงกับพื้นที่จริงๆ (Surface area) พื้นที่จริงๆนี่แหละครับที่เราต้องการ ที่จะนำไปใช้ในการซื้อขายที่ดิน หรือนำมาบริหารจัดการเกี่ยวกับที่ดินเช่นด้านการเกษตร เช่นการเตรียมปุ๋ยให้สอดคล้องกับพื้นที่จริงๆในกรณีมีที่ดินมากๆ

ทำความเข้าใจเรื่อง Scale Factor

  • ก่อนจะไปต่อเรื่องคำนวณพื้นที่จะมาทำความเข้าใจเรื่อง Scale factor บนแผนที่ระบบพิกัดฉาก Scale factor จะมีผลต่อความยาว ระยะทาง ทำให้มีผลต่อการคำนวณพื้นที่โดยปริยาย
Scale factor
Scale factor
  • จากรูปโมเดลด้านบน จะมีพื้นผิวสี่อย่างคือ
    • พื้นผิวภูมิประเทศบนโลก ช่างสำรวจทำการรังวัดบนนี้ครับ
    • พื้นผิวจีออยด์ (Geoid) คือพื้นผิวที่แทนระดับน้ำทะเลปานกลาง เราวัดความสูงสิ่งต่างๆบนโลกอ้างอิงค่าระดับจากพื้นผิวนี้
    • พื้นผิวทรงรีอาจจะเป็น WGS84 (ช่างรังวัดกรมที่ดินใช้ทรงรี Everest 1830) ค่าพิกัดภูมิศาสตร์ที่ได้จากเครื่อง GPS อ้างอิงที่พื้นผิว WGS84 นี้
    • พื้นระนาบราบ(ระบบพิกัดฉาก) บ้านเราใช้ UTM แผนที่ที่เราใช้กันส่วนใหญ่อยู่บนระบบนี้
  • การคำนวณหาค่าคูนมาตราส่วน (Scale factor) จะมีสองอย่างประกอบกัน โดยที่คำนวนสองขั้นตอน
    • Elevation Scale Factor (ESF) เป็นค่าคูนมาตราส่วนที่คูนกับระยะราบที่รังวัดได้บนพื้นผิวภูมิประเทศของโลกจะได้ระยะราบบนทรงรี หรือ ระยะราบบนทรงรี = ESF x ระยะราบบนพื้นโลก
    • Grid Scale Factor (GSF)  เป็นค่าคูนมาตราส่วนที่คูนกับระยะราบบนทรงรีจะได้ระยะราบบนระบบพิกัดฉาก หรือ ระยะราบบนระบบพิกัดฉาก = GSF x ระยะราบบนทรงรี
  • ดังนั้นถ้ารวบรัดสองขั้นตอนในขั้นเดียวจะได้ ระยะราบบนระบบพิกัดฉาก = ESF x GSF x ระยะราบบนพื้นโลก ค่า ESF x GSF นิยมเรียกว่า Combined Scale Factor (CSF)

ขั้นตอนที่ 1 คำนวณ Elevation Scale Factor (ESF)

  • ชื่อก็บอกมาแล้วว่าเกี่ยวข้องกับค่าระดับ ค่าระดับที่ใช้เป็นความสูงเหนือทรงรี นะครับไม่ใช่ระดับน้ำทะเลปานกลางเหนือจีออยด์ ถ้ากำหนดค่าระดับจากน้ำทะเลปานกลาง (MSL) ก็ใช้โปรแกรม EGM ของผมแปลงลงมาได้จากสูตร h = H + N (ความสูงจากระดับน้ำทะเลปานกลาง + ความสูงจีออยด์)
  • มาดูสูตรกันก่อน R คือรัศมีทรงรี ถ้าใช้ WGS84 ใช้ค่าหยาบประมาณ 6,372,000 เมตร

esf

  • สมมติจุดที่ต้องการหา ESF อยู่แลตติจูด = 12.9725° ลองจิจูด = 99.8329° ค่าระดับ =63.9 เมตร(เหนือระดับน้ำทะเลปานกลาง) คำนวณหา N ได้ด้วยโปรแกรม EGM (อยู่ในชุด Surveyor Pocket Tools อยู่แล้ว) ได้ความสูงเหนือจีออยด์ (N) = -31.6638 เมตร

surveyor-pocket-tools_2016-12-23_11-19-39

  • ความสูงเหนือทรงรี (h) = H + N = 63.9 – 31.6638 = 32.236 เมตร
  • ค่า ESF แบบหยาบๆ ใช้ค่า R โดยประมาณ ESF = 6372000/(6372000+32.236) = 0.999994941
  • ถ้าต้องการค่า ESF ทีละเอียดระดับทศนิยมตัวที่ 8-9 จะต้องคำนวณหาค่า R ละเอียดจากค่าแลตติจูดของบริเวณนั้นก่อน

soffice-bin_2016-12-24_09-21-50

soffice.bin_2017-02-21_11-45-39

 

  • ถ้าทรงรี WGS84 a = 6378137, b = 6356752.314, f=1/298.2572236, e² = 0.00669437998 แลตติจูด (Ɵ) = 12.9725° แทนที่ลงไปสูตร
  • R = 6378137 x √(1-0.00669437998 ) / (1-0.00669437998 x (sin(12.9725))² = 6358897.478
  • ESF = 6358897.478 / (6358897.478 + 32.236) = 0.999994931 (ค่าคำนวณแบบหยาบ 0.999994941)
  • สรุปได้ค่า ESF = 0.999994931 (ชีวิตยุ่งยากไปไหม โอกาสหน้าผมจะทำทูลส์เล็กๆ ไว้คำนวณหา ESF)

ขั้นตอนที่ 2 คำนวณหา Grid Scale Factor (GSF)

  • ต่อไปจะคำนวณหา GSF ค่านี้จะไม่ขึ้นกับค่าระดับ แต่จะขึ้นกับค่าลองจิจูด เช่นเดียวกันจะมีสูตรคำนวณค่าโดยประมาณและค่าละเอียด สูตรค่าละเอียดค่อนข้างจะยาวหน่อย ด้านล่างเป็นสูตรหาค่าโดยประมาณ

soffice-bin_2016-12-24_09-07-23

  • เช่นถ้าจุดมีค่าพิกัด N = 1,434242.632 E = 590,334.084. UTM Zone 47N WGS84 หา GSF โดยประมาณได้โดยการนำตัวเลขไปแทนที่สูตรด้านบน ใช้ค่ารัศมีโลก 6372000 เมตร จะได้ GSF = 0.9996(1 + (590334.084 – 500000)²/(2 * 6372000)) = 0.9997004496
  • ต่อไปมาดูค่าคูนมาตราส่วน Grid Scale Factor แบบละเอียด ก่อนจะไปต่อ ต้องรู้พารามิเตอร์ทรงรีที่ใช้ รู้ค่าพิกัดภูมิศาสตร์ในตำแหน่งที่ต้องการหา

soffice-bin_2016-12-24_09-21-50

  • ค่าที่ต้องเตรียมก่อนจะคำนวณหา Grid Scale Factor (GSF)

soffice-bin_2016-12-26_07-52-18

 

  • สูตร Grid Scale Factor สำหรับเส้นโครงแผนที่ UTM
soffice-bin_2016-12-24_11-09-00
Grid Scale Factor for UTM
  • มาลองคำนวณ กำหนดจุดมีค่าพิกัดดังนี้ N = 1,434242.632 E = 590,334.084 อยูบน UTM Zone 47N WGS84 เราต้องการหา latitude/longitude เปิดโปรแกรม “UTM -Geo converter” แล้วป้อนค่าพิกัด คำนวณดังรูป ได้ค่า latitude(Φ) = 12.9725056694 longitude(λ) = 99.8329042500 central meridian สำหรับโซน 47 คือ λ0=99  สำหรับนำไปคำนวณต่อ

surveyor-pocket-tools_2016-12-24_09-36-29

  • แทนที่สูตรหาค่า T = (tan(12.9725056694))² = 0.053067021
  • แทนที่สูตรหาพารามิเตอร์ของทรงรี WGS84 a = 6378137 f = 1/298.2572236 หาค่า e = √(2f – f²) = 0.08181919084 และค่า e’ = √(e²/(1-e²)) = 0.08209443794
  • หาค่า C = 0.08209443794² x (cos(12.9725056694))² = 0.00639987446
  • หาค่า A = (99.8329042500  – 99) x 3.141592654/180 * (cos (12.9725056694))² = 0.01416590874 (note : แปลงเป็น ดีกรี เป็น radian คูน ¶/180.0 เข้าไป)
  • หาค่า GSF (k) = 0.9996 x 1.000100987 = 0.9997009464 (ค่าโดยประมาณ 0.999704496)
  • สรุปค่า  GSF = 0.9997009464 

คำนวณ Combined Scale Factor (CSF)

  • ตัวอย่างข้างต้นที่ผมคำนวณหาค่า ESF กับ GSF เป็นจุดเดียวกัน ดังนั้น CSF = ESF x GSF
  • CSF = 0.999994931 x 0.9997009464 = 0.9996958785
  • ผมมีหมุด GPS อีกตัวหนึ่ง ค่าพิกัด  N = 1434091.770 E=590362.138   ค่าระดับ(รทก.) =  60.513 m.
  • คำนวณระยะราบได้ 153.448 เมตร ลองทอนระยะราบบนกริดกลับไปบนพื้นภูมิประเทศบนโลก = 153.448 / 0.9996958785 = 153.495 เมตร ถ้าเอากล้อง Total station ลองวัดระยะราบดูควรจะต่างจากนี้ไม่มาก ที่จริง combined scale factor จะต้องหาอีกจุดด้วยก่อนนำมาเฉลี่ยกัน แต่คงต่างกันไม่มากนัก ผมแค่อยากจะบอกว่า ระยะราบของหมุด  GPS สองตัว ที่เป็นระยะราบบนพิกัดฉาก UTM ทำไมเวลาช่างสำรวจไปตั้งกล้อง Total station แล้ววัดระยะราบแล้วทำไมไม่เท่ากัน ไม่เท่ากันเพราะอะไร แล้วจะคำนวณทอนระยะทางไปหากันได้อย่างไร

การประยุกต์ใช้ Combined Scale Factor

  • หลายๆท่านที่เป็นวิศวกรสำรวจ ช่างสำรวจ อาจจะผ่านงานโครงการใหญ่ๆ ยาวๆ เช่นงานถนน งานรถไฟ อาจจะมีโอกาสได้ใช้ CSF ปัจจุบันกล้อง total station ทันสมัย เราสามารถป้อนเอาค่า CSF พวกนี้เข้าไปในกล้องได้ กล้องเกือบๆทุกยี่ห้อจะเรียกตัวนี้ว่า “scale factor” ทำให้ลดความยุ่งยากกว่าสมัยแต่ก่อนที่ดึงเทปวัดระยะ ที่ต้องมาทอนระยะสดๆ เวลาไป setting out ก็อัพโหลดค่าพิกัดก่อน ในสนามก็สามารถ layout out ได้ถูกต้องไม่ต้องกังวลเพราะเรื่องที่เหลือกล้องจัดการให้
  • โครงการยาวๆแบบนี้ จึงต้องมาแบ่งตัดพื้นที่ออกเป็น block แต่ละ block คำนวณหาค่าเฉลี่ย CSF ที่แทนแต่ละพื้นที่ เวลาก่อสร้างช่วงรอยต่ออาจจะมีปัญหาเล็กน้อยที่โครงสร้างอาจจะไม่ต่อกันเป๊ะทีเดียว
  • ข้อควรจำ งานก่อสร้างประเภทนี้ จะออกแบบไว้บนระบบพิกัดฉาก UTM ดังนั้นคนออกแบบควรจะระลึกไว้ตลอดว่ากำลังออกแบบบนกริด ดังนั้นของที่วัดได้บนแบบ 500 เมตร ไม่ใช่ไปวัดในสนามได้ 500 เมตร (ยังมีคนที่เข้าใจแบบนี้อยู่ไม่น้อย) ผมเคยอ่านเจอบางกรณีที่ต่างประเทศ ถ้าบริเวณนั้น  CSF = 0.9995 คนออกแบบจะลง dimension ไว้ 499.75 เมตร ในแบบ เพื่อให้ที่เวลาก่อสร้างจริงจะวัดได้พอดี 500 เมตร
  • มีเอกสารที่เกี่ยวข้องกับการประยุกต์ใช้ Scale factor มากมายบนอินเทอร์เน็ตให้อ่านศึกษา ผมจะลงไว้ท้าย blog
  • เพราะระยะทางมันมี scale factor ที่เปลี่ยนผันไปตามพื้นที่และเป็นระบบ ดังนั้นเรื่องการคำนวณหาพื้นที่จึงต้องคำนึงถึงเรื่องนี้

การใช้งานโปรแกรมคำนวณพื้นที่ (Area) ในชุดโปรแกรม Surveyor Pocket Tools

  • เอาละร่ายเรื่อง scale factor กันมายาวเหยียด สำหรับท่านที่ดาวน์โหลดโปรแกรมรุ่นเก่าไปจะไม่มีโมดูลคำนวณพื้นที่ ต้องมาดาวน์โหลดโปรแกรมกันใหม่ ดูรุ่นและ build ก็พอจะทราบว่าอันไหนเก่าอันไหนใหม่

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

  • ดูด้านขวามือดูตรง “ดาวน์โหลด (Download” มองหา “Surveyor Pocket Tools Vxxx build xxxx” คลิกเพื่อดาวน์โหลด สำหรับวินโดส์ 32 บิต ผมยังทำไฟล์ setup ให้อยู่ เมื่อโหลดมาแล้วก็ unzip แล้วก็ทำการติดตั้งได้ง่ายๆ
  • เมื่อติดตั้งแล้วคลิกที่โปรแกรม Surveyor Pocket Tools จะเห็นหน้าต่าง คลิกที่ไอคอนรูปโพลีกอน “Area” จะเห็นโปรแกรมคำนวณหาพื้นที่ขึ้นมาดังนี้
"Compute Area" on Surveyor Pocket Tools
“Compute Area” on Surveyor Pocket Tools

ส่วนประกอบของโปรแกรม

ส่วนประกอบของโปรแกรม
ส่วนประกอบของโปรแกรม

ขั้นตอนใช้งานพอสังเขป

  • การใช้งาน ผมจะกล่าวย่อๆเป็น work flow ดังนี้
    • เริ่มต้นจากเตรียมไฟล์ CSV ที่เก็บค่าพิกัดของรูปปิดที่จะหาพื้นที่ ค่าพิกัดอาจจะเป็นค่าพิกัดระบบพิกัดฉากบน UTM (อาจจะบน WGS84 หรือ Indian 1975) หรือว่าค่าพิกัดภูมิศาสตร์บน WGS84 ก็ได้
    • นำเข้าด้วยการ import โปรแกรมจะอ่านไฟล์แล้วทำการประมวลผลว่ามีตัวคั่นที่เหมือนกันทั้งไฟล์ไหม หรือว่ามีบรรทัดที่ไม่เหมือนบรรทัดอื่น ถ้าอ่านไม่ได้จะแจ้งให้ผู้ใช้ทราบ เมื่ออ่านเข้ามาแล้วจะแสดงผลที่ตารางข้อมูล
    • ทำการกำหนด header หรือหัวคอลัมน์ว่าช่องไหนเป็น Easting/Northing หรือ Latitude/Longitue หรือกำหนดชื่อจุดด้วยถ้ามี แต่ถ้าโปรแกรมมีหัว (header) โปรแกรมพยายามจัดให้อัตโนมัติ
    • ตั้งรูปแบบมุม ถ้าค่าพิกัดทีอ่านมาเป็นค่าพิกัดภูมิศาสตร์
    • คำนวณพื้นที่
    • ปักหมุดบน Google Maps หรือว่า Google Earth
    • ดูผลการคำนวณพื้นที่แบ่งเป็นพื้นที่บนทรงรี และพื้นที่บนระบบพิกัดฉาก
    • แปลงหน่วยพื้นที่เช่นจากตร.ม. เป็นไม่
    • Export ข้อมูลผลลัพธ์ เป็นไฟล์ CSV, Excel หรือ Shape file เพื่อนำไปใช้ในโปรแกรมด้าน GIS

โฟลเดอร์และไฟล์ทดสอบโปรแกรม

  • ผมมีไฟล์ตัวอย่างให้ทดสอบ แต่ไฟล์ตัวอย่างจะอยู่ที่โฟลเดอร์ที่ซ่อนของวินโดส์ จากหน้าโปรแกรมหลัก ดูที่ไอคอนล่างสุด จะเห็น “Example folder” ลองดับเบิ้ลคลิกเข้าไป จะเห็นโฟลเดอร์ย่อย “example data” ดับเบิ้ลคลิกเข้าไปจะเห็นไฟล์ดังรูป ตอนแนะนำการใช้โปรแกรมผมจะใช้ไฟล์ในโฟลเดอร์นี่เป็นหลัก
explorer_2016-12-24_13-41-57
Example folder
  • เพื่อให้ดูง่ายๆว่าในไฟล์ใช้ระบบพิกัดเป็นอะไร ชื่อไฟล์จะใส่ระบบพิกัดไปในชื่อไฟล์ด้วย และมีไฟล์ที่ขึ้นต้นด้วย “error….” เป็นตัวอย่างไฟล์ถ้าโปรแกรมเจอไฟล์แบบนี้แล้วจะอ่านไม่ได้ หรืออ่านได้แต่ไม่ประมวลผลเช่น ไฟล์มีค่าพิกัดแค่สองจุด กลายเป็นเส้นตรงไม่สามารถคำนวณหาพท.ได้

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

  • ลอง import ไฟล์แรก “boundary1-geo-wgs84.csv” ค่าพิกัดเป็นค่าพิกัดภูมิศาสตร์ ตอน browse เลือกไฟล์เสร็จจะเห็น preview สำหรับไฟล์นี้จะมีชื่อคอลัมน์ “No,Name,Latitude,Longitude”
Import CSV file
Import CSV file
  • ลองเปิดไฟล์นี้มา โปรแกรมจะแสดงข้อมูลที่อ่านมาลงในตารางดังรูปด้านล่าง โปรแกรมจะจัดคอลัมน์ให้ ถ้าไม่ตรงผู้ใช้ต้องมาจัดเอง หลักๆของการออกแบบคือไม่ว่าไฟล์ CSV ผู้ใช้จะเรียงแบบไหนก็ตามเช่น P,N,E หรือ P,E,N หรือ N,E,P ก็ตามโปรแกรมจะอ่านมาก่อน แล้วผู้ใช้ค่อยมากำหนดตามหลัง เพื่อให้ยืดหยุนและสะดวกต่อการใช้งาน

compute_area_header

  • ตอนนี้ยังไม่ได้กำหนดระบบพิกัด แต่ถ้าเผลอไปคลิกไอคอนรูปเครื่องคิดเลขเพื่อคำนวณโปรแกรมก็คำนวณให้ โดยที่นึกว่าค่าแลตติจูดและลองจิจูดเป็นค่าพิกัดฉาก x,y แต่พื้นที่ก็น้อยจนไม่เห็น ต่อไปจะปรับระบบพิกัด (Coordinate Reference System)
  • ตั้งระบบพิกัดเป็น Geographic โดยคลิกเลือกเป็น “WGS84 / Geographic” แล้วคลิกที่ไอคอนเครื่องคิดเลข จะเห็นผลลัพธ์สองอย่าง คือพื้นที่บนทรงรีคำนวณได้ 85129.837 ตร.ม. ส่วนพื้นที่บนระบบพิกัดฉากได้ 85061.858 ตร.ม. ต่างกัน 67.979 ตร.ม.
Area Computation
Area Computation

ปักหมุดรูปแปลงบน Google Maps

  • ตอนนี้เราทราบแล้วว่าทำไมพื้นที่ถึงไม่เท่ากันเพราะ scale factor นั่นเอง ต่อไปจะลองมาปักหมุดบน google maps ที่ไอคอนด้านขวามือคลิกไปที่ไอคอนของ google maps โปรแกรมจะ plot รูปปิดให้พร้อม ปักหมุดรอบรูปแปลง ตรงกลางจะมีหมุดสีแดง แสดงจุดศูนย์ centroid ของพื้นที่

nvidia-share_2016-12-24_15-49-01

ปักหมุดรูปแปลงบน Google Earth

  • คลิกที่ไอคอน google earth โปรแกรมจะถามฃื่อไฟล์ KML ที่จะจัดเก็บ จากนั้นก็พาบินเข้าพื้นที่ จะเห็นแปลงที่ดินดังรูป จะเห็น label แสดงพื้นที่บนทรงรี (Ellipsoidal Area) ที่จริงตอนผมเปิดเรื่องมาเป็นพื้นที่จริงบนผิวโลก ดังนั้นจะมีกระบวนการแปลงพื้นที่จากผิวทรงรีขึ้นไปบนพื้นผิวภูมิประเทศอีกที เอาไว้ในตอนหน้าครับ

explorer_2016-12-24_15-55-16

  • ในตอนหน้ามาดูการใช้งานโปรแกรม ถ้ากำหนดให้รูปแปลงที่ดินเป็นค่าพิกัดฉากในระบบ UTM บน Indian 1975 หรือ WGS84 จะตั้งค่ายังไง และมาดูเบื้องหลังการคำนวณว่าจากค่าพิกัดภูมิศาสตร์จะคำนวณเนื้อที่ได้อย่างไร

เอกสารอ้างอิง

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

การเขียนตัวเลขค่าระดับเข้า Autocad ด้วยโปรแกรม Spot Fire (ฟรี)

  • ช่วงเดือนธันวาคม 2009 ส่งท้ายปีต้องติดภารกิจของบริษัทฯ เข้าไปพม่าที่เมืองมะริดอยู่ 2 ครั้ง ทำให้ไม่มีเวลาเขียน blog เลย ปีนี้ 2010 คิดว่าเกือบครึ่งปีที่จะต้องไปอยู่ที่มะริดและทวาย ของประเทศพม่า ซึ่งเป็นเมืองปิดมานาน ไม่รับนักท่องเที่ยว คนที่มีโอกาสเข้าไปโดยเฉพาะคนไทย มีน้อยมาก สองเมืองนี้ตอนนี้น่าอยู่มาก เงียบ สงบ คล้ายๆกับบ้านเกิดของผมเมื่อสัก 40 ปีที่แล้ว มองไปทางไหนยังเห็นไร่นาอยู่มาก แต่สิ่งที่เปลี่ยนแปลงไปก็คือความเจริญด้านวัตถุ รถยนต์ก็ยังเห็นบ้างแต่ไม่มาก รถมอเตอร์ไซค์ ก็หนาตา แต่ที่ประทับใจคือคนที่นั่นยังศรัทธาต่อศาสนาพุทธอย่างล้ำลึก
  • แต่ที่เงียบกว่าคือเมืองทวายความเจริญยังน้อยกว่ามะริดมาก ภาพของขี่จักรยานยังเห็นอยู่หลากหลาย ผมมีโอกาสได้ไปนมัสการรอยพระพุทธบาททั้งสองรอยคือรอยเท้าซ้ายและขวา เป็นสิ่งที่ประทับใจมากๆ

โปรแกรม Spot Fire

  • มาเข้าเรื่องโปรแกรม Spot Fire เป็นโปรแกรมเล็กๆ ที่เขียนด้วย Delphi เขียนไว้หลายปีแล้ว ถ้าเรามีจุดค่าพิกัดและระดับ (X,Y,Z) เก็บอยู่ในรูป Text file และบางทีอาจจะคั่นด้วยเครื่องหมายคอมมาหรือคั่นด้วยช่องว่างก็ตาม สามารถใช้โปรแกรม Land Desktop หรือ Terramodel เขียนขึ้นไม่ยาก แต่จะให้สวยและแยกสีตามค่าระดับนั้นยาก
  • ที่เอาไปใช้บ่อยการเขียนตัวหนังสือแบบนี้จะเป็นงาน Hydrographic Survey มากกว่า ผมจำได้ว่าโปรแกรม HydroNav ของ Trimble รุ่นนั้นยังเป็น DOS อยู่ เขียนตัวหนังสือ (Text) ได้สวยงามมาก แต่ตอนหลังเป็นยุคของวินโดส์  Trimble เลยทิ้ง HydroNav หันไปซื้อ Terramodel สำหรับ windows มาจาก Spectra ถ้าจำไม่ผิด เพื่อมาแทน HydroNav
ตัวอย่างแผนที่ภูมิประเทศ(Topographic Map) ที่เขียนตัวเลขแสดงความสูงเป็นลัำกษณะกริด
  • จากรูปด้านบนจะเห็นค่าระดับเป็นลักษณะกริด จะมีค่าระดับเป็นหน่วยเมตรด้านหน้าและตัวทศนิยมเป็นตัวห้อยขนาดเล็กกว่าอยู่ด้านหลัง และส่วนใหญ่จะเอียงหมุนไปด้านซ้ายประมาณ 45 องศา เพื่อเลี่ยงตัวเลขทับกัน
แสดงตัวเลขค่าระดับบนแผนที่ Hydrographic Map
  • แผนที่แสดงใน Hydrographic Map ทิศทางค่าระดับ(แกน Z) จะตรงข้ามกับงานบนบก คือชี้ลงไปในน้ำเป็นบวก ขึ้นฝั่งเป็นลบ

ดาวน์โหลดโปรแกรมและติดตั้ง

  • สนใจดาวน์โหลดโปรแกรมได้ที่นี่ http://www.4shared.com/file/190515733/31c9f3b5/SpotFireSetup.html เมื่อดาวน์โหลดแล้วำทำการติดตั้งโปรแกรมจะถูกติดตั้งอยู่ที่โฟลเดอร์ c:\program files\survey suite\spot fire และจะมีโฟลเดอร์ย่อยชื่อ examples เก็บไฟล์ตัวอย่างไว้ ซึ่งผู้ใช้สามารถลองดูได้ เมื่อเปิดโปรแกรมมาจะเห็นดังรูปด้านล่าง
Spot Fire หลังจากเปิดโปรแกรม
  • หน้าตาของโปรแกรมเรียบง่ายมี 2 แท็ปคือ File และ Options เมื่อเปิด Text file ที่เก็บจุดที่ต้องการจะแสดงที่แท็ป File ส่วนแท็ป Options จะตั้งค่าตัวเลือกเช่นขนาดตัวหนังสือ มาตราส่วน แยกสีตามแบนด์

การใช้โปรแกรม

  • คลิกที่ไอคอนเปิดไฟล์ browse ไปที่ c:\program files\survey suite\spot fire\examples เปิดไฟล์ชื่อ STOCKPILE-PNEZD.csv อย่าลืมคลิก file type เป็น P,N,E,Z,D ตามรูปแบบของไฟล์ข้อมูล ดังรูปด้านล่าง
เปิด Text file เก็บค่าพิกัด
  • โปรแกรมจะอ่านข้อมูลจาก Text file แล้วเติมลงในตารางกริดดังรูปด้านล่าง
แสดงข้อมูลในตารางกริด

ตั้งค่า Options

  • คลิกที่แท็ป Options เพื่อตั้งค่า รูปด้านล่างเป็นค่าปริยาย
การตั้งค่า Options
  • จากรูปด้านบน ตรงชี้หมายเลข 1 เป็นการตั้งค่าขนาดตัวอักษร ตัวอย่างความสูงตัวอักษร 1.8 มิลลิเมตร (ตัวห้อยหรือทศนิยม ขนาด 1.2 มิลลิเมตร) ที่มาตราส่วน 1:1000 แต่ถ้าเปลี่ยนเป็นมาตราส่วน 1:500 ขนาดตัวอักษรที่ปรากฎใน Model ของ Autocad จะวัดได้ 1.8/2 = 0.9 ถ้าเป็นมาตราส่วน 1:2000 จะวัดขนาดตัวอักษรได้ 2 x 1.8 = 3.6 ที่สำคัญคือเมื่อเรา วัดที่ layout จะวัดได้เท่ากับ 1.8 มม. เสมอ ไม่ว่าจะใช้อัตราส่วนเท่าไหร่
  • ส่วนอื่นๆเช่นมาตราส่วน Horizontal scale, Depth Annotation layer ตั้งชื่อ layer ที่จะเก็บตัวหนังสือ, Points layer ต่อไปคือรูปแบบตัวหนังสือ Text Font ซึ่งใช้ font ของ Autocad คือ isoct.shx หรืออาจจะเป็น font อื่นๆก็นได้เช่น Romans.shx และที่กล่าวไปแล้วคือ Text height และที่สำคัญอีกตัวคือ Rotation Angle มุมที่จะหมุนกระดกตัวหนังสือจัดไว้ประมาณ 45 องศากำลังสวย ส่วน Minus Style คือลักษณะของเครื่องหมายลบ ถ้าเป็นงาน Hydrographic Survey เครื่องหมายลบจะขีดเส้นตรงสั้นๆใต้ตัวเลขความสูง และตัวเลือกตัวสุดท้ายคือ Select point every เลือกจุด 1 จุดทุกๆ 2 จุด (คำพูดง่ายๆคือเลือกจุดเว้นจุด ถ้าเลือกมา 1 จุด เว้นไปสองจุด ก็ป้อนเลข 3)

การเขียนตัวเลขค่าระดับแบบแยกสีตามความลึก

  • การเขียนแยกสีอักษรตามความลึกของจุด (Color Banding) สามารถทำได้โดยการคลิกที่ Automatic color banding interval แล้วตั้งค่า Band เช่นทุกๆ 2 เมตร ดูรูปด้านล่างประกอบ ครั้งแรกเลือกมาตราส่วนเป็น 1:500 เมื่อป้อนค่า interval เสร็จ ให้คลิกที่ปุ่ม Apply
ตั้งค่า options

การ Pump ตัวหนังสือแสดงค่าระดับเข้า Autocad

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

  • โปรแกรม Spot Fire พยายามเปิด Autocad ให้ แล้ว pump ข้อมูลเข้าไปดังรูป
แสดงภาพเมื่อ pump ข้อมูลเข้า Autocad
  • ที่ Autocad  เรา Zoom เข้าไปดูตัวอักษร
ภาพขยาย Autocad แสดง Text ที่ได้จากการ pump จากโปรแกรม SpotFire
  • ที่ Autocad แล้ว save เป็น Block แล้วนำไป insert เข้ากับแผนที่่ Hydrographic Map จะได้แผนที่ที่แสดงความลึกตามที่ต้องการ
  • โปรแกรม Spot Fire เป็น tools ตัวเล็กๆ ที่ทีมงานผมยังใช้งานอยู่ประจำ ถึงแม้ไม่มีอะไรหวือหวา ก็ขอฝากไว้ด้วยนะครับ