Month: March 2010

Terrain Bender โปรแกรมแสดง DEM ที่บรรเจิดสุดๆ

  • ช่วงไม่นานมานี้ผม search ใน google พบกับโปรแกรมแสดงการจำลอง DEM เป็น 3D คือโปรแกรม Terrain Bender เห็นโปรแกรมต้องทึ่งในไอเดีย ครั้งแรกๆที่ผมเห็นใน website ผมคิดว่าคนพัฒนาโปรแกรมต้องเพี๊ยนสุดๆ ลองดูรูปจาก website
ภาพจาก website ของผู้พัฒนา Terrain Bender
  • ตัวโปรแกรมเป็น cross-platform มีให้ดาวน์โหลดใช้บน Windows, Linux แล้วก็ Mac OS X พัฒนาด้วย Java แสดงผล 3D โดยใช้ OpenGL ได้สวยงามทีเดียว
  • ผู้พัฒนาโปรแกรมเป็นชาวสวิสเซอร์แลนด์ คือ Helen Jenny and Bernhard Jenny, Institute of Cartography, ETH Zurich ผมดูชื่อแล้วสองคนน่าจะเป็นสามี ภรรยากัน ดู profile แล้วพบแต่ของ Bernhard Jenny ดูผลงานและรางวัลที่ได้รับไม่ธรรมดาเลย กลับมาดูงานวิจัยที่เกี่ยวกับงาน Cartography ของ Bernhard Jenny พบว่ามีหลายชิ้นที่น่าสนใจ งานวิจัยบางส่วนตกผลึกกลายเป็นผลงานก็คือ Terrain Bender ที่กำลังกล่าวถึงอยู่
การ projection ภาพ 3D ด้วยมุมต่างๆของสายตา
  • โปรแกรมนี้มุ่งแสดงภาพ 3D บน plane ที่บิดทุกรูปแบบจนถึงทรงกลม สามารถนำภาพถ่ายทางอากาศมาสวมให้ก็ได้ (Drape) แต่จำกัดขนาดภาพใหญ่ไม่เกิน 8192×8192 pixels การแสดง DEM ที่ผู้พัฒนาเรียกว่า Progressive Bending คล้ายกับว่าผู้มองลงมาที่ DEM อยู่บนเครื่องบิน สายตาของมุมมองชันลงมาด้านล่าง และมุมมองเกือบจะราบเมื่อมองไปไกลๆ ที่เส้นขอบฟ้า มีประโยชน์มากเพราะแสดงได้สมจริงมากและสามารถพลิกดูพื้นที่ที่ต้องการได้อย่างรวดเร็ว

ดาวน์โหลด

  • ตามลิงค์นี้ไปแล้วค่อยไปหน้าดาวน์โหลด http://www.terraincartography.com/terrainbender/ มีให้เลือกทั้ง windows, linux และก็ Mac OS X บนวินโดส์มีทั้ง 32 bit และ 64 bit เมื่อดาวน์โหลดมาแล้วไม่มีไฟล์ setup ให้แตก zip ไปวางไว้ตรงไหนก็ได้ เมื่อจะรันแค่เข้าไปคลิกที่ไฟล์ TerrainBender.exe ก็เป็นอันใช้ได้

ไฟล์ข้อมูลที่ใช้ทดสอบ

    • ผมดาวน์โหลด DEM จาก Aster GDEM ที่ผมเคยถึงไปแล้ว ได้มา 2 ไฟล์คือ ASTGTM_N13E099_dem.tif และ ASTGTM_N14E099_dem.tif ทั้งสองรูปเป็น geographic Lat/Long ผมนำมารวมกันด้วย tool ของ GDAL/OGR คือ gdalwarp เพื่อรวมไฟล์ก่อน แล้ว reproject จากระบบพิกัด geographic WGS84 (EPSG = 4326) ไปเป็น UTM zone 47N (EPSG=32647)

$gdalwarp ASTGTM_N13E099_dem.tif ASTGTM_N14E099_dem.tif merge_dem_wgs84.tif
$gdalwarp -s_srs EPSG:4326 -t_srs EPSG:32647 merge_dem_wgs84.tif merge_dem_utm47n.tif

  • บางครั้งการ reprojection ในวินโดส์โปรแกรมฟ้องว่าหาไฟล์ ที่เก็บ EPSG คือไฟล์ gcs.csv ไม่พบเนื่องจากตั้งค่า GDAL_DATA ไม่ถูกหรือไม่ตรง path ที่เก็บไฟล์ gcs.csv ใน Dos prompt ผมป้อน $set GDAL_DATA=C:\OSGeo4W\share\gdal (ผมติดตั้ง OSGeo4W) แล้วถึงจะรัน gdalwarp เพื่อ reprojection ได้สำเร็จ
  • ลองเปิดดูด้วย Quantum GIS ว่าใช้ได้หรือไม่ ลองแล้ว OK
แสดงผลใน QGIS
  • ส่วนรูปเป็นไฟล์ jpeg ของแผนที่ L7018 แถวๆจังหวัดกาญจนบุรี  (s7018-kan.jpg พร้อมด้วย world file) ต่อไปจะ crop DEM ให้มีขนาดเท่ากับไฟล์รูปแผนที่ ตรวจสอบขนาดของไฟล์ด้วย gdalinfo

