ค้นหาข้อมูลในบล็อก (Search in this blog)

Wednesday, November 10, 2010

Monday, October 18, 2010

แหล่งเรียนรู้เรื่อง พีชคณิตเชิงเส้น (Linear Algebra)

ขอหยุดเรื่อง Python ไว้สักพัก เพราะมีเรื่องกวนใจให้อยากรู้บางเรื่อง นั่นคือ การแปลงแบบ Wavelet หรือ Wavelet transformation ซึ่งผมสนใจประยุกต์ใช้ในการทำ Pan-sharpening สำหรับภาพดาวเทียมธีออส ค้นไปค้นมาดันไปเกี่ยวกับพีชคณิตเชิงเส้น (Linear Algebra) ซะได้ เลยต้องบันทึกไว้สักหน่อยว่ามีเว็บไชต์ที่น่าสนใจเกี่ยวกับพีชคณิตเชิงเส้น ได้แก่

  • เครื่องมือช่วยคำนวณและขั้นตอนการทำงาน เช่น การทำ row echelon, การคำนวณ Identity matrix ด้วยวิธี reduced row echelon หรือ การแก้ปัญหาระบบสมการเชิงเส้น เป็นต้น
  • แหล่งเรียนรู้เรื่อง Linear algebra
  • แหล่งเรียนรู้เรื่อง Linear algebra (Mathworld)

Tuesday, September 28, 2010

งูงู ปลาปลากับไพธอน ตอนที่ 1 Number & String เบื้องต้นในภาษา python

