<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2921358827821881589</id><updated>2012-02-16T16:16:05.980+07:00</updated><category term='Python'/><category term='Google Maps'/><category term='Filter'/><category term='OGR usage'/><category term='http://www.blogger.com/img/blank.gif'/><category term='gdal_merge'/><category term='Fundamental of Surveying and Mapping'/><category term='Fwtools'/><category term='FOSS'/><category term='Filtering'/><category term='Pansharpening'/><category term='CS2CS'/><category term='PostgreSQL/PostGIS'/><category term='GDAL usage'/><category term='wavelet'/><category term='gdalwarp'/><category term='Dos batch programming'/><category term='GDAL/OGR'/><category term='Introduction to Photogrammetry'/><title type='text'>SawarinO</title><subtitle type='html'>GeoInformatics, Remote Sensing, GIS, GDAL, and Free/Open Source Software (FOSS) for GeoInformatics.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5781568740478799248</id><published>2011-11-23T10:45:00.006+07:00</published><updated>2011-12-01T11:27:48.543+07:00</updated><title type='text'>เมื่อเริ่มเจอทางตันระหว่างทำงานวิจัย!!!</title><content type='html'>ผมเป็นคนหนึ่งที่มักเจอปัญหาระหว่างการทำงานวิจัย เช่น ไม่แน่ใจว่าวิธีการที่เรานำมาประยุกต์ใช้ในการทำงานจะสามารถแก้ไขปัญหาได้ ทดลองแก้ปัญหาด้วยเครื่องมือหรือวิธีการที่มีแล้วก็ยังไม่สามารถแก้ไขปัญหาได้หรือไม่รู้ว่าจะแก้ปัญหาอย่างไร เป็นต้น&lt;br /&gt;จากตัวอย่างของปัญหา (ทางตัน) ที่กล่าวมา ทำให้ผมต้องมานั่งทบทวนสาเหตุของปัญหาและวิธีการที่จะแก้ไข (เพราะไม่มีทางไปแล้ว ฮ่าๆๆ) ซึ่งก็ได้ตัวช่วยอย่างดีคือ หนังสือ &lt;span style="font-weight:bold;"&gt;"การคิดเชิงวิเคราะห์"&lt;/span&gt; ของ ศาสตราจารย์ ดร.เกรียงศักดิ์ เจริญวงศ์ศักดิ์ (แนะนำให้ซื้อมาอ่านอย่างละเอียดครับ และสามารถอ่านคร่าวๆได้ &lt;a href="http://www.stabundamrong.go.th/web/book/49/b21_49.pdf"&gt;ที่นี่&lt;/a&gt; ครับ) ผมขออนุญาตแนะนำแนวทางที่ผมใช้ได้ผลมาแล้ว ดังนี้ครับ&lt;br /&gt;การทำงานวิจัยต้องอาศัย 2 สิ่งที่สำคัญคือ "&lt;span style="font-weight:bold;"&gt;ความรู้&lt;/span&gt;" และ "&lt;span style="font-weight:bold;"&gt;ความเข้าใจ&lt;/span&gt;" สองคำนี้มีความสำคัญอย่างยิ่งครับ ผมขอยกตัวอย่างดังนี้ครับ เมื่อเจอปัญหาใดๆผมมักเริ่มต้นด้วยคำถามที่ว่า เรามีความรู้และความเข้าใจสำหรับการแก้ไขปัญหาแล้วหรือยัง ถ้ายังละก็ ต้องค้นหาเจ้าความรู้ก่อนเป็นอันดับแรกครับ วิธีการหาความรู้ทำได้หลายวิธีนะครับ เช่น การอ่านหนังสือ การค้นหาข้อมูลจากอินเตอร์เน็ต การสอบถามผู้เชี่ยวชาญ การเข้าคอร์สเรียนหรือการอ่านงานวิจัยของคนอื่นที่ได้ศึกษามาก่อนแล้ว เจ้าความรู้เหล่านี้จะเปรียบเสมือน เครื่องมือ ที่เรามีไว้ใช้ในการแก้ไขปัญหา ซึ่งความรู้บางอย่างนั้นสามารถช่วยเราแก้ไขปัญหาได้ ในขณะที่ความรู้บางอย่างก็ไม่สามารถช่วยเราแก้ไขปัญหา (ไม่มีความเชื่อมโยงหรือเกี่ยวข้องกับปัญหา) ตรงนี้ต้องพิจารณาไตร่ตรองดูนะครับ ว่าความรู้แบบไหนเกี่ยวข้องและไม่เกี่ยวข้องกับปัญหาของเรา ขั้นตอนการค้นหาเจ้าความรู้นี้ต้องอาศัย ความพยายามและความอดทนอย่างสูงครับ ส่วนใหญ่ที่พบเจอคือ เพื่อนๆพี่ๆน้องๆ จะหมดแรงและล้มเลิกกันในขั้นตอนนี้ครับ โปรดจำไว้เสมอว่า ถ้าเราไม่มีความรู้เป็นพื้นฐานแล้ว การทำงานหรือการแก้ไขปัญหาจะไม่มีทางประสบความสำเร็จครับ!!!&lt;br /&gt;ต่อมาเมื่อเรามีเครื่องมือ หรือ เจ้า "ความรู้" ที่จำเป็นต้องใช้แล้ว เราก็ต้องรู้จักใช้ให้ถูกต้องและเหมาะสมกับปัญหา ซึ่งตรงนี้ต้องอาศัย เจ้า "ความเข้าใจ" ครับ ปัญหาของการได้มาซึ่งความเข้าใจ คือ แต่ละคนสามารถได้มาซึ่งความเข้าใจได้แตกต่างกัน หรือที่มักพบว่า "เข้าใจไปคนละทาง" นั่นแหละครับ หรือ บางคนเมื่อทำงานวิจัยไปแล้วพบว่า มีแต่ความรู้เต็มไปหมด แต่ขาดความเข้าใจ ซึ่งก็ไม่สามารถแก้ไขปัญหาได้นะครับ ผมเลยขออนุญาตแนะนำให้เพื่อนๆพี่ๆน้องๆ ให้นั่งคิดช้าๆและค่อยๆเรียบเรียงความคิดให้เป็นระบบ หรือวาดโครงร่างของการทำงานวิจัยออกมา แล้วค่อยๆมา "วิเคราะห์" ดูว่าเราจำเป็นต้องใช้ความรู้อะไรบ้าง มีความรู้แล้วหรือยัง ถ้ายังไม่มีก็จำเป็นต้องขวยขวายมาให้ได้นะครับ แม้จะต้องใช้เวลาและความพยายามสักหน่อย ส่วนความสามารถในการวิเคราะห์นั้น มนุษย์เรานั้นมีอยู่แล้วครับ ต่างกันที่ว่า เรจะทำอย่างไรให้สามารถประยุกต์ใช้กับงานของเรา จากประสบการณ์ของผม (ความล้มเหลวที่ผมเคยพบเจอ แฮะๆๆ) ผมพบว่า เราจะใช้ความรู้ที่มีในการแก้ปัญหาได้ก็ต่อเมื่อ เรารู้จัก "การคิดแบบวิเคราะห์" ครับ คนที่คิดวิเคราะห์บ่อยๆ ก็จะได้เปรียบครับ ซึ่งความสามารถในการ "เข้าใจปัญหา" นั้นจะต่างจาก "ความรู้" กล่าวคือ ค้นหาไม่ค่อยเจอครับ ต้องอาศัยการฝึกฝนครับ สำหรับผมคิดว่า มันเป็น สิ่งที่รู้ได้เฉพาะตน (เกิดจากความคิดมากกว่าการฟังหรือการอ่าน)&lt;br /&gt;ถ้าจะให้เปรียบเทียบนะครับ "ความรู้" เปรียบเหมือนกับ เครื่องมือ ส่วน "ความเข้าใจ" เปรียบเหมือน วิธีการดำเนินงาน ครับ&lt;br /&gt;งาน(ปัญหา)ใดๆจะสำเร็จต้องมีทั้ง "เครื่องมือและวิธีการดำเนินงาน" ฉันใด ทุกงานวิจัยจะสำเร็จได้ก็ต้องอาศัย "ความรู้และความเข้าใจ" ฉันนั้นครับ....&lt;br /&gt;สิ่งสำคัญอีกประการ คือ การคิดบวก ส่วนตัวผมเชื่อว่า ไม่มีทางตันในงานวิจัย ซึ่งผมมีคติประจำใจเวลาทำงานวิจัยใดแล้วพบปัญหา คือ "ในเมื่อนักวิจัยอื่นๆสามารถทำได้ เราก็สามารถทำได้เช่นกัน" เพียงแต่หนทางในการบรรลุเป้าหมายอาจแตกต่างกันได้ ความเชื่อส่วนตัวของผม คือ มนุษย์เรานั้นมีจุดเด่นและจุดด้อย ที่แตกต่างกัน บางคนอาจมีสติปัญญาที่ล้ำเลิศ สามารถเรียนรู้และเข้าใจวิทยาการได้อย่างรวดเร็วในขณะที่บางคนอาจต้องอาศัยเวลาและความพยายามที่มากกว่าคนอื่นๆในการเข้าใจและเรียนรู้ แต่สุดท้ายแล้ว ถ้าเรามีความพยายามและตั้งใจจริงแล้ว ผมเชื่อว่า งานวิจัยทุกอย่างสามารถบรรลุวัตถุประสงค์ได้ครับ...&lt;br /&gt;ผมจะขอยกตัวอย่างเรื่องของ ซุนวู เจ้าประโยคเด็ดที่ว่า "รู้เขารู้เรารบร้อยครั้งชนะร้อยครั้ง" ในขณะที่ซุนวูเป็นนักเรียนนั้น เขาเป็นคนที่เรียนรู้ได้ช้ากว่าเพื่อนๆในชั้นเรียน แต่สิ่งที่ซุนวูต่างจากคนอื่นคือ เขามีความพยายามในการเล่าเรียนอย่างมาก เช่น เมื่อนักเรียนร่วมชั้นคนอื่นๆ เข้าใจที่อาจารย์สอนหมดแล้ว ก็ต่างพากันกลับบ้าน หรือออกไปทำกิจกรรมอย่างอื่น แต่ซุนวูนั้นยังคงมุ่งมั่น ขบคิดและทำความเข้าใจเกี่ยวกับสิ่งที่อาจารย์ได้สั่งสอน (คิดช้าๆแต่รอบครอบ) จนกระทั่ง อาจารย์ได้ยกย่อง ซุนวู ว่าเป็นลูกศิยษ์ที่สามารถเรียนรู้และเข้าใจในเนื้อหาที่สั่งสอนอย่างท่องแท้ มากกว่าศิย์คนอื่นๆ ตรงนี้ผมอยากจะขอเสริมว่า เมื่อเล่าเรียนนั้น เราจะได้ความรู้แต่ถ้าเราสามารถประยุกต์ใความรู้เหล่านั้นได้ แสดงว่า เราเข้าใจ ครับ!!!&lt;br /&gt;....ความเข้าใจย่อมมีประโยชน์มากกว่าความรู้ครับ.....&lt;br /&gt;สุดท้ายนี้ ขอให้กำลังใจนักศึกษาและนักวิจัยทุกท่านครับ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5781568740478799248?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5781568740478799248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/11/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5781568740478799248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5781568740478799248'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/11/blog-post.html' title='เมื่อเริ่มเจอทางตันระหว่างทำงานวิจัย!!!'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2322270536919034864</id><published>2011-10-07T17:30:00.004+07:00</published><updated>2011-11-15T11:50:55.668+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wavelet'/><title type='text'>แหล่งเรียนรู้เรื่อง Wavelet</title><content type='html'>ช่วงนี้ต้องเขียนแนวคิดและทฤษฎีต่างๆที่ต้องใช้สำหรับการทำงานวิจัย ทำให้ต้องค้นคว้าข้อมูลตามแหล่งต่างๆมากมาย ทั้งตำราและเว็บไซต์ต่างๆ ระหว่างทำการแสวงหาข้อมูลอยู่นั้น บังเอิญไปเจอแหล่งข้อมูลที่อธิบายเกี่ยวกับ Wavelet ได้อย่างชัดเจนและง่ายต่อการเข้าใจ (สำหรับผม) เลยอยากนำมาแบ่งปันกันครับ&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amara.com/IEEEwave/IEEEwavelet.html"&gt;http://www.amara.com/IEEEwave/IEEEwavelet.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2322270536919034864?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.amara.com/current/wavelet.html' title='แหล่งเรียนรู้เรื่อง Wavelet'/><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2322270536919034864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/10/wavelet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2322270536919034864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2322270536919034864'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/10/wavelet.html' title='แหล่งเรียนรู้เรื่อง Wavelet'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5295163320706357499</id><published>2011-08-30T12:08:00.003+07:00</published><updated>2011-09-19T15:01:42.694+07:00</updated><title type='text'>หัวข้อวิจัย อะไรดี???</title><content type='html'>มีเพื่อนๆหลายคนสอบถามว่า จะทำวิจัย(วิทยานิพนธ์)เรื่องอะไรดี? &lt;br /&gt;ส่วนตัวผมแล้ว มักจะเริ่มจากเรื่องที่เราถนัด (พอจะทำได้หรือมีความสามารถที่จะทำได้) ก่อน แล้วค่อยขยายไปยังเรื่องอื่นๆ ปัญหาที่ตามมาคือ หลายๆคนมักถามต่อว่า แล้วเราถนัดอะไร? คำถามนี้ ผมคงตอบแทนไม่ได้ แต่ผมพอจะแนะนำได้ว่า งานวิจัยหรือการทำงานต่างๆนั้น ต้องประกอบด้วยความรู้ 2 ส่วนหลัก คือ 1) ความรู้และความชำนาญที่มีอยู่แล้ว และ 2) ความรู้และคำชำนาญที่จำเป็นต้องศึกษาเพิ่มเติมเพื่อให้งานบรรลุผลสำเร็จ ประเด็นหลักที่พบคือ หลายๆคน ไม่อยากจะหาความรู้และความชำนาญใหม่ๆ ที่เรายังไม่เคยเรียนรู้หรือไม่เคยทดลองทำมาก่อน ซึ่งเหตุผลที่มักได้ยินเสมอได้แก่ มันยาก ไม่เคยทำ หาคนสอนไม่ค่อยได้ ตนเองไม่น่าจะทำได้ ฯลฯ ซึ่งผมอยากจะบอกไว้เลยว่า &lt;span style="font-weight:bold;"&gt;"กำแพงเมืองจีนจะเสร็จได้ ก็ต่อเมื่อ การก่ออิฐก้อนแรกเริ่มต้นขึ้น"&lt;/span&gt; ดังนั้นไม่ว่าความรู้ใหม่หรือเครื่องมือใหม่ๆ ที่เราไม่รู้จักหรือไม่คุ้นเคย จำเป็นต้องอาศัยเวลาและความอดทนในการศึกษาและทดลองด้วยตนเอง ตรงนี้สำคัญมากๆครับ เพราะเพื่อนๆหลายคนจะพ่ายแพ้หรือล้มเลิกในขั้นนี้เสมอ ทำให้งานวิจัยไม่ประสบความสำเร็จ&lt;br /&gt;ประเด็นถัดมาคือ "ความลึกซึ้งเท่าใดถึงจะเป็นหัวข้อวิทยานิพนธ์" ตรงนี้ ผมคงตอบไม่ได้ เพราะสถานศึกษาแต่ละแห่งก็มีปรัชญาที่แตกต่างกันออกไป (หลายมาตรฐานนั่นเอง ฮ่าๆๆๆ) แต่ผมอยากให้เพื่อนๆจำไว้ว่า งานของเราต้องมีคุณสมบัติที่สำคัญดังนี้ (อย่างน้อยต้องมีสักข้อ)&lt;br /&gt;1. &lt;span style="font-weight:bold;"&gt;ความใหม่ของเนื้อหา (First)&lt;/span&gt; หรือ เป็นคนแรกที่ทำการศึกษาในประเด็นต่างๆ ซึ่งอาจรวมถึงความใหม่ในเรื่องของการประยุกต์ใช้เทคนิคหรือเครื่องมือใหม่ๆในการแก้ไขปัญหา (ไม่เคยมีใครทำมาก่อน) &lt;br /&gt;2.&lt;span style="font-weight:bold;"&gt; ความดีที่สุด (Best) &lt;/span&gt;หรือ การปรับปรุงเทคนิคหรือวิธีการเดิมเพื่อให้ได้ผลลัพธ์ที่ดียิ่งขึ้น  เช่น การปรับปรุงแบบจำลองต่างๆเพื่อให้เหมาะสมกับเงื่อนไขเฉพาะหรือพื้นที่เฉพาะ&lt;br /&gt;3.&lt;span style="font-weight:bold;"&gt; ความแตกต่าง (Difference)&lt;/span&gt; กล่าวคือ ต้องไม่เหมือนหรือซ้ำกับงานของคนอื่นๆ เพราะถ้าเหมือนกัน ก็คือ การคัดลอก (ทั้งแบบตั้งใจและไม่ตั้งใจ) ในส่วนนี้อาจต้องอาศัย การอ่านบทความให้เยอะเข้าไว้ เพื่อจะได้เปรียบเทียบกับงานวิจัยของคนอื่นๆว่ามีความแตกต่างกันหรือไม่ แต่!!! งานของเพื่อนๆต้องไม่ใช่ การศึกษาด้วยวิธีการหรือเทคนิคเดียวกันแต่เปลี่ยนพื้นที่ศึกษานะครับ (ยกเว้นเราต้องการศึกษาเบื้องต้นก่อนแล้วค่อยปรับปรุงหรือพัฒนาวิธีการหรือแบบจำลองเพื่อให้เหมาะสมกับลักษณะเฉพาะของพื้นที่ศึกษา)&lt;br /&gt;หวังว่า ความคิดเห็น จากคนที่ไม่ค่อยมีความรู้อย่างผมน่าจะช่วยเพื่อนๆในการหาหัวข้อวิจัยได้บ้างนะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5295163320706357499?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5295163320706357499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/08/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5295163320706357499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5295163320706357499'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/08/blog-post.html' title='หัวข้อวิจัย อะไรดี???'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-6909956898798777451</id><published>2011-08-01T17:31:00.001+07:00</published><updated>2011-08-01T17:33:44.707+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdalwarp'/><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><category scheme='http://www.blogger.com/atom/ns#' term='GDAL/OGR'/><title type='text'>Resampling ภาพด้วย gdalwarp</title><content type='html'>วันนี้ขอเสนอวิธีการ resampling ข้อมูลภาพเพื่อให้มีขนาดหรือจำนวนจุดภาพเท่าที่ต้องการ ตัวอย่างเช่น ภาพเดิมมีขนาด 300x300 จุดภาพ แต่ต้องการเพิ่มให้เป็น 1200x1200 จุดภาพ เรามาดูวิธีการกันเลยนะครับ&lt;br /&gt;คำสั่งหรือโปรแกรมประยุกต์ที่ใช้คือ gdalwarp ส่วน option หรือ ทางเลือกที่จะใช้คือ -ts width height ดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt;gdalwarp  -ts  width  height  inputfile  outputfile&lt;br /&gt;&lt;br /&gt;ตัวอย่างการใช้งานมีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt;gdalwarp  -ts  1200  1200  abc300.tif  abc1200.tif&lt;br /&gt;&lt;br /&gt;ปล. หากต้องการระบุวิธี resampling ให้เพิ่มทางเลือก -r xxxx นะครับ เช่น -r bilinear, cubic, cubicspline หรือ lanczos. แต่ถ้าไม่ระบุโปรแกรมจะใช้วิธี nearest เป็นค่าเริ่มต้นครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-6909956898798777451?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/6909956898798777451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/08/resampling-gdalwarp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6909956898798777451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6909956898798777451'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/08/resampling-gdalwarp.html' title='Resampling ภาพด้วย gdalwarp'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5244082256251533128</id><published>2011-07-30T15:04:00.007+07:00</published><updated>2011-07-30T16:09:34.724+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CS2CS'/><category scheme='http://www.blogger.com/atom/ns#' term='GDAL/OGR'/><title type='text'>แปลงระบบพิกัด แบบหลายจุด ด้วย cs2cs</title><content type='html'>วิธีการนี้ ผมได้รับการแนะนำจาก พี่ &lt;a href="http://wmap.wordpress.com/"&gt;วิโรจน์&lt;/a&gt; (เทพองค์หนึ่งในงาน GeoInformatics ที่ใช้ Free.Open Source Software - FOSS) เมื่อนานมาแล้ว วันนี้ขอบันทึกไว้กันลืม ดังนี้ครับ&lt;div&gt;&lt;a href="http://proj.maptools.org/man_cs2cs.html"&gt;CS2CS&lt;/a&gt; นั้นเป็นโปรแกรมประยุกต์ตัวหนึ่งสำหรับการแปลงระบบพิกัดของค่าพิกัดแบบจุด (มีเฉพาะค่าพิกัดของแต่ละจุดเท่านั้น) นั่นหมายความว่า ข้อมูลต้องอยู่ในรูป คู่ของค่าพิกัด เช่น 525000 1800000 เป็นต้น&lt;/div&gt;&lt;div&gt;*** โปรแกรมประยุกต์นี้จะมีอยู่แล้วใน &lt;a href="http://www.gdal.org/"&gt;GDAL &lt;/a&gt;หรือที่ถูกรวมไว้แล้วใน &lt;a href="http://fwtools.maptools.org/"&gt;FWTOOLS&lt;/a&gt; ครับ ดังนั้นไม่จำเป็นต้องดาวน์โหลดเพิ่มเติมครับ***&lt;/div&gt;&lt;div&gt;เรามาดูตัวอย่างกันเลยนะครับ ตัวอย่างผมมีข้อมูลแบบอักขระ (Text file) ที่เมื่อเปิดด้วย Text Editor ทั่วไป เช่น Notepad หรือ Notepad++ แล้วจะมีหน้าตาดังนี้ ชื่อไฟล์ EN.txt&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/-1g0Q-YV9Bfg/TjO-M6hcqYI/AAAAAAAAAH8/0rYdaZA1xh4/s400/EN-txt.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 181px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5635056687847876994" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;ตัวอย่างทางเลือก (Option) ที่น่าสนใจ&lt;/u&gt;&lt;/div&gt;&lt;div&gt;-E ใช้ในกรณีที่ต้องการนำค่าจากไฟล์นต้นฉบับหรือไฟล์นำเข้า (Input) ไปใส่ไว้ในไฟล์ผลลัพธ์ (Output) ด้วย&lt;/div&gt;&lt;div&gt;-f ใช้สำหรับกำหนดรูปแบบไฟล์ผลลัพธ์ เช่น ความละเอียด(ระดับจุดทศนิยม)ของผลลัพธ์ที่ต้องการ ตัวอย่างการใช้งานคือ -f "%.9f" จะได้ผลลัพธ์ทีี่มีจุดทศนิยมจำนวน 9 ตำแหน่ง เป็นต้น&lt;/div&gt;&lt;div&gt;-r ใช้สำหรับสลับค่าพิกัดขอไฟล์ต้นฉบับ จาก XY เป็น YX หรือ Lat, Long ให้เป็น Long, Lat&lt;/div&gt;&lt;div&gt;-s ใช้สำหรับสลับค่าพิกัดขอไฟล์ผลลัพธ์ จาก XY เป็น YX หรือ Lat, Long ให้เป็น Long, Lat&lt;/div&gt;&lt;div&gt;**** ตรงนี้น่าสนใจครับ เพื่อไม่ให้เกิดความสับสน ผมแนะนำทุกท่านเตรียมข้อมูลให้อยู่ในแบบ (Easting, Northing) สำหรับระบบพิกัดกริด UTM โดยไม่จำเป็นต้องระบุทางเลือก -r หรือ -s &lt;/div&gt;&lt;div&gt;ส่วนตัวอย่างการใช้งานมีดังนี้&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt;cs2cs -E -f "%.9f" +init=epsg:32647 +to +init=epsg:4326 EN.txt&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ผลลัพธ์ที่ได้มีดังภาพ&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/-z6smo5LvOtA/TjPG6hUIPfI/AAAAAAAAAIE/jrrxX3zv7F4/s400/output1.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 83px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5635066267448131058" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;หรือถ้าต้องการแปลงผลลัพธ์ให้เป็นไฟล์อักขระ (Text file) ใหม่อีกไฟล์หนึ่งสามารถทำได้ดังนี้ครับ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt;cs2cs -E -f "%.9f" +init=epsg:32647 +to +init=epsg:4326 EN.txt &lt;b&gt;&amp;gt; LongLat.txt&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ส่วนการแปลงค่าระบบภูมิศาสตร์ให้เป็นระบบพิกัดกริด UTM นั้นแนะนำให้ใช้รูปแบบ (Long, Lat) ครับ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;เพื่อไม่ให้สับสนและอาจมีการระบุรูปแบบผิด ผมขอสรุปและแนะนำอีกที ดังนี้&lt;/div&gt;&lt;div&gt;ในกรณีที่ไม่ใช้ทางเลือก -r หรือ -s นั้น&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;การแปลง UTM2Geog ถ้ารูปแบบไฟล์ต้นฉบับคือ (Easting, Northing) จะได้ผลลัพธ์คือรูปแบบ (Long, Lat)&lt;/li&gt;&lt;li&gt;ส่วนการแปลง Geog2UTM ถ้ารูปแบบไฟล์ต้นฉบับคือ (Long, Lat) จะได้ผลลัพธ์คือรูปแบบ (Easting, Northing)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5244082256251533128?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5244082256251533128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/07/cs2cs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5244082256251533128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5244082256251533128'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/07/cs2cs.html' title='แปลงระบบพิกัด แบบหลายจุด ด้วย cs2cs'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-1g0Q-YV9Bfg/TjO-M6hcqYI/AAAAAAAAAH8/0rYdaZA1xh4/s72-c/EN-txt.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-21869391905595029</id><published>2011-07-27T15:26:00.002+07:00</published><updated>2011-07-27T17:00:04.050+07:00</updated><title type='text'>ความแตกต่างระหว่าง Objective และ Subjective</title><content type='html'>ไปอ่านเจอคำศัพท์ที่น่าสนใจ 2 คำคือ Objective และ Subjective  ในบทความวิชาการและตำราหลายๆเล่ม แต่ผมก็ยังแยกความแตกต่างไม่ได้อย่างชัดเจนว่า สองคำนี้มีความแตกต่างกันอย่างไร วันนี้เลยต้องขอบันทึกความหมาย (ไม่ใช่การแปล) ที่พอจะสรุปได้จากการค้นคว้าดังนี้&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Objective &lt;/b&gt;แปลโดย ศัพท์บัญญัติ ราชบัณฑิตยสถาน นั้น มีหลายความหมายได้แก่ เชิงวัตถุวิสัย, วัตถุประสงค์ หรือ &lt;b&gt;ปรนัย &lt;/b&gt;ส่วน&lt;/div&gt;&lt;div&gt;&lt;b&gt;Subjective &lt;/b&gt;นั้นแปลว่า ความรู้สึกแห่งตน, เชิงจิตวิสัย หรือ &lt;b&gt;อัตนัย&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;แค่เพียงความหมายก็น่าจะพอสรุปได้ว่า Subjective นั้นต้องเกียวข้องกับความเป็นตัวตนหรือส่วนบุคคล (อัต-) นั่นหมายถึงบริบทของคำนี้ ไม่อาจสรุปหรือประเมินได้อย่างเที่ยงตรง (ไม่เสถียร) หรือได้คำตอบเหมือนเดิมทุกครั้งในทุกๆการวัด เนื่องจากขึ้นอยู่กับสถานการณ์ ความรู้ ความชำนาญหรือเกณฑ์ของแต่ละบุคคลที่ใช้ในการวัด ดังเช่น ตัวอย่างความหมายของ Objective data และ Subjective data ที่มักพบเสมอในเรื่อง การตัดสินใจแบบหลายเกณฑ์ (Multi-Criteria Decision)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;ดังนั้น ผมอาจสรุปได้ว่า Objective นั้นมีความเป็นสากล จริงแท้ เที่ยงตรง มากกว่า Subjective ซึ่งเกี่ยวข้องกับความเป็นส่วนบุคคล ครับ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ปล. การแปลความหมายจำเป็นต้องคำนึงถึงบริบทของคำศัพท์ด้วยเสมอนะครับ&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-21869391905595029?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/21869391905595029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/07/objective-subjective.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/21869391905595029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/21869391905595029'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/07/objective-subjective.html' title='ความแตกต่างระหว่าง Objective และ Subjective'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1384481524738103510</id><published>2011-06-21T12:38:00.003+07:00</published><updated>2011-06-21T13:41:24.073+07:00</updated><title type='text'>ความแตกต่างระหว่าง Numerical methods และ Numerical Analysis</title><content type='html'>เป็นคำถามคาใจมานานมาก แต่ยังไม่ได้ค้นหาคำตอบอย่างจริงๆจังสักที ว่า  "ความแตกต่างระหว่าง Numerical methods และ Numerical Analysis" คืออะไร วันนี้นึกครึ้มอะไรไม่รู้เลยเข้าห้องสมุดหาตำรามาเฉลยคำถามที่สงสัยมานาน...&lt;br /&gt;จากการอ่านหนังสือ An Introduction to Numerical Methods and Analysis โดย James F. Epperson ผู้เขียนให้คำอธิบาย ความแตกต่าง คือ &lt;span style="font-weight: bold;"&gt;วิธีการเชิงเลข (Numerical methods)&lt;/span&gt; จะให้ความสำคัญการนำอัลกอริทึมไปทำให้เกิดผล (Implementation of algorithms) ซึ่งบางทีก็อาศัยทฤษฏีทางคณิตศาสตร์ในการอธิบายวิธีการทำงาน ส่วน &lt;span style="font-weight: bold;"&gt;การวิเคราะห์เชิงเลข (Numerical analysis)&lt;/span&gt; นั้นจะให้ความสำคัญกับทฤษฏีทางคณิตศาสตร์ (Mathematical theory) ผู้เขียนคิดว่า น่าจะดีกว่า ถ้าเราศึกษาทั้งสองอย่างไปพร้อมๆกัน&lt;br /&gt;ซึ่งผมก็เห็นด้วยอย่างยิ่ง เพราะ การนำวิธีการและการวิเคราะห์เชิงเลขไปทำให้เกิดผล (Implementation) ในงานภูมิสารสนเทศ นั้น นอกจากความต้องการ &lt;span style="font-weight: bold;"&gt;ความรู้&lt;/span&gt; ที่ใช้ในการแก้ไขปัญหาแล้ว ยังต้องอาศัย &lt;span style="font-weight: bold;"&gt;ความเข้าใจ&lt;/span&gt; เกี่ยวกับเทคนิคหรือวิธีการที่นำมาใช้ด้วย เนื่องจากปัญหาบางอย่าง ความรู้ เพียงอย่างเดียวไม่สามารถแก้ไขได้ครับ ต้องอาศัย ความเข้าใจ ด้วย....&lt;br /&gt;ตัวอย่าง นะครับ&lt;br /&gt;ทำไมเราต้องรับสัญญาณดาวเทียม อย่างน้อย 3 ดวง เพื่อหาตำแหน่งของเรา (ด้วยเครื่องรับสัญญาณ GPS) หรือ ทำไมจุดควบคุมสำหรับการอ้างอิงตำแหน่งโลก ถึงไม่สามารถวางตัวอยู่บนแนวเส้นตรงเดียวกัน เป็นต้น&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1384481524738103510?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1384481524738103510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/06/numerical-methods-numerical-analysis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1384481524738103510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1384481524738103510'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/06/numerical-methods-numerical-analysis.html' title='ความแตกต่างระหว่าง Numerical methods และ Numerical Analysis'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2328065997948750239</id><published>2011-05-30T14:30:00.003+07:00</published><updated>2011-05-30T15:01:45.995+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Filter'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><title type='text'>การกรองความถี่สูงและความถี่ต่ำ (Hi &amp; Low pass filtering)</title><content type='html'>สงสัยอายุที่เพิ่มขึ้นจะมีส่วนทำให้ความจำลดลง เพราะลืมทุกทีเมื่อต้องมาทำงานกับตัวกรอง (Filter) ทั้งสองแบบนี้ วันนี้เลยขอบันทึกความเข้าใจไว้กันลืม!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;การกรองความถี่สูง (Hi pass filter)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;เป&lt;/span&gt;&lt;span&gt;็นการกรองสัญญานที่ยอมให้ข้อมูลความถี่สูงผ่านได้ ตัวอย่างการใช้งานคือ การเพิ่มความคมชัด (Sharpening)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;การกรองความถี่ต่ำ (Low pass filter)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;เป&lt;/span&gt;&lt;span&gt;็นการกรองสัญญานที่ยอมให้ข้อมูลความถี่ต่ำผ่านได้ &lt;/span&gt;&lt;span&gt;ตัวอย่างการใช้งานคือ การทำเบลอ (Blurring)&lt;br /&gt;&lt;br /&gt;ส่วนรายละเอียดของการใช้ตัวกรองในการทำ PanSharpening ไว้มีโอกาสจะเข้ามาเพิ่มภายหลัง&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2328065997948750239?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2328065997948750239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/05/hi-low-pass-filtering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2328065997948750239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2328065997948750239'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/05/hi-low-pass-filtering.html' title='การกรองความถี่สูงและความถี่ต่ำ (Hi &amp; Low pass filtering)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-805628184269494252</id><published>2011-03-23T11:41:00.002+07:00</published><updated>2011-03-23T11:44:53.531+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdal_merge'/><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>gdal_merge ใน FWtools 2.4.7 ใช้งานไม่ได้</title><content type='html'>ผมลองใช้ gdal_merge ใน FWtools เวอร์ชัน 2.4.7 แล้วปรากฏว่า ไม่สามารถทำงานได้อย่างถูกต้อง กล่าวคือ โปรแกรมจะต่อชนภาพให้ แต่ภาพนั้นไม่มีค่า Digital Number (DN) วิธีแก้ไขง่ายที่สุดที่คิดได้คือ กลับไปใช้งานเวอร์ชัน 2.4.6 ปรากฏว่า Work!!! ใช้งานได้ &lt;br /&gt;จังอยากแนะนำทุกท่านที่อาจเจอปัญหาเดียวกับผม...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-805628184269494252?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/805628184269494252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/03/gdalmerge-fwtools-247.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/805628184269494252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/805628184269494252'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/03/gdalmerge-fwtools-247.html' title='gdal_merge ใน FWtools 2.4.7 ใช้งานไม่ได้'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-6800302521109982977</id><published>2011-02-24T16:43:00.002+07:00</published><updated>2011-02-24T16:47:47.627+07:00</updated><title type='text'>PostGIS: สร้าางตารางข้อมูลใหม่จาก ข้อมูลที่สืบค้น</title><content type='html'>บางครั้งเราต้องการสร้างตารางข้อมูลใหม่ (ชั้นข้อมูลเชิงตำแหน่งใหม่) ในฐานข้อมูลเชิงตำแหน่ง (Spatial Database) ตัวอย่างเช่น ชั้นข้อมูลเส้นทางคมนาคมถนน ซึ่งในฐานข้อมูลนั้นมีข้อมูลอรรถาธิบาย (Attribute) มากมายเกินความจำเป็น อาทิ ชื่อถนน ความกว้างช่องจราจร ความยาวของส่วนย่อย ประเภทพื้นผิว สภาพถนน  โดยที่เราต้องการชั้นข้อมูลใหม่ที่มีเพียงแค่ชื่อถนน (road name: rdname) และพิกัดของแต่ละจุดเท่านั้น (geometry: the_geom) เราจะทำอย่างไร???&lt;br /&gt;หลังจากศึกษาในคู่มือของ Postgis พบว่าโปรแกรมได้เตรียมฟังก์ชัน create table as สำหรับการตอบวัตถุประสงค์ในครั้งนี้ เรามาดูตัวอย่างการใช้งานกันเลยนะครับ&lt;br /&gt;&lt;br /&gt;SQL syntax: create table &lt;span style="font-weight:bold;"&gt;table_name&lt;/span&gt; as select &lt;span style="font-weight:bold;"&gt;*** &lt;/span&gt;from &lt;span style="font-weight:bold;"&gt;*** &lt;/span&gt;where &lt;span style="font-weight:bold;"&gt;***&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ตัวอย่าง&lt;br /&gt;create table &lt;span style="font-weight:bold;"&gt;road_name&lt;/span&gt; as&lt;br /&gt;select &lt;span style="font-weight:bold;"&gt;rdname, the_geom&lt;/span&gt; from &lt;span style="font-weight:bold;"&gt;road&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-6800302521109982977?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/6800302521109982977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/02/postgis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6800302521109982977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6800302521109982977'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/02/postgis.html' title='PostGIS: สร้าางตารางข้อมูลใหม่จาก ข้อมูลที่สืบค้น'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-4115662284840794871</id><published>2011-02-09T16:01:00.009+07:00</published><updated>2011-02-09T17:24:24.113+07:00</updated><title type='text'>แก้สมการ Overdetermined เพียงกระพริบตา (ปี๊บๆ)</title><content type='html'>Ex: จากตัวอย่างหนังสือเรื่อง GIS &amp; MCDA ของ จาเซ็ค หน้าที่ 211 เราต้องการหาค่าแลมดา (Lamda: L) โดยมีสมการเงื่อนไขดังนี้&lt;br /&gt;L1 = 0.5(L2) + 0.3(L3)&lt;br /&gt;L2 = 0.7(L1) + 0.7(L2)&lt;br /&gt;L1 + L2 + L3 = 1&lt;br /&gt;ปรากฏว่าในหนังสือได้คำตอบคือ L1 = 0.4, L2 = 0.3 และ L3 = 0.3 จะพบว่าค่าที่ได้นั้นใช้ได้ในบางเงื่อนไขเท่านั้น (คำตอบมีได้หลายคำตอบหรือคำตอบนั้นไม่ใช่ Unique solution) ทำให้ผลลัพธ์อาจผิดพลาดได้ ........... แล้วเราจะทำอย่างไีีร&lt;br /&gt;ก่อนอื่นเรามาดูเงื่อนไขหรือข้อมูลที่เรามีก่อนดังนี้ครับ&lt;br /&gt;1. เรามีตัวไม่ทราบค่า (Unknown) 3 ตัวคือค่าแลมดา L1, L2, L3&lt;br /&gt;2. เรามีสมการอย่างน้่อย 3 สมการ (ตามตัวอย่างในหนังสือ)&lt;br /&gt;3. จากการศึกษาพบว่า ในหนังสือนั้นขาดการนำเอาเงื่อนไขบางอย่างมาสร้างสมการคือ L3 = 0.3(L1) + 0.5(L2)&lt;br /&gt;4. เมื่อเรามีสมการเพิ่มขึ้นจะพบว่า เงื่อนไขของระบบสมการนี้จะเข้าสู่เงื่อนไขของ Overdetermined system (จำนวนสมการมากกว่าจำนวนตัวไม่ทราบค่า)&lt;br /&gt;คราวนี้เรามาดูวิธีแก้ระบบสมการเชิงเส้นที่ Overdetermined ด้วยเมทริกซ์ดังตัวอย่างดังนี้&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Condition Equation:&lt;/span&gt;&lt;br /&gt;L1 = 0.5(L2) + 0.3(L3)&lt;br /&gt;L2 = 0.7(L1) + 0.7(L2)&lt;br /&gt;L3 = 0.3(L1) + 0.5(L2)&lt;br /&gt;L1 + L2 + L3 = 1&lt;br /&gt;A = [-1 .5 .3; .7 -1 .7; .3 .5 -1; 1 1 1]&lt;br /&gt;X = [a; b; c]&lt;br /&gt;L = [0; 0; 0; 1]&lt;br /&gt;&lt;br /&gt;V = AX+L&lt;br /&gt;N = transpose (A)*A&lt;br /&gt;U = transpose (A)*L&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Normal Equation:&lt;/span&gt;&lt;br /&gt;transpose (X)* transpose (N) + transpose (U) = 0&lt;br /&gt;หรือ N*X + U = 0 หรือ N*X = -U&lt;br /&gt;X = - inv(N) * U&lt;br /&gt;&lt;br /&gt;ส่วนวิธีการคำนวณด้วย Matlab มีดังนี้&lt;br /&gt;a = [-1 .5 .3; .7 -1 .7; .3 .5 -1; 1 1 1]&lt;br /&gt;l = [0; 0; 0; 1]&lt;br /&gt;x = a\l&lt;br /&gt;คำตอบที่ได้คือ &lt;br /&gt;x = [0.2941; 0.4118; 0.2941] หรือ&lt;br /&gt;    L1 = 0.2941&lt;br /&gt;    L2 = 0.4118&lt;br /&gt;    L3 = 0.2941&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-4115662284840794871?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/4115662284840794871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/02/overdetermined.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4115662284840794871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4115662284840794871'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/02/overdetermined.html' title='แก้สมการ Overdetermined เพียงกระพริบตา (ปี๊บๆ)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5042735852576892805</id><published>2011-01-29T18:44:00.003+07:00</published><updated>2011-01-30T21:08:56.794+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>ตัวอย่างการใช้ While ด้วย Python</title><content type='html'>อ่านประวัติของ Archimedes อยู่ดีๆ ดันโยงไปที่ โยฮันน์ คาร์ล ฟรีดริช เกาส์ ซะงั้น เลยอดไม่ได้ที่จะทึ่งถึงความอัจฉริยะของ เกาส์ เมื่อมีอายุได้เพียง 7 ขวบ เหตุการณ์เกิดขึ้นเมื่อคุณครูได้สั่งให้นักเรียนบวกเลขตั้งแต่ 1 ถึง 100 ชั่่วขณะเพียงแค่หันหลัง เด็กชายเกาส์ก็ตอบขึ้นมาว่า 5,050 เมื่อถูกถามว่าได้คำตอบนั้นมาได้อย่างไร เด็กชายเกาส์เขียนอธิบายดังนี้&lt;br /&gt;&lt;br /&gt;100+99+98+...+1 = 101+101+101+...+101 = 101×50 = 5050 ดังนั้นคำตอบคือ 5050&lt;br /&gt;&lt;br /&gt;เป็นไงละครับ....ไม่ใ่ช่อัจริยะคิดไม่ได้นะเนี่ย&lt;br /&gt;อ้างอิงจาก &lt;a href="http://th.wikipedia.org/wiki/คาร์ล_ฟรีดริช_เกาส์"&gt;http://th.wikipedia.org/wiki/คาร์ล_ฟรีดริช_เกาส์&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;เรามาทดลองดูว่าการบวกเลขตั้งแต่ 1-100 นั้นหากเขียนด้วยภาษา Python โดยใช้ While loop นั้นต้องเขียนอย่างไร&lt;br /&gt;############################&lt;br /&gt;i = 1&lt;br /&gt;total = 0&lt;br /&gt;while (i&lt;=100):&lt;br /&gt;    total = total + i;&lt;br /&gt;    i = i + 1;&lt;br /&gt;    print total&lt;br /&gt;############################&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5042735852576892805?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5042735852576892805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/01/while-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5042735852576892805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5042735852576892805'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/01/while-python.html' title='ตัวอย่างการใช้ While ด้วย Python'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2183947574878943975</id><published>2011-01-19T23:17:00.002+07:00</published><updated>2011-01-19T23:25:08.846+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pansharpening'/><title type='text'>Pansharpening: Brovey transformation</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;TH&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:applybreakingrules/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  mso-bidi-font-size:14.0pt;  font-family:"Calibri","serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:100%;"  lang="TH" &gt;การแปลงแบบ &lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:14pt;"  &gt;&lt;span style="font-size:100%;"&gt;Brovey &lt;/span&gt;&lt;span lang="TH"  style="font-size:100%;"&gt;นั้นจะอาศัยค่าความสว่าง (ฺBrightness Value - BV) ของข้อมูลภาพแบบหลายช่วงคลื่น (&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Multispectral image&lt;/span&gt;&lt;span lang="TH"  style="font-size:100%;"&gt;) และค่าความสว่างของข้อมูลภาพแบบช่วงคลื่นเดียว&lt;/span&gt;&lt;span style="font-size:100%;"&gt; (Panchromatic image) &lt;/span&gt;&lt;span lang="TH"  style="font-size:100%;"&gt;มาทำการคำนวณหาค่าความสว่างของข้อมูลภาพที่ผ่านการหลอมรวม &lt;/span&gt;&lt;span style="font-size:100%;"&gt;(Fused image) ดังภาพที่ 1 ดังนี้&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:14pt;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:14pt;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:14pt;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:14pt;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/TTcP5UsX2FI/AAAAAAAAAHs/VQcq3nZCPFA/s1600/Eq-Brovey.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 217px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/TTcP5UsX2FI/AAAAAAAAAHs/VQcq3nZCPFA/s400/Eq-Brovey.jpg" alt="" id="BLOGGER_PHOTO_ID_5563933342121318482" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;ภาพที่ 1 สมการการแปลงแบบ Brovey&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:14pt;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="file:///C:/Users/hp/AppData/Local/Temp/moz-screenshot.png" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2183947574878943975?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2183947574878943975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/01/pansharpening-brovey-transformation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2183947574878943975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2183947574878943975'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/01/pansharpening-brovey-transformation.html' title='Pansharpening: Brovey transformation'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/TTcP5UsX2FI/AAAAAAAAAHs/VQcq3nZCPFA/s72-c/Eq-Brovey.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3555460265589066518</id><published>2011-01-05T15:23:00.003+07:00</published><updated>2011-01-05T19:21:35.069+07:00</updated><title type='text'>Factror/Variable/Parameter</title><content type='html'>ความแตกต่างของ Factror/Variable/Parameter (ปัจจัย/ตัวแปร/พารามิเตอร์) จากการค้นคว้าเบื้องต้นพบว่า ทั้ง 3 คำ นี้มีความเกี่ยวเนื่องกันอยู่โดยขอยกตัวอย่างเพื่อความเข้าใจดังนี้&lt;br /&gt;โจทย์คือ ผมต้องการหาพื้นที่เหมาะสมสำหรับการเพาะปลูกข้าว&lt;br /&gt;ปัจจัย (Factor) ที่ผมใช้พิจารณาสำหรับการหาพื้นที่เหมาะสมคือ &lt;span style="font-weight: bold;"&gt;ข้อมูลดิน&lt;/span&gt;&lt;br /&gt;ตัวแปร (Variable) ที่ผมสนใจคือ &lt;span style="font-weight: bold;"&gt;แร่ธาตุในดิน&lt;/span&gt; เช่น ไนโตรเจน (N) โปแตสเซียม (P) และฟอสฟอรัส (K)&lt;br /&gt;พารามิเตอร์ (Parameter) คือ &lt;span style="font-weight: bold;"&gt;ปริมาณของแร่ในดิน&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3555460265589066518?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3555460265589066518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2011/01/factrorvariableparameter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3555460265589066518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3555460265589066518'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2011/01/factrorvariableparameter.html' title='Factror/Variable/Parameter'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1922257960197209770</id><published>2010-11-10T12:22:00.001+07:00</published><updated>2010-11-10T12:25:14.627+07:00</updated><title type='text'>ตัวอย่างคำสั่งภาษา SQL  สำหรับการค้นคืนค่า bbox ของฟีเจอร์</title><content type='html'>&lt;div&gt;&lt;b&gt;SELECT&lt;/b&gt;&lt;/div&gt;&lt;div&gt;"MAPSHEET",xmin(the_geom)as XMIN, ymin(the_geom) as YMIN, xmax(the_geom) as XMAX, ymax(the_geom) as YMAX&lt;/div&gt;&lt;div&gt;&lt;b&gt;FROM &lt;/b&gt;myTable&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1922257960197209770?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1922257960197209770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/11/sql-bbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1922257960197209770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1922257960197209770'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/11/sql-bbox.html' title='ตัวอย่างคำสั่งภาษา SQL  สำหรับการค้นคืนค่า bbox ของฟีเจอร์'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-6671953642070002567</id><published>2010-10-18T00:31:00.003+07:00</published><updated>2010-10-18T00:57:14.960+07:00</updated><title type='text'>แหล่งเรียนรู้เรื่อง พีชคณิตเชิงเส้น (Linear Algebra)</title><content type='html'>ขอหยุดเรื่อง Python ไว้สักพัก เพราะมีเรื่องกวนใจให้อยากรู้บางเรื่อง นั่นคือ การแปลงแบบ Wavelet หรือ Wavelet transformation ซึ่งผมสนใจประยุกต์ใช้ในการทำ Pan-sharpening สำหรับภาพดาวเทียมธีออส ค้นไปค้นมาดันไปเกี่ยวกับพีชคณิตเชิงเส้น (Linear Algebra) ซะได้ เลยต้องบันทึกไว้สักหน่อยว่ามีเว็บไชต์ที่น่าสนใจเกี่ยวกับพีชคณิตเชิงเส้น ได้แก่&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;เครื่องมือช่วยคำนวณและขั้นตอนการทำงาน เช่น การทำ row echelon, การคำนวณ Identity matrix ด้วยวิธี  reduced row echelon หรือ  การแก้ปัญหาระบบสมการเชิงเส้น เป็นต้น&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.math.odu.edu/%7Ebogacki/cgi-bin/lat.cgi"&gt;http://www.math.odu.edu/~bogacki/cgi-bin/lat.cgi&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;แหล่งเรียนรู้เรื่อง Linear algebra&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.egwald.ca/linearalgebra/index.php"&gt;http://www.egwald.ca/linearalgebra/index.php&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;แหล่งเรียนรู้เรื่อง Linear algebra (Mathworld)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://mathworld.wolfram.com/topics/GeneralLinearAlgebra.html"&gt;http://mathworld.wolfram.com/topics/GeneralLinearAlgebra.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-6671953642070002567?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/6671953642070002567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/10/linear-algebra.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6671953642070002567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6671953642070002567'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/10/linear-algebra.html' title='แหล่งเรียนรู้เรื่อง พีชคณิตเชิงเส้น (Linear Algebra)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3423973113602673428</id><published>2010-09-28T10:29:00.005+07:00</published><updated>2010-09-28T13:09:04.908+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>งูงู ปลาปลากับไพธอน ตอนที่ 1 Number &amp; String เบื้องต้นในภาษา python</title><content type='html'>จากหนังสือ Learning Python: Help for Programmers ของ Mark Lutz และ David  Asher ที่พูดถึง Built-in Object type เบื้องต้นในภาษาไพธอน (Python) ได้แก่ Numbers, Strings, Lists, Dictionaries, Tuples และ Files นั้น ผมพอจะสรุปได้ดังนี้ครับ&lt;br /&gt;1. Numbers&lt;br /&gt;Numbers ในภาษาไพธอนนั้นจำแนกออกเป็น 5 กลุ่มหลักคือ&lt;ul&gt;&lt;li&gt;Integer (int) เช่น 12345 หรือ 123456789 เป็นต้น&lt;/li&gt;&lt;li&gt;Floating (float) เช่น 1.2345 หรือ 123.456 เป็นต้น&lt;/li&gt;&lt;li&gt;Long integer (long) เช่น 9999999L  (unlimited size) เป็นต้น&lt;/li&gt;&lt;li&gt;Complex number (complex) จะประกอบด้วย real-part + imagery-part เช่น 3j หรือ 1.2j+3.4j เป็นต้น&lt;/li&gt;&lt;li&gt;Octal ({ฐาน 8) or Hex (ฐาน 16) ใช้สำหรับระบุตัวเลขที่ต้องขึ้นต้นด้วย 0 (ศูนย์) สำหรับ Hex นั้นจำ&lt;span style="font-size:100%;"&gt;เป็นต้องขึ้นต้นด้วย 0x หรือ 0X เท่านั้น ไม่สามารถใช้เลขฐานสิบได้ ตัวอย่างของOctal/Hex เช่น &lt;/span&gt;&lt;span style="line-height: 115%;font-size:100%;" &gt;0x9ff เป็นต้น&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;ตัวอย่างการประมวลผลข้อมูล Numbers มีดังนี้&lt;br /&gt;&lt;ul&gt;&lt;li&gt;การบวก การลบ การคูณและการหาร เช่น x+y, x-y, x*y และ 3/2.0 เป็นต้น&lt;/li&gt;&lt;li&gt;การเปลี่ยนเครื่องหมาย เช่น +x หรือ -x เป็นต้น&lt;br /&gt;&lt;/li&gt;&lt;li&gt;การยกกำลัง เช่น x**y หรือ pow(x, y) เป็นต้น&lt;/li&gt;&lt;li&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;TH&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:applybreakingrules/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  mso-bidi-font-size:14.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;ในภาษาไพธอนนั้นมีการใช้กฏการมีลำดับที่เหนือกว่า (Precedence rule) สำหรับการใช้ตัวดำเนินการแบบผสม เช่น&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;TH&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:applybreakingrules/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  mso-bidi-font-size:14.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="line-height: 115%;font-family:georgia;font-size:100%;"  &gt;a+b*c การคำนวณจะเริ่มจากการนำค่าของตัวแปร b คูณ&lt;/span&gt;&lt;span style="line-height: 115%;font-family:georgia;font-size:100%;"  &gt;กับค่าของตัวแปร c ก่อนแล้วจึงนำมาบวกกับค่าของตัวแปร a เป็นต้น&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;2. Strings&lt;br /&gt;อักขระ (Strings) นั้นคือตัวอักษรหรือตัวเลขที่อยู่ในเครื่องหมาย single qoute ('.....') หรือ Double qoute (".....") เช่น 'Sawarin' หรือ 'My name is Sawarin' หรือ "Sawarin's book" เป็นต้น&lt;br /&gt;&lt;br /&gt;การประมวลผล String ที่ใช้งานแพร่หลายแบ่งออกเป็น 2 ประเภทหลักคือ&lt;ul&gt;&lt;li&gt;Indexing เป็นการอ้างถึงตำแหน่งของอักขระในแต่ข้อความจากตำแหน่งเริ่มต้น (0) ไปจนถึงตำแหน่งสุดท้ายของข้อความ ในภาษาไพธอนนั้นสามารถอ้างอิงตำแหน่งจากส่วนท้ายของข้อความได้โดยเริ่มจากตำแหน่งที่ -1 เช่น&lt;/li&gt;&lt;/ul&gt;&gt;&gt;&gt; myname = 'Sawarin'&lt;br /&gt;&gt;&gt;&gt; myname[0]&lt;br /&gt;'S'&lt;br /&gt;&gt;&gt;&gt; myname[-3]&lt;br /&gt;'r'&lt;br /&gt;&lt;ul&gt;&lt;li&gt;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" เป็นต้น&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;เพื่อความเข้าใจของลำดับของอักขระในข้อความสามารถดูเพิ่มเติมได้จากภาพที่ 1 ดังนี้&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_axbGw1NZUvo/TKGEuxe2_8I/AAAAAAAAAHg/2qFp6JWH-UU/s1600/StringPosition.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 79px;" src="http://1.bp.blogspot.com/_axbGw1NZUvo/TKGEuxe2_8I/AAAAAAAAAHg/2qFp6JWH-UU/s400/StringPosition.jpg" alt="" id="BLOGGER_PHOTO_ID_5521840557224558530" border="0" /&gt;&lt;/a&gt;ภาพที่ 1 ตัวอย่างลำดับของอักขระในข้อความ&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/Users/hp/AppData/Local/Temp/moz-screenshot.png" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3423973113602673428?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3423973113602673428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/09/1-number-string-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3423973113602673428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3423973113602673428'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/09/1-number-string-python.html' title='งูงู ปลาปลากับไพธอน ตอนที่ 1 Number &amp; String เบื้องต้นในภาษา python'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_axbGw1NZUvo/TKGEuxe2_8I/AAAAAAAAAHg/2qFp6JWH-UU/s72-c/StringPosition.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2854632487468107371</id><published>2010-09-03T14:25:00.003+07:00</published><updated>2010-09-03T14:33:19.892+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>gdalinfo แบบไม่ต้องแสดง RasterAttributeTable (ROT)</title><content type='html'>เคยใช้ GDALINFO แล้วต้องเจอปัญหากับการแสดง RasterAttributeTable (ROT) ทำให้ไม่สามารถดูข้อมูลที่ต้องการ (ที่อยู่ตอนบนของการแสดงผลลัพธ์) วันนี้มีวิธีบอกให้ GDALINFO ไม่ต้องแสดง ROT ที่ยาวมากๆ ดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdalinfo -norat ABC.tif&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2854632487468107371?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2854632487468107371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/09/gdalinfo-rasterattributetable-rot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2854632487468107371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2854632487468107371'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/09/gdalinfo-rasterattributetable-rot.html' title='gdalinfo แบบไม่ต้องแสดง RasterAttributeTable (ROT)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-7856067865470236690</id><published>2010-08-20T17:22:00.003+07:00</published><updated>2010-08-20T18:36:50.201+07:00</updated><title type='text'>ค่าละตูจิจูดและลองจิจูด ควรมีความละเอียดเท่าไหร่?</title><content type='html'>ไปเจอเว็บไซต์ที่น่าสนใจเกี่ยวกับการคำนวณความละเอียดของค่าละติจูดและลองจิจูด ว่ามีความไม่แน่นอนเท่าใดเมื่อเทียบหน่วยเมตริก (หรือระบบ UTM)&lt;br /&gt;จากที่เราทราบ การกำหนดพิกัดของระบบพิกัดภูมิศาสตร์นั้นจะอาศัยการวัดเชิงมุุม โดยขนาดและรูปร่างของโลกนั้นจะขึ้นอยู่กับแต่ละพื้นหลักฐาน (Datum) ที่เราเลือกใช้&lt;br /&gt;คำถามคือถ้าเราต้องบอกค่าพิกัดด้วยระบบพิกัดภูมิศาสตร์ เราควรจะให้ความละเอียดเท่าไหร่ดี ??? (จำนวนจุดทศนิยม)   เช่น ผมอยู่ที่พิกัด 98.98, 18.79 หรือ 98.980581, 18.799626 เป็นต้น จะเห็นได้ว่าทั้งสองจุดนี้มีความละเอียดไม่เท่ากันคือ จำนวนทศนิยมแค่ 2 หลักและจำนวนทศนิยม 6 หลัก เรามาลองคำนวณกันได้ &lt;a href="http://www.nearby.org.uk/precision-ll.cgi"&gt;ที่นี่&lt;/a&gt; เลยครับ&lt;br /&gt;จากตัวอย่างการคำนวณจะเห็นว่าถ้าผมบอกพิกัดแค่ 98.98, 18.79 จะทำให้มีความไม่แน่นอน (คล้ายๆไม่ค่อยมั่นใจ) สูงถึง 1528.60 เมตร (&lt;span style="font-weight: bold;"&gt;ความไม่แน่นอนจะขึ้นอยู่กับความละเอียดของจุดทศนิยมและระยะที่ห่างจากเส้นศูนย์สูตร&lt;/span&gt;)และหากผมใช้ค่า 98.980581, 18.799626 แล้วจะมีความไม่แน่นอนเพียง 0.15 เมตร&lt;br /&gt;จากตัวอย่างจะเห็นว่าการบอกค่าพิกัดที่ความละเอียดของจุดทศนิยมที่แตกต่างกันนั้นจะทำให้การกำหนดตำแหน่งของเรามีความไม่นอนที่แตกต่างกันด้วย ดังนั้นหากจะระบุค่าตำแหน่งด้วยพิกัดภูมิศาสตร์ก็ลองคำนวณดูคร่าวๆได้นะครับว่าตำแหน่งของเรานั้นจะคลาดเคลื่อนไปเท่าใด (อย่าลืมอีกปัจจัยสำคัญคือ ระยะห่างจากเส้นศูนย์สูตรนะครับ ยิ่งห่างความไม่แน่นอนยิ่งน้อย) อ้อ... อีกอย่างนึงครับ เมื่อคำนวณความไม่แน่นอนแล้วลองคลิกที่ &lt;a href="http://www.nearby.org.uk/coord.cgi?p=48.799626,98.980581"&gt;Open in coordinate converter&lt;/a&gt; ทางเว็บไซต์จะคำนวณค่าพิกัดในระบบ UTM ให้ด้วย หลังจากนั้นจะปรากฏของเล่นอีกมากมายเช่น เรียกดูผ่าน Google Maps หรือ Google Maps mashup เป็นต้น&lt;br /&gt;&lt;br /&gt;ปล. การคำนวณจะใช้พื้นหลักฐาน WGS1984 นะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-7856067865470236690?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/7856067865470236690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/08/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7856067865470236690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7856067865470236690'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/08/blog-post.html' title='ค่าละตูจิจูดและลองจิจูด ควรมีความละเอียดเท่าไหร่?'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-7169001715990344213</id><published>2010-08-04T11:36:00.003+07:00</published><updated>2010-08-04T11:54:00.091+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http://www.blogger.com/img/blank.gif'/><title type='text'>วิธีใช้ RasterCalc ใน QGIS</title><content type='html'>ไม่นานมานี้มีเพื่อนๆบางคนเจอปัญหาไม่สามารถใช้งาน RasterCalc ที่เป็น Plugins ตัวนึงใน QGIS วันนี้เลยไปค้นหาวิธีแก้ไขมาดังนี้ครับ&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ดาวน์โหลด pyparsing จาก &lt;a href="http://sourceforge.net/projects/pyparsing/files/"&gt;ที่นี่&lt;/a&gt;&lt;/li&gt;&lt;li&gt;แตกไฟล์ออกมา (ของผมเก็บไว้ที่ C:\Program Files\Quantum GIS Tethys\python\pyparsing-1.5.2)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;คัดลอกไฟล์ pyparsing.py และ pyparsing_py3.py ไปเก็บไว้ที่ C:\Program Files\Quantum GIS Tethys\apps\Python25\Lib&lt;/li&gt;&lt;li&gt;เรียก Plugins ที่ชื่อ RasterCalc ขึ้นมาใช้งาน&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-7169001715990344213?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/7169001715990344213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/08/rastercalc-qgis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7169001715990344213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7169001715990344213'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/08/rastercalc-qgis.html' title='วิธีใช้ RasterCalc ใน QGIS'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2131432064311071130</id><published>2010-08-03T20:18:00.004+07:00</published><updated>2010-08-03T22:20:28.335+07:00</updated><title type='text'>QGIS 1.5 แจ่มมาก.....</title><content type='html'>ได้ทราบข่าวจาก&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;a href="http://wmap.wordpress.com/"&gt; พี่วิโรจน์&lt;/a&gt;&lt;/span&gt; ว่า Quantum GIS เพิ่งออกเวอร์ชันใหม่ เลยไปหามาลองใช้งาน ปรากฏว่า มีหลายเมนูน่าใช้มากๆๆ เช่น การแปลงระบบพิกัด การสร้างเส้นชั้นความสูงหรือการสร้างชั้นพีรามิดข้อมูลภาพ เป็นต้น ซึ่งการออกมาของเวอร์ชันนี้จะช่วยให้ผู้ใช้งานไม่ต้องสั่ง GDAL ทำงานผ่าน Cmmand line (คนรุ่นใหม่อาจจะไม่คุนเคย) โดยสามารถทำงานในลักษณะเดียวกันได้ผ่านทาง GUI ของโปรแกรม QGIS 1.5  (Tethys) สำหรับผู้ที่ต้องการดาวน์โหลดโปรแกรมสามารถคลิกได้ &lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;a href="http://www.qgis.org/wiki/Download"&gt;ทีนี่&lt;/a&gt;&lt;/span&gt; เลยครับ&lt;br /&gt;ส่วนผู้ที่ไม่คุ้นเคยกับ GDAL ผมขออธิบายเกี่ยวกับ GDAL เบื้องต้นดังนี้ครับ&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;/span&gt;GDAL&lt;a href="http://www.gdal.org/"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/a&gt;ย่อมาจาก Geospatial Data Abstraction Library เป็นคลังโปรแกรม (Library) ที่ได้มีประสิทธิภาพและได้รับความนิยมอย่างสูงสำหรับการประมวลผล &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ข้อมูลภาพและข้อมูลกริด&lt;/span&gt;&lt;/span&gt; (บางท่านอาจเรียกว่าข้อมูลแรสเตอร์) และข้อมูล&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ข้อมูลเวคเตอร์&lt;/span&gt;&lt;/span&gt;  สำหรับงานด้านงานภูมิสารสนเทศ (GeoInformatics) รายละเอียดเพิ่มเติมสามารถศึกษาเพิ่มเติมได้ที่เว็บไซต์ทางการ &lt;a href="http://www.gdal.org/"&gt;ที่นี่&lt;/a&gt;  ครับ&lt;br /&gt;&lt;br /&gt;ตัวอย่างการใช้งาน GDAL ผ่านโปรแกรม QGIS 1.5 (Tethys) มีดังนี้ครับ&lt;br /&gt;&lt;ol&gt;&lt;li&gt;การสร้างไฟล์เสมือน (gdalbuildvrt) #### QGIS --&gt; Raster --&gt; Build Virtual Raster (catalog)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;การสร้างเส้นชั้นความสูงจากข้อมูล (gdal_contour) #### QGIS --&gt; Raster--&gt; Contour&lt;/li&gt;&lt;li&gt;การโมเสคข้อมูลข้อมูล (gdal_merge) #### QGIS --&gt; Raster--&gt; Merge&lt;/li&gt;&lt;li&gt;การแปลงระบบพิกัดข้อมูล (gdalwarp) #### QGIS --&gt; Raster--&gt; Warp&lt;/li&gt;&lt;li&gt;การประมาณค่าในช่วง หรือการทำ Interpolation (gdal_grid) #### QGIS --&gt; Raster--&gt; Grid&lt;/li&gt;&lt;li&gt;การแปลงรูปแบบ/การตัด/การบีบอัดข้อมูล (gdal_translate) #### QGIS --&gt; Raster--&gt; Translate&lt;/li&gt;&lt;li&gt;การเรียกดูข้อมูลหรือดู Header ข้อมูล (gdalinfo) #### QGIS --&gt; Raster--&gt; Information&lt;/li&gt;&lt;li&gt;การกำหนดระบบอ้างอิงทางตำแหน่ง (gdalwarp) #### QGIS --&gt; Raster--&gt; Assign projection&lt;/li&gt;&lt;li&gt;การสร้างชั้นพีรามิดข้อมูลภาพ (gdaladdo) #### QGIS --&gt; Raster--&gt; Buildoverviews&lt;/li&gt;&lt;li&gt;การวิเคราะห์ข้อมูลแบบจำลองระดับสูงเชิงเลข (gdaldem) #### QGIS --&gt; Plugins --&gt; Raster based terrain analysis&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2131432064311071130?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2131432064311071130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/08/qgis-15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2131432064311071130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2131432064311071130'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/08/qgis-15.html' title='QGIS 1.5 แจ่มมาก.....'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-7782390455891801206</id><published>2010-07-18T22:48:00.004+07:00</published><updated>2010-07-18T23:07:41.856+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL/PostGIS'/><title type='text'>shp2pgsql กับปัญหาของ Data type</title><content type='html'>เมื่ออาทิตย์ที่ผ่านมาได้มีโอกาสไปสอนน้องๆที่ มหาวิยาลัยนเรศวร พะเยา ใช้งานโปรแกรม PostgreSQL/PostGIS ซึ่งเป็นส่วนหนึ่งสำหรับสร้างการ Web Map Service ด้วย FOSS.&lt;br /&gt;ปัญหาที่พบคือเมื่อใช้ shp2pgsql แล้วไม่สามารถนำไฟล์ SQL ไปสร้างฐานข้อมูลได้ โดยในขั้นตอนการแปลงจาก Shapefile ให้เป็น SQL ไฟล์ก็ไม่มีปัญหาอะไร แต่ที่น่าสังเกตคือ ผมลองใช้ SPIT ใน QGIS ก็ไม่สามารถทำงานได้เช่นกัน ทำให้ต้องมาลองดูวิธีที่พื้นฐานสุดๆอย่างการใช้เจ้า shp2pgsql &lt;br /&gt;ข้อสังเกตที่พบคือ "&lt;span style="font-weight:bold;"&gt;Data type ใน SQL ไฟล์ไม่สอดคล้องกับข้อมูล&lt;/span&gt;" กล่าวคือ ข้อมูลอรรถาธิบาย หรือ Attribute ของ Shapefile นั้นมีความยาวมากกว่าที่เจ้า shp2pgsql กำหนดให้ซึ่งเมื่อดูใน SQL ไฟล์พบว่าเจ้า shp2pgsql กำหนดให้เป็น varchar (50) และเมื่อผมเปลี่ยนให้เป็น varchar (255) แล้วก็สามารถทำงานได้ตามปกติครับ (แต่ผมก็ยัง งง งง ว่าทำไมตอนผมทดลองกับเครื่องของผมเองก่อนการเรียนการสอนนั้นไม่เจอปัญหานี้ ทั้งๆที่การใช้คำสั่งสำหรับ shp2pgsql ก็เหมือนกันทุกอย่าง)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-7782390455891801206?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/7782390455891801206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/07/shp2pgsql-data-type.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7782390455891801206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7782390455891801206'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/07/shp2pgsql-data-type.html' title='shp2pgsql กับปัญหาของ Data type'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-4879162807723484787</id><published>2010-07-14T23:34:00.004+07:00</published><updated>2010-07-20T13:49:55.895+07:00</updated><title type='text'>ทดสอบ GDAL Python Bindings</title><content type='html'>หลังจากติดตั้ง GDAL-x.x.x.win32-pyx.x.exe และ Extract GDAL package ไว้ที่ C:\ แล้วให้ทำการกำหนด path และ gdal_data ใน user env ดังนี้&lt;br /&gt;&lt;br /&gt;PATH=C:\gdalwin32-1.6\bin&lt;br /&gt;GDAL_DATA=C:\gdalwin32-1.6\data&lt;br /&gt;&lt;br /&gt;ทดสอบการใช้งาน&lt;br /&gt;&gt;&gt;&gt; from osgeo import gdal&lt;br /&gt;&gt;&gt;&gt; from osgeo import ogr&lt;br /&gt;&gt;&gt;&gt; from osgeo import osr&lt;br /&gt;&gt;&gt;&gt; from osgeo import gdal_array&lt;br /&gt;&gt;&gt;&gt; from osgeo import gdalconst&lt;br /&gt;หรือ&lt;br /&gt;&gt;&gt;&gt; from osgeo import gdal,ogr,gdal_array, gdalconst&lt;br /&gt;&lt;br /&gt;หากพบปัญหาอื่นๆ สามารถดูเพิ่มเติมได้ที่ &lt;a href="http://trac.osgeo.org/gdal/ticket/2688"&gt;http://trac.osgeo.org/gdal/ticket/2688&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-4879162807723484787?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/4879162807723484787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/07/gdal-python-bindings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4879162807723484787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4879162807723484787'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/07/gdal-python-bindings.html' title='ทดสอบ GDAL Python Bindings'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1232902467773176059</id><published>2010-07-01T23:07:00.009+07:00</published><updated>2010-07-02T00:29:31.105+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การสร้างภาพสีผสม (Color composition) ด้วย GDAL (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอเสนอวิธีการสร้างภาพสีผสม (Color composition) ด้วยคลังโปรแกรม GDAL โดยข้อมูลที่ใช้ผมได้ทดลองนั้นมีรูปแบบข้อมูลคือ GeoTiff นะครับ (.tif) การทำงานนั้นแบ่งออกเป็น 2 ส่วนคือการสร้าง VRT ไฟล์และการแปลง VRT ให้เป็นไฟล์ภาพ&lt;br /&gt;&lt;br /&gt;ตัวอย่างการทำงานมีดังนี้ครับ&lt;br /&gt;1. การสร้าง VRT ไฟล์ด้วย gdalbuildvrt&lt;br /&gt;&gt;&gt;gdalbuildvrt -separate 123.vrt band1.tif band2.tif band3.tif&lt;br /&gt;&lt;br /&gt;2. การแปลง VRT ให้เป็นไฟล์ภาพ&lt;br /&gt;&gt;&gt;gdal_translate -of GTiff b1b2b3.vrt b1b2b3.tif&lt;br /&gt;&lt;br /&gt;ปล. สำหรับข้อมูลแบบ TIFF นั้น ช่วงคลื่นแรกที่ระบุจะเรียงตามแม่สีคือ แดง เขียว น้ำเงิน ตามลำดับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1232902467773176059?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1232902467773176059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/07/color-composition-gdal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1232902467773176059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1232902467773176059'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/07/color-composition-gdal.html' title='การสร้างภาพสีผสม (Color composition) ด้วย GDAL (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-483437118867106624</id><published>2010-06-24T10:58:00.002+07:00</published><updated>2010-06-24T11:06:35.403+07:00</updated><title type='text'>หนังสือ การรังวัดด้วยภาพดิจิทัล (Digital Photogrammetry) มีเผยแพร่แล้วครับ...</title><content type='html'>หลังจากรอมานาน วันนี้ได้รับหนังสือ การรังวัดด้วยภาพดิจิทัล (Digital Photogrammetry) ซึ่งอาจถือได้ว่าเป็นตำราที่ดีและน่าาสนใจสำหรับการเรียนการสอนและการทำวิจัยด้านการรังวัดด้วยภาพ (Photogrammetry) หากท่านใดสนใจ สามารถติดต่อได้ที่ศูนย์หนังสือจุฬาฯ ครับ&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/TCLZmtD_2ZI/AAAAAAAAAFo/2bsyyNr1tjw/s1600/Image021e.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 331px; height: 400px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/TCLZmtD_2ZI/AAAAAAAAAFo/2bsyyNr1tjw/s400/Image021e.jpg" alt="" id="BLOGGER_PHOTO_ID_5486186555045304722" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-483437118867106624?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/483437118867106624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/06/digital-photogrammetry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/483437118867106624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/483437118867106624'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/06/digital-photogrammetry.html' title='หนังสือ การรังวัดด้วยภาพดิจิทัล (Digital Photogrammetry) มีเผยแพร่แล้วครับ...'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/TCLZmtD_2ZI/AAAAAAAAAFo/2bsyyNr1tjw/s72-c/Image021e.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-7036789355205136512</id><published>2010-06-01T21:10:00.005+07:00</published><updated>2010-06-01T23:12:51.855+07:00</updated><title type='text'>เพิ่มเติมส่วนเนื้อหาเกี่ยวข้องกับแหล่งข้อมูลและการให้บริการฟรีผ่านอินเตอร์เน็ต (Free GeoSpatial Data and Services)</title><content type='html'>วันนี้ผมขอเพิ่มเนื้อหาของ Blog ที่เกี่ยวข้องกับแหล่งข้อมูลและการให้บริการฟรีผ่านอินเตอร์เน็ตที่เกี่ยวข้องกับงานภูมิสารสนเทศ ไม่ว่าจะเป็น แหล่งข้อมูลภาพดาวเทียม LANDSAT แบบจำลองระดับสูงเชิงเลขฟรีเกือบทั่วโลก (SRTM  และ ASTER GDEM) รวมถึงการแปลงค่าพิกัดและการคำนวณค่า Geoid undulation (N) ผ่านอินเตอร์เน็ต ซึ่งผมคิดว่าน่าจะเป็นประโยชน์สำหรับการทำงานและการทำวิจัยด้านภูมิสารสนเทศของคนไทย หากท่านใดมีแหล่งข้อมููลอื่นที่เป็นประโยชน์โปรดแจ้งให้ผมทราบเพื่อที่จะได้รวบรวมและแบ่งปันให้นิสิต นักศึกษาและนักวิจัยที่สนใจต่อไปครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขอขอบคุณ ผศ.ดร.ไพศาล สันติธรรมนนท์ที่ได้แนะนำแหล่งข้อมูลที่เป็นประโยชน์ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-7036789355205136512?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/7036789355205136512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/06/free-geospatial-data-and-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7036789355205136512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7036789355205136512'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/06/free-geospatial-data-and-services.html' title='เพิ่มเติมส่วนเนื้อหาเกี่ยวข้องกับแหล่งข้อมูลและการให้บริการฟรีผ่านอินเตอร์เน็ต (Free GeoSpatial Data and Services)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-621108055076471166</id><published>2010-05-11T21:44:00.003+07:00</published><updated>2010-05-11T22:08:16.687+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การแปลงค่าพิกัดอย่างง่ายด้วย gdaltransform (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอนำเสนอวิธีการแปลงค่าพิกัด อย่างง่ายและรวดเร็ว ด้วยคลังโปรแกรม GDAL (ของฟรีและดีก็มีในโลก อีกแล้ว) ที่ชื่อว่า gdaltransform เรามาดูตัวอย่างการใช้งานกันเลยนะครับ ก่อนอื่นเราต้องระบุระบบอ้างอิงทางตำแหน่ง (Spatial Reference System - SRS) ของข้อมูลที่จะป้อนเขาไปและระบบพิกัดที่ต้องการ เช่น ข้อมูลที่ผมจะพิมพ์เข้าไปเป็นค่าระบบพิกัดภูมิศาสตร์ (epsg:4326) หรือค่า ลองจิจูด (Longitude) และ ละติจูด (Latitude) ตามลำดับนะครับ และผมค่าพิกัดที่ผมต้องการคือค่า Easting และ Northing (ตามลำดับเหมือนกัน)ของระบบ UTM WGS1984 Zone 47 (epsg:32647) การทำงานก็สามารถใช้คำสั่งได้ดังนี้ครับ&lt;br /&gt;1. พิมพ์คำลั่ง &gt;&gt;gdaltransform s_srs epsg:4326 -t_srs epsg:32647&lt;br /&gt;2. เมื่อพิมพ์คำสั่งดังกล่าวให้กด Enter ได้เลยครับ&lt;br /&gt;3. หลังจากนั้นบนหน้าต่าง Command Prompt จะขึ้นบรรทัดใหม่ ให้เราป้อนค่า พิกัดที่ต้องการแปลงได้เลย (ต้องเว้นวรรคค่่าพิกัดด้วย space นะครับ) เช่น 100.1234 10.1234 เป็นต้น&lt;br /&gt;4. หลังจากนั้นให้กด Enter อีกที โปรแกรมจะทำการคำนวณแล้วส่งผลลัพธ์ออกมาให้ เช่น 623080.306626492 1119268.1869116 เป็นต้น&lt;br /&gt;5. หากต้องการแปลงค่าพิกัดอื่นๆอีกก็สามารถใช้วิธีการเดิมได้อีก (ตั้งแต่ข้อ 3 เป็นต้นไป) หรือหากต้องการออกจากโปรแกรมก็ให่กด Ctrl + C ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-621108055076471166?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/621108055076471166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/05/gdaltransform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/621108055076471166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/621108055076471166'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/05/gdaltransform.html' title='การแปลงค่าพิกัดอย่างง่ายด้วย gdaltransform (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5997303177152347836</id><published>2010-05-07T00:11:00.003+07:00</published><updated>2010-05-07T00:39:32.674+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>gdalbuildvrt (ของฟรีและดีก็มีในโลก)</title><content type='html'>gdalbuildvrt นั้นจะใช้สำหรับสร้างไฟล์ VRT (ViRtual DaTaset) ซึ่งเป็นไฟล์ภาพเสมือนที่เกิดจากไฟล์ภาพย่อยๆหลายๆไฟล์มาต่อกัน หรือการจำลองไฟล์ที่โมเสคแล้ว ตัวอย่าง เช่น ผมมีแบบจำลองระดับสูงเชิงเลข SRTM (SRTM DEM) ที่ครอบคลุมประเทศไทยทั้งหมดจำนวน 10 ระวาง หากผมต้องการเปิดไฟล์ทั้งหมดในโปรแกรมใดๆก็ตาม ผมต้องทำการเปิดที่ละไฟล์ทั้งหมด 10 ครั้ง การใช้ VRT ไฟล์จะช่วยแก้ปัญหาในขั้นตอนนี้ครับ&lt;br /&gt;วิธีการสร้างไฟล์ VRT สามารถทำได้โดยการใช้โปรแกรมประยุกต์ gdalbuildvrt ที่มีในคลังโปรแกรม GDAL/OGR ตัวอย่างการใช้มีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdalbuildvrt output.vrt *.tif&lt;br /&gt;&lt;br /&gt;โดยไฟล์ VRT นั้นจะสามารถเปิดได้ด้วยโปรแกรม QGIS หรือ OpenEV ก็ได้ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5997303177152347836?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5997303177152347836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/05/gdalbuildvrt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5997303177152347836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5997303177152347836'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/05/gdalbuildvrt.html' title='gdalbuildvrt (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1888677051185106603</id><published>2010-04-24T23:47:00.006+07:00</published><updated>2010-04-25T00:13:01.785+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL/OGR'/><title type='text'>การแปลงค่าพิกัดข้อมูลแบบจุด (SHP2CSV) ด้วย OGR</title><content type='html'>หลังจากลองผิดลองถูกมาหลายครั้งกับ OGR ผมก็ยังไม่เจอแนวทางที่ต้องการสำหรับการแปลงพิกัดข้อมูลแบบจุด (CSV2CSV) ท่านใดทราบช่วยแนะนำหน่อยนะครับ แต่ถึงไม่สามารถาวิธีทำงานได้อย่างที่ต้องการ แต่ผมก็ค้นพบวิธีการที่พอกล้อมแกล้มไปได้โดยการใช้เจ้า OGR นี่แหละครับ วิธีการนั้นซับซ้อนนิดหน่อย โดยต้องทำการแปลงค่าพิกัดของจุดต่างๆให้อยู่ในรูปของ SHP  ก่อนด้วยโปรแกรม QGIS (มีใน Blog นี้แหละครับ ลองหาดู!!!)  แล้วจึงใช้ OGR แปลงค่าพิกัดของจุดเหล่านั้นให้อยู่ในูปของไฟล์ CSV ด้วยคำสั่งดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;ogr2ogr -s_srs epsg:32647 -t_srs epsg:4326 -f CSV en.csv point.shp -lco GEOMETRY=AS_XY&lt;br /&gt;&lt;br /&gt;โดยในไฟล์ CSV จะมีคอลัมน์ใหม่ชื่อ X และ Y ที่เป็นค่าในระบบพิกัดภูมิศาสตร์ (4326)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1888677051185106603?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1888677051185106603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/04/shp2csv-ogr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1888677051185106603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1888677051185106603'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/04/shp2csv-ogr.html' title='การแปลงค่าพิกัดข้อมูลแบบจุด (SHP2CSV) ด้วย OGR'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1724982572532880051</id><published>2010-02-10T21:13:00.002+07:00</published><updated>2010-02-10T21:26:39.108+07:00</updated><title type='text'>ไฟล์ KML อ่านภาษาไทยไม่ได้</title><content type='html'>วันนี้ขอเสนอ วิธีการแก้ไข เกี่ยวกับการแสดงภาษาไทยของไฟล์ KML (เวลาเปิดกับ Google Earth) ดังนี้ครับ&lt;br /&gt;1. เปิดไฟล์ที่มีปัญหาด้วยโปรแกรม QGIS (ถ้ายังไม่มีก็สามารถดาวน์โหลดได้ &lt;a href="http://qgis.org/en/download/current-software.html"&gt;ที่นี่ &lt;/a&gt;ครับ)&lt;br /&gt;2. แปลงนั้นออกมาเป็น ESRI Shapefile ที่มีการเข้ารหัส (Encoding) เป็น UTF-8&lt;br /&gt;3. ใช้ ogr2ogr แปลง ESRI Shapefile ให้เป็น KML&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1724982572532880051?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1724982572532880051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/02/kml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1724982572532880051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1724982572532880051'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/02/kml.html' title='ไฟล์ KML อ่านภาษาไทยไม่ได้'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-7426112403903341097</id><published>2010-02-01T09:24:00.002+07:00</published><updated>2010-02-01T09:35:11.709+07:00</updated><title type='text'>การเลือกชั้นข้อมูลที่ต้องการด้วย LasTools</title><content type='html'>วัันี้ขอนำเสนอวิธีการเลือกชั้นข้อมูลที่ต้องการออกจากข้อมูล Las File ตัวอย่างเรามีข้อมูลไรดาห์ในรูปแบบ Las File ในข้อมูลนี้มีการจำแนกข้อมูลแล้วไว้หลายชั้นข้อมูล เช่น Unclassified (1) หรือ Ground (2) เป็นต้น&lt;br /&gt;&lt;br /&gt;วิธีการดูว่าข้อมูลเรามีจำแนกชั้นข้อมูลหรือยังและแต่ละชั้นมีรัหสอะไร ให้โปรแกรม lasinfo ดังตัวอย่าง&lt;br /&gt;&gt;&gt;lasinfo -i aaa.las&lt;br /&gt;&lt;br /&gt;ส่วนวิธีการแยกข้อมูลที่ต้องการออกมาให้โปรแกรม las2las ดังตัวอย่างดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;las2las -i aaa.las -keep_class 2 -o bbb.las&lt;br /&gt;&lt;br /&gt;จากตัวอย่างผมทำการเก็บคลาสข้อมูลพื้นดิน (Ground) ไว้เพื่อต้องการทำ DEM จากข้อมูลไรดาห์ส่วนคลาสอื่นๆนั้นผมไม่สนใจ (ลบทิ้งได้เลย)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-7426112403903341097?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/7426112403903341097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/02/lastools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7426112403903341097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7426112403903341097'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/02/lastools.html' title='การเลือกชั้นข้อมูลที่ต้องการด้วย LasTools'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-4043779563954086837</id><published>2010-01-11T12:49:00.008+07:00</published><updated>2010-01-11T14:10:05.182+07:00</updated><title type='text'>การสร้าง Polygon จากข้อมูลจุดพิกัดด้วย QGIS</title><content type='html'>วันนี้ขอเสนอวิธีการสร้างข้อมูล Polygon จากข้อมูลจุด (Point) ที่อยู่ในรูปของ text file หรือข้อมูล CSV&lt;br /&gt;กอ่นอื่นเราต้องเตรียมข้อมูลพิกัดจุด (Lat/Long หรือ E, N) ซึ่งอาจอยู่ในรูป CSV เช่น&lt;br /&gt;x, y&lt;br /&gt;755359.337, 1429096.185&lt;br /&gt;777359.337, 1429096.186&lt;br /&gt;777359.337, 1407096.186&lt;br /&gt;755359.337, 1407096.185&lt;br /&gt;&lt;br /&gt;หลังจากนั้นเราจะทำการแปลงข้อมูลจากอักขระ (Text) ให้เป็นข้อมูล Shapefile แบบจุด (Point) ด้วย PlugIn ที่ชื่อ Delimited Text ใน QGIS โดยทำการเลือกข้อมูล text file แล้วแปลงให้เป็น ESRI Shapefile ดังภาพตัวอย่าง&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_axbGw1NZUvo/S0rMSYHqdtI/AAAAAAAAAFg/8XYu7jULg8k/s1600-h/DelimitedText.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 397px;" src="http://4.bp.blogspot.com/_axbGw1NZUvo/S0rMSYHqdtI/AAAAAAAAAFg/8XYu7jULg8k/s400/DelimitedText.jpg" alt="" id="BLOGGER_PHOTO_ID_5425373317205489362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;หลังจากได้ข้อมูลจุดในรูปของ ESRI Shapefile แล้วขั้นตอนถัดมาคือการแปลงข้อมูลแบบจุดให้เป็นข้อมูล Polygon โดยการใช้ฟังก์ชัน Convex Hull ที่อยู่ในเมนู Tools --&gt; Geoprocessing Tools ดังภาพ&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_axbGw1NZUvo/S0rMES1BPpI/AAAAAAAAAFY/1BRzxRdr-es/s1600-h/ConvexHull.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 398px; height: 294px;" src="http://3.bp.blogspot.com/_axbGw1NZUvo/S0rMES1BPpI/AAAAAAAAAFY/1BRzxRdr-es/s400/ConvexHull.jpg" alt="" id="BLOGGER_PHOTO_ID_5425373075266944658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;วิธีการนี้มีข้อจำกัดหลายประการ เช่น&lt;br /&gt;1. ใช้ได้เฉพาะข้อมูล Polygon ที่ไม่ซับซ้อน อาทิ รูปสี่เหลี่ยมมุมฉาก สี่เหลี่ยมผืนผ้าหรือสามเหลี่ยม เป็นต้น&lt;br /&gt;2. ไม่สามารถใช้ได้กับ Polygon ที่มี Ring (ถ้านึกไม่ออกให้นึกถึงโดนัทนะครับ ที่มีรูตรงกลาง)&lt;br /&gt;3. ถ้าข้อมูลมี node ที่ยื่นออกมาจากกลุ่มข้อมูลจะทำให้ Polygon ที่ได้ผิดไปจากความเป็นจริง (ไม่รู้จะอธิบายยังไงดี แฮะๆ)&lt;br /&gt;&lt;br /&gt;ปล. เพื่อเพิ่มความเข้าใจโปรดศึกษาเรื่อง Convex Hull ละกันนะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-4043779563954086837?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/4043779563954086837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/01/polygon-qgis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4043779563954086837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4043779563954086837'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/01/polygon-qgis.html' title='การสร้าง Polygon จากข้อมูลจุดพิกัดด้วย QGIS'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_axbGw1NZUvo/S0rMSYHqdtI/AAAAAAAAAFg/8XYu7jULg8k/s72-c/DelimitedText.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-8140022587263962545</id><published>2010-01-05T16:06:00.002+07:00</published><updated>2010-01-05T16:11:36.471+07:00</updated><title type='text'>วิธีแก้ไขการใช้งาน GDAL ที่เกี่ยวข้องกับ Python</title><content type='html'>เมื่อวานเจอปัญหาการใช้งาน gdal_merge หรือ gdal_merge.py เลยอยากจะเก็บไว้เตือนความจำสักหน่อยว่า วิธีแก้ไขนั้นไม่ยาก เพียงแต่เพิ่ม Path ของ python ที่ FWtools ใช้งานให้ระบบ (Windows) รู้จักก็เรียบร้อยตัวอย่างของ Path มีดังนี้&lt;br /&gt;C:\Python26 ### อันนี้คือ path ปกติของ python&lt;br /&gt;C:\Program Files\FWTools2.4.6\python ### ส่วนอันนี้คือ Path ของ python ที่ FWtools ใช้งาน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-8140022587263962545?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/8140022587263962545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2010/01/gdal-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8140022587263962545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8140022587263962545'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2010/01/gdal-python.html' title='วิธีแก้ไขการใช้งาน GDAL ที่เกี่ยวข้องกับ Python'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2991883932267472978</id><published>2009-12-02T12:32:00.003+07:00</published><updated>2010-05-07T00:43:13.795+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>แปลงไฟล์จำนวนมากด้วยคำสั่งบรรทัดเดียว (ของฟรีและดีก็มีในโลก)</title><content type='html'>ไม่ได้เพิ่มเติมเนื้อใน Blog ตั้งหลายสัปดาห์เนื่องจากติดภารกิจสำคัญ วันนี้เลยขอแนะนำ การใช้งาน GDAL ที่น่าสนใจอย่างยิ่งอีกสักตัวอย่างนึง ซึ่งก็คือ การแปลงรูปแบบข้อมูลจากรูปแบบนึงไปเป็นอีกรูปแบบนึง ฟังดูอาจ งง งง งั้นขอยกตัวอย่าง เช่น การแปลงข้อมูล GeoTIFF ให้เป็น JPEG เป็นต้น&lt;br /&gt;ฟังดูก็ง่ายๆนิ ไม่น่ามีปัญหาอะไร แต่ถ้าหากเราต้องการแปลงไฟล์จำนวนมากๆ (มากกว่า 1,000 ไฟล์) ละจะทำยังไงดี ต้องมานั่งพิมพ์คำสั่งทีละบรรทัด คงไม่ไหวมั้ง !!!&lt;br /&gt;วิธีการที่จะแนะนำนี้ บางครั้งเราสามารถเรียกว่าเป็น batch processing ก็ได้นะครับ เรามาเริ่มกันเลยดีกว่า&lt;br /&gt;ตัวอย่างผมมีไฟล์ภาพจำนวนมากในโฟลเดอร์ C:\myImage โดยเป็นไฟล์นามสกุล TIFF ทั้งหมด ปกติแล้วหากต้องการแปลงนามสกุลเราก็จะใช้ gdal_translate เช่น&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdal_translate -of JPEG abc.tif abc.jpg&lt;br /&gt;&lt;br /&gt;แต่หากต้องการแปลงไฟล์จำนวนมาก เราสามารถใช้ batch processing เข้ามาช่วยได้ดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt; for %i IN (C:\myImage\*.tif) DO gdal_translate -of JPEG %i %~ni.jpg&lt;br /&gt;&lt;br /&gt;เพียงเท่านี้ไฟล์ทั้งหมดภายใด้ C:\myImage ที่มีนามสกุล TIFF ก็จะถูกแปลงให้เป็น JPEG ทั้งหมดแล้วครับ !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2991883932267472978?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2991883932267472978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/12/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2991883932267472978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2991883932267472978'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/12/blog-post.html' title='แปลงไฟล์จำนวนมากด้วยคำสั่งบรรทัดเดียว (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3408379679206818142</id><published>2009-11-15T23:44:00.003+07:00</published><updated>2009-11-16T00:19:23.091+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การลบขอบข้อมูลภาพก่อนใช้งาน Gdal2tiles (ของฟรีและดีก็มีในโลก)</title><content type='html'>หากท่านเคยใช้งาน gdal2tiles กับข้อมูลภาพถ่ายดาวเทียมแบบเต็มระวาง มักจะพบว่าเมื่อเปิดข้อมูลภาพเหล่านั้นกับโปรแกรม Google Earth มักจะปรากฏขอบดำบริเวณภาพ สาเหตุก็เนื่องมาจากวงโคจรของดาวเทียมนั้นไม่ได้อยู่ในแนวเหนือใต้จริงๆแต่มีการเยื้องออกจากเส้นละติจูดต่างๆทำให้การบันทึกข้อมูลนั้นเป็นแนวเอียงวันนี้ขอนำเสนอเทคนิคการลบขอบดำออก (เมื่อต้องการนำภาพไปเปิดกับโปรแกรม Google Earth) ด้วยโปรแกรม gdalwarp โดยก่อนอื่นเราต้องทราบค่าบริเวณขอบดำเหล่านี้ก่อน (ปกติเป็นศูนย์) และเมื่อเราทราบแล้วเราก็จะบอกให้โปรแกรมทราบว่าค่าเหล่านี้เป็นค่าที่ไม่มีข้อมูล (No data) ให้จัดการทำให้เป็นชั้นข้อมูลเอลฟา (Alpha Layer) ซึ่งโปรแกรมด้านกาประมวลผลภาพส่วนใหญ่จะใช้เจ้าชั้นข้อมูลเอลฟานี้แทนค่าโปร่งใส (Transparent layer) นั่นเอง ตัวอย่างการใช้งานมีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdalwarp -srcnodata [value] -dstalpha [input_file] [output_file]&lt;br /&gt;&lt;br /&gt;ตัวอย่างการมใช้งานมีดังนี้่ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdalwarp -srcnodata 0 -dstalpha abc.tif abc_alpha.tif&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3408379679206818142?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3408379679206818142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/11/gdal2tiles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3408379679206818142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3408379679206818142'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/11/gdal2tiles.html' title='การลบขอบข้อมูลภาพก่อนใช้งาน Gdal2tiles (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-6203654209998479165</id><published>2009-11-09T11:03:00.002+07:00</published><updated>2009-11-09T11:12:24.376+07:00</updated><title type='text'>fwtools 2.4.6 ออกแล้วครับ !!!</title><content type='html'>วันนี้ได้ลองเข้าไปดูความเคลื่อนไหวของโปรแกรม fwtools เนื่องจากต้องไปช่วยอบรมเรื่อง Digital Image Processing ที่ สทอภ. ปรากฏว่ามีเวอร์ชันใหม่ออกมาแล้วคือ 2.4.6 สามารถดาวน์โหลดได้ &lt;a href="http://home.gdal.org/fwtools/FWTools246.exe"&gt;ที่นี่&lt;/a&gt;  ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-6203654209998479165?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/6203654209998479165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/11/fwtools-246.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6203654209998479165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6203654209998479165'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/11/fwtools-246.html' title='fwtools 2.4.6 ออกแล้วครับ !!!'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3686743467002455830</id><published>2009-11-07T08:54:00.002+07:00</published><updated>2009-11-07T09:13:23.524+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การลดรายละเอียดข้อมูลภาพและการเปลี่ยนภาพสีให้เป็นภาพขาวขดำ (เบื้องต้น) ด้วย GDAL</title><content type='html'>วันนี้ขอนำเสนอการลดรายละเอียดข้อมูลภาพ (Reduce resolution) และการแปลงภาพสีให้เป็นภาพขาว-ดำ (Color to Grey) อย่างง่ายด้วย gdalwarp (ลดรายละเอียด) และ gdal_translate (เปลี่ยนจากภาพสีให้เป็นภาพขาว-ดำ)&lt;br /&gt;&lt;br /&gt;ตัวอย่างนี้สมมุติว่าผมมีภาพสีความละเอียด 1 เมตร ต้องการแปลงให้เป็นภาพขาว-ดำ ที่มีความละเอียดจุดภาพ 10 เมตร (จะเห็นว่าการทำงานนี้ประกอบด้วย 2 ขั้นตอนนะครับคือ ลดรายละเอียดและแปลงระบบสี)&lt;br /&gt;&lt;br /&gt;ผมขอเริ่มด้วยการลดรายละเอียดข้อมูลภาพก่อนด้วย gdalwarp ซึ่งใช้คำสั่งดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdalwarp -tr 10 10 -r cubic sample.tif resize.tif&lt;br /&gt;&lt;br /&gt;โดย option "-tr" หมายถึง การกำหนดขนาดของจุดภาพ (GSD) ของไฟล์ผลลัพธ์ที่ต้องการ&lt;br /&gt;และ option "-r" หมายถึง วิธีการ resampling จากตัวอย่างผมเลือกใช้วิธี Cubic Convolution&lt;br /&gt;&lt;br /&gt;หลังจากได้ภาพที่ลดรายละเอียดจุดภาพลงแล้วเราจะทำการแปลงภาพสีให้เป็นภาพขาว-ดำด้วยโปรแกรม gdal_translate ดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdal_translate -b 1 resize.tif resize_grey.tif&lt;br /&gt;&lt;br /&gt;โดย option "-b" หมายถึง ให้เลือกให้เลือกเอาเฉพาะช่วงคลื่น (Band) ที่ต้องการเท่านั้น (จากตัวอย่างคือเอาเฉพาะช่วงคลื่นที่ 1 เท่านั้น)&lt;br /&gt;&lt;br /&gt;ผลลัพธ์ที่ได้จากตัวอย่างนี้คือภาพต้นฉบับ (ภาพสี 3 ช่วงคลื่นขนาดจุดภาพ 1 เมตร) จะถูกแปลงให้เป็นภาพขาว-ดำ (1 ช่วงคลื่น) ที่มีความละเอียดจุดภาพ 10 เมตร และหากท่านใดต้องการทำกระบวนการนี้กับข้อมูลภาพจำนวนมากก็สามารถใช้การทำงานแบบ Batch processing ได้ครับ (ลองหาตัวอย่างการใช้งาน Batch processing ใน Blog นี้ดูนะครับ)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3686743467002455830?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3686743467002455830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/11/gdal.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3686743467002455830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3686743467002455830'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/11/gdal.html' title='การลดรายละเอียดข้อมูลภาพและการเปลี่ยนภาพสีให้เป็นภาพขาวขดำ (เบื้องต้น) ด้วย GDAL'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3082572152592947243</id><published>2009-11-06T11:07:00.002+07:00</published><updated>2009-11-06T12:54:36.893+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OGR usage'/><title type='text'>การแปลง Format ของข้อมูลเวคเตอร์ด้วย GDAL/OGR</title><content type='html'>วันนี้ขอนำเสนอการแปลงรูปแบบข้อมูลเวคเตอร์ เช่น การแปลงไฟล์ DGN ให้เป็น KML เป็นต้น&lt;br /&gt;การทำงานให้ใช้คำสั่ง ogr2ogr ซึ่งมี syntax การใช้งานดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;ogr2ogr -option output_file input_file&lt;br /&gt;&lt;br /&gt;โดย option ที่สำคัญมีดังนี้&lt;br /&gt;-f "format_name" ใช้สำหรับการระบุ format ของผลลัพธ์ที่ต้องการ เช่น -f "KML" หรือ -f "ESRI Shapefile" เป็นต้น&lt;br /&gt;-s_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ต้นฉบับ เช่น -s_srs epsg:4326 หรือ -s_srs epsg:32647 เป็นต้น&lt;br /&gt;-t_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ผลลัพธ์&lt;br /&gt;&lt;br /&gt;ตัวอย่างการใช้งาน&lt;br /&gt;&lt;br /&gt;&gt;&gt;ogr2ogr -f "KML" index.kml index.shp&lt;br /&gt;&lt;br /&gt;นอกจากนี้เรายังสามารถแปลงระบบอ้างอิงทางตำแหน่ง (ระบบพิกัด) พร้อมกับการแปลง format ในคำสั่งเดียวดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;ogr2ogr -s_srs epsg:32647 -t_srs epsg:4326 -f "KML" index.kml index.shp&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3082572152592947243?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3082572152592947243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/11/format-gdalogr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3082572152592947243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3082572152592947243'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/11/format-gdalogr.html' title='การแปลง Format ของข้อมูลเวคเตอร์ด้วย GDAL/OGR'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-6987408724572104200</id><published>2009-10-22T11:47:00.002+07:00</published><updated>2009-10-22T11:55:37.155+07:00</updated><title type='text'>ขอเชิญรับฟังการบรรยายพิเศษหัวข้อ "Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning"</title><content type='html'>เรียนเชิญทุกท่านเข้ารับฟังการบรรยายพิเศษในหัวข้อ "Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning” โดย Professor Dr. George Vosselmann (Editor-in-Chief of the ISPRS Journal of Photogrammetry and Remote Sensing) จากสถาบัน ITC, Netherland.&lt;br /&gt;กำหนดการมีดังนี้ครับ&lt;br /&gt;วันที่ 29 ตุลาคม 2552&lt;br /&gt;9:00-11:00 Special Lecture at the Faculty of Engineering , ( 200 Academician and Professionals)&lt;br /&gt;“Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-6987408724572104200?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/6987408724572104200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/10/advances-in-photogrammetry-airborne.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6987408724572104200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6987408724572104200'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/10/advances-in-photogrammetry-airborne.html' title='ขอเชิญรับฟังการบรรยายพิเศษหัวข้อ &quot;Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning&quot;'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1834138483647624994</id><published>2009-10-15T15:04:00.002+07:00</published><updated>2009-10-15T16:09:30.099+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การทำ Histogram Equalization ด้วย gdalenhance (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอเสนอเทคนิคการทำ Histogram Equalization ของข้อมูลาพด้วย GDAL (gdalenhance) ตัวอย่างการใช้งานเช่น การแปลงข้อมูลภาพแบบ 16bit ให้เป็น 8bit เป็นต้น โดยโครงสร้างคำสั่งการใช้งาน gdalenhance มีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdalenhance -ot [dataType] -equlize input_file out_file&lt;br /&gt;&lt;br /&gt;ส่วนตัวอย่างการทำงานมีดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt; gdalenhance -ot Byte -equlaize dem16b.tif dem8b.tif&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1834138483647624994?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1834138483647624994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/10/histogram-equalization-gdalenhance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1834138483647624994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1834138483647624994'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/10/histogram-equalization-gdalenhance.html' title='การทำ Histogram Equalization ด้วย gdalenhance (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-8741674850679081617</id><published>2009-10-13T22:33:00.005+07:00</published><updated>2009-10-23T22:53:34.248+07:00</updated><title type='text'>การผสมสี (Color composition)</title><content type='html'>จากคราวที่แล้วได้แนะนำการสร้างแผนที่เฉดสี ครั้งนี้มีตัวช่วยสำหรับการกำหนดค่าของแม่สีต่างๆตามต้องการดังภาพครับ&lt;br /&gt;&lt;br /&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/c/c2/AdditiveColor.svg"&gt;&lt;img alt="File:AdditiveColor.svg" src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/AdditiveColor.svg/400px-AdditiveColor.svg.png" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;(อ้างอิงจาก http://en.wikipedia.org/wiki/File:AdditiveColor.svg)&lt;br /&gt;&lt;br /&gt;จากภาพข้างต้นสามารถสรุปได้ดังนี้ครับ&lt;br /&gt;สีแดง ค่าที่กำหนดคือ 255 0 0&lt;br /&gt;สีเขียว ค่าที่กำหนดคือ 0 255 0&lt;br /&gt;สีน้ำเงิน ค่าที่กำหนดคือ 0 0 255&lt;br /&gt;สีเหลือง ค่าที่กำหนดคือ 255 255 0&lt;br /&gt;สีฟ้า ค่าที่กำหนดคือ 0 255 255&lt;br /&gt;สีม่วงแดง ค่าที่กำหนดคือ 255 0 255&lt;br /&gt;สีขาว ค่าที่กำหนดคือ 255 255 255&lt;br /&gt;&lt;br /&gt;หากต้องการสีมากกว่านี้อาจลดค่าของแม่สีหลักที่ผสมกัน เช่นต้องการสีเหลือง (แดง +เขียว) อ่อนให้ลดค่าของแม่สีแดงหรือเขียวลงจาก 255 เป็น 200 เป็นต้น&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-8741674850679081617?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/8741674850679081617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/10/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8741674850679081617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8741674850679081617'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/10/blog-post.html' title='การผสมสี (Color composition)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-4600319115846256782</id><published>2009-10-13T21:28:00.008+07:00</published><updated>2009-10-23T22:50:47.530+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การสร้างแผนที่เฉดสีสำหรับข้อมูลแบบจำลองระดับสูงเชิงเลขด้วย GDAL (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอนำเสนอวิธีการสร้าง Color relief สำหรับข้อมูลแบบจำลองระดับสูงเชิงเลข (Digital Elevation Model - DEM) ด้วย GDAL อย่างง่าย โดยหลักการที่สำคัญของการทำงานนี้คือ การแยกความแตกต่างด้านความสูงด้วยสีต่างๆ หรือการกำหนดค่าระดับความสูงและค่าของสีให้กับพื้นที่ต่างๆ เช่น พื้นที่ภูเขา (ความสูงมาก) แทนด้วยสีแดง ส่วนพื้นที่ราบ (ความสูงน้อย) แทนด้วยสีเขียว และพื้นที่ไม่สูงมากนักแทนด้วยสีเหลือง เป็นต้น&lt;br /&gt;การทำงานก็สามารถทำได้โดยการใช้คำสั่งดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdaldem color-relief input_file color_text_file output_color_relief_map&lt;br /&gt;&lt;br /&gt;โดยที่&lt;br /&gt;&lt;br /&gt;gdaldem คือ คำสั่งที่ใช้ทำงาน&lt;br /&gt;color-relief คือ option สำหรับการสร้างแผนที่เฉดสี (แปลจากคำว่า color relief map)&lt;br /&gt;input_file คือ ไฟล์แบบจำลองระดับสูงเชิงเลข (DEM)&lt;br /&gt;color_text_file คือ ไฟล์ที่กำหนดค่าความสูงและค่าของแม่สีต่างๆ&lt;br /&gt;output_color_relief_map คือ ไฟล์ผลลัพธ์ที่ได้ซึ่งก็คือ แผนที่เฉดสีนั่นเอง&lt;br /&gt;&lt;br /&gt;วิธีการสร้าง color_text_file มีดังนี้ครับ&lt;br /&gt;คอลัมน์แรกคือค่าความสูงที่กำหนด คอลัมน์ที่สองคือ ค่าของแม่สีแดง คอลัมน์ที่สามคือ ค่าของแม่สีเขียวและคอลัมน์ที่สี่คือ ค่าของแม่สีน้ำเงิน ดังนี้&lt;br /&gt;&lt;br /&gt;Height Red Green Blue&lt;br /&gt;... ... ... ...&lt;br /&gt;... ... ... ...&lt;br /&gt;... ... ... ...&lt;br /&gt;&lt;br /&gt;ตัวอย่างการใช้งานจริงมีดังนี้&lt;br /&gt;300.0 20 255 150&lt;br /&gt;325.0 20 255 80&lt;br /&gt;350.0 20 255 00&lt;br /&gt;375.0 255 255 0&lt;br /&gt;400.0 255 200 00&lt;br /&gt;425.0 255 50 0&lt;br /&gt;450.0 255 0 0&lt;br /&gt;โดยข้อมูลเหล่านี้ต้องจัดเก็บในรูปไฟอักขระ (Text file) ธรรมดาทั่วไป (*.txt)&lt;br /&gt;มาดูตัวอย่างการใช้งานจริงกันนะครับ&lt;br /&gt;ผมมีไฟล์แบบจำลองระดับสูงเชิงเลขดังภาพนี้&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/StSaemMVBCI/AAAAAAAAAEo/3pNvb0R2Vxs/s1600-h/dem.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 395px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/StSaemMVBCI/AAAAAAAAAEo/3pNvb0R2Vxs/s400/dem.jpg" alt="" id="BLOGGER_PHOTO_ID_5392104504308335650" border="0" /&gt;&lt;/a&gt;และสร้าง color_text_file โดยผมได้กำหนดค่าความสูง (Height) ค่าของแต่ละแม่สี (Red Green Blue - RGB) และบันทึกในรูป Text file ชื่อ dem_legend.txt ดังนี้&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/StSbc-igmPI/AAAAAAAAAE4/e-jGfjxUnic/s1600-h/dem_legend.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 258px; height: 227px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/StSbc-igmPI/AAAAAAAAAE4/e-jGfjxUnic/s400/dem_legend.jpg" alt="" id="BLOGGER_PHOTO_ID_5392105575995709682" border="0" /&gt;&lt;/a&gt;หลังจากนั้นผมจึงใช้คำสั่ง gdaldem เพื่อสร้างแผนที่เฉดสีดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdaldem color-relief dem.tif dem_legend.txt dem_relief.tif&lt;br /&gt;&lt;br /&gt;ผลลัพธ์ที่ได้มีดังภาพตัวอย่างดังนี้&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_axbGw1NZUvo/StScZAloj9I/AAAAAAAAAFA/Fg2f3_yt52Q/s1600-h/dem_relief.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 398px;" src="http://3.bp.blogspot.com/_axbGw1NZUvo/StScZAloj9I/AAAAAAAAAFA/Fg2f3_yt52Q/s400/dem_relief.jpg" alt="" id="BLOGGER_PHOTO_ID_5392106607337836498" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-4600319115846256782?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/4600319115846256782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/10/gdal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4600319115846256782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4600319115846256782'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/10/gdal.html' title='การสร้างแผนที่เฉดสีสำหรับข้อมูลแบบจำลองระดับสูงเชิงเลขด้วย GDAL (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/StSaemMVBCI/AAAAAAAAAEo/3pNvb0R2Vxs/s72-c/dem.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5048438352255400466</id><published>2009-09-30T15:29:00.003+07:00</published><updated>2009-09-30T17:53:32.539+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>gdalwarp แบบกำหนดค่าพิกัดจุดควบคุม (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอเสนอ การใช้งาน gdalwarp แบบใช้ค่าพิกัดจุดควบคุม ตัวอย่างของการทำงานนี้คือ วิธีการแปลงระบบพิกัดจากข้อมูลภาพที่ไม่มีระบบพิกัดให้มีระบบพิกัดตามต้องการ เช่น แปลงข้อมูลภาพแผนที่ภูมิประเทศที่ผ่านการสแกนให้มีระบบพิกัด หรือข้อมูลภาพถ่ายดาวเทียมที่ไม่มีค่าพิกัดให้มีค่าพิกัด เป็นต้น&lt;br /&gt;ขั้นตอนการทำงานโดยย่อมีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. กำหนดค่าพิกัดของจุดควบคุม&lt;/span&gt;&lt;br /&gt;ค่าพิกัดของจุดควบคุมนั้นเป็นค่าที่ได้จาก การรังวัดบนภาพและการรังวัดค่าพิกัดบนพื้นดิน (อาจจะใช้การวัดจากแหล่งข้อมูลอื่น เช่น วัดจากข้อมูลภาพถ่ายทางอากาศ) รูปแบบข้อมูลที่จัดเก็บมีดังนี้ครับ&lt;br /&gt;Image Coordinate (x, y) และ Ground Coordinate (E, N) เช่น 1 1 98.85231 18.93516 ซึ่งหมายถึง ข้อมูลภาพที่มีพิกัด (1,1) นั้นจะมีพิกัดพื้นดิน (98.85231,18.93516 ) เป็นต้น สำหรับการทดลองครั้งนี้ผมได้ลองใช้จุดควบคุมทั้งสิ้น 4 จุดดังนี้&lt;br /&gt;จุดที่ 1 มีค่าพิกัด 1 1 98.85231 18.93516&lt;br /&gt;จุดที่ 2 มีค่าพิกัด 12000 1 99.10726 18.89724&lt;br /&gt;จุดที่ 3 มีค่าพิกัด 12000 12000 99.05081 18.67978&lt;br /&gt;จุดที่ 4 มีค่าพิกัด 1 12000 98.79618 18.71761&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. เพิ่มค่าพิกัดของจุดควบคุมใส่ข้อมูลภาพ&lt;/span&gt;&lt;br /&gt;เป็นการเพิ่มข้อมูลเกี่ยวกับจุดควบคุมเข้าสู่ข้อมูลภาพ การทำงานขั้นตอนนี้สามารถทำได้โดยการใช้งานผ่าน gdal_translate ดังตัวอย่างดังนี้&lt;br /&gt;gdal_translate -gcp [x y E N] ... input_file output_file&lt;br /&gt;ตัวอย่งเช่น&lt;br /&gt;&gt;&gt;gdal_translate -gcp 1 1 98.85231 18.93516 -gcp 12000 1 99.10726 18.89724 -gcp 12000 12000 99.05081 18.67978 -gcp 1 12000 98.79618 18.71761 sample.tif sample_gcp.tif&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. การแปลงระบบพิกัด&lt;/span&gt;&lt;br /&gt;เป็นขั้นตอนที่ใช้ข้อมูล(ค่าพิกัด)ที่อยู่ในข้อมูลภาพมาทำการแปลงระบบพิกัดการใช้งานสามารถทำงานได้ผ่านโปรแกรม gdalwarp ดังตัวอย่างดังนี้&lt;br /&gt;&gt;&gt;gdawarp -r cubic -t_srs epsg:4326 sample_gcp.tif sample4326.tif&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ข้อพึงระวัง&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;โปรแกรมยังไม่สามารถแสดงเศษเหลือ (Residual) ของจุดควบคุมได้ทำให้เราไม่ทราบว่าจุดควบคุมเหล่านั้นมีความคลาดเคลื่อนมากน้อยเพียงใด&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5048438352255400466?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5048438352255400466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/09/gdalwarp.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5048438352255400466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5048438352255400466'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/09/gdalwarp.html' title='gdalwarp แบบกำหนดค่าพิกัดจุดควบคุม (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-663857497499864724</id><published>2009-09-25T14:34:00.011+07:00</published><updated>2010-01-15T23:03:04.862+07:00</updated><title type='text'>การแก้ปัญหาระบบสมการเชิงเส้นด้วย Octave และตัวอย่างสำหรับการแปลงแบบสัมพรรค (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอแนะนำวิธีการแก้ปัญหาระบบสมการแบบใช้เมทริกซ์เข้ามาช่วย (ลืมเรื่องสมการเชิงเส้นและเมทริกซ์กันรึยังครับ แฮะๆ) ตัวอย่างผมมีระบบสมการเชิงเส้นแบบสองตัวแปร (ตัวไม่รู้ค่า 2 ตัว) ดังนี้&lt;br /&gt;2x + y = 19    ----- (1)&lt;br /&gt;x + y = 14      ----- (2)&lt;br /&gt;ถ้าเป็นสมัยมัธยมต้นเราก็จะใช้วิธีย้ายข้างสมการ ดังนี้ครับ&lt;br /&gt;เริ่มต้นจากย้ายข้าง สมการที่ (1) จะได้ y = 19 + 2x แล้วแทนค่า y ในสมการที่ (2) จะได้ค่า x เท่ากับ 5&lt;br /&gt;หลังจากนั้นให้แทนค่า x ในสมการที่ (1) หรือ (2) ก็ได้แล้วจะได้ค่า y = 9&lt;br /&gt;ดังนั้นจากระบบสมการดังกล่าวเราจะได้ค่า x และ y เท่ากับ 5 และ 9 ตามลำดับ&lt;br /&gt;&lt;br /&gt;จากตัวอย่างดังกล่าวจะเห็นได้ว่าขั้นตอนไม่ค่อยซับซ้อนเท่าไหร่นะครับ คราวนี้เรามาดูตัวอย่างที่มีการใช้งานจริงในด้านภูมิสารสนเทศนะครับ&lt;br /&gt;สมมุติผมต้องการแปลงระบบพิกัดของข้อมูลภาพ (Image Georeferencing) โดยอาศัยการแปลงแบบสัมพรรคแบบสองมิติ (2D Affine Transformation)  ซึ่งก็คือสมการโพลีโนเมียลกำลังหนึ่ง (1st order polynomial) นั่นเอง ก่อนอื่นผมต้องคำนวณก่อนว่าหากใช้สมการโพลีโนเมียลกำลังหนึ่งนั้นต้องรังวัดจุดควบคุมภาคพื้นดินและรังวัดบนภาพทั้งหมดกี่จุด (วิธีการคำนวณดูได้จากกระทู้ก่อนหน้านี้ &lt;a href="http://sawarino.blogspot.com/2009/09/blog-post.html"&gt;ที่่นี่&lt;/a&gt; ) เพื่อความสะดวกและง่ายต่อการอธิบายผมขออนุญาตใช้จำนวนสมการเท่ากับจำนวนตัวไม่รู้ค่า (Unknown) หรือแค่ให้พอหาคำตอบได้เท่านั้นแต่ไม่เหมาะกับการทำงานจริง (การทำงานจริงควรรังวัดให้เกินพอนะครับ จำนวนจุดยิ่งเยอะและค่า residual น้อยๆยิ่งดีครับ)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;สรุป&lt;/span&gt; นะครับ หากต้องการแปลงระบบพิกัดด้วย&lt;span style="font-weight: bold;"&gt;การแปลงสัมพรรคแบบสองมิติ &lt;/span&gt;นั้นต้องใช้ &lt;span style="font-weight: bold;"&gt;จุ&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ดควบคุม 3 จุด&lt;/span&gt; (ขั้นต่ำ)&lt;br /&gt;สำหรับครั้งนี้ผมสมมุติว่าผมรังวัดค่าพิกัดภาพ (Image Coordinate) และพิกัดพื้นดิน (Ground Coornidate) ได้ดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/SryAancZ9cI/AAAAAAAAAEY/OFAaUX_RtS0/s1600-h/sampleData_ixiy-gxgy.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 382px; height: 85px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/SryAancZ9cI/AAAAAAAAAEY/OFAaUX_RtS0/s400/sampleData_ixiy-gxgy.jpg" alt="" id="BLOGGER_PHOTO_ID_5385320449181349314" border="0" /&gt;&lt;/a&gt;โดย (ix,iy) คือพิกัดที่วัดได้บนภาพหรือพิกัดภาพนั่นเอง ส่วน (gX,gY) คือค่าพิกัดพื้นดิน (ระบบใดๆก็ได้ ตัวอย่างนี้ผมขอใช้ระบบพิกัดภาพเทียบกับระบบพิกัดกริด UTM 47N) และจากระบบสมการโพลีโนเมียลกำลังหนึ่งหรือสมการการแปลงแบบสัมพรรคซึ่งมีรูปสมการดังนี้&lt;br /&gt;&lt;br /&gt;Xi = a (xi) + b (yi) + c&lt;br /&gt;Yi = d (xi) + e (yi) + f&lt;br /&gt;&lt;br /&gt;จากสมข้างต้นจะเห็นได้ว่าถ้าเราต้องการทราบพิกัดของจุดภาพใดๆ(จุดใดก็ได้บนภาพ) ว่ามีค่าพิกัดพื้นดิน (UTM 47N) เป็นเท่าไหร่ เราก็สามารถทำได้เพียงใส่ค่าพิกัดภาพ (xi,yi)  แทนลงไปในสมการก็จะได้ค่าพิกัดพื้นดิน (Xi,Yi) ทันที&lt;br /&gt;ง่ายไหมครับ ดูผ่านๆหมือนง่ายนะครับ &lt;span style="font-weight: bold;"&gt;แต่&lt;/span&gt;จากสมการข้างต้นสิ่งที่เรายังไม่รู้คือค่าของสัมประสิทธิ์ (Coeficient) ต่างๆ ซึ่งก็คือค่า a,b,c,d,e,f นั่นเอง แล้วเราจะหาได้อย่างไรละครับ (ค่าสัมประสิทธิ์เหล่านี้จะได้จากการหาความสัมพันธ์ระหว่างระบบพิกัดทั้งของโดยใช้ค่าพิกัดของจุดร่วมหรือ Common points ที่เรารังวัดได้จากทั้งระบบพิกัดภาพและระบบพิกัดพื้นดิน)&lt;br /&gt;&lt;br /&gt;วิธีการก็คือเราสามารถหาได้โดยอาศัยความสัมพันธ์ของพิกัดจุดภาพและพิกัดพื้นดิน (จากรังวัดจุด) จากตารางตัวอย่างข้างบนครับ ขั้นตอนต่อไป ผมจะทำการแทนค่าพิกัดของจุดร่วมที่รังวัดระบบบนภาพและระบบพิกัพื้นดิน ซึ่งจะได้ระบบสมการใหม่ดังนี้ (วัด 3 จุดจะได้ 6 สมการ)&lt;br /&gt;499271.67=a(8445.75)+b(6611.75)+c       ----(1)&lt;br /&gt;2074132.01=d(8445.75)+e(6611.75)+f     ----(2)&lt;br /&gt;487786.57=a(3436.19)+b(8011.69)+c       ----(3)&lt;br /&gt;2073436.38=d(3436.19)+e(8011.69)+f    ----(4)&lt;br /&gt;497860.20=a(8433.13)+b(9457.38)+c     ----(5)&lt;br /&gt;2068443.25=d(8433.13)+e(9457.38)+f   ----(6)&lt;br /&gt;&lt;br /&gt;ระบบสมการข้างต้นจะเห็นว่าจำนวนสมการ (6 สมการ) เท่ากับจำนวนตัวไม่รู้ค่า (6 ตัวคือ a,b,c,d,e,f)&lt;br /&gt;ดังนั้นสามารถหาคำตอบ!!!&lt;br /&gt;แต่............................. ถ้าจะให้มานั่งย้ายข้างสมการไปมาหรือใช้ความรู้ชั้นมัธยมต้นคงจะไม่ไหวแล้วละครับ เพราะว่าตัวเลขมากขึ้นจำนวนสมการก็มากขึ้นตามไปด้วย แล้วเราจะทำยังไงดี ???&lt;br /&gt;&lt;br /&gt;วันนี้ผมมีตัวอย่างวิธีการแก้ปัญหาระบบสมการโดยอาศัยเมทริกซ์เข้ามาช่วยมานำเสนอครับ&lt;br /&gt;จากระบบสมการก่อหน้านี้ผมขอจัดระบบสมการใหม่อีกทีและแทนในเมทริกซ์ต่างๆในรูป AX = B ดังนี้ครับ&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/SrySEbiiOvI/AAAAAAAAAEg/C7tijxA8mrs/s1600-h/matrix001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 127px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/SrySEbiiOvI/AAAAAAAAAEg/C7tijxA8mrs/s400/matrix001.jpg" alt="" id="BLOGGER_PHOTO_ID_5385339859238009586" border="0" /&gt;&lt;/a&gt;เมทริกซ์ A บรรจุสัมประสิทธิ์ของตัวไม่รู้ค่า มีขนาด 6x6&lt;br /&gt;เมทริกซ์ X บรรจุตัวไม่รู้ค่า มีขนาด 6x1&lt;br /&gt;เมทริกซ์ B บรรจุค่าพิกัดพื้นดิน มีขนาด 6x1&lt;br /&gt;หลังจากนั้นเราจะใช้คุณสมบัติของเมทริกซ์ ซึ่งไม่สามารถย้ายข้างสมการแบบสมการทั่วๆไปได้ เช่น ย้ายจากฝั่งซ้าย(การคูณ)ไปฝั่งขวา(กลายเป็นการหาร) เป็นต้น&lt;br /&gt;คุณสมบัติของเมทริกซ์นั้นจะย้ายข้างสมการได้แต่เปลี่ยนจากคูณฝั่งซ้ายไปเป็นการคูณด้วยอินเวอร์สที่ฝั่งขวา เช่นจากตัวอย่างข้างต้น AX=B จะเป็น X= Inverse (A)*B ซึ่งความยากคือการหาอินเวอร์สนี่แหละครับ (ซึ่งมีหลายวิธี เช่น Gauss-Jordan เป็นต้น) ครั้งนี้ผมขออนุญาตให้ทุกท่านใช้เครื่องมือฟรี (โปรแกรม) ที่นิยมอย่างมากในแวดวง Open Source ซึ่งคือเจ้า &lt;a href="http://www.gnu.org/software/octave/"&gt;Octave&lt;/a&gt; นั่นเอง ซึ่งก็โหลดได้จาก &lt;a href="http://octave.sourceforge.net/"&gt;ที่นี่&lt;/a&gt; ครับ (โหลดแล้วติดตั้งกันเลยนะครับ จะได้ทดลองทำตามกันเลย)&lt;br /&gt;หลังจากติดตั้งแล้วให้ทำตามขั้นตอนดังนี้&lt;br /&gt;1) ป้อนค่าเมทริกซ์ A ดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;a=[8445.75 6611.75 1 0 0 0;0 0 0 8445.75 6611.75 1;3436.19 8011.69 1 0 0 0;0 0 0 3436.19 8011.69 1;8433.13 9457.38 1 0 0 0;0 0 0 8433.13 9457.38 1]&lt;br /&gt;&lt;br /&gt;### สำหรับการป้อนค่าสมาชิกของเมทริกซ์ทนั้นให้ป้อนค่าตัวเลขที่ละแถวซึ่งจะแบ่งค่าของแต่ละคอลัมน์ด้วยการเว้นว่าง (Space) และเมื่อป้อนค่าสมาชิกในแต่ละแถวแล้วการขึ้บรรทัดใหม่นั้นให้ใช้เครื่องหมาย ;&lt;br /&gt;&lt;br /&gt;2) ป้อนค่าของเมทริกซ์ B ดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;b=[499271.67;2074132.01;487786.57;2073436.38;497860.20;2068443.25]&lt;br /&gt;&lt;br /&gt;3) ทำการคำนวณค่าสัมประสิทธ์จากสมการ X=Inverse (A) * (B) โดยพิมพ์คำสั่งในโปรแกรมดังนี้&lt;br /&gt;&gt;&gt;inv (a) * b&lt;br /&gt;&lt;br /&gt;4)ผลลัพธ์ที่ได้หมายถึงค่าของสัมประสิทธิ์ของแต่ละตัว (a,b,c,d,e,f) ตามลำดับ&lt;br /&gt;&lt;br /&gt;จากตัวอย่างการคำนวณทำให้เราได้ความสัมพันธ์ระหว่างพิกัดภาพและพิกัดพื้นดินดังนี้&lt;br /&gt;&lt;br /&gt;Xi =  2.22330667 (xi)  - 0.71668202 (yi) + 485888.70006051&lt;br /&gt;Yi =  -0.42032228 (xi)  - 2.00098553 (yi) + 2090911.96301988&lt;br /&gt;&lt;br /&gt;นั่นหมายความว่า จุดภาพที่ (1,1) นั้นค่าพิกัดพื้นดินเท่ากับ (485890.21,2090909.54) และจุดภาพที่ (1,2) มีค่าพิกัดพื้นดินเท่ากับ (485889.49,2090907.54) ... จนถึงจุดภาพสุดท้าย&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-663857497499864724?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/663857497499864724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/09/octave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/663857497499864724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/663857497499864724'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/09/octave.html' title='การแก้ปัญหาระบบสมการเชิงเส้นด้วย Octave และตัวอย่างสำหรับการแปลงแบบสัมพรรค (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/SryAancZ9cI/AAAAAAAAAEY/OFAaUX_RtS0/s72-c/sampleData_ixiy-gxgy.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-6412285923190104678</id><published>2009-09-18T12:43:00.005+07:00</published><updated>2009-09-18T16:35:27.210+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>gdaldem เครื่องมือสำหรับวิเคราะห์และการมองเห็นข้อมูล DEM (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอแนะนำเครื่องมือสำหรับการวิเคราะห์ (Analyze) และการมองเห็น (Visualize) สำหรับข้อมูลแบบจำลองระดับสูง (DEM) ในตอนแรกนี้จะนำเสนอการคำนวณ ความลาดเอียง (Slope) อย่างง่ายโดยขั้นตอนมีดังนี้ครับ&lt;br /&gt;ก่อนอื่นเราต้องเปลี่ยนที่อยู่ไปยังที่เก็บไฟล์แบบจำลองระดับสูง เช่น&lt;br /&gt;&gt;&gt;cd c:\sample&lt;br /&gt;และใช้คำสั่ง gdaldem ซึ่งมี syntax ดังนี้ครับ&lt;br /&gt;&lt;br /&gt;gdaldem -option input_file out_file&lt;br /&gt;&lt;br /&gt;ตัวอย่างการคำนวณความลาดเอียงมีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdaldem slope srtm32647.tif slope.tif&lt;br /&gt;&lt;br /&gt;หากต้องการให้ผลการคำนวณอยู่ในแบบเปอร์เซนต์ก็ให้เพิ่ม option -p ดังนี้ครับ (ค่าเริ่มต้นหรือค่า default คือหน่วยองศาครับ)&lt;br /&gt;&lt;br /&gt;&gt;&gt;gdaldem slope -p srtm32647.tif slope_p.tif&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-6412285923190104678?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/6412285923190104678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/09/gdaldem-dem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6412285923190104678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/6412285923190104678'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/09/gdaldem-dem.html' title='gdaldem เครื่องมือสำหรับวิเคราะห์และการมองเห็นข้อมูล DEM (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-7381592948056559235</id><published>2009-09-09T13:06:00.006+07:00</published><updated>2009-09-09T16:47:18.844+07:00</updated><title type='text'>หากต้องการแปลงพิกัดด้วยโพลีโนเมียลแล้วต้องใช้จุดควบคุมจำนวนเท่าไหร่???</title><content type='html'>หลายท่านคงเคยทำการแปลงข้อมูลภาพที่ยังไม่มีระบบพิกัด(โลก)ให้มีระบบพิกัดที่ต้องการ เช่น ระบบพิกัดภูมิศาสตร์หรือระบบพิกัดกริดยูทีเอ็ม หรือที่เรียกกันว่า Image registration หรือ Image warping กระบวนการนี้มีวัตถุประสงค์หลักคือ การทำให้ข้อมูลภาพนั้นมีระบบพิกัดที่ต้องการ ขั้นตอนการทำงานนั้นสามารถทำได้หลากหลายวิธี ซึ่งแต่ละวิธีนั้นมีข้อมูลหรือสิ่งที่ต้องการแตกต่างกัน (ในที่นี้เราจะพูดถึงเฉพาะการแปลงแบบ 2 มิติเท่านั้นนะครับ)&lt;br /&gt;จุดควบคุมภาคพื้นดิน (Ground Control Point - GCP) นั้นจำเป็นอย่างยิ่งสำหรับกระบวนการนี้ เนื่องจากใช้สำหรับอ้างอิงหรือเป็นตัวกำหนดความสัมพันธ์ระหว่างสองระบบพิกัดใดๆ วิธีการได้มาของจุดควบคุมภาคพื้นดินนั้นสามารถทำได้หลายทางเช่น อ่านค่าพิกัดจากแผนที่ภูมิประเทศ แผนที่ภาพหรือการสำรวจภาคสนาม เป็นต้น&lt;br /&gt;หลังจากได้ข้อมูลจุดควบคุมภาคพื้นแล้วสิ่งที่ต้องทำในขั้นต่อไปคือ การเลือกวิธีการแปลงพิกัด ซึ่งมีให้เลือกมากมายเช่น การแปลงแบบ Helmert, Affine หรือ Polynomial เป็นต้น ในส่วนของวิธีการแปลงและการคำนวนค่าของสัมประสิทธิ์ขอข้ามไปก่อนนะครับเนื่องจากมีรายละเอียดค่อนข้างเยอะ (ขี้เกียจพิมพ์นะครับ แฮะๆๆ)&lt;br /&gt;วิธีการที่นิยมใช้กันอย่างแพร่หลายคือการแปลงโดยอาศัยโพลีโนเมียลอันดับต่างๆ ซึ่งแต่ละวิธีนั้นจะให้ความถูกต้อง ความน่าเชื่อถือรวมถึงความยุ่งยากในการคำนวนที่แตกต่างกัน&lt;br /&gt;วันนี้ขอนำเสนอการคำนวนจำนวนจุดควบคุมภาคพื้นดินที่ต้องการ(อย่างน้อย)สำหรับโพลีโนเมียลอันดับต่างๆ การคำนวนหาจำนวนจุดควบคุมที่ต้องการสำหรับโพลีโนเมียลอันดับต่างๆสามารถคำนวนหาได้จากสูตรดังนี้&lt;br /&gt;&lt;br /&gt;[(n+1)*(n+2)]/2&lt;br /&gt;&lt;br /&gt;โดย n คือ จำนวนอันดับของโพลีโนเมียลที่ต้องการ เช่น หากต้องการแปลงระบบพิกัดด้วยโพลีโนเมียลอับดับที่ 2 (2nd order) จะใช้จำนวนจุดควบคุมอย่างน้อย [(2+1)*(2+2)]/2 หรือเท่ากับ 6 จุด เป็นต้น&lt;br /&gt;&lt;br /&gt;ในทางปฏิบัติเรามักจะรังวัดจำนวนจุดควบคุมให้เกินพอเพื่อให้เข้าสู่ระบบ Overdetermined System แล้วจึงเลือกเอาเฉพาะจุดที่มีความถูกต้องและน่าเชื่อถือ (หรือขจัดจุดที่มีความคลาดเคลื่อนสูงออกจากการคำนวน) โดยอาศัยการปรับแก้แบบกำลังสองน้อยที่สุด (Least Square Adjustment)&lt;br /&gt;ข้อดีของการเพิ่มจำนวนจุดควบคุมให้มากกว่าจำนวนจุดที่ต้องการหรือทำให้เข้าสู่ระบบ Overdetermined System คือ เราสามารถขจัดความคลาดเคลื่อนที่แฝงอยู่ในข้อมูลได้ เช่น อาจมีการรังวัดหรือป้อนค่าพิกัดของจุดควบคุมผิดพลาด (Mistake) หรือจุดควบคุมที่เลือกใช้มีความคลาดเคลื่อนสูงเกินกว่าจะยอมรับได้ (ใช้เป็นการตรวจสอบคุณภาพของจุดควบคุมเบื้องต้นได้ด้วยนะ เฮ่อๆๆ) เป็นต้น&lt;br /&gt;ส่วนบางท่านที่ไม่ต้องการจำสูตรก็สามารถดูจำนวนจุดที่ต้องการสำหรับการแปลงระบบพิกัดด้วยโพลีโนเมียลอันดับต่างๆได้ดังนี้ครับ&lt;br /&gt;1st ต้องการจุดควบคุมอย่างน้อย 3 จุด แนะนำให้ใช้อย่างน้อย 4 จุดสำหรับการทำงานจริง (หรือการแปลงแบบ Affine)&lt;br /&gt;2nd ต้องการจุดควบคุมอย่างน้อย 6 จุด แนะนำให้ใช้อย่างน้อย 7 จุดสำหรับการทำงานจริง&lt;br /&gt;3rd ต้องการจุดควบคุมอย่างน้อย 10 จุด แนะนำให้ใช้อย่างน้อย 11 จุดสำหรับการทำงานจริง&lt;br /&gt;4th  ต้องการจุดควบคุมอย่างน้อย 15 จุด แนะนำให้ใช้อย่างน้อย 16 จุดสำหรับการทำงานจริง&lt;br /&gt;5th  ต้องการจุดควบคุมอย่างน้อย 21 จุด แนะนำให้ใช้อย่างน้อย 22 จุดสำหรับการทำงานจริง&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-7381592948056559235?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/7381592948056559235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/09/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7381592948056559235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/7381592948056559235'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/09/blog-post.html' title='หากต้องการแปลงพิกัดด้วยโพลีโนเมียลแล้วต้องใช้จุดควบคุมจำนวนเท่าไหร่???'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-402855351243074547</id><published>2009-08-21T14:49:00.005+07:00</published><updated>2009-08-27T15:11:20.179+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>การแปลงระบบอ้างอิงทางตำแหน่งสำหรับข้อมูลภาพและข้อมูลกริด (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอนำเสนอการแปลงระบบอ้างอิงทางตำแหน่ง (ระบบพิกัด) สำหรับข้อมูลภาพและข้อมูลกริด (แรสเตอร์) ด้วย FWTools ดังนี้ครับ&lt;br /&gt;ก่อนอื่นต้องทราบว่ารหัสของระบบอ้างอิงทางตำแหน่งหมายถึงอะไรก่อนนะครับ เช่น 32647 หรือ 4326 เป็นต้น โดยผมได้สรุปและสร้างเป็นตารางดังภาพตัวอย่างดังนี้&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/So5VikDLvLI/AAAAAAAAACs/WV5K2VaBcag/s1600-h/epsgCode.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 221px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/So5VikDLvLI/AAAAAAAAACs/WV5K2VaBcag/s400/epsgCode.jpg" alt="" id="BLOGGER_PHOTO_ID_5372325457780522162" border="0" /&gt;&lt;/a&gt;ตัวอย่างการใช้งานมีดังนี้ครับ&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/So5ZhRCMkYI/AAAAAAAAAC0/pDISoknaOz4/s1600-h/gdalwarp_cmd.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 176px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/So5ZhRCMkYI/AAAAAAAAAC0/pDISoknaOz4/s400/gdalwarp_cmd.jpg" alt="" id="BLOGGER_PHOTO_ID_5372329833542750594" border="0" /&gt;&lt;/a&gt;จากภาพตัวอย่างเป็นการแปลงระบบอ้างอิงทางตำแหน่ง (Spatial reference System - SRS) จากระบบเดิม (จากตัวอย่างผมไม่ได้ระบุระบบอ้างอิงทางตำแหน่งของไฟล์ต้นฉบับเพราะทราบอยู่แล้วต้นฉบับนั้นมีระบบอ้างอิงทางตำแหน่งคือ 4326) ไปเป็นระบบใหม่คือ 32647 โดยใช้ option  "-t_srs" โดยมีไฟล์ต้นฉบับคือ gdem4326.tif และไฟล์ผลลัพธ์คือ gdem32647.tif&lt;br /&gt;ส่วน option ที่น่าสนใจสำหรับการแปลงระบบอ้างอิงทางตำแหน่งมีดังนี้ครับ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;การกำหนดขนาดจุดภาพ [-tr Xsize Ysize] เช่น -tr 30 30 เป็นต้น โดยหน่วยของจุดภาพจะเป็นไปตามระบบอ้างอิงทางตำแหน่งครับ&lt;/li&gt;&lt;li&gt;วิธี Resampling เช่น -r bilinear หรือ -r cubic เป็นต้น&lt;/li&gt;&lt;/ul&gt;การระบุ option นั้นให้ทำการระบุก่อน(ข้างหน้า)ชื่อไฟล์เสมอ เช่น&lt;br /&gt;&lt;br /&gt;&gt;gdalwarp -t_srs epsg:32647 -tr 30 30 -r cubic gdem4326.tif gdem32647.tif&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-402855351243074547?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/402855351243074547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/08/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/402855351243074547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/402855351243074547'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/08/blog-post.html' title='การแปลงระบบอ้างอิงทางตำแหน่งสำหรับข้อมูลภาพและข้อมูลกริด (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/So5VikDLvLI/AAAAAAAAACs/WV5K2VaBcag/s72-c/epsgCode.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3658444756247741308</id><published>2009-08-13T13:14:00.008+07:00</published><updated>2009-08-13T14:12:27.398+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>เลือกเส้นทางการเดินทางด้วยรถสาธารณะผ่าน Google Maps</title><content type='html'>วันนี้ขอแนะนำ การค้นหาเส้นทางผ่าน Google Maps แบบการเดินทางด้วยรถสาธารณะ (Public Transit) ก่อนหน้านี้ บางท่านอาจจะเคยค้นหาเส้นทางการเดินทางผ่าน Google Maps ซึ่งเลือกวิธีเดินทางได้ 2 แบบคือ ด้วยรถยนต์ (Car) และการเดินทางด้วยการเดิน (Walking) ซึ่งบางครั้งคนที่ไม่มีรถยนต์ส่วนตัว (เช่น คนจนๆอย่างกระผม แฮะๆๆ) หรือไม่สะดวกที่จะใช้รถยนต์ แต่ต้องการทางเลือกอื่นๆสำหรับการเดินทาง เราสามารถใช้ Google Maps ช่วยได้ไหม ???? คำตอบคือ ณ วันนี้ได้แล้วครับ เนื่องจากพี่ใหญ่ใจดี อย่าง Google ได้มีการเพิ่มบริการที่เป็นทางเลือกสำหรับผู้ใช้งานอีกกลุ่มหนึ่ง (ไม่ใช้การเดินทางด้วยรถยนต์หรือการเดิน) ด้วยการเพิ่มทางเลือกสำหรับการเดินทางด้วยรถสาธารณะ เช่น รถโดยสารประจำทาง หรือรถเมล์นั่นแหละครับ การเดินทางแบบนี้ ในบางครั้งอาจต้องมีการเดินร่วมด้วย เนื่องจากบางสถานที่ไม่มีรถเมล์ผ่าน เรามาดูตัวอย่างกันนะครับ&lt;br /&gt;สมมุติว่าผมต้องการเดินทางจากที่พักไปยังมหาวิทยาลัย หากเลือกการเดินทางด้วยรถสาธารณะจะได้ผลลัพธ์ดังภาพตัวอย่าง&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/SoO4FKTAlDI/AAAAAAAAACk/MUnFcUGGJV8/s1600-h/GM-route1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 277px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/SoO4FKTAlDI/AAAAAAAAACk/MUnFcUGGJV8/s400/GM-route1.jpg" alt="" id="BLOGGER_PHOTO_ID_5369337579558704178" border="0" /&gt;&lt;/a&gt;จากผลการเลือกเส้นทางจะพบว่าข้อมูลการเดินทางที่ได้จาก Google Maps นั้นยังมีความคลาดเคลื่อนเกี่ยวกับจุดขึ้นรถเมล์ เนื่องจากรถเมล์สาย 16 (อู่ศรีณรงค์ - สุรวงศ์) นั้นไม่ผ่านช่วงถนนประชาราษฏร์สาย 1 บริเวณวัดบางโพโอมาวาส แต่จะผ่านช่วงโรงเรียนพณิชยาการบางโพ (ตรงสี่แยกไปท่าน้ำบางโพ) และหากผมเลื่อนจุดเริ่มต้นการเดินทาง (A) มาบริเวณต้นซอยประชานฤมิตรจะพบว่า Google Maps นั้นจะเปลี่ยนสายรถเมล์ให้จากสาย 16 เป็น 505 แล้วไปต่อรถเมล์สาย 93 ดังภาพตัวอย่าง ซึ่งทั้งสองวิธีการเดินทางนั้นถูกต้องทั้งคู่ (สามารถเดินทางได้ทั้งรถเมล์สาย 16 และ 505)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_axbGw1NZUvo/SoO3mFb_oJI/AAAAAAAAACc/ryFs3qUSWb8/s1600-h/GM-route2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 279px;" src="http://1.bp.blogspot.com/_axbGw1NZUvo/SoO3mFb_oJI/AAAAAAAAACc/ryFs3qUSWb8/s400/GM-route2.jpg" alt="" id="BLOGGER_PHOTO_ID_5369337045678268562" border="0" /&gt;&lt;/a&gt;จากตัวอย่างการใช้งานเบื้องต้น พบว่าแม้จะมีความเคลื่อนอยู่บ้างแต่ก็ยังดีกว่าไม่มีทางเลือกสำหรับการเดินทางโดยเฉพาะรถสาธารณะ ครับ!!!&lt;br /&gt;โดยส่วนตัวผมคิดว่า หากทาง Google ได้ทำการปรับปรุงข้อมูลให้มีความถูกต้องมากกว่านี้จะทำให้ผลลัพธ์ที่ได้ออกมาตรงกับความเป็นจริงมากยิ่งขึ้น ซึ่งการปรับปรุงข้อมูลนั้นจำเป็นอย่างยิ่งที่ต้องอาศัย ระยะเวลา งบประมาณ บุคคลกร และเทคโนโลยีต่างๆที่เกี่ยวข้อง ดังนั้นผมจึงขอเอาใจช่วยให้พี่ใหญ่ใจดีอย่าง Google ได้มีการพัฒนาอย่างต่อเนื่อง เพื่อที่จะได้อยู่กับผู้นิยมใช้ของฟรีและดี อย่างกระผมไปอีกนานๆ ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3658444756247741308?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3658444756247741308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/08/google-maps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3658444756247741308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3658444756247741308'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/08/google-maps.html' title='เลือกเส้นทางการเดินทางด้วยรถสาธารณะผ่าน Google Maps'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/SoO4FKTAlDI/AAAAAAAAACk/MUnFcUGGJV8/s72-c/GM-route1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-8955396689338512027</id><published>2009-08-11T11:00:00.007+07:00</published><updated>2009-08-11T12:36:06.011+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>สร้างเส้นชั้นความสูงง่ายๆด้วย gdal_contour (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอนำเสนอวิธีการสร้างเส้นชั้นความสูงจากข้อมูลแบบจำลองระดับสูงเชิงเลข (Digital Elevation Model - DEM) ด้วยโปรแกรม FWTOOLS การทำงานนั้นอาศัยการสั่งงานแบบ command line โดยทุกท่านเรัียนรู้ได้ดังตัวอย่างการใช้งานดังต่อไปนี้&lt;br /&gt;ก่อนอื่นทุกท่านต้องมีโปรแกรม FWTOOLS (ที่เราจะใช้จริงๆคือ คลังโปรแกรม GDAL/OGR ที่ผนวกเข้ามาอยู่ในโปรแกรม FWTOOLS เรียบร้อยแล้ว) เสียก่อนหากยังไม่มีสามารถดาวน์โหลดได้ &lt;a href="http://home.gdal.org/fwtools/"&gt;ที่นี่&lt;/a&gt; ครับ&lt;br /&gt;&lt;div style="text-align: left;"&gt;หลังจากติดตั้งโปรแกรมเรียบร้อยแล้วให้ทุกท่านเข้าสู่โปรแกรมในโหมด FWTOOLS Shell โดยการเลือกที่ไอคอนบนหน้าเดสทอป หรือเลือกที่ Start --&gt; Programs --&gt; FWTools 2.x.x--&gt; FWTools Shell ต่อมาให้เปลี่ยนไดเรกทอรีไปยังที่จัดเก็บข้อมูลแบบจำลองระดับสูงเชิงเลข ดังภาพตัวอย่าง&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_axbGw1NZUvo/SoD6OU0HY5I/AAAAAAAAACE/AkneWI_q3tA/s1600-h/ChangeDirectory.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 446px; height: 213px;" src="http://3.bp.blogspot.com/_axbGw1NZUvo/SoD6OU0HY5I/AAAAAAAAACE/AkneWI_q3tA/s400/ChangeDirectory.jpg" alt="" id="BLOGGER_PHOTO_ID_5368565879838040978" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;ภาพตัวอย่างคำสั่งเปลี่ยนไดเรกทอรี&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;เมื่อเปลี่ยนไดเรกทอรีมายังที่จัดเก็บข้อมูลแบบจำลองระดับสูงเชิงเลขแล้วให้ทำการสั่งคำสั่งการสร้างเส้นชั้นความสูงอย่างง่ายดังไวยากรณ์ดังนี้&lt;br /&gt;&gt;&gt;gdal_contour -i [interval] -a [attribute] input_file output_file&lt;br /&gt;ตัวอย่างการสร้างเส้นชั้นความสูงมีดังนี้&lt;br /&gt;&gt;&gt;C:\GDEM&gt;gdal_contour -i 20 -a "height" GDEM.tif contour.shp&lt;br /&gt;ตัวอย่างผลลัพธ์ที่ได้มีดังภาพต่อไปนี้&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_axbGw1NZUvo/SoD-Axe9g3I/AAAAAAAAACM/G-hGbZNYO18/s1600-h/sampleContour.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_axbGw1NZUvo/SoD-Axe9g3I/AAAAAAAAACM/G-hGbZNYO18/s400/sampleContour.jpg" alt="" id="BLOGGER_PHOTO_ID_5368570045062284146" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;ภาพตัวอย่างเส้นชั้นความสูงที่ได้จากการใช้ gdal_contour &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;!!!!ข้อควรระวัง!!!!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;หน่วยของระยะห่างเส้นชั้นความสูง (Interval) เป็นหน่วยเดียวกับระบบอ้างอิงเชิงตำแหน่ง เช่น ระบบพิกัดกริดจะมีหน่วยเป็นเมตร เป็นต้น&lt;/li&gt;&lt;li&gt;ชื่อของข้อมูลอรรถาธิบาย (Attribute) ควรมีเครื่องหมาย " " เพื่อความไม่กำกวมของคำสั่ง&lt;br /&gt;&lt;/li&gt;&lt;li&gt;หากไม่ีการกำหนดรูปแบบไฟล์ผลลัพธ์โปรแกรม gdal_contour จะใช้รูปแบบ ERSI Shapefile เป็นค่าเริ่มต้น&lt;/li&gt;&lt;li&gt;สำหรับการใช้งานในประเทศไทย เพื่อความสะดวกควรแปลงระบบอ้างอิงเชิงตำแหน่งให้อยู่ในระบบพิกัดกริด UTM ด้วยคำสั่ง gdalwarp เสียก่อน&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-8955396689338512027?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/8955396689338512027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/08/gdalcontour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8955396689338512027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8955396689338512027'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/08/gdalcontour.html' title='สร้างเส้นชั้นความสูงง่ายๆด้วย gdal_contour (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_axbGw1NZUvo/SoD6OU0HY5I/AAAAAAAAACE/AkneWI_q3tA/s72-c/ChangeDirectory.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5757947349070823904</id><published>2009-08-05T14:19:00.003+07:00</published><updated>2009-08-05T15:03:11.809+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fwtools'/><title type='text'>Fwtools 2.4.3 ออกแล้วครับ...</title><content type='html'>ช่วงนี้ใกล้สอบ Numerical Analysis in Geomatics ทำให้ไม่ค่อยมีเวลามาเพิ่มเติมเนื้อหาสักเท่าไหร่ วันนี้ขอแนะนำแค่ซอฟต์แวร์ที่มีการออกรุ่นใหม่เท่านั้นนะครับ&lt;br /&gt;Fwtools เวอร์ชันล่าสุด (2009/08/05) คือ 2.4.3 ดาวน์โหลดได้ &lt;a href="http://home.gdal.org/fwtools/FWTools243.exe"&gt;ที่นี่ &lt;/a&gt;ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5757947349070823904?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5757947349070823904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/08/fwtools-243.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5757947349070823904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5757947349070823904'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/08/fwtools-243.html' title='Fwtools 2.4.3 ออกแล้วครับ...'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2898774886172677956</id><published>2009-07-28T16:34:00.008+07:00</published><updated>2009-07-30T13:36:04.704+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dos batch programming'/><title type='text'>การเปลี่ยนชื่อไฟล์ (เพิ่มคำนำหน้า)</title><content type='html'>ตัวอย่างการแก้ไขจาก abc001.tif, abc002.tif และ abc003.tif (ไฟล์เดิม) ไปเป็น myFiles_abc001.tif, myFiles_abc002.tif และ myFiles_abc003.tif โดย "myFiles_" คือคำนำหน้า (Prefix) ที่ต้องการเพิ่มเข้าไป ดังนี้&lt;br /&gt;&lt;br /&gt;#FOR %i IN (*.tif) DO rename %i myFiles_%i&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2898774886172677956?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2898774886172677956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/blog-post_28.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2898774886172677956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2898774886172677956'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/blog-post_28.html' title='การเปลี่ยนชื่อไฟล์ (เพิ่มคำนำหน้า)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-33311406944391061</id><published>2009-07-28T12:22:00.005+07:00</published><updated>2009-07-30T11:35:27.715+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction to Photogrammetry'/><title type='text'>การรังวัดด้วยภาพเบื้องต้น (2) : พื้นฐานตรีโกณมิติ (Trigonometry)</title><content type='html'>ในงานการรังวัดด้วยภาพได้อาศัยทฤษฏีทางคณิตศาสตร์มากมายเพื่อช่วยในกระบวนการทำงาน ตรีโกณมิติถือว่าเป็นพื้นฐานอย่างหนึ่งที่มีส่วนสำคัญอย่างยิ่งสำหรับงานการรังวัดด้วยภาพ (ทั้งแบบดั้งเดิมและการรังวัดด้วยภาพเชิงเลข - Digital Photogrammetry) การนำเสนอครั้งนี้ขอทบทวนเนื้อหาที่เคยได้เรียนมาแล้ว(สำหรับผมลืมไปเกือบหมดแล้ว แฮะๆๆ) ดังนี้&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_axbGw1NZUvo/Sm6R3T6zvxI/AAAAAAAAABk/fnT6-0MHX5k/s1600-h/Trig001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 175px;" src="http://1.bp.blogspot.com/_axbGw1NZUvo/Sm6R3T6zvxI/AAAAAAAAABk/fnT6-0MHX5k/s400/Trig001.jpg" alt="" id="BLOGGER_PHOTO_ID_5363384585670606610" border="0" /&gt;&lt;/a&gt;นอกจากนี้ยังมีทฤษฏี ตรีโกณทรงกลม (Spherical Trigonometry) สำหรับอธิบายความสัมพันธ์ระหว่างด้านและมุม บนทรงกลม ซึ่งมีการประยุกต์ใช้งานสำหรับการคำนวณระยะและมุมบนทรงกลม (เช่น โลก) ตัวอย่างของความสัมพันธ์มีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_axbGw1NZUvo/Sm6wV0iooHI/AAAAAAAAAB8/Hsec5VbKekc/s1600-h/SphericalTrig003.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 224px;" src="http://4.bp.blogspot.com/_axbGw1NZUvo/Sm6wV0iooHI/AAAAAAAAAB8/Hsec5VbKekc/s400/SphericalTrig003.jpg" alt="" id="BLOGGER_PHOTO_ID_5363418095172493426" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-33311406944391061?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/33311406944391061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/2-trigonometry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/33311406944391061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/33311406944391061'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/2-trigonometry.html' title='การรังวัดด้วยภาพเบื้องต้น (2) : พื้นฐานตรีโกณมิติ (Trigonometry)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_axbGw1NZUvo/Sm6R3T6zvxI/AAAAAAAAABk/fnT6-0MHX5k/s72-c/Trig001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-5328547758469396074</id><published>2009-07-27T14:12:00.007+07:00</published><updated>2009-08-11T12:36:21.012+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>gdal_merge อย่างง่าย... (ของฟรีและดีก็มีในโลก)</title><content type='html'>วันนี้ขอนำเสนอ การใช้งาน gdal_merge อย่างง่าย โดยจะขอทดลองกับข้อมูล GDEM โดยการใช้งาน gdal_merge นั้นจะแตกกต่างกับคำสั่ง gdal อื่นๆ คือ ต้องระบุผลลัพธ์ (Output file) ก่อนแล้วจึงระบุไฟล์ต้นฉบับ การใช้งานเบื้องต้นเป็นไปตาม syntax ดังนี้ครับ&lt;br /&gt;#gdal_merge [option] [output file] [input files] ซึ่งตัวอย่างการใช้งานดังนี้ครับ&lt;br /&gt;#gdal_merge -of GTiff -o output.tif abc1.tif abc2.tif abc3.tif abc4.tif&lt;br /&gt;จากตัวอย่างดังกล่าว จะเห็นว่าการระบุไฟล์ต้นฉบับที่มากกว่า 1 ไฟล์นั้นค่อนข้างยุ่งยาก เราสามารถใช้เครื่องหมาย   &lt;span style="font-weight: bold;"&gt;*&lt;/span&gt;   เข้ามาช่วยในคำสั่งได้ดังนี้ครับ&lt;br /&gt;#gdal_merge -of GTiff -o sample.tif *.tif&lt;br /&gt;&lt;a href="http://sawarino.blogspot.com/2009/07/blog-post.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-5328547758469396074?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/5328547758469396074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/gdalmerge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5328547758469396074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/5328547758469396074'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/gdalmerge.html' title='gdal_merge อย่างง่าย... (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-4584035605375972708</id><published>2009-07-24T10:14:00.006+07:00</published><updated>2009-07-30T11:35:38.805+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction to Photogrammetry'/><title type='text'>การรังวัดด้วยภาพเบื้องต้น (1)</title><content type='html'>วันนี้ผมขอนำเสนอความรู้เบื้องต้นเกี่ยวกับการรังวัดด้วยภาพเบื้องต้น โดยมีแหล่งอ้างอิงที่สำคัญคือ หนังสือ Elements of Photogrammetry (with Applications in GIS) ที่เขียนโดย Pual R. Wolf และ Bon A. Dewitt และหนังสือ Digital Photogrammetry ที่เขียนโดย Yves Egels และ Michel Kasser&lt;br /&gt;             ทั้งนี้อาจมีข้อมูลบางอย่างคลาดเคลื่อน (อันเนื่องจากความไม่รู้ของกระผมเอง)จึงไม่แนะนำให้อ้างอิง (ควรอ้างอิงจากแหล่งข้อมูลต้นฉบับโดยตรง) ซึ่งผมมีวัตถุประสงค์หลักของการสร้าง Blog นี้คือ เอาไว้เตือนความจำตัวเองขณะทำงานวิจัย (อายุมากขึ้นทำให้ความจำเริ่มสั้นลง แฮะๆๆ)&lt;br /&gt;...มาเข้าเรื่องกันดีกว่าครับ...&lt;br /&gt;              การรังวัดด้วยภาพ (Photogrammetry) ได้มีการนิยามโดย American Society for Photogrammetry and Remote Sensing (&lt;a href="http://www.asprs.org/"&gt;ASPRS&lt;/a&gt;) คือ ศาสตร์ ศิลป์และเทคโนโลยีของการได้มาซึ่งข้อมูลอย่างน่าเชื่อถือเกี่ยวกับวัตุทางกายภาพและสิ่งแวดล้อมโดยผ่านกระบวนการบันทึก การรังวัดและการแปลตีความข้อมูลภาพและรูปแบบการบันทึกพลังงานคลื่นแม่เหล็กไฟฟ้ารวมถึงปรากฏการณ์อื่นๆ(ที่เกี่ยวข้อง)&lt;br /&gt;โดยทั่วไปแล้วข้อมูลภาพที่ใช้ในงานสาขานี้จะแบ่งออกเป็น 2 ประเภทได้แก่&lt;ol&gt;&lt;li&gt;ข้อมูลภาพจากอากาศ (Aerial photos) จากการบันทึกด้วยอากาศยาน (Airborne vehicle) เช่น เครื่องบิน อากาศยานไร้คนขับ (Unmanned Aerial Vehicle - UAV)หรือเฮลิคอปเตอร์ เป็นต้น ในปัจจุบันนั้นยังรวมไปถึงอวกาศยาน (Spaceborne vehicle) เช่น ดาวเทียมหรือกระสวยอวกาศ อีกด้วย&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ข้อมูลภาพที่บันทึกบนโลก (Terrestrial photos) ที่มีการบันทึกด้วยอุปกรณ์บนพื้นโลก (Earth based)&lt;/li&gt;&lt;/ol&gt;จากคำนิยามข้างต้น อาจสรุปได้ว่าการรังวัดด้วยภาพนั้นประกอบด้วย 2 ส่วนหลักคือ การวัดและการแปลตีความบนข้อมูลภาพ (Metric and Interpretive Photogrammetry)&lt;br /&gt;          การรังวัดด้วยภาพนั้นอาศัยเทคนิคและวิทยาศาสตร์ทางด้านแสงและการมองเห็น (Optic) โดยเราจะสนใจคุณสมบัติหลักของแสง 2 ประเภทหลักคือ &lt;span style="font-weight: bold;"&gt;คุณลักษณะทางกายภาพและคุณลักษณะทางเรขาคณิต &lt;/span&gt;ทางกายภาพแสงจะเดินทางผ่านตัวกลาง (เช่น อากาศ) ในรูปของคลื่นแม่เหล็กไฟฟ้าจากแหล่งกำเนิด ซึ่งในบางกรณีอาจเรียกว่า การแผ่รังสี (Radiation) ความเร็วของแสงนจากแหล่งกำเนิดจะเรียกว่า อัตราความเร็ว (Velocity) ซึ่งสัมพันธ์กับ ความถี่และความยาวคลื่น (Frequency and Wavelength) ดังสมการต่อไปนี้&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/SmlJRwk7JRI/AAAAAAAAABc/ynNj9kQd5zI/s1600-h/VelocityEquation.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 83px; height: 37px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/SmlJRwk7JRI/AAAAAAAAABc/ynNj9kQd5zI/s400/VelocityEquation.jpg" alt="" id="BLOGGER_PHOTO_ID_5361897400807662866" border="0" /&gt;&lt;/a&gt;โดยอัตราความเร็วของแสงที่เคลื่อนที่ในสุญญากาศเท่ากับ &lt;span style="font-weight: bold;"&gt;299,792,458 เมตรต่อวินาที &lt;/span&gt;ส่วนคุณลักษณะทางเรขาคณิตของแสงนั้นจะพิจารณาการเดินทางของแสงแบบ&lt;span style="font-weight: bold;"&gt; เส้นตรง&lt;/span&gt; จากแหล่งกำเนิดครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-4584035605375972708?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/4584035605375972708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4584035605375972708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/4584035605375972708'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/1.html' title='การรังวัดด้วยภาพเบื้องต้น (1)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/SmlJRwk7JRI/AAAAAAAAABc/ynNj9kQd5zI/s72-c/VelocityEquation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-9165617210245213535</id><published>2009-07-14T14:27:00.014+07:00</published><updated>2009-07-30T11:35:02.689+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dos batch programming'/><title type='text'>คัดลอกไฟล์ที่ต้องการในบรรทัดเดียว</title><content type='html'>ช่วงนี้ดาวน์โหลด &lt;a href="http://www.gdem.aster.ersdac.or.jp/index.jsp"&gt;ASTER GDEM&lt;/a&gt; มาลองใช้งาน แต่เจอปัญหาอย่างหนึ่งคือ เมื่อ extract ไฟล์ออกมาแล้ว ดันแยกออกเป็นโฟลเดอร์ต่างๆตามพื้นที่คลอบคลุม (ชื่อไฟล์) หากต้องการคัดลอกเอาเฉพาะไฟล์ DEM ที่ต้องการของแต่ละพื้นที่ออกมาเพื่อ Mosaic ให้เป็นผืนเดียว ซึ่งจะต้องมานั่งคลิกเลือกเข้าไปที่ละโฟลเดอร์แล้วคัดลอกออกมาทีละไฟล์ หรือ ขั้นสูงขึ้นมาหน่อย ก็ใช้คำสั่ง Search... บน Windows  แล้วค่อยคัดลอกไฟล์&lt;br /&gt;&lt;br /&gt;ด้วยความอยากใช้คำสั่งบน DOS (Batch processing) สำหรับการทำงานดังกล่าว จึงได้ค้นๆคุ้ยๆผ่านอินเตอร์เน็ต จนพบว่าวิธีการช่างแสนง่ายดายอะไรเพียงนี้ ทุกท่านสามารถทำตามได้ดังนี้ครับ&lt;br /&gt;อ้อ...ก่อนอื่นต้องดาวน์โหลด &lt;a href="http://www.gdem.aster.ersdac.or.jp/index.jsp"&gt;ASTER GDEM&lt;/a&gt; มาก่อนนะครับ สำหรับตัวอย่างครั้งนี้ผมดาวน์โหลดมาแล้วจำนวนทั้งสิ้น 30 ระวาง ดังภาพ&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/Slw_Kr5BoGI/AAAAAAAAABM/L4J8WO1O_Lg/s1600-h/30folders.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 100px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/Slw_Kr5BoGI/AAAAAAAAABM/L4J8WO1O_Lg/s400/30folders.jpg" alt="" id="BLOGGER_PHOTO_ID_5358227109477195874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;หลังนั้นก็ให้ Extract ไฟล์ออกมาจะได้ดังตัวอย่างข้างล่าง ดังนี้&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_axbGw1NZUvo/Slw_55VrDGI/AAAAAAAAABU/I0AMXsXU3CI/s1600-h/30folders30zips.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 152px;" src="http://1.bp.blogspot.com/_axbGw1NZUvo/Slw_55VrDGI/AAAAAAAAABU/I0AMXsXU3CI/s400/30folders30zips.jpg" alt="" id="BLOGGER_PHOTO_ID_5358227920540863586" border="0" /&gt;&lt;/a&gt;หลังจากได้ข้อมูล&lt;a href="http://www.gdem.aster.ersdac.or.jp/index.jsp"&gt; ASTER GDEM&lt;/a&gt; จำนวน 30 โฟล์เดอร์แล้วลองคลิกเข้าไปดูจะพบว่ามีอยู่ 2 ไฟล์ในแต่ละโฟล์เดอร์คือ XXXXXX_&lt;span style="font-weight: bold;"&gt;dem.tif&lt;/span&gt; และ XXXXXX_&lt;span style="font-weight: bold;"&gt;num.tif&lt;/span&gt; โดย&lt;br /&gt;XXXXXX_dem.tif คือ ไฟล์ DEM ที่เราต้องการ อ้อ อย่าลืมนะครับว่าความสูงของ DEM นี้คือความสูงแบบ Orthometric Height โดยคำนวนจาก WGS84/EGM96 รายละเอียดเพิ่มเติมศึกษาได้จาก &lt;a href="http://www.ersdac.or.jp/GDEM/E/2.html"&gt;ที่นี่&lt;/a&gt; ครับ&lt;br /&gt;ส่วน XXXXXX_num.tif คือ จำนวนภาพถ่ายดาวเทียม ASTER ที่ใช้ในการผลิต GDEM (ค่า DN บนภาพ)&lt;br /&gt;&lt;br /&gt;ที่นี้มาถึงขั้นตอนสำคัญคือ การใช้คำสั่งบน DOS ตัวอย่างมีดังนี้ครับ&lt;br /&gt;1. Change Directory ไปยัง โฟล์เดอร์ที่เก็บไฟล์ทั้งหมด (ของผมคือ C:\GDEM\ โดยมีข้อมูล ASTER GDEM ย่อยๆอยู่ข้างใน เช่น C:\GDEM\ASTGTM_N10E097\ หรือ C:\GDEM\ASTGTM_N18E098\ เป็นต้น)&lt;br /&gt;&lt;br /&gt;2. พิมพ์คำสั่งดังนี้ครับ&lt;br /&gt;C:\GDEM&gt;&lt;span style="font-weight: bold;"&gt;FOR /r %i IN (.\*_dem.tif) DO copy %i C:\test\&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ขออธิบายคำสั่งข้างต้นนะครับ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;จากคำสั่งคือ ประกาศตัวแปรชื่่อ %i แทนไฟล์ใดๆ (ทุกไฟล์ที่มีชื่อต่อท้ายคือ "&lt;span style="font-weight: bold;"&gt;_dem.tif&lt;/span&gt;" ที่อยู่ในไดเรกทอรีปัจจุบันโดยรูปแบบข้อมูลคือ TIFF ) รวมถึง&lt;span style="font-weight: bold;"&gt;ไดเรกทอรีย่อย (/r)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;คัดลอกไฟล์ %i  ทุกไฟล์ไปไว้ที่ C:\test\&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;นอกจากนี้เรายังสามารถประยุกต์ใช้การทำงานประเภทนี้กับงาน Geomatics ได้อีกด้วยครับ (ไว้มีเวลาว่างจะมานำเสนอในโอกาสต่อไปครับ)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-9165617210245213535?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/9165617210245213535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/9165617210245213535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/9165617210245213535'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/blog-post.html' title='คัดลอกไฟล์ที่ต้องการในบรรทัดเดียว'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_axbGw1NZUvo/Slw_Kr5BoGI/AAAAAAAAABM/L4J8WO1O_Lg/s72-c/30folders.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-8235968949830302921</id><published>2009-07-11T21:13:00.011+07:00</published><updated>2009-07-12T00:43:50.951+07:00</updated><title type='text'>การใช้งาน Quiver Plot ด้วยโปรแกรม Octave</title><content type='html'>วันนี้มีวิธีการใช้งาน Quiver plot ด้วยโปรแกรม Octave มาแนะนำครับ!!!&lt;br /&gt;ฟังก์ชัน Quiver นั้นสามารถช่วยแสดงความคลาดเคลื่อน(หรือการเปลี่ยนแปลง)ในงาน Geomatics ได้หลายแบบ เช่น ความคลาดเคลื่อนทางตำแหน่งหลังการดัดแก้ออร์โท การเปลี่ยนแปลงทางตำแหน่งของหมุดหลักฐานหลังการเกิดแผ่นดินไหว หรือความผิดเพี้ยนของเลนส์ (Lens Distortion) เป็นต้น โดยเราสามารถอธิบายการเปลี่ยนแปลงเหล่านี้ได้ด้วยค่า(ตัวเลขจำนวนจริง)หรือสมการทางคณิตศาสตร์&lt;br /&gt;ในครั้งนี้เราจะมาลองการใช้งานอย่างง่าย โดยเราต้องเตรียมข้อมูลให้อยู่ในรูปแบบ ดังนี้ครับ [x, y, u, v] โดยที่ค่า x คือค่าพิกัดอ้างอิงทางแกน x และ y คือค่าพิกัดอ้างอิงทางแกน y ส่วน u คือค่าพิกัดที่เปลี่ยนแปลง(คลาดเคลื่อน)ทางแกน x และ v คือค่าพิกัดที่เปลี่ยนแปลงทางแกน  y&lt;br /&gt;ในตัวอย่างนี้ผมกำหนดชื่อไฟล์คือ C:\test.txt ตัวอย่างของข้อมูลมีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;487787.27    2071326.71    -0.36    4.33&lt;br /&gt;486904.32    2068177.13    -1.06    -2.25&lt;br /&gt;490220.08    2066478.38    1.70    -1.25&lt;br /&gt;491029.95    2068104.50    -2.93    2.62&lt;br /&gt;&lt;br /&gt;หลังจากสร้าง Text ไฟล์ตามรูปแบบข้างต้นแล้ว ต่อมาให้ทำการโหลดข้อมูลจาก Text ไฟล์และกำหนดค่าลงในเมทริกซ์ด้วยคำสั่งในโปรแกรม Octave ดังตัวอย่างดังนี้&lt;br /&gt;&lt;br /&gt;&gt;&gt;load c:\test.txt&lt;br /&gt;&gt;&gt;x=test(:,1);&lt;br /&gt;&gt;&gt;y=test(:,2);&lt;br /&gt;&gt;&gt;u=test(:,3);&lt;br /&gt;&gt;&gt;v=test(:,4);&lt;br /&gt;&lt;br /&gt;หลังจากนั้นจึงใช้คำสั่ง quiver ในการสร้างกราฟ ซึ่งอาจเพิ่มค่า Scale factor หรือค่าเกินจริง (Exaggeration) ได้โดยการกำหนดตัวคูณเพิ่มต่อท้าย ดังตัวอย่างดังนี้ครับ&lt;br /&gt;&lt;br /&gt;&gt;&gt;quiver (x,y,u,v)&lt;br /&gt;หรือ&lt;br /&gt;&gt;&gt;quiver (x,y,u,v,10)&lt;br /&gt;&lt;br /&gt;ตัวอย่างผลลัพธ์ดังภาพครับ&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_axbGw1NZUvo/SljJwH1igII/AAAAAAAAAA8/ykoW2bbTD64/s1600-h/myquiver.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_axbGw1NZUvo/SljJwH1igII/AAAAAAAAAA8/ykoW2bbTD64/s400/myquiver.jpg" alt="" id="BLOGGER_PHOTO_ID_5357253585331716226" border="0" /&gt;&lt;/a&gt;ลองใช้กันดูนะครับ หากมีข้อสงสัยสอบถามได้ครับ&lt;br /&gt;&lt;br /&gt;ปล. ขอบคุณพี่&lt;a href="http://enumap.wordpress.com/"&gt; ภานุ&lt;/a&gt; สำหรับคำแนะนำการใช้งาน Octave เบื้องต้นครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-8235968949830302921?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/8235968949830302921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/quiver-plot-octave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8235968949830302921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/8235968949830302921'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/quiver-plot-octave.html' title='การใช้งาน Quiver Plot ด้วยโปรแกรม Octave'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_axbGw1NZUvo/SljJwH1igII/AAAAAAAAAA8/ykoW2bbTD64/s72-c/myquiver.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-1274149315426645009</id><published>2009-07-03T10:26:00.001+07:00</published><updated>2009-07-30T11:37:03.364+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><title type='text'>ฟังก์ชันเจ๋งๆใน QGIS 1.0.2</title><content type='html'>วันนี้ได้ลองใช้งานเครื่องมือหลายๆอย่างใน QGIS แล้วประทับใจมากเลยอยากแนะนำทุกๆท่านลองใช้กันครับ โดยหลังจากติดตั้ง QGIS เรียบร้อยแล้ว (สำหรับท่านที่ยังไม่มีโปรแกรมก็ดาวน์โหลดได้จาก &lt;a href="http://www.qgis.org/en/download/binaries.html"&gt;ที่นี่ &lt;/a&gt;ครับ) จะพบกับเมนูให้เลือกใช้งานที่หลากหลายและน่าสนใจมากๆ เช่น เมนู Tools --&gt; Analysis Tools, Research Tools, Geoprocessing Tools, Geometry Tools และ Data Management Tools เป็นต้น&lt;div style="text-align: left;"&gt;จากการทดสอบใช้งานเบื้องต้นพบว่าทำงานได้ดีไม่แพ้ซอฟต์แวร์ที่มีลิขสิทธิ์ หากท่านใดพบปัญหาหรือมีข้อสงสัยในการทำงาน สามารถเมล์มาสอบถามหรือแลกเปลี่ยนประสบการณ์ได้ครับ เพื่อช่วยสนับสนุนให้มีการใช้งาน Free/Open Source Software (FOSS) อย่างกว้างขวางในประเทศไทยของเรา ตัวอย่างของเครื่องมือที่น่าสนใจมีดังภาพข้างล่างครับ&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_axbGw1NZUvo/Sk1-llfvc1I/AAAAAAAAAAU/u6pyJmPUjnI/s1600-h/qgis102_geoproTools.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 194px;" src="http://1.bp.blogspot.com/_axbGw1NZUvo/Sk1-llfvc1I/AAAAAAAAAAU/u6pyJmPUjnI/s400/qgis102_geoproTools.jpg" alt="" id="BLOGGER_PHOTO_ID_5354074716198892370" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_axbGw1NZUvo/Sk2HnZKh9dI/AAAAAAAAAAk/QJuqr9ZHDj0/s1600-h/qgis102_geomTools.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 211px;" src="http://2.bp.blogspot.com/_axbGw1NZUvo/Sk2HnZKh9dI/AAAAAAAAAAk/QJuqr9ZHDj0/s400/qgis102_geomTools.jpg" alt="" id="BLOGGER_PHOTO_ID_5354084642853090770" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-1274149315426645009?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/1274149315426645009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/qgis-102.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1274149315426645009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/1274149315426645009'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/qgis-102.html' title='ฟังก์ชันเจ๋งๆใน QGIS 1.0.2'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_axbGw1NZUvo/Sk1-llfvc1I/AAAAAAAAAAU/u6pyJmPUjnI/s72-c/qgis102_geoproTools.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3160950487989749109</id><published>2009-07-02T14:49:00.002+07:00</published><updated>2009-08-11T12:36:45.193+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL usage'/><title type='text'>เมื่อ gdal2tiles ของ FWTOOLS (บางเวอร์ชัน) ใช้งานไม่ได้ (ของฟรีและดีก็มีในโลก)</title><content type='html'>วิธีแก้ไขเบื้องต้นมีดังนี้ครับ&lt;br /&gt;&lt;br /&gt;1. ดาวน์โหลดไฟล์ gdal2tiles.py &lt;a href="http://www.klokan.cz/projects/gdal2tiles/gdal2tiles.py"&gt;ที่นี่ &lt;/a&gt;&lt;br /&gt;2. บันทึกไฟล์ gdal2tiles.py แทนที่ของเดิม ที่ C:\Program Files\FWTools2.4.2\bin\ (default)&lt;br /&gt;3. ใช้งาน gdal2tiles ตามปกติ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3160950487989749109?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3160950487989749109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/gdal2tiles-fwtools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3160950487989749109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3160950487989749109'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/gdal2tiles-fwtools.html' title='เมื่อ gdal2tiles ของ FWTOOLS (บางเวอร์ชัน) ใช้งานไม่ได้ (ของฟรีและดีก็มีในโลก)'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-3907853235523584396</id><published>2009-07-02T13:12:00.001+07:00</published><updated>2009-07-30T11:36:47.270+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fundamental of Surveying and Mapping'/><title type='text'>การแปลงค่าความสูงระหว่าง Ellipsoidal Height และ Orthometric Height</title><content type='html'>ท่านใดที่ต้องการแปลงค่าความสูง Ellipsoidal Height (h) ให้เป็น Orthometric Height (H) ด้วย EGM96 สามารถพิมพ์ค่าพิกัดที่ต้องการได้ &lt;a href="http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/intpt.html"&gt;ที่นี่&lt;/a&gt; ในทำนองเดียวกันสามารถแปลงความสูง Orthometric Height กลับมาเป็น Ellipsoidal Height ก็สามารถทำได้ตามสมการข้างล่างครับ&lt;br /&gt;&lt;br /&gt;h = H + N&lt;br /&gt;&lt;br /&gt;เมื่่อ  N คือค่าความสูงต่างระหว่าง Geoid และ Ellipsoid หรือที่เรียกกันว่าค่า Geoid Undulation (N)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-3907853235523584396?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/3907853235523584396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/ellipsoidal-height-orthometric-height.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3907853235523584396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/3907853235523584396'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/ellipsoidal-height-orthometric-height.html' title='การแปลงค่าความสูงระหว่าง Ellipsoidal Height และ Orthometric Height'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-266257183696581471</id><published>2009-07-02T12:54:00.000+07:00</published><updated>2009-07-03T11:07:51.727+07:00</updated><title type='text'>งานประชุมเชิงปฏิบัติการ THEOS Image Quality Assessment</title><content type='html'>สำนักงานพัฒนาเทคโนโลยีวกาศและภูมิสารสนเทศ (สทอภ) ได้จัดการประชุมงานประชุมเชิงปฏิบัติการเรื่อง THEOS Image Quality Assessment ระหว่างวันที่ 15 - 17 กค. 2552 ขอเชิญทุกท่านที่สนใจเข้าร่วมงานครับ (ติดต่อ สทอภ กันเองนะครับ แฮะๆๆ) เนื้อหาคร่าวๆของการฝึกอบรมมีดังนี้ครับ&lt;br /&gt;- Overview of Thai-French Cooperation in Space Technology, Application and Training.&lt;br /&gt;- Introduction to Satellite Image Processing and Mathematical Fundamental for Image Processing.&lt;br /&gt;- Mathematical Fundamental for Radiometric/Geometric Correction.&lt;br /&gt;- การบรรยายเรื่อง Preliminary of THEOS Sensor Modeling.&lt;br /&gt;- Local and Global DEMs Availabilities and their Contribution to THEOS Orthorectification.&lt;br /&gt;- Mathematical Fundamental for Radiometric/Geometric Calibration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-266257183696581471?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/266257183696581471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/07/theos-image-quality-assessment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/266257183696581471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/266257183696581471'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/07/theos-image-quality-assessment.html' title='งานประชุมเชิงปฏิบัติการ THEOS Image Quality Assessment'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2921358827821881589.post-2935133369056252205</id><published>2009-06-25T14:13:00.001+07:00</published><updated>2009-07-30T11:37:12.042+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><title type='text'>FWTOOLS 2.4.2</title><content type='html'>วันนี้ลองเข้าไปดาวน์โหลด &lt;a href="http://home.gdal.org/fwtools/"&gt;FWTOOLS &lt;/a&gt;ปรากฏว่าแต่ละเวอร์ชันออกเร็วมากๆ ปัจจุบันถึง 2.4.2 แล้วครับ ส่วนการใช้งาน gdal2tiles ที่มักพบปัญหาในเวอร์ชันก่อน ผมได้ทดลองบน Vista (Home Premium) ก็ยังไม่สามารถใช้งานได้ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2921358827821881589-2935133369056252205?l=sawarino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sawarino.blogspot.com/feeds/2935133369056252205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sawarino.blogspot.com/2009/06/fwtools-242.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2935133369056252205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2921358827821881589/posts/default/2935133369056252205'/><link rel='alternate' type='text/html' href='http://sawarino.blogspot.com/2009/06/fwtools-242.html' title='FWTOOLS 2.4.2'/><author><name>SawarinO</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