$gdalinfo s7018-kan.jpg
Driver: JPEG/JPEG JFIF
Files: s7018-kan.jpg
s7018-kan.jgw
Size is 2986, 2554
Coordinate System is `’
Origin = (502376.972592156264000,1547332.968661365099251)
Pixel Size = (8.000000000000000,-8.000000000000000)
Image Structure Metadata:
SOURCE_COLOR_SPACE=YCbCr
INTERLEAVE=PIXEL
COMPRESSION=JPEG
Corner Coordinates:
Upper Left ( 502376.973, 1547332.969)
Lower Left ( 502376.973, 1526900.969)
Upper Right ( 526264.973, 1547332.969)
Lower Right ( 526264.973, 1526900.969)
Center ( 514320.973, 1537116.969)
Band 1 Block=2986×1 Type=Byte, ColorInterp=Red
Image Structure Metadata:
COMPRESSION=JPEG
Band 2 Block=2986×1 Type=Byte, ColorInterp=Green
Image Structure Metadata:
COMPRESSION=JPEG
Band 3 Block=2986×1 Type=Byte, ColorInterp=Blue
Image Structure Metadata:
COMPRESSION=JPEG

  • จะเห็นขนาดของไฟล์ที่แสดงทั้งสี่มุม เราเลือกเฉพาะ มุมล่างซ้าย (Lower Left) และมุมบนขวา (Upper Right) การ crop DEM ด้วย gdalwarp นำค่าพิกัดมุมล่างซ้ายและบนขวา ไปใส่หลัง options -te ส่วน options -ts ระบุขนาด pixel ลงไปเลยว่าขนาดเท่ากันทั้ง x และ y ผมใช้ค่า 30.5864 เมตร (ุถ้าขนาดไม่เท่ากัน Terrain Bender จะไม่ยอมอ่าน) ต่อไป แปลงฟอร์แม็ตเป็น ESRI Ascii grid format(*.asc) ที่ Terrain Bender ต้องการด้วย gdal_translate

$gdalwarp -te 502376.973 1526900.969 526264.973 1547332.969 -ts 30.5864 30.5864 merge_dem_utm47n.tif crop_dem_utm47n.tif
$gdal_translate -of AAIGrid crop_dem_utm47n.tif crop_dem_utm47n.asc

  • ลองรันโปรแกรม เปิดมาจะถามหาไฟล์ DEM เลือกไฟล์ crop_dem_utm47n.asc จะเห็นหน้าตาของโปรแกรมที่ยังไม่ได้ปรับแก้มุมมองดังรูปข้างล่าง
หน้าตาของ Terrain Bender เรียบง่าย

ปรับ shading

  • คลิกที่แท็บ “Shading” ลองปรับดูดังรูปด้านล่าง
ปรับ shading

ปรับ Vertical Exaggeration

  • ปรับ Vertical Exaggeration ไปสัก 2-4 กำลังสวย
ปรับความดิ่งเกินจริง

การ Drape

  • ลองสวมภาพแผนที่ L7018 ที่เตรียมไว้ด้วยการคลิกที่เมนู File > Open Texture Image… เลือกไฟล์ที่เตรียมไว้ ลองใช้เมาส์หมุน ส่วนการ zoom เลื่อนทำได้โดยการเลื่อนแถบ Distance, Shift X และ Shift Y
การ Drape ภาพลองไปบน DEM
  • ลองบิดไปอีกมุมหนึ่ง
มุมมองในอีกมุม

สรุป

  • เป็นผลงานที่น่าทึ่งมาก ถึงแม้จะพัฒนาด้วย Java ถึงขึ้นชื่อว่าช้า แต่ OpenGL ก็ช่วยภาพสามมิติได้มาก ไม่มีอาการกระตุกให้เห็นเลย การหมุนเลื่อนทำได้เนียนมาก ข้อเสียอย่างเดียวคือผมไปคอมไพล์เพื่อจะรันใน Ubuntu Linux แต่ไม่สำเร็จ (ส่วนหนึ่งผมไม่ค่อยคุ้นกับ Java) ถามหา library เมื่อจัดให้แล้วก็ไปฟ้อง error ที่เรื่องอื่น มันน่าจะมีคนทำเป็น package ติดตั้งได้ง่ายๆ แต่โดยรรมๆ แล้วประทับใจมากๆ
  • สนใจข้อมูลทดสอบผมฝากไฟล์เอาไว้ ไปดาวน์โหลดได้ Test_Data.zip

ทำไฟล์ Setup ด้วยโปรแกรม Inno Setup

Inno Setup

  • จากที่มานั่งปัดฝุ่นโปรแกรมช่วยเขียนแบบรูปตัดตามขวาง (XSection Plot) และผมเองต้องทำไฟล์ setup เพื่อให้ผู้ใช้สามารถดาวน์โหลดไปติดตั้งได้เอง ก่อนหน้านี้ผมใช้ InstallShield ซึ่งใช้ทั้งเวอร์ชั่นฟรีบ้างและไม่ฟรีบ้าง ก็ลองมองหาตัวใหม่ที่ใช้งานได้ง่ายๆและที่สำคัญต้องฟรี
  • น้องที่สำนักงานแนะนำให้ใช้ Inno Setup เนื่องจากเป็นของฟรี ลองดาวน์โหลดติดตั้งดู ปรากฏว่าต้องเขียน scripts ความรู้สึกแรกมันต้องยากแน่ๆ แต่พอลองถูกลองผิดสักหนึ่งชั่วโมง ปรากฏว่าทำไฟล์ setup อย่างง่ายๆได้สำเร็จ
ลักษณะ script ที่ Inno Setup เตรียมมาให้เป็น template

ความเป็นมาของโปรแกรม

  • พัฒนาโดย Jordan Russell โปรแกรมเมอร์ชาวเยอรมัน ออกเวอร์ชั่นแรกปี 1997 ผมสังเกตว่ามีโปรแกรม freeware ที่พัฒนาโดยโปรแกรมเมอร์ชาวเยอรมันมีมาก ตัวโปรแกรมพัฒนาโดย Delphi โปรแกรมสนับสนุนวินโดส์ทุกเวอร์ชั่นกระทั่ง windows 7 และยังสนับสนุน 64 bits ด้วย สนับสนุนการบีบอัด อย่างเช่นโปรแกรม XSection Plot ที่ผมทำตัวโปรแกรมและข้อมูลรวมๆกันประมาณ 5.4 MB พอเป็นไฟล์ setup ขนาดเหลือประมาณ 1.4 MB

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

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

เตรียมโฟลเดอร์

  • ในฐานะโปรแกรมเมอร์เมื่อคอมไพล์โปรแกรมมาถึงจุดที่ต้องการและตัวโปรแกรมนั้นต้อง stable พอ ก็จะต้องทำโปรแกรม Setup เรียกกันจริงๆว่า Software Deployment ผมเตรียมโฟลเดอร์ไว้หนึ่งโฟลเดอร์ copy ไำฟล์โปรแกรม XSectionPlot.exe ไฟล์ readme.txt  พร้อมด้วยไฟล์ไลบรารีของ VB6 ที่โปรแกรม XSection Plot ต้องใช้งานมีอยู่ 4 ไฟล์ และผมเตรียมซับโฟลเดอร์ย่อยเตรียมไฟล์ตัวอย่างที่เห็นก็คือ “format-examples”, “kohkong-examples” และ “road-examples” ดูรูปด้านล่าง
เตรียมโฟลเดอร์สำหรับสร้างไฟล์ Setup

Script สำหรับ Inno Setup

  • คุณ Jordan ผู้พัฒนาโปรแกรม ได้ออกแบบโปรแกรมมาได้ดีมาก โดยออกแบบตัว script ไฟล์ คล้ายๆกับไฟล์ .INI คือจะมี Section เป็นหัวข้อหลัก ปิดด้วยเครื่องหมาย [ ] (เรียกว่า bracket) ตัวอย่างเช่น [Files], [Setup], [Icon], [Registry] เป็นต้นส่วนองค์ประกอบในแต่ละ section จะเรียกว่า Entry ลองดูรูปด้านล่าง
การกำหนดค่าให้กับ script
  • ดู script ไฟล์ชัดๆอีกครั้ง ตรง [Setup] บรรทัดท้ายสุดคือ OutputDir ถ้าเราไม่ใส่ entry นี้โปรแกรมจะไม่สร้างไฟล์ setup.exe ให้เราเพราะหาโฟลเดอร์ผลลัพธ์ไม่พบ

; XSection Plot Setup
[Setup]
AppName=XSection Plot
AppVerName=XSection Plot version 3.25
DefaultDirName={pf}\Survey Suite\XSection Plot
DefaultGroupName=Survey Suite\XSection Plot
UseSetupLdr=yes
UninstallDisplayIcon={app}\XSectionPlot.exe
VersionInfoProductName=XSection Plot for Surveyor/Civil
VersionInfoCompany=http://priabroy.wordpress.com
VersionInfoCopyright=Copyright 1997-2010 by Prajuab Riabroy
VersionInfoDescription=XSection Plot for surveyor/civil
VersionInfoProductVersion=3.25.0.1033
VersionInfoVersion=3.25.0.1033
OutputDir=XSectionPlotSetup

[Files]
Source: “XSectionPlot.exe”; DestDir: “{app}”
Source: “Readme.txt”; DestDir: “{app}”; Flags: isreadme
Source: “KongKong-Examples\*”; DestDir: “{app}\Examples\KohKong”
Source: “Format-Examples\*”; DestDir: “{app}\Format-Examples”
Source: “Road-Examples\*”; DestDir: “{app}\Examples\Road”
Source: “Mscomctl.ocx”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace
Source: “comdlg32.ocx”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace
Source: “tabctl32.ocx”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace
Source: “MSHFLXGD.OCX”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace

[Icons]
;create icon at start menu group
Name: “{group}\XSection Plot”; Filename: “{app}\XSectionPlot.exe”
;create icon at desktop
Name: “{commondesktop}\XSection Plot”; FileName:”{app}\XSectionPlot.exe”

[Registry]
; Start “Software\My Company\My Program” keys under HKEY_CURRENT_USER
; and HKEY_LOCAL_MACHINE. The flags tell it to always delete the
; “My Program” keys upon uninstall, and delete the “My Company” keys
; if there is nothing left in them.
Root: HKCU; Subkey: “Software\Survey Suite”; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: “Software\Survey Suite\XSection Plot”; Flags: uninsdeletekey
Root: HKLM; Subkey: “Software\Survey Suite”; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot”; Flags: uninsdeletekey
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot\Settings”; ValueType: string; ValueName: “InstalledPath”; ValueData: “{app}”
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot\Settings”; ValueType: string; ValueName: “DevelopedBy”; ValueData: “Prajuab Riabroy”
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot\Settings”; ValueType: string; ValueName: “ApplicationName”; ValueData: “XSection Plot”

ตัวแปร constant

  • เมื่อดู script จะเห็นตัวแปรเช่น {app}, {sys}, {pf} ที่ผมใช้งาน
    • {app} ก็คือโฟลเดอร์ที่ผู้ใช้เลือกติดตั้งโปรแกรม
    • {sys} – โฟลเดอร์ “c:\windows\system32”
    • {pf} – โฟลเดอร์ “c:\program files”
  • ส่วนใน section [Registry] ก็ไม่มีอะไรยากเกินไป ลองศึกษาดู ใน help ก็เขียนไว้ดี

Compile และสร้างไฟล์ Setup

  • ที่ toolbar คลิกที่ compile ที่ผมพบบ่อยคือ compile ไม่ผ่านไม่ใช่ syntax ผิดแต่เตือนดังรูปด้านล่าง ผมใช้วิธีคลิก compile หลายๆครั้งจะผ่าน ไม่ทราบว่าทำไม
คอมไพล์ script

ผลลัพธ์ของไฟล์ setup

  • ตามที่ผมกล่าวไปแล้วว่าใน section => [Setup] ผมกำหนด OutputDir=XSectionPlotSetup เมื่อคอมไพล์ผ่านจะเห็นโฟลเดอร์ XSectionPlotSetup ขึ้นมาดังรูป
โฟลเดอร์เก็บผลลัพธ์ไฟล์ setup.exe
  • เข้าไปในโฟลเดอร์ก็จะเห็น
ไฟล์ setup.exe ที่เราสร้างขึ้นมาจาก Inno Setup

สรุปการใช้งาน

  • นอกจากตอนคอมไพล์แล้วเอ๋อเป็นบางครั้ง ที่เหลือดีหมด ได้ไฟล์ setup.exe ที่ถูกใจคือมีขนาดเล็ก ขั้นตอนการติดตั้งไม่ต้องมาก คลิกไม่กี่ครั้งก็เสร็จ

โปรแกรมเขียนแบบรูปตัดตามขวาง (XSection Plot) สำหรับช่างสำรวจ/ช่างโยธา ตอนที่ 3 (ตอนจบ)

การพรีวิวรูปตัด (Depth Viewer)

  • มาถึงตอนสุดท้าย เรามาดู preview รูปตัดกันก่อน เมื่อดูแล้วผลลัพธ์อาจไม่ตรงกับที่ต้องการ สามารถกลับไปแก้ไขข้อมูลได้เช่น มาตราส่วน ปรับเพิ่มลดรูปตัดในพอดีกับขนาดกระดาษ เมื่อดูแล้วเป็นที่พอใจ สามารถ Export หรือ Save เป็น Autocad DXF ท้ายที่สุดแล้วยังสามารถตามไปแก้ไขรูปตัดได้ใน Autocad
Depth Viewer
  • เมื่อคลิกที่ tool bar จะปรากฏ Depth Viewer ให้เห็นดังรูปด้านล่่าง
การตรวจสอบรูปตัด
  • เมื่อพิจารณาดูรูปตัด จะเห็นว่าโปรแกรมยังไม่สามารถแสดงพื้นที่ที่เป็น cut area ได้ เนื่องจากข้อมูลรูปตัดที่ import จาก Terramodel ตรงจุดตัดระหว่าง Typical section กับเส้นดินเดิมยังไม่ตัดกันเป๊ะ เราจะทำการแก้ไข Typical section ที่ตารางข้อมูล
zoom ดูรูปตัด
  • จากรูปด้านบน ผมจะต่อเส้น typical ให้ไปถึงค่าระดับ -12 กลับมาดูที่ตารางข้อมูลดังรูปด้านล่าง
แก้ไขรูปตัด Typical Section
  • ดูรูปด้านบนที่ Section 2+000 จะเห็นว่าที่ระยะ offset ที่ -65  เมตร และ +65 เมตร ค่าระดับอยู่ีที่ -15.5 เมตรเท่ากัน ผมจะแก้ให้เส้น side slope ไปแตะที่ค่าระดับ -12 เมตร ดังนั้นค่าต่างระดับในแนวดิ่ง = -12.0 + 15.5 = 3.5 เมตร ถ้า side slope กำหนดให้ 1 : 5 ดังนั้นระยะราบจะต่อไปจากระยะ -65 และ + 65 เมตรไปอีกเท่ากับ 3.5 x 5 = 17.5 เมตร ดังนั้นระยะ offset ที่ค่าระดับ -12 จะเท่ากับ -65 – 17.5 = -82.5 เมตร ลองแก้ไขที่ตารางข้อมูลดังรูป
แก้ไข typical section
  • กลับเข้าไปดูใน Depth Viewer อีกครั้งจะเห็นว่าโปรแกรมสามารถคำนวณหาพื้นที่หน้าตัดได้แล้ว
รูปตัดตามขวางเมื่อแก้ไขข้อมูล Typical section ที่ station 2+000
  • ลองเลื่อนไปดู station 2+300 จะเห็นว่าไม่ต้องแก้ไข typical section เนื่องจากโปรแกรมพบจุดตัดเรียบร้อยแล้ว พร้อมคำนวณหา cut area มาให้
รูปตัดที่ station 2+300

Export to Autocad DXF

  • หลังจัดวางรูปตัดได้ตามต้องการแล้ว มาถึงตอนสุดท้ายคือ export รูปตัดตามขวางออกเป็น Autocad DXF ซึ่งถ้าจะแก้ไข Title block หรืออื่นๆก็สามารถเปิดไฟล์ด้วย Autocad แล้วทำการแก้ไขได้ง่าย
คลิกที่ toolbar เพื่อใช้ Export to Autocad DXF

เปิดไฟล์รูปตัดตามขวางด้วย Autocad

  • ลองเปิดไฟล์ DXF ที่เซฟไว้ ดังรูปด้านล่าง ถ้ายังไม่พอใจหรือต้องการแก้ไขตรงจุดไหนก็สามารถกลับไปที่โปรแกรม XSection Plot ได้แล้ว save เป็น DXF ออกมาอีกครั้ง
เปิดไฟล์ DXF ด้วย Autocad

ลองดูข้อมูลจากโครงการอื่น

  • ผมมีตัวอย่างงานถนน อยู่ในโฟลเดอร์ “c:\program files\survey suite\xsection plot\examples\road” เปิดไฟล์ “DW Road.XST และ “DW Road.XSG” ตามลำดับ ลองคลิกไปที่ “ตั้งค่ารูปตัด” ในตัวอย่างนี้เป็นงานถนนใช้มาตราส่วน 1:250 เท่ากันทั้งทางราบและทางดิ่ง ซึ่งในตัวอย่างนี้เนื่องจากใช้ scale ใหญ่ จึงมีรูปตัดทั้งหมดได้ 5 รูปตัด
ตั้งค่ารูปตัดตามขวาง
  • ส่วน “การจัดวางรูปตัดบนกระดาษ” จะเป็นดังรูปด้านล่าง
จัดวางรูปตัด
  • ลองดู Section Viewer จะเห็น รูปตัดที่เป็นงานถนนเป็นหลังเต่า ซ้ายและขวาจากไหล่ทางจะเป็น ditch และมี side slope ที่ cut ออกไปสองข้าง
Section viewer ดูรูปตัด station 3+550

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

  • เป็นอย่างไรบ้างครับ ดูแล้วใช้งานง่ายไหม ผมว่าทุกๆโปรแกรมต้องลองใช้สักพัก ถึงจะคุ้นเคย ความจริง Terramodel ที่ใช้งานอยู่ก็มี module สำหรับ export รูปตัดออกมาได้ แต่ที่พบมาคือ config ยากมาก เมนูที่ทางโปรแกรมเมอร์ Terramodel เขียนมานั้นชวนสับสนและยอกย้อน ทางออกก็คือเมื่อ config ได้ต้องเขียน template ไว้ แต่ถ้าใช้ XSection Plot งานจะง่ายขึ้นมาก ปัญหาของ XSection Plot มีอยู่คือการออกแบบ Typical section ซึ่งในโปรแกรมมานั่งป้อนข้อมูล typical section ที่ค่อนข้างซับซ้อนคงไม่สะดวกเป็นแน่แท้ แต่ถ้าสามารถ export ออกมาได้เหมือน existing ground ก็ดี (เช่น Terramodel) ตอนก่อนหน้านี้ผมฝากโปรแกรมคำนวณวงรอบ (Traverse Pro) มีคนดาวน์โหลดไปใช้กันมากกว่าที่คิด ก็ขอฝากอีกโปรแกรมก็แล้วกัน สวัสดีครับ

โปรแกรมเขียนแบบรูปตัดตามขวาง (XSection Plot) สำหรับช่างสำรวจ/ช่างโยธา ตอนที่ 2 (ฟรี)

ป้อนข้อมูลโครงการเพื่อเขียน Title Block

  • โปรแกรม XSection Plot จะเขียน Title Block ลงไปในไฟล์ DXF ด้วย ซึ่งรูปแบบ Tible Block โปรแกรมจะเตรียมมาให้ประมาณ 4-5 แบบ ซึ่งสามารถไปแก้ไขภายหลังได้ใน Autocad
ป้อนข้อมูลเพื่อเขียน Title Block
  • แต่ถ้าต้องการเขียน Title block เป็นภาษาอังกฤษ คลิกที่แท็บภาษา
เลือกภาษาที่จะเขียน Title block

ตั้งขนาดกระดาษเขียนแบบ

  • ขนาดกระดาษสามารถเลือกได้จากขนาดมาตรฐาน ISO หรือกำหนดเองก็ได้ จากรูปด้านล่างผมกำหนดเป็นขนาด A1
ตั้งขนาดกระดาษ

ตั้งค่ารูปตัด

  • เป็นส่วนที่สำคัญมาก ได้แก่การตั้งค่ามาตราส่วนทางราบและทางดิ่ง ในงานออกแบบทั้งหลายเช่นงานถนน งานวางท่อ จะใช้มาตราส่วนที่เท่ากันทางราบและทางดิ่งเท่ากัน แต่บางงานเช่นงานขุดลอกร่องน้ำ สามารถใช้มาตราส่วนที่ต่างกันได้เช่น ทางราบ 1:2500 ทางดิ่ง 1:250
ตั้งค่ารูปตัดเช่นมาตราส่วน จำนวนทศนิยม
  • จากรูปด้านบน จะเห็นโปรแกรมให้เลือกประเภทของงานสำรวจ ซึ่งที่คุ้นเคยกันดีอยู่จะเป็น Land survey ค่าระดับสูงขึ้นจะเป็นบวก แต่ในงานด้าน Hydrographic Survey ค่าระดับเครื่องหมายจะกลับกันกับงาน Land survey คือแกน Y จะชี้ลง ที่ใช้กันมากได้แก่แผนที่เดินเรือ ถ้าตรงไหนค่าความลึกเป็นลบ จะเป็นพื้นที่ที่ต้องหลีกเลี่ยงเนื่องจากน้ำตื้น
ตั้งค่ามาตราส่วน ประเภทงานสำรวจ
  • จากรูปด้านบนนอกเหนือจากมาตราส่วน จะเห็นรูปแบบการเขียนตัวหนังสือตามระยะที่กำหนด ผมตั้งให้เป็น 25 เมตร หมายความว่าโปรแกรมจะทำการ interpolate ค่าระดับที่ระยะทุกๆ 25 เมตร เพื่อให้ดูง่ายและสวยงาม ต่อไปคลิกที่แท็บ “รูปแบบตัวหนังสือค่าระดับและระยะ offset” มีให้เลือกอยู่ 3 แบบ ดังรูปด้านล่าง
รูปแบบการจัดวางตัวหนังสือค่าระดับและค่าระยะ offset
  • บางครั้งตัวหนังสือของค่าระดับที่บอกค่าระดับแต่ละเส้น จะใส่ datum อ้างอิงลงไปเช่นค่าระดับน้ำทะเลปานกลาง (Mean Sea Level – MSL) หรือระดับน้ำลงต่ำสุด(Lowest Low Water – LLW) ในงาน Hydrographic survey
ตัวหนังสือแสดงระดับอ้างอิง
  • ในงานบางงานเช่นถนนที่ผ่านไปในที่เป็นภูเขา รูปตัดแต่ละ station จะมีค่าระดับสูงต่ำต่างกันมาก เราสามารถกำหนดให้ได้ หรือจะใช้วิธีการให้โปรแกรมเขียนให้อัตโนมัติ (คลิกเลือก 1 และคลิกที่ apply เลข 2) ซึ่งส่วนใหญ่ก็ใกล้เคียง ถ้าไม่ตรงอาจจะต้องพิมพ์เองบ้าง
กำหนดค่าระดับให้กับตาราง

การจัดวางรูปตัดบนหน้ากระดาษเขียนแบบ

  • ถ้าสังเกตุดูไฟล์ตัวอย่างที่ Import ข้อมูลรูปตัดเข้ามาจำนวน 12 รูปตัด และมาตราส่วนที่ต้องการเขียนคือทางราบ 1 : 2500 และมาตราส่วนทางดิ่ง 1:250 มาดูว่าจะจัดวางรูปตัดอย่างไรให้ได้ 1 หน้ากระดาษ A1 ได้พอดี
เลือกจัดวางรูปตัด
  • เมื่อคลิกที่ toolbar แล้วเราจะเลือก Title block ก่อน ดูรูปด้านล่าง
เลือก Title block ก่อน
  • จากรูปด้านบนนำรูปตัดเข้ามา 12 รูปตัด ถ้าจัดเป็น 2 คอลัมภ์ (จำนวนแถวในแนวตั้ง) จะต้องจัดรูปตัดเป็นแถวในแนวนอนเท่ากับ 6 แถว เพื่อให้คูณกันได้ 12 พอดี ส่วนความยาวกริดออกไปซ้ายและขวาลองเลือกจาก dropdown listbox ดู แล้วอย่าลืมสังเกตุที่ด้านล่างด้วยจะบอกระยะทางไปด้านซ้ายและด้านขวา พยายามจัดให้เผื่อให้พอดีกับรูปตัดดินเดิม เมื่อเสร็จแล้วแล้วลองคลิก Apply (นำไปใช้) ดู
ลักษณะการจัดวางรูปตัดอย่างง่าย
  • เมื่อคลิก “นำไปใช้” โปรแกรมจะเขียนตัวเลขบนตารางข้อมูลให้คือ Position on paper(X) และ Position on paper(Y) รูปตัด station เดียวกันบนตาราง Typical section กับ Ground section จะเท่ากัน
  • ต่อไปจะ save ข้อมูลถ้าต้องการ save ข้อมูล Typical Section ต้องคลิกไปที่แท็บ “Typical Section” ก่อนถึงจะ save ได้ และคลิกที่แท็บ “Ground Section” เมื่อต้องการ save ข้อมูลของ Existing ground section
คลิกที่ toolbar เพื่อ save ข้อมูล
  • ตอนต่อไปจะเป็นตอนสุดท้าย มาติดตามดู Depth Viewer หรือดูรูปตัดเป็นกราฟฟิคง่ายๆ ตลอดจนการ export แบบเป็น Autocad DXF เืพื่อไปเปิดใน Autocad

โปรแกรมเขียนแบบรูปตัดตามขวาง (XSection Plot) สำหรับช่างสำรวจ/ช่างโยธา ตอนที่ 1 (ฟรี)

โปรแกรมเขียนแบบรูปตัดตามขวาง XSection Plot

  • เป็นโปรแกรมที่ผมเขียนไว้นานพอสมควร แจกจ่ายให้พี่ๆน้องๆ นำไปใช้งานกันโดยไม่คิดสตางค์ และก็เขียนโดย surveyor เพื่อ surveyor เหมือนเดิม โปรแกรมตัวนี้พัฒนาด้วย VB6 ซึ่งในช่วงเริ่มเขียนจำได้ว่า VB กำลังดังมาก ด้วยข้อจำกัดด้านภาษาคือ VB ยังไม่ได้สนับสนุนเรื่อง OOP เต็มตัวเหมือน VB.Net ในปัจจุบัน ทำให้การเขียนโค๊ดค่อนข้างจะเยิ่นเย้อ  แต่ตัวโปรแกรมที่ได้นั้นใช้งานง่าย จากที่คนใช้บอกๆกันต่อ จะใช้แบบ manual ก็ได้คือนำข้อมูลมาป้อนเข้าไปดิบๆ ทีละ station งานใช้แรงแบบนี้ไม่ค่อยได้ใช้สมอง น้องๆทีมงานผมเรียกว่างานวิ่งควาย หรือจะใช้แบบนำข้อมูลที่เก็บในรูป text file มา import เข้าโปรแกรม ซึ่งเป็นวิธีที่สะดวกทีสุด ส่วน text file ดังกล่าวจะสร้าง (export) ได้จากโปรแกรมด้าน CAD/Civil อื่นๆเช่น Autodesk Land Desktop, Civil 3D, Terramodel, GeoPak หรือ Carlson Survey CAD
  • ในปี 2553 ผมใช้เวลาว่างมานั่งปัดฝุ่น update feature บางอย่างไปพอสมควร ตามคำเรียกร้องของผู้ใช้ให้ปรับปรุงมานานหลายปีแล้ว จนกระทั่งตอนมานั่งแก้ไขโปรแกรม ลืม syntax ของ VB หลายๆอย่างต้องมานั่งนึกอยู่นานเหมือนกัน
  • รูปแบบข้อมูลโปรแกรม XSection Plot ที่จะใช้เก็บข้อมูลรูปตัดจริงๆ (หลังจาก import ข้อมูลจาก text file ด้านนอก)  ผมไม่ได้ใช้ฐานข้อมูลใดๆ ใช้เป็นไฟล์ไบนารีธรรมดา ข้อมูลที่จะจัดเก็บมีอยู่สองประเภทคือ ข้อมูล Typical Section มีนามสกุลเป็น XST และอีกอย่างก็คือข้อมูล Existing ground section หรือผมเรียกสั้นๆว่า Ground Section มีนามสกุลเป็น XSG
แสดงโปรแกรมช่วยเขียนแบบรูปตัดตามขาาง XSection Plot
  • รูปข้างล่างแสดงแผนที่รูปตัดที่ได้จากโปรแกรม ซึ่งสามารถ export เป็น Autocad DXF ได้
Autocad แสดงแผนที่รูปตัดตามขวางที่ได้จาก XSection Plot

Cross Section & Profile

  • ที่จริงแล้วเรื่อง Cross section และ Profile จะเป็นวิชาของงานสำรวจ อยู่ในเรื่อง Earth Work (งานดิน) งานที่เกี่ยวข้องกับ route เช่นถนน ท่อ หรือร่องน้ำเดินเรือเป็นต้น เมื่อพูดถึงแผนที่แล้วคงหนีแผนที่รูปตัดตามขวางและรูปตัดตามยาวไม่พ้น สองแผนที่นี้ให้ภาพในแนวขวางกับ alignment และแนวตามยาวไปตามแนว alignment เมืื่อรวมกับแปลน (plan) แล้วทำให้คนดูแผนที่เกิดจินตภาพเป็นสามมิติ
ตัวอย่างมุมมองต่อแผนที่รูปตัดตามขวางและตามยาว
  • คนที่ทำงานฟิลด์ ด้าน CAD/Civil/Survey ไม่ว่าจะเป็น Civil 3D, Autodesk Land Desktop, Geopak, Terramodel หรือพวก Carlson Survey CAD หรืออะไรประมาณนี้คงคุ้นกันดีเมื่อฟอร์ม point ที่ได้จากงานสำรวจในสนาม บางโปรแกรมเรียกว่าสร้าง surface หรือสร้าง DTM ก็ได้ จะมีฟังก์ชั่นเขียนรูปตัดตามขวางหรือตามยาว โดยต้องมีเส้น alignment เพื่อเป็นแนวที่จะใช้ตัดก่อน ผมจะแสดงตัวอย่างโดยใช้ Terramodel ที่ทีมงานผมใช้ประจำ

Terramodel

Terramodel แสดง DTM
  • รูปด้านบนแสดง contour ที่ได้จาก DTM (เป็นแผนที่ที่เรียกว่า Bathymetric Map) จะเห็นจุดๆเป็นแนวๆเลื้อยๆ คือเป็นจุดที่ได้จากงานทำ Hydrographic survey พื้นที่บริเวณนี้ design ไว้เป็นท่าเทียบเรือในทะเล ซึ่งความลึกไม่ได้ต้องมีการขุดลอกร่องน้ำเข้ามา จะเห็นเส้นสีน้ำเงินเข้มเป็นรูปแบบร่องน้ำที่ออกแบบไว้แล้ว ลองดูอีกรูปที่ได้จาก 3D เป็นการรวม DTM พื้นดินเดิมและ รูปร่องน้ำที่ออกแบบไว้
แสดงภาพ 3D จากโปรแกรม Terramodel

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

  • โปรแกรม XSection Plot สามารถดาวน์โหลดมาใช้งานได้ฟรี แต่มีข้อเสียคือผมไม่ได้ทำคู่มือไว้ แต่ไม่เป็นไรเนื่องจากใช้งานไม่ยาก ดาวน์โหลดได้ที่นี่ XSectionPlotSetup.zip
  • เมื่อดาวน์โหลดแล้วเริ่มทำการติดตั้ง ซึ่งการติดตั้งก็ทำได้ง่ายๆเพียงคลิกไม่กี่ครั้ง เมื่อติดตั้งเสร็จพร้อมก็รันโปรแกรมได้เลย ขอบอกนิดหนึ่งว่าโปรแกรมจะถูกติดตั้งตามค่าปริยายคือที่โฟลเดอร์ c:\program files\survey suite\xsection plot ลองใช้ windows explorer เข้าไปจะเห็นโฟลเดอร์ “format-examples” ที่เก็บรูปแบบที่สามารถนำไป import เข้าโปรแกรม XSection Plot ได้ และอีกโฟลเดอร์คือ “Examples” ซึ่งในการแนะนำโปรแกรมผมจะใช้ตัวอย่างที่อยู่ในโฟลเดอร์นี้เป็นหลัก
แสดงโฟลเดอร์ที่ติดตั้งโปรแกรม

องค์ประกอบของโปรแกรม XSection Plot

  • เมื่อรันโปรแกรมจะเห็นหน้าตา user interface ของโปรแกรมดูแล้วเรียบง่าย มี toolbarอยู่ด้านบน ด้านล่างเป็นตารางข้อมูล ซึ่งแยกได้เป็นสอง sheet คือ Typical section และ Existing ground section (Ground Section) ก่อนจะไปวิธีใช้งานผมขอขยายความอีกนิดว่า Typical Section หรือเรียกเต็มๆว่า Typical Cross Section เป็นรูปตัดทั่วๆไป ต่อไปมาดูส่วนประกอบของโปรแกรมกันก่อน

Main Toolbar

  • มาดู toolbar เริ่มจากซ้ายไปขวาจะเห็นคำสั่งค่อนข้างต่อเนื่องกัน เริ่มตั้งแต่สร้างไฟล์ใหม่ ไปจนถึงจัดเก็บแผนที่เป็น Autocad DXF เป็นอันเสร็จงาน ดูรูปด้านล่าง
แสดง toolbar ของ XSection Plot

ตารางข้อมูล (Typical Section & Existing ground section)

  • พูดถึงว่าเป็นตารางข้อมูล ดูเหมือนว่าต้องป้อนข้อมูล แต่จริงๆแล้วสามารถ import จาก text file ได้ไม่ยากนัก ตารางข้อมูลจะแบ่งตามจำนวนรูปตัด แต่ละรูปตัดจะมีชื่อ Section หรือ Station ถัดลงมาสองบรรทัดเป็นตัวเลขค่าพิกัดของแต่ละรูปตัด ประมาณว่าจุด 0,0 อยู่ที่ด้านล่างซ้ายของกระดาษ ถัดลงไปสองบรรทัดเป็นส่วนสำคัญของรูปตัดคือ ค่าระดับและระยะ offset
แสดงส่วนประกอบของตารางข้อมูล

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

การ import ข้อมูลรูปตัด

  • เมื่อเปิดโปรแกรมมาครั้งแรกตารางข้อมูลด้าน Typical Section และ Ground Section จะว่างยังไม่มีข้อมูล ผมจะลอง import ข้อมูลจาก text file โดยจะ browse ไปโฟลเดอร์ที่เก็บตัวอย่างไว้ ฟอร์แม็ตข้อมูลที่โปรแกรมสนับสนุนมีAERIAL SERVICES KORK
    ADOT SERIF
    CIVILCAD ASCII X-SEC
    COOPER ENG
    DEGINETIC
    GEODIMETER
    HYDRONAV
    ILLINOIS D.O.T.
    INTRA
    IOWA D.O.T.
    JONES & DEMILLE
    KBM
    MARKHURD
    MMSTEST
    MOSS
    MOSSGENIO
    NORTH DAKOTA D.O.T. DIGINETIC
    RAGAN SMITH
    RDS
    ROADCALC.ITF
    STATION-OFFSET(STA,O/S,ELEV)
    WILD CIP GRID
    WSPRO
    TERRAMODEL ROAD (4 decimal)
    TERRAMODEL ROAD (3 decimal)
Import ไฟล์รูปตัดรูปแบบ Terramodel (ทศนิยม 4 ตำแหน่ง)
  • จากรูปด้านบนเลือกไฟล์ที่โฟลเดอร์ที่ผมกล่าวไปแล้วคือ “c:\program files\survey suite\xsection plot\examples\kohkong” จะมีสอง text file ให้คลิกเลือก “KohKong Ground – Channel Cross section 700 to 3700.txt” เป็นไฟล์เก็บรูปตัดของดินเดิม ดูรูปด้านล่าง
เปรียบเทียบไฟล์ที่เลือกกับรูปแบบรูปตัดของจริง

การเลือกรูปตัดจากไฟล์

  • เมื่อผู้ใช้เลือกไฟล์ที่จะ import โปรแกรมจะเปรียบเทียบฟอร์แม็ตว่าเป็นไปตามที่กำหนดไว้หรือไม่ ถ้าใช่จะเห็นลิสต์ของรูปตัดขึ้นมาที่ช่องด้านบนดังรูปด้านล่าง
เลือกรูปตัดที่ต้องการเพื่อคัดลอกลงตารางข้อมูล
  • ดูตารางข้อมูลดินเดิม (Exist ground section) ด้านล่างจะเห็นข้อมูลที่ import เข้ามาในตารางเป็นที่เรียบร้อย
แสดงข้อมูลดินเดิมที่ import เข้ามา
  • ต่อไปจะ import ข้อมูลรูปตัดแต่เป็น Typical section ที่ toolbar คลิกที่เดิมคือ Import file เลือกไฟล์ “KohKong Typical – Channel Cross section 700 to 3700.txt” ที่หน้าเลือกรูปตัดให้คลิกที่ คัดลอกข้อมูลไปยัง Typical Section
การนำเข้าข้อมูล typical section
  • ตอนนี้เราจะได้ข้อมูลรูปตัดที่อยู่ในตาราง Typical Section และ Ground Section เป็นที่เรียบร้อย ตอนหน้ามาว่ากันเรื่องจัดหน้ากระดาษ และการวาง lay out ของรูปตัดบนกระดาษเขียนแบบ