จากหนังสือ Learning Python: Help for Programmers ของ Mark Lutz และ David Asher ที่พูดถึง Built-in Object type เบื้องต้นในภาษาไพธอน (Python) ได้แก่ Numbers, Strings, Lists, Dictionaries, Tuples และ Files นั้น ผมพอจะสรุปได้ดังนี้ครับ
1. Numbers
Numbers ในภาษาไพธอนนั้นจำแนกออกเป็น 5 กลุ่มหลักคือ
  • Integer (int) เช่น 12345 หรือ 123456789 เป็นต้น
  • Floating (float) เช่น 1.2345 หรือ 123.456 เป็นต้น
  • Long integer (long) เช่น 9999999L (unlimited size) เป็นต้น
  • Complex number (complex) จะประกอบด้วย real-part + imagery-part เช่น 3j หรือ 1.2j+3.4j เป็นต้น
  • Octal ({ฐาน 8) or Hex (ฐาน 16) ใช้สำหรับระบุตัวเลขที่ต้องขึ้นต้นด้วย 0 (ศูนย์) สำหรับ Hex นั้นจำเป็นต้องขึ้นต้นด้วย 0x หรือ 0X เท่านั้น ไม่สามารถใช้เลขฐานสิบได้ ตัวอย่างของOctal/Hex เช่น 0x9ff เป็นต้น
ตัวอย่างการประมวลผลข้อมูล Numbers มีดังนี้
  • การบวก การลบ การคูณและการหาร เช่น x+y, x-y, x*y และ 3/2.0 เป็นต้น
  • การเปลี่ยนเครื่องหมาย เช่น +x หรือ -x เป็นต้น
  • การยกกำลัง เช่น x**y หรือ pow(x, y) เป็นต้น
  • ในภาษาไพธอนนั้นมีการใช้กฏการมีลำดับที่เหนือกว่า (Precedence rule) สำหรับการใช้ตัวดำเนินการแบบผสม เช่น a+b*c การคำนวณจะเริ่มจากการนำค่าของตัวแปร b คูณกับค่าของตัวแปร c ก่อนแล้วจึงนำมาบวกกับค่าของตัวแปร a เป็นต้น
2. Strings
อักขระ (Strings) นั้นคือตัวอักษรหรือตัวเลขที่อยู่ในเครื่องหมาย single qoute ('.....') หรือ Double qoute (".....") เช่น 'Sawarin' หรือ 'My name is Sawarin' หรือ "Sawarin's book" เป็นต้น

การประมวลผล String ที่ใช้งานแพร่หลายแบ่งออกเป็น 2 ประเภทหลักคือ
  • Indexing เป็นการอ้างถึงตำแหน่งของอักขระในแต่ข้อความจากตำแหน่งเริ่มต้น (0) ไปจนถึงตำแหน่งสุดท้ายของข้อความ ในภาษาไพธอนนั้นสามารถอ้างอิงตำแหน่งจากส่วนท้ายของข้อความได้โดยเริ่มจากตำแหน่งที่ -1 เช่น
>>> myname = 'Sawarin'
>>> myname[0]
'S'
>>> myname[-3]
'r'
  • Slicing เป็นการตัดส่วนของข้อความที่ต้องการโดยการระบุตำแหน่งของอักขระที่ต้องการภายในเครื่องหมาย [....] เช่น myname[0:1] จะหมายถึง เลือกเฉพาะอักขระลำดับที่ 0 ถึง 1 (แต่ไม่รวม 1) จะได้ 'S' หรือ myname[4:] จะหมายถึง เลือกเฉพาะอักขระลำดับที่ 1 ถึงอักขระตำแหน่งสุดท้าย จะได้ 'rin' หรือ myname[:-1] จะหมายถึง เลือกเฉพาะอักขระลำดับที่ -1 จากท้ายข้อความจนถึงอักขระตำแหน่งเริ่มต้น (ตำแหน่งที่ 0) จะได้ 'Sawari' หรือ owner = "Sawarin's book" แล้ว owner[:-5] จะได้ "Sawarin's" เป็นต้น
เพื่อความเข้าใจของลำดับของอักขระในข้อความสามารถดูเพิ่มเติมได้จากภาพที่ 1 ดังนี้
ภาพที่ 1 ตัวอย่างลำดับของอักขระในข้อความ


Friday, September 3, 2010

gdalinfo แบบไม่ต้องแสดง RasterAttributeTable (ROT)

เคยใช้ GDALINFO แล้วต้องเจอปัญหากับการแสดง RasterAttributeTable (ROT) ทำให้ไม่สามารถดูข้อมูลที่ต้องการ (ที่อยู่ตอนบนของการแสดงผลลัพธ์) วันนี้มีวิธีบอกให้ GDALINFO ไม่ต้องแสดง ROT ที่ยาวมากๆ ดังนี้

>>gdalinfo -norat ABC.tif

Friday, August 20, 2010

ค่าละตูจิจูดและลองจิจูด ควรมีความละเอียดเท่าไหร่?

ไปเจอเว็บไซต์ที่น่าสนใจเกี่ยวกับการคำนวณความละเอียดของค่าละติจูดและลองจิจูด ว่ามีความไม่แน่นอนเท่าใดเมื่อเทียบหน่วยเมตริก (หรือระบบ UTM)
จากที่เราทราบ การกำหนดพิกัดของระบบพิกัดภูมิศาสตร์นั้นจะอาศัยการวัดเชิงมุุม โดยขนาดและรูปร่างของโลกนั้นจะขึ้นอยู่กับแต่ละพื้นหลักฐาน (Datum) ที่เราเลือกใช้
คำถามคือถ้าเราต้องบอกค่าพิกัดด้วยระบบพิกัดภูมิศาสตร์ เราควรจะให้ความละเอียดเท่าไหร่ดี ??? (จำนวนจุดทศนิยม) เช่น ผมอยู่ที่พิกัด 98.98, 18.79 หรือ 98.980581, 18.799626 เป็นต้น จะเห็นได้ว่าทั้งสองจุดนี้มีความละเอียดไม่เท่ากันคือ จำนวนทศนิยมแค่ 2 หลักและจำนวนทศนิยม 6 หลัก เรามาลองคำนวณกันได้ ที่นี่ เลยครับ
จากตัวอย่างการคำนวณจะเห็นว่าถ้าผมบอกพิกัดแค่ 98.98, 18.79 จะทำให้มีความไม่แน่นอน (คล้ายๆไม่ค่อยมั่นใจ) สูงถึง 1528.60 เมตร (ความไม่แน่นอนจะขึ้นอยู่กับความละเอียดของจุดทศนิยมและระยะที่ห่างจากเส้นศูนย์สูตร)และหากผมใช้ค่า 98.980581, 18.799626 แล้วจะมีความไม่แน่นอนเพียง 0.15 เมตร
จากตัวอย่างจะเห็นว่าการบอกค่าพิกัดที่ความละเอียดของจุดทศนิยมที่แตกต่างกันนั้นจะทำให้การกำหนดตำแหน่งของเรามีความไม่นอนที่แตกต่างกันด้วย ดังนั้นหากจะระบุค่าตำแหน่งด้วยพิกัดภูมิศาสตร์ก็ลองคำนวณดูคร่าวๆได้นะครับว่าตำแหน่งของเรานั้นจะคลาดเคลื่อนไปเท่าใด (อย่าลืมอีกปัจจัยสำคัญคือ ระยะห่างจากเส้นศูนย์สูตรนะครับ ยิ่งห่างความไม่แน่นอนยิ่งน้อย) อ้อ... อีกอย่างนึงครับ เมื่อคำนวณความไม่แน่นอนแล้วลองคลิกที่ Open in coordinate converter ทางเว็บไซต์จะคำนวณค่าพิกัดในระบบ UTM ให้ด้วย หลังจากนั้นจะปรากฏของเล่นอีกมากมายเช่น เรียกดูผ่าน Google Maps หรือ Google Maps mashup เป็นต้น

ปล. การคำนวณจะใช้พื้นหลักฐาน WGS1984 นะครับ

Wednesday, August 4, 2010

วิธีใช้ RasterCalc ใน QGIS

ไม่นานมานี้มีเพื่อนๆบางคนเจอปัญหาไม่สามารถใช้งาน RasterCalc ที่เป็น Plugins ตัวนึงใน QGIS วันนี้เลยไปค้นหาวิธีแก้ไขมาดังนี้ครับ
  1. ดาวน์โหลด pyparsing จาก ที่นี่
  2. แตกไฟล์ออกมา (ของผมเก็บไว้ที่ C:\Program Files\Quantum GIS Tethys\python\pyparsing-1.5.2)
  3. คัดลอกไฟล์ pyparsing.py และ pyparsing_py3.py ไปเก็บไว้ที่ C:\Program Files\Quantum GIS Tethys\apps\Python25\Lib
  4. เรียก Plugins ที่ชื่อ RasterCalc ขึ้นมาใช้งาน

Tuesday, August 3, 2010

QGIS 1.5 แจ่มมาก.....

ได้ทราบข่าวจาก พี่วิโรจน์ ว่า Quantum GIS เพิ่งออกเวอร์ชันใหม่ เลยไปหามาลองใช้งาน ปรากฏว่า มีหลายเมนูน่าใช้มากๆๆ เช่น การแปลงระบบพิกัด การสร้างเส้นชั้นความสูงหรือการสร้างชั้นพีรามิดข้อมูลภาพ เป็นต้น ซึ่งการออกมาของเวอร์ชันนี้จะช่วยให้ผู้ใช้งานไม่ต้องสั่ง GDAL ทำงานผ่าน Cmmand line (คนรุ่นใหม่อาจจะไม่คุนเคย) โดยสามารถทำงานในลักษณะเดียวกันได้ผ่านทาง GUI ของโปรแกรม QGIS 1.5 (Tethys) สำหรับผู้ที่ต้องการดาวน์โหลดโปรแกรมสามารถคลิกได้ ทีนี่ เลยครับ
ส่วนผู้ที่ไม่คุ้นเคยกับ GDAL ผมขออธิบายเกี่ยวกับ GDAL เบื้องต้นดังนี้ครับGDAL ย่อมาจาก Geospatial Data Abstraction Library เป็นคลังโปรแกรม (Library) ที่ได้มีประสิทธิภาพและได้รับความนิยมอย่างสูงสำหรับการประมวลผล ข้อมูลภาพและข้อมูลกริด (บางท่านอาจเรียกว่าข้อมูลแรสเตอร์) และข้อมูลข้อมูลเวคเตอร์ สำหรับงานด้านงานภูมิสารสนเทศ (GeoInformatics) รายละเอียดเพิ่มเติมสามารถศึกษาเพิ่มเติมได้ที่เว็บไซต์ทางการ ที่นี่ ครับ

ตัวอย่างการใช้งาน GDAL ผ่านโปรแกรม QGIS 1.5 (Tethys) มีดังนี้ครับ
  1. การสร้างไฟล์เสมือน (gdalbuildvrt) #### QGIS --> Raster --> Build Virtual Raster (catalog)
  2. การสร้างเส้นชั้นความสูงจากข้อมูล (gdal_contour) #### QGIS --> Raster--> Contour
  3. การโมเสคข้อมูลข้อมูล (gdal_merge) #### QGIS --> Raster--> Merge
  4. การแปลงระบบพิกัดข้อมูล (gdalwarp) #### QGIS --> Raster--> Warp
  5. การประมาณค่าในช่วง หรือการทำ Interpolation (gdal_grid) #### QGIS --> Raster--> Grid
  6. การแปลงรูปแบบ/การตัด/การบีบอัดข้อมูล (gdal_translate) #### QGIS --> Raster--> Translate
  7. การเรียกดูข้อมูลหรือดู Header ข้อมูล (gdalinfo) #### QGIS --> Raster--> Information
  8. การกำหนดระบบอ้างอิงทางตำแหน่ง (gdalwarp) #### QGIS --> Raster--> Assign projection
  9. การสร้างชั้นพีรามิดข้อมูลภาพ (gdaladdo) #### QGIS --> Raster--> Buildoverviews
  10. การวิเคราะห์ข้อมูลแบบจำลองระดับสูงเชิงเลข (gdaldem) #### QGIS --> Plugins --> Raster based terrain analysis

Sunday, July 18, 2010

shp2pgsql กับปัญหาของ Data type

เมื่ออาทิตย์ที่ผ่านมาได้มีโอกาสไปสอนน้องๆที่ มหาวิยาลัยนเรศวร พะเยา ใช้งานโปรแกรม PostgreSQL/PostGIS ซึ่งเป็นส่วนหนึ่งสำหรับสร้างการ Web Map Service ด้วย FOSS.
ปัญหาที่พบคือเมื่อใช้ shp2pgsql แล้วไม่สามารถนำไฟล์ SQL ไปสร้างฐานข้อมูลได้ โดยในขั้นตอนการแปลงจาก Shapefile ให้เป็น SQL ไฟล์ก็ไม่มีปัญหาอะไร แต่ที่น่าสังเกตคือ ผมลองใช้ SPIT ใน QGIS ก็ไม่สามารถทำงานได้เช่นกัน ทำให้ต้องมาลองดูวิธีที่พื้นฐานสุดๆอย่างการใช้เจ้า shp2pgsql
ข้อสังเกตที่พบคือ "Data type ใน SQL ไฟล์ไม่สอดคล้องกับข้อมูล" กล่าวคือ ข้อมูลอรรถาธิบาย หรือ Attribute ของ Shapefile นั้นมีความยาวมากกว่าที่เจ้า shp2pgsql กำหนดให้ซึ่งเมื่อดูใน SQL ไฟล์พบว่าเจ้า shp2pgsql กำหนดให้เป็น varchar (50) และเมื่อผมเปลี่ยนให้เป็น varchar (255) แล้วก็สามารถทำงานได้ตามปกติครับ (แต่ผมก็ยัง งง งง ว่าทำไมตอนผมทดลองกับเครื่องของผมเองก่อนการเรียนการสอนนั้นไม่เจอปัญหานี้ ทั้งๆที่การใช้คำสั่งสำหรับ shp2pgsql ก็เหมือนกันทุกอย่าง)

Wednesday, July 14, 2010

ทดสอบ GDAL Python Bindings

หลังจากติดตั้ง GDAL-x.x.x.win32-pyx.x.exe และ Extract GDAL package ไว้ที่ C:\ แล้วให้ทำการกำหนด path และ gdal_data ใน user env ดังนี้

PATH=C:\gdalwin32-1.6\bin
GDAL_DATA=C:\gdalwin32-1.6\data

ทดสอบการใช้งาน
>>> from osgeo import gdal
>>> from osgeo import ogr
>>> from osgeo import osr
>>> from osgeo import gdal_array
>>> from osgeo import gdalconst
หรือ
>>> from osgeo import gdal,ogr,gdal_array, gdalconst

หากพบปัญหาอื่นๆ สามารถดูเพิ่มเติมได้ที่ http://trac.osgeo.org/gdal/ticket/2688

Thursday, July 1, 2010

การสร้างภาพสีผสม (Color composition) ด้วย GDAL (ของฟรีและดีก็มีในโลก)

วันนี้ขอเสนอวิธีการสร้างภาพสีผสม (Color composition) ด้วยคลังโปรแกรม GDAL โดยข้อมูลที่ใช้ผมได้ทดลองนั้นมีรูปแบบข้อมูลคือ GeoTiff นะครับ (.tif) การทำงานนั้นแบ่งออกเป็น 2 ส่วนคือการสร้าง VRT ไฟล์และการแปลง VRT ให้เป็นไฟล์ภาพ

ตัวอย่างการทำงานมีดังนี้ครับ
1. การสร้าง VRT ไฟล์ด้วย gdalbuildvrt
>>gdalbuildvrt -separate 123.vrt band1.tif band2.tif band3.tif

2. การแปลง VRT ให้เป็นไฟล์ภาพ
>>gdal_translate -of GTiff b1b2b3.vrt b1b2b3.tif

ปล. สำหรับข้อมูลแบบ TIFF นั้น ช่วงคลื่นแรกที่ระบุจะเรียงตามแม่สีคือ แดง เขียว น้ำเงิน ตามลำดับ

Thursday, June 24, 2010

หนังสือ การรังวัดด้วยภาพดิจิทัล (Digital Photogrammetry) มีเผยแพร่แล้วครับ...

หลังจากรอมานาน วันนี้ได้รับหนังสือ การรังวัดด้วยภาพดิจิทัล (Digital Photogrammetry) ซึ่งอาจถือได้ว่าเป็นตำราที่ดีและน่าาสนใจสำหรับการเรียนการสอนและการทำวิจัยด้านการรังวัดด้วยภาพ (Photogrammetry) หากท่านใดสนใจ สามารถติดต่อได้ที่ศูนย์หนังสือจุฬาฯ ครับ

Tuesday, June 1, 2010

เพิ่มเติมส่วนเนื้อหาเกี่ยวข้องกับแหล่งข้อมูลและการให้บริการฟรีผ่านอินเตอร์เน็ต (Free GeoSpatial Data and Services)

วันนี้ผมขอเพิ่มเนื้อหาของ Blog ที่เกี่ยวข้องกับแหล่งข้อมูลและการให้บริการฟรีผ่านอินเตอร์เน็ตที่เกี่ยวข้องกับงานภูมิสารสนเทศ ไม่ว่าจะเป็น แหล่งข้อมูลภาพดาวเทียม LANDSAT แบบจำลองระดับสูงเชิงเลขฟรีเกือบทั่วโลก (SRTM และ ASTER GDEM) รวมถึงการแปลงค่าพิกัดและการคำนวณค่า Geoid undulation (N) ผ่านอินเตอร์เน็ต ซึ่งผมคิดว่าน่าจะเป็นประโยชน์สำหรับการทำงานและการทำวิจัยด้านภูมิสารสนเทศของคนไทย หากท่านใดมีแหล่งข้อมููลอื่นที่เป็นประโยชน์โปรดแจ้งให้ผมทราบเพื่อที่จะได้รวบรวมและแบ่งปันให้นิสิต นักศึกษาและนักวิจัยที่สนใจต่อไปครับ


ขอขอบคุณ ผศ.ดร.ไพศาล สันติธรรมนนท์ที่ได้แนะนำแหล่งข้อมูลที่เป็นประโยชน์ครับ

Tuesday, May 11, 2010

การแปลงค่าพิกัดอย่างง่ายด้วย gdaltransform (ของฟรีและดีก็มีในโลก)

วันนี้ขอนำเสนอวิธีการแปลงค่าพิกัด อย่างง่ายและรวดเร็ว ด้วยคลังโปรแกรม GDAL (ของฟรีและดีก็มีในโลก อีกแล้ว) ที่ชื่อว่า gdaltransform เรามาดูตัวอย่างการใช้งานกันเลยนะครับ ก่อนอื่นเราต้องระบุระบบอ้างอิงทางตำแหน่ง (Spatial Reference System - SRS) ของข้อมูลที่จะป้อนเขาไปและระบบพิกัดที่ต้องการ เช่น ข้อมูลที่ผมจะพิมพ์เข้าไปเป็นค่าระบบพิกัดภูมิศาสตร์ (epsg:4326) หรือค่า ลองจิจูด (Longitude) และ ละติจูด (Latitude) ตามลำดับนะครับ และผมค่าพิกัดที่ผมต้องการคือค่า Easting และ Northing (ตามลำดับเหมือนกัน)ของระบบ UTM WGS1984 Zone 47 (epsg:32647) การทำงานก็สามารถใช้คำสั่งได้ดังนี้ครับ
1. พิมพ์คำลั่ง >>gdaltransform s_srs epsg:4326 -t_srs epsg:32647
2. เมื่อพิมพ์คำสั่งดังกล่าวให้กด Enter ได้เลยครับ
3. หลังจากนั้นบนหน้าต่าง Command Prompt จะขึ้นบรรทัดใหม่ ให้เราป้อนค่า พิกัดที่ต้องการแปลงได้เลย (ต้องเว้นวรรคค่่าพิกัดด้วย space นะครับ) เช่น 100.1234 10.1234 เป็นต้น
4. หลังจากนั้นให้กด Enter อีกที โปรแกรมจะทำการคำนวณแล้วส่งผลลัพธ์ออกมาให้ เช่น 623080.306626492 1119268.1869116 เป็นต้น
5. หากต้องการแปลงค่าพิกัดอื่นๆอีกก็สามารถใช้วิธีการเดิมได้อีก (ตั้งแต่ข้อ 3 เป็นต้นไป) หรือหากต้องการออกจากโปรแกรมก็ให่กด Ctrl + C ครับ

Friday, May 7, 2010

gdalbuildvrt (ของฟรีและดีก็มีในโลก)

gdalbuildvrt นั้นจะใช้สำหรับสร้างไฟล์ VRT (ViRtual DaTaset) ซึ่งเป็นไฟล์ภาพเสมือนที่เกิดจากไฟล์ภาพย่อยๆหลายๆไฟล์มาต่อกัน หรือการจำลองไฟล์ที่โมเสคแล้ว ตัวอย่าง เช่น ผมมีแบบจำลองระดับสูงเชิงเลข SRTM (SRTM DEM) ที่ครอบคลุมประเทศไทยทั้งหมดจำนวน 10 ระวาง หากผมต้องการเปิดไฟล์ทั้งหมดในโปรแกรมใดๆก็ตาม ผมต้องทำการเปิดที่ละไฟล์ทั้งหมด 10 ครั้ง การใช้ VRT ไฟล์จะช่วยแก้ปัญหาในขั้นตอนนี้ครับ
วิธีการสร้างไฟล์ VRT สามารถทำได้โดยการใช้โปรแกรมประยุกต์ gdalbuildvrt ที่มีในคลังโปรแกรม GDAL/OGR ตัวอย่างการใช้มีดังนี้ครับ

>>gdalbuildvrt output.vrt *.tif

โดยไฟล์ VRT นั้นจะสามารถเปิดได้ด้วยโปรแกรม QGIS หรือ OpenEV ก็ได้ครับ

Saturday, April 24, 2010

การแปลงค่าพิกัดข้อมูลแบบจุด (SHP2CSV) ด้วย OGR

หลังจากลองผิดลองถูกมาหลายครั้งกับ OGR ผมก็ยังไม่เจอแนวทางที่ต้องการสำหรับการแปลงพิกัดข้อมูลแบบจุด (CSV2CSV) ท่านใดทราบช่วยแนะนำหน่อยนะครับ แต่ถึงไม่สามารถาวิธีทำงานได้อย่างที่ต้องการ แต่ผมก็ค้นพบวิธีการที่พอกล้อมแกล้มไปได้โดยการใช้เจ้า OGR นี่แหละครับ วิธีการนั้นซับซ้อนนิดหน่อย โดยต้องทำการแปลงค่าพิกัดของจุดต่างๆให้อยู่ในรูปของ SHP ก่อนด้วยโปรแกรม QGIS (มีใน Blog นี้แหละครับ ลองหาดู!!!) แล้วจึงใช้ OGR แปลงค่าพิกัดของจุดเหล่านั้นให้อยู่ในูปของไฟล์ CSV ด้วยคำสั่งดังนี้

>>ogr2ogr -s_srs epsg:32647 -t_srs epsg:4326 -f CSV en.csv point.shp -lco GEOMETRY=AS_XY

โดยในไฟล์ CSV จะมีคอลัมน์ใหม่ชื่อ X และ Y ที่เป็นค่าในระบบพิกัดภูมิศาสตร์ (4326)

Wednesday, February 10, 2010

ไฟล์ KML อ่านภาษาไทยไม่ได้

วันนี้ขอเสนอ วิธีการแก้ไข เกี่ยวกับการแสดงภาษาไทยของไฟล์ KML (เวลาเปิดกับ Google Earth) ดังนี้ครับ
1. เปิดไฟล์ที่มีปัญหาด้วยโปรแกรม QGIS (ถ้ายังไม่มีก็สามารถดาวน์โหลดได้ ที่นี่ ครับ)
2. แปลงนั้นออกมาเป็น ESRI Shapefile ที่มีการเข้ารหัส (Encoding) เป็น UTF-8
3. ใช้ ogr2ogr แปลง ESRI Shapefile ให้เป็น KML

Monday, February 1, 2010

การเลือกชั้นข้อมูลที่ต้องการด้วย LasTools

วัันี้ขอนำเสนอวิธีการเลือกชั้นข้อมูลที่ต้องการออกจากข้อมูล Las File ตัวอย่างเรามีข้อมูลไรดาห์ในรูปแบบ Las File ในข้อมูลนี้มีการจำแนกข้อมูลแล้วไว้หลายชั้นข้อมูล เช่น Unclassified (1) หรือ Ground (2) เป็นต้น

วิธีการดูว่าข้อมูลเรามีจำแนกชั้นข้อมูลหรือยังและแต่ละชั้นมีรัหสอะไร ให้โปรแกรม lasinfo ดังตัวอย่าง
>>lasinfo -i aaa.las

ส่วนวิธีการแยกข้อมูลที่ต้องการออกมาให้โปรแกรม las2las ดังตัวอย่างดังนี้ครับ

>>las2las -i aaa.las -keep_class 2 -o bbb.las

จากตัวอย่างผมทำการเก็บคลาสข้อมูลพื้นดิน (Ground) ไว้เพื่อต้องการทำ DEM จากข้อมูลไรดาห์ส่วนคลาสอื่นๆนั้นผมไม่สนใจ (ลบทิ้งได้เลย)

Monday, January 11, 2010

การสร้าง Polygon จากข้อมูลจุดพิกัดด้วย QGIS

วันนี้ขอเสนอวิธีการสร้างข้อมูล Polygon จากข้อมูลจุด (Point) ที่อยู่ในรูปของ text file หรือข้อมูล CSV
กอ่นอื่นเราต้องเตรียมข้อมูลพิกัดจุด (Lat/Long หรือ E, N) ซึ่งอาจอยู่ในรูป CSV เช่น
x, y
755359.337, 1429096.185
777359.337, 1429096.186
777359.337, 1407096.186
755359.337, 1407096.185

หลังจากนั้นเราจะทำการแปลงข้อมูลจากอักขระ (Text) ให้เป็นข้อมูล Shapefile แบบจุด (Point) ด้วย PlugIn ที่ชื่อ Delimited Text ใน QGIS โดยทำการเลือกข้อมูล text file แล้วแปลงให้เป็น ESRI Shapefile ดังภาพตัวอย่าง
หลังจากได้ข้อมูลจุดในรูปของ ESRI Shapefile แล้วขั้นตอนถัดมาคือการแปลงข้อมูลแบบจุดให้เป็นข้อมูล Polygon โดยการใช้ฟังก์ชัน Convex Hull ที่อยู่ในเมนู Tools --> Geoprocessing Tools ดังภาพ

วิธีการนี้มีข้อจำกัดหลายประการ เช่น
1. ใช้ได้เฉพาะข้อมูล Polygon ที่ไม่ซับซ้อน อาทิ รูปสี่เหลี่ยมมุมฉาก สี่เหลี่ยมผืนผ้าหรือสามเหลี่ยม เป็นต้น
2. ไม่สามารถใช้ได้กับ Polygon ที่มี Ring (ถ้านึกไม่ออกให้นึกถึงโดนัทนะครับ ที่มีรูตรงกลาง)
3. ถ้าข้อมูลมี node ที่ยื่นออกมาจากกลุ่มข้อมูลจะทำให้ Polygon ที่ได้ผิดไปจากความเป็นจริง (ไม่รู้จะอธิบายยังไงดี แฮะๆ)

ปล. เพื่อเพิ่มความเข้าใจโปรดศึกษาเรื่อง Convex Hull ละกันนะครับ

Tuesday, January 5, 2010

วิธีแก้ไขการใช้งาน GDAL ที่เกี่ยวข้องกับ Python

เมื่อวานเจอปัญหาการใช้งาน gdal_merge หรือ gdal_merge.py เลยอยากจะเก็บไว้เตือนความจำสักหน่อยว่า วิธีแก้ไขนั้นไม่ยาก เพียงแต่เพิ่ม Path ของ python ที่ FWtools ใช้งานให้ระบบ (Windows) รู้จักก็เรียบร้อยตัวอย่างของ Path มีดังนี้
C:\Python26 ### อันนี้คือ path ปกติของ python
C:\Program Files\FWTools2.4.6\python ### ส่วนอันนี้คือ Path ของ python ที่ FWtools ใช้งาน