tag:blogger.com,1999:blog-29213588278218815892024-03-06T08:27:52.592+07:00SawarinOGeoInformatics, Remote Sensing, GIS, GDAL, and Free/Open Source Software (FOSS) for GeoInformatics.Unknownnoreply@blogger.comBlogger72125tag:blogger.com,1999:blog-2921358827821881589.post-20093036244616107952014-01-08T16:04:00.000+07:002014-01-08T16:07:36.306+07:00การตรวจสอบเส้นโครงแผนที่ของชุดข้อมูลแรสเตอร์ (Detecting the map projection of a raster dataset)ปัญหาที่มักพบบ่อยๆในการตรวจความเรียบร้อยของข้อมูลแรสเตอร์จำนวนมากอย่างหนึ่งคือ การค้นหาไฟล์ข้อมูลที่มีการใช้เส้นโครงแผนที่ที่แตกต่างกัน เช่น เมื่อเราได้ข้อมูลภาพมาจำนวนหนึ่ง และอยากทราบว่าแต่ละภาพนั้นใช้เส้นโครงแแผนที่แบบใดและในชุดข้อมูลนี้มีไฟล์ใดบ้างที่ใช้เส้นโครงแผนที่ที่แตกต่างกัน แนวทางปกติที่ใช้กันคือ เรียกดูข้อมูลเส้นโครงแผนที่ทีละไฟล์ ซึ่งก็ดูเหมือนจะสะดวกและไม่ยุ่งยากอะไร แต่ลองจินตนาการถึงชุดข้อมูลจำนวนมาก เช่น 100 หรือ 1,000 ไฟล์ขึ้นไป ซึ่งหากจะให้มานั่งเปิดดูข้อมูลเส้นโครงแผนที่ทีละไฟล์คงไม่สะดวกและเสียเวลามากแน่ๆ<br />
วันนี้ผมขอนำเสนอแนวทางแก้ไขปัญหา ที่ผมมักใช้เสมอ คือการประยุกต์ใช้ฟังก์ชัน gdaltindex ผ่านทาง FWTools Shell สำหรับการหาข้อมูลภาพ (Raster) ที่มีการใช้เส้นโครงแผนที่แตกต่างกัน โดยปกติแล้ว gdaltindex นั้นใช้สำหรับการสร้าง index file (Vector) สำหรับการเรียกข้อมูลแรสเตอร์ด้วย UMN MapServer ครับ แต่เราสามารถดัดแปลงฟังก์ชันนี้สำหรับการหาข้อมูลที่มีการใช้เส้นโครงแผนที่แตกต่างกันดังตัวย่างการใช้งานดังนี้ครับ<br />
<br />
>>gdaltindex xxx.shp [Raster Dataset]<br />
ตัวอย่างการใช้งาน<br />
>>gdaltindex index.shp .\*.tif<br />
<br />
ตัวอย่างการใช้งานจริงสามารถทำได้ดังภาพตัวอย่างที่่ 1 เลยครับ<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhnRrNoEAidbeI48fQASHxPwTKWeGab1Qv_oQGFTIn9SROFXfi9Pa1GoQc9l9sI0mIpPgrChOa0InN96dhF0Ocp8LNgcj0yPGVAjoSj-Nh2rCtcmobyfkULshfk5eXNFCMQZcnCKgqe_Ue/s1600/gdalTindex.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhnRrNoEAidbeI48fQASHxPwTKWeGab1Qv_oQGFTIn9SROFXfi9Pa1GoQc9l9sI0mIpPgrChOa0InN96dhF0Ocp8LNgcj0yPGVAjoSj-Nh2rCtcmobyfkULshfk5eXNFCMQZcnCKgqe_Ue/s1600/gdalTindex.jpg" height="290" width="640" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ภาพที่ 1 ตัวอย่างการใช้ gdaltindex สำหรับการค้นหาไฟล์ที่ใช้เส้นโครงแผนที่ที่แตกต่างกัน<br />
<br />
จากภาพตัวอย่างจะพบว่าไฟล์ a102.tif นั้นมีการใช้งานเส้นโครงแผนที่แตกต่างจากไฟล์อื่นๆครับ ลองนำแนวทางนี้ไปประยุกต์ใช้งานกันดูนะครับ<br />
<br />
<br />SawarinOhttp://www.blogger.com/profile/00247884924445580010noreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-30268296965671326392013-08-28T21:45:00.000+07:002013-08-28T21:58:55.976+07:00การหาค่าสถิติเบื้องต้นของข้อมูลภาพด้วย Matlab<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>TH</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:ApplyBreakingRules/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* 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-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;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-language:AR-SA;}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span lang="TH" style="color: black;">วันนี้จะขออนุญาตนำเสนอวิธีการเรียกใช้งานฟังก์ชันพื้นฐานที่อาจจะเป็นเรื่องง่ายมากๆสำหรับท่านที่เคยใช้งาน
</span><span style="color: black;">Matlab </span><span lang="TH" style="color: black;">เป้นประจำแต่สำหรับผมนานๆใช้ทีเลยต้องบันทึกไว้กันลืมสักหน่อย
(-_-)" ตัวอย่างการคำนวนหาค่าสถิติเบื้องต้นที่จะทดลองใช้งานในครั้งนี้ได้แก่ค่า </span><span style="color: black;">Maximum, Minimum, Mean/Average </span><span lang="TH" style="color: black;">และ </span><span style="color: black;">Standard Deviation </span><span lang="TH" style="color: black;">เป็นต้นครับ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span lang="TH" style="color: black;">การประมวลผลข้อมูลภาพนั้นเจ้า Matlab จะ</span><span lang="TH" style="color: black;">มองข้อมูลภาพและค่าของจุดภาพในรูปของเมทิรกซ์
(</span><span style="color: black;">Matrix)
</span><span lang="TH" style="color: black;">โดยขนาดของเมทริกซ์จะเท่ากับขนาดของข้อมูลภาพ
เช่น ข้อมูลภาพหนึ่งมีขนาด </span><span style="color: black;">100
x 100 </span><span lang="TH" style="color: black;">จุดภาพ
จำนวน </span><span style="color: black;">4 </span><span lang="TH" style="color: black;">ช่วงคลื่น (</span><span style="color: black;">band) </span><span lang="TH" style="color: black;">นั้นเมื่อนำข้อมูลภาพเหล่านี้เข้าสู่โปรแกรม Matlab แล้ว
โปรแกรมจะทำการแปลงข้อมูลให้อยู่ในรูปของเมทริกซ์ที่มีขนาดและมิติเท่ากับข้อมูลต้นฉบับ โดยค่าของจุดภาพ (</span><span style="color: black;">Pixel
values/Brightness values - BV/Digital Number - DN) </span><span lang="TH" style="color: black;">จะถือว่าเป็นสมาชิกของเมทริกซ์ที่มีตำแหน่ง
(ลำดับ) เหมือนข้อมมูลภาพครับ</span><span style="color: black;"><br />
</span><span lang="TH" style="color: black;">ตัวอย่างการนำเข้าข้อมูลภาพเพื่อการวิเคราะห์และประมวลผลภาพด้วย
</span><span style="color: black;">Matlab
</span><span lang="TH" style="color: black;">นั้นสามารถทำได้โดยใช้ฟังก์ชัน
</span><span style="color: black;">imread
</span><span lang="TH" style="color: black;">ดังตัวอย่างดังนี้</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><b><span lang="TH" style="color: black;">การแปลงข้อมูลภาพให้เป็นเมทริกซ์</span></b></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">##############################</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>imred('C:\images\theos.tif')
% </span><span lang="TH" style="color: black;">หรือ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>imred('C:\images\theos.tif');
% </span><span lang="TH" style="color: black;">หรือ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>theos
= ('C:\images\theos.tif');</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><b><span lang="TH" style="color: black;">การหาขนาดของข้อมูลภาพหรือเมทริกซ์</span></b><b><span style="color: black;"> </span></b><span lang="TH" style="color: black;">สามารถทำได้โดยใช้คำสั่ง </span><span style="color: black;">size </span><span lang="TH" style="color: black;">ดังตัวอย่าง</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">##############################</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>size(theos)</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">ans
=</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">
1500 1500
4 <br />%
</span><span lang="TH" style="color: black;">ขนาดของเมทริกซ์คือ
</span><span style="color: black;">row,
column, band </span><span lang="TH" style="color: black;">ตามลำดับครับ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span lang="TH" style="color: black;"> ส่วนการเปลี่ยนข้อมูลภาพให้เป็นเมทริกซ์แบบแยกช่วงคลื่นสามารถทำได้ดังนี้</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">##############################</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">band1
= theos(:,:,1);<br />
band2 = theos(:,:,2);<br />
band3 = theos(:,:,3);<br />
band4 = theos(:,:,4);
<br />% </span><span lang="TH" style="color: black;">ตรงนี้ต้องระวังการเรียงลำดัของช่วงคลื่นนะครับ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 13.5pt;">
<span style="font-size: small;"><span style="font-family: inherit;"><span lang="TH" style="color: black;">ใน </span><span style="color: black;">Matlab </span><span lang="TH" style="color: black;">นั้นมีฟังก์ชันการคำนวณสถิติพื้นฐานไว้ให้อยู่แล้วนะครับ
เราสามารถเรียกใช้งานได้ดังตัวอย่างครับ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><b><span lang="TH" style="color: black;">ค่า </span></b><b><span style="color: black;">Maximum </span></b><b><span lang="TH" style="color: black;">ค่า </span></b><b><span style="color: black;">Minimum</span></b></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">##############################</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>max(max(band1))<br />
>>max(band1(:))
<br />
% </span><span lang="TH" style="color: black;">การใช้
</span><span style="color: black;">band1(:)
</span><span lang="TH" style="color: black;">นั้นจะใช้เมื่อต้องการหาค่าของเมทริกซ์ทั้งทาง
</span><span style="color: black;">row
</span><span lang="TH" style="color: black;">และ </span><span style="color: black;">column </span><span lang="TH" style="color: black;">ครับ</span><span style="color: black;"><br />
>>min(band1(:));</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><b><span lang="TH" style="color: black;">ค่า </span></b><b><span style="color: black;">Mean/Average</span></b></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">##############################</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>mean2(band1)
<br />% </span><span lang="TH" style="color: black;">ฟังก์ชัน </span><span style="color: black;">mean2 </span><span lang="TH" style="color: black;">สามารถใช้ได้กับเมทริกซ์ </span><span style="color: black;">2 </span><span lang="TH" style="color: black;">มิติครับ</span><span style="color: black;"><br />
<br />
</span><b><span lang="TH" style="color: black;">ค่า </span></b><b><span style="color: black;">Standard Deviation</span></b></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">##############################</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="color: black;">>>std2(band1)
<br />% </span><span lang="TH" style="color: black;">ฟังก์ชัน </span><span style="color: black;">std2 </span><span lang="TH" style="color: black;">สามารถใช้ได้กับเมทริกซ์ </span><span style="color: black;">2 </span><span lang="TH" style="color: black;">มิติครับ</span></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><span lang="TH" style="color: black;">ครั้งหน้าถ้าว่างๆจะขอแนะนำวิธีการประมวลผลภาพเบื้องต้นครับ</span></span></span></div>
SawarinOhttp://www.blogger.com/profile/00247884924445580010noreply@blogger.com1tag:blogger.com,1999:blog-2921358827821881589.post-80886970460687459352013-07-17T17:20:00.002+07:002013-07-17T17:20:32.906+07:00สัมประสิทธิ์แคปปา (Kappa coefficient)วันนี้คุณน้องสาวสุดที่เลิฟ ได้ส่งข้อความมาถามว่าเคยใช้ Kappa coefficient สำหรับการิเคราะห์ข้อมูลไหมและต่างจาก Pearson correlation coefficient อย่างไร ผมเห็นว่าเป็นคำถามที่น่าสนใจและน่าจะเป็นประโยชน์สำหรับเพื่อนๆบางท่าน เลยอยากจะขออนุญาตแบ่งปันประสบการณ์ดังนี้ครับ<br />
<br />
<b>Kappa coefficient </b>หรือชื่อทางการคือ Cohen's kappa coefficient นั้นเป็นค่าสถิติที่ใช้ทดสอบความสอดคล้อง (Consistency) กันของข้อมูล 2 กลุ่ม ในบางกรณีอาจใช้สำหรับเปรียบเทียบการประเมินค่าของข้อมูลชุดเดียวกันจากผู้ประเมิน 2 คน โดย Kappa coefficient นั้นไม่จำเป็นต้องอาศัยสมมุติฐานที่ว่าข้อมูลที่สนใจนั้นมีการแจกแจงแบบปกติ (Normal distribution) หรือที่เรียกว่า Non-parametric statistic<br />
ผลลัพธ์ที่ได้จาก Kappa coefficient นั้นจะอธิบายถึงความสอดคล้องระหว่างกันของ 2 ชุดข้อมูลนั่นเอง ฟังดูอาจ งง งง ผมขอยกตัวอย่างในงานการรับรู้จากระยะไกล (Remote Sensing) นั้นมักจะใช้การหาค่า Kappa coefficient ประกอบการประเมินความถูกต้องของการจำแนกข้อมูล (Classification) กล่าวคือ เมื่อเราได้ค่าความถูกต้องของการจำแนกขข้อมูล (เช่น Overall accuracy) เมื่อเทียบกับข้อมูลอ้างอิงแล้ว เราต้องการแสดงระดับของความสอดคล้อง (Agreement) ระหว่างข้อมูลอ้างอิงและผลการจำแนกข้อมูลที่ได้จากการทดลองด้วยวิธีการจำแนกแบบต่างๆ เราก็จะใช้เจ้าค่า Kappa coefficient นี่เองเป็นตัวบ่งชี้ (คล้ายกับระดับความเชื่อมั่น เน้น นะครับ แค่ "คล้าย")<br />
<br />
ส่วน <b>Pearson correlation coefficient</b> นั้นจะต้องอาศัยสมมุติฐานที่ว่าข้อมูล 2 ชุดข้อมูลที่นำมาเปรียบเทียบกันนั้นมีความสัมพันธ์เชิงเส้นระหว่างกัน (Linear correlation) ซึ่งก็หมายถึง ต้องมีการขึ้นต่อกัน (Dependency) ระหว่างชุดข้อมูล โดยค่าที่ได้จากการคำนวณ Pearson correlation coefficient จะบ่งบอกความสัมพันธ์ระหว่างของชุดข้อมูลว่ามีทิศทางอย่างไร (ระหว่าง -1 ถึง +1)<br /><br />ประเด็นที่น่าสนใจคือ แล้วเราจะใช้เจ้า Kappa coefficient และ Pearson correlation coefficient ตอนไหน ตรงนี้จากประสบการณ์ผมคิดว่า เราต้องดูสมมุติฐานงานวิจัยของเรา ว่า เราสนใจในประเด็นใด เช่น พฤติกรรมหรือแนวโน้มของข้อมูล (Pearson correlation coefficient ) หรือดูความสอดคล้องระหว่างกันของข้อมูล ((Kappa coefficient)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-68648437702163312512013-07-08T16:45:00.003+07:002013-07-08T16:45:22.343+07:00การตัดข้อมูลภาพด้วย gdalwarpวันนี้ขอเสนอวิธีการตัดข้อมูลภาพด้วย gdalwarp ตัวอย่างของปัญหาคือ ผมมีข้อมูลภาพดาวเทียมหลายภาพ (อาจมาจากหลากหลายช่วงเวลาหรือหลายแหล่งข้อมูล) ความต้องการของผมคือ ผมต้องการใช้แค่บางส่วนของภาพเหล่านั้น เช่น พื้นที่ศึกษาของผมนั้นเป็นส่วนหนึ่งของภาพดาวเทียม หากนำเอาข้อมูลทั้งภาพไปประมวลผลจะทำให้เกินความจำเป็นและเสียเวลาในการประมวลผลข้อมูลเพิ่มมากขึ้น โดยทั่วไปแล้วเราสามารถแก้ปัญหานี้ได้โดยการตัดภาพออกเป็นส่วนย่อยๆ หรือ เลือกเอาเฉพาะพื้นที่ที่ต้องการโดยใช้เครื่องมือของโปรแกรม OpenEV ที่ Export --> Advance Options --> Interactive Options ที่สามารถเลือกได้หลายแบบทั้ง Windows Input หรือ Draw ROI แต่วิธีการดังกล่าวมีข้อจำกัดคือ สามารถทำได้ครั้งละหนึ่งไฟล์เท่านั้น ดังนั้นผมจึงขอเสนอวิธีที่จะช่วยลดเวลาจากการเรียกเปิดข้อมูลทีละภาพเพื่อทำการตัดข้อมูลเฉพาะพื้นที่ที่ต้องการโดยกาารใช้คำสั่ง FOR บน DOS และเจ้า gdalwarp ดังนี้<br />
<br />
>>FOR %i IN (*.tif) DO gdalwarp -te xmin ymin xmax ymax input_files output_files<br />
<br />
ตัวอย่างการใช้งานจริงดังนี้ครับ<br />
<br />
C:\THEOS_PANSHARP>FOR %i IN (*.tif) DO gdalwarp -te 832600<br />
1656400 835600 1659400 %i urban_%i<br />
<br />
*** โดย "urban_" คือ prefix ที่ผมใส่ไว้ในหน้าไฟล์ผลลัพธ์เพื่อให้แยกความแตกต่างระหว่างไฟล์ต้นฉบับและไฟล์ภาพที่ตัดแล้ว เช่น ไฟล์ต้นฉบับ ผมมีหลายไฟล์ได้แก่ bt.tif, mt.tif, pca.tif, ihs.tif, mihs.tif, gs.tif, ehlers.tif, hpf.tif และ wvlet.tif ส่วนไฟล์ที่ตัดเอาเฉพาะพื้นที่ศึกษาหรือพื้นที่ที่ต้องการจะได้เป็นไฟล์ใหม่คือ<br />
urban_bt.tif<br />
urban_mt.tif<br />
urban_pca.tif<br />
urban_ihs.tif<br />
urban_mihs.tif<br />
urban_gs.tif<br />
urban_ehlers.tif<br />
urban_hpf.tif และ urban_wvlet.tif ตามลำดับครับUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-12383215229368730772013-06-04T13:22:00.002+07:002013-06-04T13:22:34.638+07:00Font encoding เจ้าปัญหา!!!วันนี้ขอแนะนำวิธีอ่าน Font ยึกยือของไฟล์ข้อมูล หัวข้อนี้ได้บทเรียนจากปัญหาของเครื่องแม่ข่ายที่เมื่อมีผู้อัพโหลดไฟล์ภาพแล้ว ระบบได้จัดการสร้างชื่อไฟล์อัตโนมัติ แต่ชื่อไฟล์ที่สร้างขึ้นนั้นไม่สามารถอ่านออกได้ (มีปัญหาเฉพาะภาษาไทย) ดังภาพตัวอย่างที่ 1<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiklroWjNBQK2F2fKhXwEAeuBCP8MFQPhNJ1ui4YyeHXigQsPyFescIbB61QUqbSyhWfwh8dT7HoTALsI3KKNCsaP9O70m85QB1sI9FQWMIUQhnOMX6CCidx1repHzyH_on13hlamVNfE/s1600/FontError.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiklroWjNBQK2F2fKhXwEAeuBCP8MFQPhNJ1ui4YyeHXigQsPyFescIbB61QUqbSyhWfwh8dT7HoTALsI3KKNCsaP9O70m85QB1sI9FQWMIUQhnOMX6CCidx1repHzyH_on13hlamVNfE/s640/FontError.jpg" width="640" /></a></div>
<br />
<div style="text-align: center;">
ภาพที่ 1 ไฟล์ข้อมูลที่มีปัญหาเกี่ยวกับการเข้ารหัส (Encoding)</div>
<br />
วิธีการแก้ไขเพื่อให้อ่านชื่อไฟล์ได้สามารถทำได้หลายแนวทาง วันนี้จะขอแนะนำแนวทางหนึ่งที่คิดออกดังนี้ครับ<br />1. อ่านชื่อไฟล์ด้วย DOS command prompt (dir) แล้วทำการเก็บรายชื่อไฟล์ที่อ่านได้เป็นไฟล์อักขระ (Text file) ด้วยคำสั่งดังตัวอย่าง<br />#dir >filename.txt<br />2. เมื่อเปิดไฟล์ filename.txt ด้วย text editor เช่น notepad แล้วจะพบว่าชื่อไฟล์สามารถแสดงผลเป็นภาษาไทยได้อย่างถูกต้อง<br />3. เขียนชุดคำสั่งเพื่อเปลี่ยนชื่อไฟล์ (rename) ด้วย DOS command prompt<br />
<br />
<br />ปล. Environment ของเครื่องคอมพิวเตอร์อาจแตกต่างกันทำให้การแสดงผลที่ได้อาจแตกต่างกัน หากเพื่อนๆลองทำตามแล้วก็ยังไม่ได้อาจปรึกษาเพิ่มเติมได้ผ่านทางอีเมล์ ยินดีช่วยเหลือครับUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-89723104887074480742013-05-12T18:00:00.004+07:002013-05-12T18:00:59.939+07:00วิธีการสร้าง Tile ข้อมูลภาพการสร้าง Tile ให้ข้อมูลภาพนั้นจะช่วยให้การเรียกอ่านข้อมูลภาพมีประสิทธิภาพมากยิ่งขึ้น วิธีการสร้างสามารถทำได้หลายแนวทาง วันนี้จะขอเสนอวิธีการหนึ่งที่ผู้ใช้งาน GDAL หรือ FWTOOLS สามารถทำงานได้ทันทีโดยไม่ต้องติดตั้งโปรแกรมอื่นๆเพิ่มเติม (LibTIFF จะถูกรวมอยู่แล้วใน GDAL<span style="color: #444444; font-family: arial, sans-serif; font-size: x-small;"><span style="line-height: 16px;"><b>)</b></span></span><div>
<u><b>ตัวอย่างการทำงาน</b></u> ผมต้องการแปลงระบบพิัดข้อมูลภาพพร้อมทั้งสร้าง TILE ข้อมูลภาพไปพร้อมกัน ผมสามารถทำได้ดังนี้<br />>>gdalwarp -t_srs epsg:4326 -co "TILED=YES" -co BLOCKXSIZE=512 -co BLOCKYSIZE=512 image.tif tiled_image.tif<br />เมื่อ -co คือการเรียกใช้งานทางเลือกพิเศษ (Create Options) โดยทางเลือกที่เรียกใช้งานมีดังนี้<br /> "TILED=YES" การทำ Tile ข้อมูล<br /> "BLOCKXSIZE=n" การระบุขนาดของ Tile ทางแกน X<br /> "BLOCKYSIZE=n" การระบุขนาดของ Tile ทางแกน Y<br /></div>
<div>
ภายหลังจากการสร้าง Tile ข้อมูลภาพแล้วสามารถเรียกดูผลลัพธ์ได้จากการใช้งาน gdalinfo โดยสังเกตจากขนาดของ Block ดังนี้</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuhyphenhyphenqam8SU1QST0WTbTILLGCUKpFQ88RfG6MT3nunZiLKZlE08mo6aa2_PIT77J4sLOzSYmEns7TSvB6qvCYh1vWAumwL1tjeRp4TsznnH6XXsD8vDfmjr3Lj4ryx6ND26MWQJrmf2uTA/s1600/CheckTileImage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuhyphenhyphenqam8SU1QST0WTbTILLGCUKpFQ88RfG6MT3nunZiLKZlE08mo6aa2_PIT77J4sLOzSYmEns7TSvB6qvCYh1vWAumwL1tjeRp4TsznnH6XXsD8vDfmjr3Lj4ryx6ND26MWQJrmf2uTA/s1600/CheckTileImage.jpg" height="215" width="320" /></a></div>
<div style="text-align: center;">
ตัวอย่างข้อมุลภาพที่มีการทำ Tile ด้วยขนาด 512x512 จุดภาพ</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-86813787788685071052012-12-15T23:50:00.001+07:002012-12-15T23:50:31.213+07:00ปัญหาที่พบระหว่างการทำงานกับไฟล์ข้อมูลภาพจำนวนมากชีวิตช่วงนี้ยุ่งๆกับการทำงานวิจัยของตัวเอง บังเอิญมีปัญหาที่หลากหลายในการทำงานจึงอยากเอามาแบ่งปัน เผื่อว่าบางท่านอาจจะเจอปัญหาในลักษณะเดียวกัน ดังนี้ครับ<br />
<br />
<ol>
<li>โปรแกรม xxx ไม่สามารถโมเสคไฟล์ถาพจำนวนมากได้ (แค่ 3,000 กว่าไฟล์เอง ทำเป็นใจเสาะ ตายเอาดื้อๆซะงั้น) วิธีการแก้ไขของผม คือ แยกไฟล์ที่มีเลขระวางหมวดเดียวกันไว้ด้วยกันก่อน (ในกรณีของข้อมูลที่อาศัยระบบเลขระวาง อาจใช้เลขระวางสามหรือสี่ตัวแรกของชื่อไฟล์ในการจัดหมวดหมู่) แล้วทำการโมเสค ที่ละหมวดๆ แล้วค่อยนำมาโมเสคกันภายหลัง เช่น ไฟล์ทั้งหมด สามพันกว่าไฟล์เมื่อทำการจัดหมวดหมู่แล้ว อาจจะเหลือเพียงแค่ สิบหมวดหลัก (ที่มีตัวเลขสี่ตัวแรกเหมือนกัน) ซึ่งวิธีการทำงานนั้นสามารถใช้การเขียน Batch ช่วยในการคัดแยกไฟล์ หรือการใช้เครื่องหมาย * ต่อท้ายชือไฟล์สามหรือสี่ตัวแรก เพื่อทำการจัดกลุ่มข้อมูล หลังจากทำการจัดหมวดหมู่ (จัดกลุ่ม) แล้วก็ให้ทำการโมเสคต่อกันในแต่ละหมวดเข้าด้วยกัน แล้วค่อยนำผลที่ได้มาโสเสคกันอีกครั้งเพื่อให้ได้ไฟล์ภาพที่โมเสคทั้งหมดทั้ง 3,000 กว่าไฟล์</li>
<li>การโมเสคอาจเกิดช่องว่างระหว่างแถวหรือคอลัมน์ อันเนื่องมากจากการโมเสคของแต่ละหมวดข้อมูลภาพ (ถ้าโมเสคพร้อมกันทั้งหมดจะไม่เกิดปัญหานี้) วิธีการแก้ไข ผมใช้วิธีการสุ่มโมเสคที่ละหมวดก่อน หากหมวดไหนที่มีปัญหาการเกิดแถวช่องว่าง ผมจะโมเสค หมวดนั้นรวมกันกับหมวดอื่นๆพร้อมกันในคราวเดียว (อาจมีปัญหาขนาดไฟล์มากเกินไปจะโปรแกรมไม่สามารถทำงานได้)</li>
<li>โปรแกรม xxx และ gdal_merge ไม่สามารถโมเสคไฟล์ที่มีชนิดข้อมูลที่ต่างกันได้ วิธีการแก้ไขก็ตรงไปตรงมาคือ ทำการแปลงชนิดข้อมูลก่อนแล้วจึงทำการโมเสคภาพ</li>
<li>มีข้อมูลผิดพลาดในไฟล์ เช่น ค่าจุดภาพที่มากหรือน้อยเกินจริง เพียงไม่กี่จุดภาพ ซึ่งไม่มีการแสดงผลในส่วนของ Image information วิธีการแก้ไขคือ ทำการแปลงให้อยู่ในรูปของไฟล์ CSV แล้วเรียกดูด้วยโปรแกรมพวก Spreadsheet แล้วทำการเรียง (Sorting) เพื่อดูค่าดังกล่าว โดยผู้ใช้งานโปรแกรมอาจแก้ไขได้ โดยการเปลี่ยนค่าในไฟล์ CSV ก่อนแล้วจึงนำไฟล์ CSV นี้ไปทำการแปลงกลับให้เป็นข้อมูลภาพ</li>
<li>ค่าของจุดภาพคลาดเคลื่อนไปจากจุดภาพข้างเคียงไม่มากนัก (กรณีของข้อมูลแบบจำลองภูมิประเทศเชิงเลข) วิธีการสังเกตให้ใช้เครื่องมือจำพวก Image Enhancement เพื่อทำให้เห็นจุดภาพเหล่านั้น เด่นชัดมากขึ้น</li>
</ol>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-44583613999451147312012-09-20T01:08:00.001+07:002012-09-20T01:13:27.174+07:00QGIS: วิธีแก้ปัญหา Labels ซ้อนทับกันวันนี้ขอเสนอวิธีการแก้ปัญหาการซ้อนทับกันของ Labels จากการใช้งานโปรแกรม QGIS ก่อนอื่นผมขอแสดงตัวอย่างของปัญหาก่อนนะครับ สมมุติว่าผมต้องการทำ
Labels ของ Polygons ปกติผมก็จะทำการกำหนดค่าโดยเลือกที่ชั้นข้อมูลแล้วกำหนดที่แท็บ
Labels ดังภาพที่ 1<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsPmc6ZnYD9JawGA2lqV1DiDx9oTKi6amD9aLlRUaKoGVvhCldWQPSOdd6ikc4qw5mR33v98sYA-HfdquMjG0CBXFUqbnQNCtpi_9UPwbaEzNE1w8YGafQPLXrH7gyWHUqZ7e0V0x5zGU/s1600/genMenu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsPmc6ZnYD9JawGA2lqV1DiDx9oTKi6amD9aLlRUaKoGVvhCldWQPSOdd6ikc4qw5mR33v98sYA-HfdquMjG0CBXFUqbnQNCtpi_9UPwbaEzNE1w8YGafQPLXrH7gyWHUqZ7e0V0x5zGU/s320/genMenu.jpg" width="320" /></a></div>
<div>
<br /></div>
<div>
<div style="text-align: center;">
ภาพที่ 1 การกำหนดค่าของ
Labels แบบปกติ</div>
<div style="text-align: left;">
หลังจากนั้นจะได้ตัวอย่างผลลัพธ์ดังภาพที่ 2 ดังนี้</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0ZIsU92gg4vl43yrtc4G3Bf5F2D_EXNmzGpLNCW6LAksJ1_Zi82TJB0x3KkfXH2tNdsqvKvbaTu6oL7ZOBl6sCxnKCkoJg4KicTCOhHniFl_ZL-aOee_6HCvSrffmWvFasP7p_AKzuhM/s1600/DupLabels.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0ZIsU92gg4vl43yrtc4G3Bf5F2D_EXNmzGpLNCW6LAksJ1_Zi82TJB0x3KkfXH2tNdsqvKvbaTu6oL7ZOBl6sCxnKCkoJg4KicTCOhHniFl_ZL-aOee_6HCvSrffmWvFasP7p_AKzuhM/s320/DupLabels.jpg" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div style="text-align: center;">
ภาพที่ 2 ตัวอย่าง Labels ที่ซ้อนทับกัน</div>
<div style="text-align: left;">
จะสังเกตได้ว่าทุกๆ Polygons นั้นมีค่าของ Labels เหมือนกัน แต่เนื่องจาก Polygons ต่างๆนั้นอยู่ชิดติดกันเกินไป (เมื่อเทียบกับมาตราส่วนการแสดงผล) ทำให้เกิดการซ้อนทับกัน (Overlap) ของ Labels </div>
<div style="text-align: left;">
วันนี้ผมขอเสนอหนึ่งในวิธีการแก้ปัญหานี้ครับ</div>
<div style="text-align: left;">
อันดับแรกให้ทุกท่านยกเลิก Labels ที่ได้ทำไว้เสียก่อน โดยการ "ไม่เลือก" ที่ Display labels แล้ว กด Apply/OK หรือ "เอาชั้นชั้นข้อมูลที่ต้องการทำ Labels ออกแล้วเปิดชั้นข้อมูลใหม่ (เหมือนคอมพ์ เวลามีปัญหาทำอะไรไม่ถูกก็ปิดแล้วเปิดใหม่ ฮ่าๆๆ)"</div>
<div style="text-align: left;">
เพื่อความเข้าใจอย่างง่าย (แล้วก่อนหน้านี้จะอธิบายให้ งง ทำไม) คือให้เปิดชั้นข้อมูลปกติโดยยังไม่ต้องทำอะไร (ยังไม่ต้อง Labels ใดๆทั้งสิ้น) ดังภาพที่ 3 </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2uWKc-Sw0ae4bWZFE-HXI-Eky9aSSNx2PZWHlacWW86JIhYgy18NWdFVNpqxtyRiNPgyX5AU7bgvxiuWkOLs8R4jO3RlWz3h0fPaabmSneTwnOFkoYjVfPvLEiCn2HhiIE8eXzfCpmQ/s1600/openLayer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2uWKc-Sw0ae4bWZFE-HXI-Eky9aSSNx2PZWHlacWW86JIhYgy18NWdFVNpqxtyRiNPgyX5AU7bgvxiuWkOLs8R4jO3RlWz3h0fPaabmSneTwnOFkoYjVfPvLEiCn2HhiIE8eXzfCpmQ/s320/openLayer.jpg" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
ภาพที่ 3 การเปิดชั้นข้อมูลก่อนสร้าง Labels (ควรให้เป็นแบบนี้ก่อนเสมอนะครับ)</div>
<div style="text-align: left;">
หลังจากนั้นให้เลือกที่เมนู Layer --> Labeling หลังจากนั้นจะปรากฏหน้าต่างให้กำหนดค่าและทำการกำหนดค่าของ Labels ที่ต้องการดังตัวอย่างภาพที่ 4</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYwx-n9utdUlhCfCuv20iHFIkxvT5UI6AmElTUoiTDtCL1IjTh-V6nIMwZkgfekwpMFQeEiqQFHUK7Wcazs70YPvUwLNoagbrkY_Q9rMPoOEhQhT-8qwLw2WMXqamYIok0ek8fkWiaHbY/s1600/config.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYwx-n9utdUlhCfCuv20iHFIkxvT5UI6AmElTUoiTDtCL1IjTh-V6nIMwZkgfekwpMFQeEiqQFHUK7Wcazs70YPvUwLNoagbrkY_Q9rMPoOEhQhT-8qwLw2WMXqamYIok0ek8fkWiaHbY/s320/config.jpg" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
ภาพที่ 4 ภาพตัวอย่างหน้าต่างสำหรับกำหนดค่า Labels และการกำหนดค่าของ Labels</div>
<div style="text-align: left;">
เมื่อกำหนดค่าของ Labels ด้วยวิธีการนี้เรียบร้อยแล้ว จะพบว่าไม่ปรากฏการซ้อนทับกันของ Labels อีกตัวอย่างดังภาพที่ 5</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil6Y2bchxK6ZLlqAa2UKKb2lCZmnSrUeIpGbVGfwswqPah16iI46LyUCcRETr006UfxIRT5QwDF8TiMjLu3Kx5K1arXjZJbzk6t_3KOptiqrdD7jx0YvuFcTNdkqLdhzNAAVFSC-8xnHY/s1600/Labeled.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil6Y2bchxK6ZLlqAa2UKKb2lCZmnSrUeIpGbVGfwswqPah16iI46LyUCcRETr006UfxIRT5QwDF8TiMjLu3Kx5K1arXjZJbzk6t_3KOptiqrdD7jx0YvuFcTNdkqLdhzNAAVFSC-8xnHY/s320/Labeled.jpg" width="320" /></a></div>
<div style="text-align: center;">
ภาพที่ 5 ตัวอย่างการทำ Labels แบบไม่มีการซ้อนทับกัน</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<u><b>หมายเหตุ</b></u></div>
<div style="text-align: left;">
<ul>
<li>ตัวอย่างนี้ใช้โปรแกรม QGIS version 1.7.4</li>
<li>หากท่่านใดทำตามตัวอย่างแล้วยังเกิดปัญหาโปรดแจ้งให้ทราบด้วยครับ</li>
</ul>
</div>
<div style="text-align: left;">
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-88551014041031944162012-06-04T12:39:00.001+07:002012-06-04T12:43:47.041+07:00ภูมิสารสนเทศในยุค Spatio-temporal information systemวันนี้ตื่นขึ้นมาไม่รู้มีอะไรดลใจให้คิดถึงเกี่ยวกับ วิชาชีพและสิ่งที่ผมกำลังเรียนรู้อยู่ในปัจจุบัน คิดไปคิดมา ทำให้ผมได้ข้อสรุปดังนี้ครับ งานด้านภูมิสารสนเทศในยุคปัจจุบัน (5-10 ปีมานี้)ได้มีการเปลี่ยนแปลงไปจากเดิม กล่าวคือ ยุคก่อนหน้านี้เราจะเน้นศึกษาสิ่งต่างๆเพียง 2 ด้าน กล่าวคือ สิ่งที่เราสนใจนั้นมีคุณลักษณะหรือคุณสมบัติ (Attribute) อย่างไร เมื่อมีตำแหน่ง (Space) ที่แตกต่างกัน แต่ในปัจจุบัน งานวิจัยต่างๆที่เกียวข้องกับภูมิสารสนเทศนั้นได้ให้ความสนใจเกี่ยวกับเชิงเวลา (Temporal) ดังจะเห็นได้จากบทความงานวิจัย มาตรฐานการทำงานของโปรแกรมด้านภูมิสารสนเทศ หรือมาตรฐานการจัดเก็บข้อมูลในระบบฐานข้อมูล สิ่งต่างๆเหล่านี้ล้วนแต่ให้ความสนใจเกี่ยวกับเวลาซึ่งนอกเหนือไปกว่า "ตำแหน่งและคุณลักษณะ" ถ้าจะอธิบายให้เข้าใจอย่าง่าย ผมขออนุญาตยกตัวอย่างภาพประกอบดังนี้ครับ<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBeTc9NPHFU-hAe3K8BhDEeGggFdJlZIOePW5uP72I1uFcnah1MP74zMrb4x3QYucvQpqIVe8SYsYtPOvV5DaQjoNy5orV_aRoEaoSlVi0wREqx-VhxfvM62LtVGnR9rwkCn9ZraHg2qM/s1600/3d_axis.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBeTc9NPHFU-hAe3K8BhDEeGggFdJlZIOePW5uP72I1uFcnah1MP74zMrb4x3QYucvQpqIVe8SYsYtPOvV5DaQjoNy5orV_aRoEaoSlVi0wREqx-VhxfvM62LtVGnR9rwkCn9ZraHg2qM/s400/3d_axis.jpg" width="400" /></a></div>
<br />
<div style="text-align: center;">
ภาพที่ 1 สิ่งที่งานด้านภูมิสารสนเทศให้ความสนใจ(เทียบได้กับแกนต่างๆ)</div>
จากภาพตัวอย่างจะเห็นว่า ปัจจุบันนี้ เรามีประเด็นใหม่ที่ต้องให้ความสนใจ (ตระหนัก) ประกอบการวิเคราะห์ข้อมูลเชิงตำแหน่ง (Spatial data analysis) นั่นคือเจ้า "เชิงเวลา (Temporal)" นั่นเอง<br />
คำถามที่หลายๆท่านสงสัย เมื่อได้ยินคำว่า Spatio-temporal analysis คือ มีความแตกต่างจากรูปแบบเดิมอย่างไรและวิธีการวิเคราะห์ข้อมูลแตกต่างจากที่ทำๆกันอยู่ในปัจจุบันอย่างไร รวมถึงมันสำคัญและช่วยเราวิเคราะห์อะไรได้บ้าง???<br />
ครั้งหนึ่งผมเคยเข้ารับฟังการบรรยายเมื่อปี 2551 (2008) ระหว่างการประชุม ISPRS congress 2008 เกี่ยวกับการศึกษาด้าน Spatio-Temporal analysis ตอนนั้นต้องยอมรับว่า ผมเองก็ยังมองไม่เห็นภาพว่าเราจะนำความรู้เหล่านี้มาประยุกต์ใช้ได้อย่างไร..........<br />
<br />
<br />
คราวหน้าผมจะมาแนะนำถึงความสามารถของเจ้า Spatio-Temporal analysis ครับ <br />
ปล. ขนาด Facebook ยังมีทั้ง Location และ Timeline หรือว่าเจ้า Spatio-Temporal information system อยู่ใกล้ๆตัวเรานี่แหละ!!!Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2921358827821881589.post-11243964660137715542012-05-31T20:26:00.001+07:002012-05-31T20:38:25.764+07:00กำหนดช่วงชั้นข้อมูลด้วยฟังก์ชัน IFวันนี้ขอทดลองเขียนคำสั่งการคำนวณหาระดับชั้น (Class) แบบกำหนดค่าช่วงเอง (Interval) บนโปรแกรม Spreadsheet ด้วยตัวอย่าดังนี้ครับ<br />
สมมุติผมมีค่าของข้อมูลที่อยู่ในช่วงต่างๆดังนี้<br />
<br />
A 0.81<br />
B 0.75<br />
C 0.67<br />
D 0.58<br />
E 0.88<br />
F 0.43<br />
G 0.74<br />
H 0.77<br />
I 0.95<br />
<br />
โดยโจทย์ของผมคือ ผมต้องการแยกข้อมูลดังกล่าวให้อยู่ในช่วงที่ผมต้องการโดยทำการให้ค่าใหม่ (คล้ายกับการทำ Label ข้อมูล) ดังนี้<br />
โดยค่า <b>1</b> (ที่กำหนดใหม่) จะมีค่าของข้อมูลตั้งแต่ 0.0 - 0.4 (x <0.4)
ค่า<b> 2</b> มีค่าของข้อมูลตั้งแต่ 0.4 - 0.6 (x >= 0.4 and x < 0.6)
ค่า<b> 3</b> มีค่าของข้อมูลตั้งแต่ 0.6 - 0.7 (x >= 0.6 and x < 0.7)
ค่า<b> 4 </b>มีค่าของข้อมูลตั้งแต่ 0.7 - 0.8 (x >= 0.7 and x < 0.8)
และค่า<b> 5</b> มีค่าของข้อมูลตั้งแต่ 0.8 - 1.0 (x >= 0.8)<br />
เมื่อเราทำการกำหนดค่าของแต่ละช่วงข้อมูลเรียบร้อยแล้วขั้นตอนต่อมาคือการสร้างสูตรในโปรแกรม Spreadsheet จากตัวอย่างผมสามารถเขียนโดยใช้ฟังก์ชัน IF ดังนี้ครับ<br />
<br />
IF(CELL>=0.8,5,IF(CELL>=0.7,4,IF(CELL>=0.6,3,IF(CELL>=0.4,2,1))))<br />
เมื่อ CELL คือ ตำแหน่งของเซลล์ที่ต้องการคำนวณ<br />
จากตัวอย่างจะได้ผลลัพธ์ดังนี้<br />
กลุ่มที่ 1 ไม่มีสมาชิก<br />
กลุ่มที่ 2 มีสมาชิกคือ D, F<br />
กลุ่มที่ 3 มีสมาชิกคือ C<br />
กลุ่มที่ 4 มีสมาชิกคือ B, G, H<br />
กลุ่มที่ 5 มีสมาชิกคือ A, E, I<br />
ลองเอาไปประยุกต์กันดูนะครับ อย่างเช่นการ reclass ของข้อมูลที่ผ่านการจำแนกข้อมูลแล้ว (Classification) เป้นต้นUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-65152563945289215552012-03-15T13:40:00.006+07:002012-03-16T22:21:04.097+07:00การบีบอัดข้อมูลภาพ (Image compression) ด้วย GDAL<span style="font-weight:bold;">การบีบอัดข้อมูลภาพ (Image compression) </span><br />โดยทั่วไปแล้วจะแบ่งออกเป็น 2 ประเภทคือ<br />1. การบีบอัดแบบไม่มีการสูญเสียรายละเอียดข้อมูล (Lossless compression) ซึ่งค่าความสว่างของแต่ละจุดภาพจะยังคงอยู่เหมือนเดิมทุกประการ หรือไม่มีการเปลี่ยนแปลงค่าของแต่ละจุดภาพ ซึ่งการบีบอัดวิธีนี้จะอาศัยเทคนิคการจัดเก็บข้อมูลเชิงเลขในการลดขนาดของข้อมูล ตัวอย่างเช่น Lempel–Ziv–Welch (LZW), Run-Length Encoding (RLE) หรือ PackBits เป็นต้น <br />2. การบีบอัดแบบสูญเสียรายละเอียดข้อมูล (Lossy compression) วิธีการนี้จะมีการเปลี่ยนแปลงค่าความสว่างของจุดภาพนั่นหมายความว่า วิธีการนี้ไม่เหมาะสมสำหรับข้อมูลภาพที่ต้องมีการจำแนกข้อมูล (Classification) ตัวอย่างของการบีบอัดประเภทนี้ได้แก่ JPEG, MrSID หรือ ECW เป็นต้น<br /><span style="font-weight:bold;">เปรียบเทียบจุดเด่นและจุดด้อยของแต่ละประเภท</span><br />การบีบอัดแบบไม่มีการสูญเสียรายละเอียดข้อมูล: รายละเอียดข้อมูล(ค่าความสว่างจุดภาพ)ไม่มีการสูญเสีย เหมาะสำหรับใช้กับข้อมูลภาพที่ต้องการนำไปจำแนกข้อมูล แต่ขนาดของภาพที่บีบอัดแล้วมีขนาดลดลงไม่มากนัก (ขนาดไฟล์ไม่ค่อยแตกต่าง)<br />การบีบอัดแบบสูญเสียรายละเอียดข้อมูล: ข้อมูลภาพมีขนาดเล็กลงอย่างมาก (ขึ้นอยู่กับวิธีการ/อัลกอริทึมและคุณภาพของภาพที่ต้องการ) แต่ข้อมูลภาพมีการสูญเสียรายละเอียดซึ่งจะไม่เหมาะสมสำหรับการจำแนกข้อมูล<br />ในส่วนของวิธีการทำงานนั้นมีรายละเอียดและตัวอย่างการทำงานดังนี้<br />รายละเอียดการทำงานด้วย GDAL (FWTOOLS 2.4.7)<br />>>>gdal_translate -of (รูปแบบที่ต้องการ) -co (ทางเลือกเพิ่มเติม-ถ้ามี) inputimage outputimage<br /><br />ตัวอย่างการใช้งานที่ 1: การบีบอัดแบบไม่มีการสูญเสียรายละเอียดข้อมูล<br /><br />>>>gdal_translate -of GTiff -co COMPRESS=LZW image.tif image_lzw.tif<br /><br />>>>gdal_translate -of GTiff -co COMPRESS=PACKBITS image.tif image_packbits.tif<br /><br />ตัวอย่างการใช้งานที่ 2: การบีบอัดแบบสูญเสียรายละเอียดข้อมูล<br /><br />>>>gdal_translate -of GTiff -co COMPRESS=JPEG image.tif image_jpeg.tif<br /><br />ประสิทธิภาพของการบีบอัดแบบไม่มีการสูญเสียรายละเอียดข้อมูล ได้แก่ <br />- ข้อมูลที่ไม่มีการบันทึกข้อมูลในข้อมูลภาพ เช่น ขอบข้อมูลภาพที่ไม่มีการบันทึกข้อมูลของภาพดาวเทียมต่างๆ เป็นต้น<br />- เนื้อหาหรือลักษณะของภาพ (Content)<br />- ความซ้ำซ้อนของค่าความสว่างจุดภาพ<br />ส่วนประสิทธิภาพของการบีบอัดแบบสูญเสียรายละเอียดข้อมูล ได้แก่<br />- อัลกอริทึมที่ใช้<br />- คุณภาพข้อมูลภาพผลลัพธ์ที่ต้องการ (คุณภาพสูงขนาดจะลดลงน้อย คุณภาพต่ำขนาดภาพจะลดลงได้มาก)<br /><br />ตัวอย่างผลการทดลองการบีบอัดข้อมูลภาพ โดยข้อมูลต้นฉบับที่ใช้นั้นเป็นภาพดาวเทียมขนาด 22289x48160 จุดภาพ จำนวน 4 ช่วงคลื่น ดังภาพตัวอย่าง<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXtG61SqD2CxPZi6apWNy52cFJxmkPIHLPUDDDyWAmspJwR2wjFAyH0LyWvGDvg1sMl1OG6EGmxaHmBSo4xNz3Xner_3cOcX6TEPjPh4IBc0ZmN1aZLSfnZC3ElswMaF2jcnNGmWklBk8/s1600/TestingImage.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXtG61SqD2CxPZi6apWNy52cFJxmkPIHLPUDDDyWAmspJwR2wjFAyH0LyWvGDvg1sMl1OG6EGmxaHmBSo4xNz3Xner_3cOcX6TEPjPh4IBc0ZmN1aZLSfnZC3ElswMaF2jcnNGmWklBk8/s400/TestingImage.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5720027958933509474" /></a><br /><br />ส่วนขนาดการจัดเก็บสรุปได้ดังนี้ครับ<br />ต้นฉบับ 3.99 GB<br />LZW 1.72 GB<br />PACKBITS 2.30 GB<br />JPEG 0.38 GBUnknownnoreply@blogger.com2tag:blogger.com,1999:blog-2921358827821881589.post-57815687404787992482011-11-23T10:45:00.006+07:002011-12-01T11:27:48.543+07:00เมื่อเริ่มเจอทางตันระหว่างทำงานวิจัย!!!ผมเป็นคนหนึ่งที่มักเจอปัญหาระหว่างการทำงานวิจัย เช่น ไม่แน่ใจว่าวิธีการที่เรานำมาประยุกต์ใช้ในการทำงานจะสามารถแก้ไขปัญหาได้ ทดลองแก้ปัญหาด้วยเครื่องมือหรือวิธีการที่มีแล้วก็ยังไม่สามารถแก้ไขปัญหาได้หรือไม่รู้ว่าจะแก้ปัญหาอย่างไร เป็นต้น<br />จากตัวอย่างของปัญหา (ทางตัน) ที่กล่าวมา ทำให้ผมต้องมานั่งทบทวนสาเหตุของปัญหาและวิธีการที่จะแก้ไข (เพราะไม่มีทางไปแล้ว ฮ่าๆๆ) ซึ่งก็ได้ตัวช่วยอย่างดีคือ หนังสือ <span style="font-weight:bold;">"การคิดเชิงวิเคราะห์"</span> ของ ศาสตราจารย์ ดร.เกรียงศักดิ์ เจริญวงศ์ศักดิ์ (แนะนำให้ซื้อมาอ่านอย่างละเอียดครับ และสามารถอ่านคร่าวๆได้ <a href="http://www.stabundamrong.go.th/web/book/49/b21_49.pdf">ที่นี่</a> ครับ) ผมขออนุญาตแนะนำแนวทางที่ผมใช้ได้ผลมาแล้ว ดังนี้ครับ<br />การทำงานวิจัยต้องอาศัย 2 สิ่งที่สำคัญคือ "<span style="font-weight:bold;">ความรู้</span>" และ "<span style="font-weight:bold;">ความเข้าใจ</span>" สองคำนี้มีความสำคัญอย่างยิ่งครับ ผมขอยกตัวอย่างดังนี้ครับ เมื่อเจอปัญหาใดๆผมมักเริ่มต้นด้วยคำถามที่ว่า เรามีความรู้และความเข้าใจสำหรับการแก้ไขปัญหาแล้วหรือยัง ถ้ายังละก็ ต้องค้นหาเจ้าความรู้ก่อนเป็นอันดับแรกครับ วิธีการหาความรู้ทำได้หลายวิธีนะครับ เช่น การอ่านหนังสือ การค้นหาข้อมูลจากอินเตอร์เน็ต การสอบถามผู้เชี่ยวชาญ การเข้าคอร์สเรียนหรือการอ่านงานวิจัยของคนอื่นที่ได้ศึกษามาก่อนแล้ว เจ้าความรู้เหล่านี้จะเปรียบเสมือน เครื่องมือ ที่เรามีไว้ใช้ในการแก้ไขปัญหา ซึ่งความรู้บางอย่างนั้นสามารถช่วยเราแก้ไขปัญหาได้ ในขณะที่ความรู้บางอย่างก็ไม่สามารถช่วยเราแก้ไขปัญหา (ไม่มีความเชื่อมโยงหรือเกี่ยวข้องกับปัญหา) ตรงนี้ต้องพิจารณาไตร่ตรองดูนะครับ ว่าความรู้แบบไหนเกี่ยวข้องและไม่เกี่ยวข้องกับปัญหาของเรา ขั้นตอนการค้นหาเจ้าความรู้นี้ต้องอาศัย ความพยายามและความอดทนอย่างสูงครับ ส่วนใหญ่ที่พบเจอคือ เพื่อนๆพี่ๆน้องๆ จะหมดแรงและล้มเลิกกันในขั้นตอนนี้ครับ โปรดจำไว้เสมอว่า ถ้าเราไม่มีความรู้เป็นพื้นฐานแล้ว การทำงานหรือการแก้ไขปัญหาจะไม่มีทางประสบความสำเร็จครับ!!!<br />ต่อมาเมื่อเรามีเครื่องมือ หรือ เจ้า "ความรู้" ที่จำเป็นต้องใช้แล้ว เราก็ต้องรู้จักใช้ให้ถูกต้องและเหมาะสมกับปัญหา ซึ่งตรงนี้ต้องอาศัย เจ้า "ความเข้าใจ" ครับ ปัญหาของการได้มาซึ่งความเข้าใจ คือ แต่ละคนสามารถได้มาซึ่งความเข้าใจได้แตกต่างกัน หรือที่มักพบว่า "เข้าใจไปคนละทาง" นั่นแหละครับ หรือ บางคนเมื่อทำงานวิจัยไปแล้วพบว่า มีแต่ความรู้เต็มไปหมด แต่ขาดความเข้าใจ ซึ่งก็ไม่สามารถแก้ไขปัญหาได้นะครับ ผมเลยขออนุญาตแนะนำให้เพื่อนๆพี่ๆน้องๆ ให้นั่งคิดช้าๆและค่อยๆเรียบเรียงความคิดให้เป็นระบบ หรือวาดโครงร่างของการทำงานวิจัยออกมา แล้วค่อยๆมา "วิเคราะห์" ดูว่าเราจำเป็นต้องใช้ความรู้อะไรบ้าง มีความรู้แล้วหรือยัง ถ้ายังไม่มีก็จำเป็นต้องขวยขวายมาให้ได้นะครับ แม้จะต้องใช้เวลาและความพยายามสักหน่อย ส่วนความสามารถในการวิเคราะห์นั้น มนุษย์เรานั้นมีอยู่แล้วครับ ต่างกันที่ว่า เรจะทำอย่างไรให้สามารถประยุกต์ใช้กับงานของเรา จากประสบการณ์ของผม (ความล้มเหลวที่ผมเคยพบเจอ แฮะๆๆ) ผมพบว่า เราจะใช้ความรู้ที่มีในการแก้ปัญหาได้ก็ต่อเมื่อ เรารู้จัก "การคิดแบบวิเคราะห์" ครับ คนที่คิดวิเคราะห์บ่อยๆ ก็จะได้เปรียบครับ ซึ่งความสามารถในการ "เข้าใจปัญหา" นั้นจะต่างจาก "ความรู้" กล่าวคือ ค้นหาไม่ค่อยเจอครับ ต้องอาศัยการฝึกฝนครับ สำหรับผมคิดว่า มันเป็น สิ่งที่รู้ได้เฉพาะตน (เกิดจากความคิดมากกว่าการฟังหรือการอ่าน)<br />ถ้าจะให้เปรียบเทียบนะครับ "ความรู้" เปรียบเหมือนกับ เครื่องมือ ส่วน "ความเข้าใจ" เปรียบเหมือน วิธีการดำเนินงาน ครับ<br />งาน(ปัญหา)ใดๆจะสำเร็จต้องมีทั้ง "เครื่องมือและวิธีการดำเนินงาน" ฉันใด ทุกงานวิจัยจะสำเร็จได้ก็ต้องอาศัย "ความรู้และความเข้าใจ" ฉันนั้นครับ....<br />สิ่งสำคัญอีกประการ คือ การคิดบวก ส่วนตัวผมเชื่อว่า ไม่มีทางตันในงานวิจัย ซึ่งผมมีคติประจำใจเวลาทำงานวิจัยใดแล้วพบปัญหา คือ "ในเมื่อนักวิจัยอื่นๆสามารถทำได้ เราก็สามารถทำได้เช่นกัน" เพียงแต่หนทางในการบรรลุเป้าหมายอาจแตกต่างกันได้ ความเชื่อส่วนตัวของผม คือ มนุษย์เรานั้นมีจุดเด่นและจุดด้อย ที่แตกต่างกัน บางคนอาจมีสติปัญญาที่ล้ำเลิศ สามารถเรียนรู้และเข้าใจวิทยาการได้อย่างรวดเร็วในขณะที่บางคนอาจต้องอาศัยเวลาและความพยายามที่มากกว่าคนอื่นๆในการเข้าใจและเรียนรู้ แต่สุดท้ายแล้ว ถ้าเรามีความพยายามและตั้งใจจริงแล้ว ผมเชื่อว่า งานวิจัยทุกอย่างสามารถบรรลุวัตถุประสงค์ได้ครับ...<br />ผมจะขอยกตัวอย่างเรื่องของ ซุนวู เจ้าประโยคเด็ดที่ว่า "รู้เขารู้เรารบร้อยครั้งชนะร้อยครั้ง" ในขณะที่ซุนวูเป็นนักเรียนนั้น เขาเป็นคนที่เรียนรู้ได้ช้ากว่าเพื่อนๆในชั้นเรียน แต่สิ่งที่ซุนวูต่างจากคนอื่นคือ เขามีความพยายามในการเล่าเรียนอย่างมาก เช่น เมื่อนักเรียนร่วมชั้นคนอื่นๆ เข้าใจที่อาจารย์สอนหมดแล้ว ก็ต่างพากันกลับบ้าน หรือออกไปทำกิจกรรมอย่างอื่น แต่ซุนวูนั้นยังคงมุ่งมั่น ขบคิดและทำความเข้าใจเกี่ยวกับสิ่งที่อาจารย์ได้สั่งสอน (คิดช้าๆแต่รอบครอบ) จนกระทั่ง อาจารย์ได้ยกย่อง ซุนวู ว่าเป็นลูกศิยษ์ที่สามารถเรียนรู้และเข้าใจในเนื้อหาที่สั่งสอนอย่างท่องแท้ มากกว่าศิย์คนอื่นๆ ตรงนี้ผมอยากจะขอเสริมว่า เมื่อเล่าเรียนนั้น เราจะได้ความรู้แต่ถ้าเราสามารถประยุกต์ใความรู้เหล่านั้นได้ แสดงว่า เราเข้าใจ ครับ!!!<br />....ความเข้าใจย่อมมีประโยชน์มากกว่าความรู้ครับ.....<br />สุดท้ายนี้ ขอให้กำลังใจนักศึกษาและนักวิจัยทุกท่านครับ...Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-23222705369190348642011-10-07T17:30:00.004+07:002011-11-15T11:50:55.668+07:00แหล่งเรียนรู้เรื่อง Waveletช่วงนี้ต้องเขียนแนวคิดและทฤษฎีต่างๆที่ต้องใช้สำหรับการทำงานวิจัย ทำให้ต้องค้นคว้าข้อมูลตามแหล่งต่างๆมากมาย ทั้งตำราและเว็บไซต์ต่างๆ ระหว่างทำการแสวงหาข้อมูลอยู่นั้น บังเอิญไปเจอแหล่งข้อมูลที่อธิบายเกี่ยวกับ Wavelet ได้อย่างชัดเจนและง่ายต่อการเข้าใจ (สำหรับผม) เลยอยากนำมาแบ่งปันกันครับ<br /><br /><a href="http://www.amara.com/IEEEwave/IEEEwavelet.html">http://www.amara.com/IEEEwave/IEEEwavelet.html</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-52951633207063574992011-08-30T12:08:00.003+07:002011-09-19T15:01:42.694+07:00หัวข้อวิจัย อะไรดี???มีเพื่อนๆหลายคนสอบถามว่า จะทำวิจัย(วิทยานิพนธ์)เรื่องอะไรดี? <br />ส่วนตัวผมแล้ว มักจะเริ่มจากเรื่องที่เราถนัด (พอจะทำได้หรือมีความสามารถที่จะทำได้) ก่อน แล้วค่อยขยายไปยังเรื่องอื่นๆ ปัญหาที่ตามมาคือ หลายๆคนมักถามต่อว่า แล้วเราถนัดอะไร? คำถามนี้ ผมคงตอบแทนไม่ได้ แต่ผมพอจะแนะนำได้ว่า งานวิจัยหรือการทำงานต่างๆนั้น ต้องประกอบด้วยความรู้ 2 ส่วนหลัก คือ 1) ความรู้และความชำนาญที่มีอยู่แล้ว และ 2) ความรู้และคำชำนาญที่จำเป็นต้องศึกษาเพิ่มเติมเพื่อให้งานบรรลุผลสำเร็จ ประเด็นหลักที่พบคือ หลายๆคน ไม่อยากจะหาความรู้และความชำนาญใหม่ๆ ที่เรายังไม่เคยเรียนรู้หรือไม่เคยทดลองทำมาก่อน ซึ่งเหตุผลที่มักได้ยินเสมอได้แก่ มันยาก ไม่เคยทำ หาคนสอนไม่ค่อยได้ ตนเองไม่น่าจะทำได้ ฯลฯ ซึ่งผมอยากจะบอกไว้เลยว่า <span style="font-weight:bold;">"กำแพงเมืองจีนจะเสร็จได้ ก็ต่อเมื่อ การก่ออิฐก้อนแรกเริ่มต้นขึ้น"</span> ดังนั้นไม่ว่าความรู้ใหม่หรือเครื่องมือใหม่ๆ ที่เราไม่รู้จักหรือไม่คุ้นเคย จำเป็นต้องอาศัยเวลาและความอดทนในการศึกษาและทดลองด้วยตนเอง ตรงนี้สำคัญมากๆครับ เพราะเพื่อนๆหลายคนจะพ่ายแพ้หรือล้มเลิกในขั้นนี้เสมอ ทำให้งานวิจัยไม่ประสบความสำเร็จ<br />ประเด็นถัดมาคือ "ความลึกซึ้งเท่าใดถึงจะเป็นหัวข้อวิทยานิพนธ์" ตรงนี้ ผมคงตอบไม่ได้ เพราะสถานศึกษาแต่ละแห่งก็มีปรัชญาที่แตกต่างกันออกไป (หลายมาตรฐานนั่นเอง ฮ่าๆๆๆ) แต่ผมอยากให้เพื่อนๆจำไว้ว่า งานของเราต้องมีคุณสมบัติที่สำคัญดังนี้ (อย่างน้อยต้องมีสักข้อ)<br />1. <span style="font-weight:bold;">ความใหม่ของเนื้อหา (First)</span> หรือ เป็นคนแรกที่ทำการศึกษาในประเด็นต่างๆ ซึ่งอาจรวมถึงความใหม่ในเรื่องของการประยุกต์ใช้เทคนิคหรือเครื่องมือใหม่ๆในการแก้ไขปัญหา (ไม่เคยมีใครทำมาก่อน) <br />2.<span style="font-weight:bold;"> ความดีที่สุด (Best) </span>หรือ การปรับปรุงเทคนิคหรือวิธีการเดิมเพื่อให้ได้ผลลัพธ์ที่ดียิ่งขึ้น เช่น การปรับปรุงแบบจำลองต่างๆเพื่อให้เหมาะสมกับเงื่อนไขเฉพาะหรือพื้นที่เฉพาะ<br />3.<span style="font-weight:bold;"> ความแตกต่าง (Difference)</span> กล่าวคือ ต้องไม่เหมือนหรือซ้ำกับงานของคนอื่นๆ เพราะถ้าเหมือนกัน ก็คือ การคัดลอก (ทั้งแบบตั้งใจและไม่ตั้งใจ) ในส่วนนี้อาจต้องอาศัย การอ่านบทความให้เยอะเข้าไว้ เพื่อจะได้เปรียบเทียบกับงานวิจัยของคนอื่นๆว่ามีความแตกต่างกันหรือไม่ แต่!!! งานของเพื่อนๆต้องไม่ใช่ การศึกษาด้วยวิธีการหรือเทคนิคเดียวกันแต่เปลี่ยนพื้นที่ศึกษานะครับ (ยกเว้นเราต้องการศึกษาเบื้องต้นก่อนแล้วค่อยปรับปรุงหรือพัฒนาวิธีการหรือแบบจำลองเพื่อให้เหมาะสมกับลักษณะเฉพาะของพื้นที่ศึกษา)<br />หวังว่า ความคิดเห็น จากคนที่ไม่ค่อยมีความรู้อย่างผมน่าจะช่วยเพื่อนๆในการหาหัวข้อวิจัยได้บ้างนะครับUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-69099568987987774512011-08-01T17:31:00.001+07:002011-08-01T17:33:44.707+07:00Resampling ภาพด้วย gdalwarpวันนี้ขอเสนอวิธีการ resampling ข้อมูลภาพเพื่อให้มีขนาดหรือจำนวนจุดภาพเท่าที่ต้องการ ตัวอย่างเช่น ภาพเดิมมีขนาด 300x300 จุดภาพ แต่ต้องการเพิ่มให้เป็น 1200x1200 จุดภาพ เรามาดูวิธีการกันเลยนะครับ<br />คำสั่งหรือโปรแกรมประยุกต์ที่ใช้คือ gdalwarp ส่วน option หรือ ทางเลือกที่จะใช้คือ -ts width height ดังนี้ครับ<br /><br />>>>gdalwarp -ts width height inputfile outputfile<br /><br />ตัวอย่างการใช้งานมีดังนี้ครับ<br /><br />>>>gdalwarp -ts 1200 1200 abc300.tif abc1200.tif<br /><br />ปล. หากต้องการระบุวิธี resampling ให้เพิ่มทางเลือก -r xxxx นะครับ เช่น -r bilinear, cubic, cubicspline หรือ lanczos. แต่ถ้าไม่ระบุโปรแกรมจะใช้วิธี nearest เป็นค่าเริ่มต้นครับUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-52440822562515331282011-07-30T15:04:00.007+07:002011-07-30T16:09:34.724+07:00แปลงระบบพิกัด แบบหลายจุด ด้วย cs2csวิธีการนี้ ผมได้รับการแนะนำจาก พี่ <a href="http://wmap.wordpress.com/">วิโรจน์</a> (เทพองค์หนึ่งในงาน GeoInformatics ที่ใช้ Free.Open Source Software - FOSS) เมื่อนานมาแล้ว วันนี้ขอบันทึกไว้กันลืม ดังนี้ครับ<div><a href="http://proj.maptools.org/man_cs2cs.html">CS2CS</a> นั้นเป็นโปรแกรมประยุกต์ตัวหนึ่งสำหรับการแปลงระบบพิกัดของค่าพิกัดแบบจุด (มีเฉพาะค่าพิกัดของแต่ละจุดเท่านั้น) นั่นหมายความว่า ข้อมูลต้องอยู่ในรูป คู่ของค่าพิกัด เช่น 525000 1800000 เป็นต้น</div><div>*** โปรแกรมประยุกต์นี้จะมีอยู่แล้วใน <a href="http://www.gdal.org/">GDAL </a>หรือที่ถูกรวมไว้แล้วใน <a href="http://fwtools.maptools.org/">FWTOOLS</a> ครับ ดังนั้นไม่จำเป็นต้องดาวน์โหลดเพิ่มเติมครับ***</div><div>เรามาดูตัวอย่างกันเลยนะครับ ตัวอย่างผมมีข้อมูลแบบอักขระ (Text file) ที่เมื่อเปิดด้วย Text Editor ทั่วไป เช่น Notepad หรือ Notepad++ แล้วจะมีหน้าตาดังนี้ ชื่อไฟล์ EN.txt</div><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG9GZzKeMfpgJC5ydZqYssH9ZcXasBzQ-tb3VAB4SDeV6oE8dXCT0g8og3PnYdV5E_cIsuIanUi420vB6o3j5Pn6920Rx3daWPSLZg_Nq07ULt4we4j9fQKqjAKHbIzPdprjnHN070vB0/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" /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><u>ตัวอย่างทางเลือก (Option) ที่น่าสนใจ</u></div><div>-E ใช้ในกรณีที่ต้องการนำค่าจากไฟล์นต้นฉบับหรือไฟล์นำเข้า (Input) ไปใส่ไว้ในไฟล์ผลลัพธ์ (Output) ด้วย</div><div>-f ใช้สำหรับกำหนดรูปแบบไฟล์ผลลัพธ์ เช่น ความละเอียด(ระดับจุดทศนิยม)ของผลลัพธ์ที่ต้องการ ตัวอย่างการใช้งานคือ -f "%.9f" จะได้ผลลัพธ์ทีี่มีจุดทศนิยมจำนวน 9 ตำแหน่ง เป็นต้น</div><div>-r ใช้สำหรับสลับค่าพิกัดขอไฟล์ต้นฉบับ จาก XY เป็น YX หรือ Lat, Long ให้เป็น Long, Lat</div><div>-s ใช้สำหรับสลับค่าพิกัดขอไฟล์ผลลัพธ์ จาก XY เป็น YX หรือ Lat, Long ให้เป็น Long, Lat</div><div>**** ตรงนี้น่าสนใจครับ เพื่อไม่ให้เกิดความสับสน ผมแนะนำทุกท่านเตรียมข้อมูลให้อยู่ในแบบ (Easting, Northing) สำหรับระบบพิกัดกริด UTM โดยไม่จำเป็นต้องระบุทางเลือก -r หรือ -s </div><div>ส่วนตัวอย่างการใช้งานมีดังนี้</div><div><br /></div><div>>>>cs2cs -E -f "%.9f" +init=epsg:32647 +to +init=epsg:4326 EN.txt</div><div><br /></div><div>ผลลัพธ์ที่ได้มีดังภาพ</div><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHklMaZqyfCOoBDGliGdzcPx4Bkwdj-FMsadV5PeofOW9pcI3LT9OgVnm8xECdQpiEQwzar2HUq8tNGeGyJ-9_twi3zteE1GvYJYnpJUYzUrZj2OvTxEhR8QD4ReSnezt5XepJmaeaC2I/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" /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>หรือถ้าต้องการแปลงผลลัพธ์ให้เป็นไฟล์อักขระ (Text file) ใหม่อีกไฟล์หนึ่งสามารถทำได้ดังนี้ครับ</div><div><br /></div><div>>>>cs2cs -E -f "%.9f" +init=epsg:32647 +to +init=epsg:4326 EN.txt <b>> LongLat.txt</b></div><div><br /></div><div>ส่วนการแปลงค่าระบบภูมิศาสตร์ให้เป็นระบบพิกัดกริด UTM นั้นแนะนำให้ใช้รูปแบบ (Long, Lat) ครับ</div><div><br /></div><div>เพื่อไม่ให้สับสนและอาจมีการระบุรูปแบบผิด ผมขอสรุปและแนะนำอีกที ดังนี้</div><div>ในกรณีที่ไม่ใช้ทางเลือก -r หรือ -s นั้น</div><div><ul><li>การแปลง UTM2Geog ถ้ารูปแบบไฟล์ต้นฉบับคือ (Easting, Northing) จะได้ผลลัพธ์คือรูปแบบ (Long, Lat)</li><li>ส่วนการแปลง Geog2UTM ถ้ารูปแบบไฟล์ต้นฉบับคือ (Long, Lat) จะได้ผลลัพธ์คือรูปแบบ (Easting, Northing)</li></ul></div><div><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-218693919055950292011-07-27T15:26:00.002+07:002013-01-29T10:08:30.654+07:00ความแตกต่างระหว่าง Objective และ Subjectiveไปอ่านเจอคำศัพท์ที่น่าสนใจ 2 คำคือ Objective และ Subjective ในบทความวิชาการและตำราหลายๆเล่ม แต่ผมก็ยังแยกความแตกต่างไม่ได้อย่างชัดเจนว่า สองคำนี้มีความแตกต่างกันอย่างไร วันนี้เลยต้องขอบันทึกความหมาย (ไม่ใช่การแปล) ที่พอจะสรุปได้จากการค้นคว้าดังนี้<br />
<div>
<br />
<div>
<b>Objective </b>แปลโดย ศัพท์บัญญัติ ราชบัณฑิตยสถาน นั้น มีหลายความหมายได้แก่ เชิงวัตถุวิสัย, วัตถุประสงค์ หรือ <b>ปรนัย </b>ส่วน</div>
<div>
<b>Subjective </b>นั้นแปลว่า ความรู้สึกแห่งตน, เชิงจิตวิสัย หรือ <b>อัตนัย</b></div>
<div>
<br /></div>
<div>
แค่เพียงความหมายก็น่าจะพอสรุปได้ว่า Subjective นั้นต้องเกี่ยวข้องกับความเป็นตัวตนหรือส่วนบุคคล (อัต-) นั่นหมายถึงบริบทของคำนี้ ไม่อาจสรุปหรือประเมินได้อย่างเที่ยงตรง (ไม่เสถียร) หรือได้คำตอบเหมือนเดิมทุกครั้งในทุกๆการวัด เนื่องจากขึ้นอยู่กับสถานการณ์ ความรู้ ความชำนาญหรือเกณฑ์ของแต่ละบุคคลที่ใช้ในการวัด ดังเช่น ตัวอย่างความหมายของ Objective data และ Subjective data ที่มักพบเสมอในเรื่อง การตัดสินใจแบบหลายเกณฑ์ (Multi-Criteria Decision)</div>
<div>
<br /></div>
</div>
<div>
ดังนั้น ผมอาจสรุปได้ว่า Objective นั้นมีความเป็นสากล จริงแท้ เที่ยงตรง มากกว่า Subjective ซึ่งเกี่ยวข้องกับความเป็นส่วนบุคคล ครับ</div>
<div>
<br /></div>
<div>
ปล. การแปลความหมายจำเป็นต้องคำนึงถึงบริบทของคำศัพท์ด้วยเสมอนะครับ</div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-2921358827821881589.post-13844815247381035102011-06-21T12:38:00.003+07:002011-06-21T13:41:24.073+07:00ความแตกต่างระหว่าง Numerical methods และ Numerical Analysisเป็นคำถามคาใจมานานมาก แต่ยังไม่ได้ค้นหาคำตอบอย่างจริงๆจังสักที ว่า "ความแตกต่างระหว่าง Numerical methods และ Numerical Analysis" คืออะไร วันนี้นึกครึ้มอะไรไม่รู้เลยเข้าห้องสมุดหาตำรามาเฉลยคำถามที่สงสัยมานาน...<br />จากการอ่านหนังสือ An Introduction to Numerical Methods and Analysis โดย James F. Epperson ผู้เขียนให้คำอธิบาย ความแตกต่าง คือ <span style="font-weight: bold;">วิธีการเชิงเลข (Numerical methods)</span> จะให้ความสำคัญการนำอัลกอริทึมไปทำให้เกิดผล (Implementation of algorithms) ซึ่งบางทีก็อาศัยทฤษฏีทางคณิตศาสตร์ในการอธิบายวิธีการทำงาน ส่วน <span style="font-weight: bold;">การวิเคราะห์เชิงเลข (Numerical analysis)</span> นั้นจะให้ความสำคัญกับทฤษฏีทางคณิตศาสตร์ (Mathematical theory) ผู้เขียนคิดว่า น่าจะดีกว่า ถ้าเราศึกษาทั้งสองอย่างไปพร้อมๆกัน<br />ซึ่งผมก็เห็นด้วยอย่างยิ่ง เพราะ การนำวิธีการและการวิเคราะห์เชิงเลขไปทำให้เกิดผล (Implementation) ในงานภูมิสารสนเทศ นั้น นอกจากความต้องการ <span style="font-weight: bold;">ความรู้</span> ที่ใช้ในการแก้ไขปัญหาแล้ว ยังต้องอาศัย <span style="font-weight: bold;">ความเข้าใจ</span> เกี่ยวกับเทคนิคหรือวิธีการที่นำมาใช้ด้วย เนื่องจากปัญหาบางอย่าง ความรู้ เพียงอย่างเดียวไม่สามารถแก้ไขได้ครับ ต้องอาศัย ความเข้าใจ ด้วย....<br />ตัวอย่าง นะครับ<br />ทำไมเราต้องรับสัญญาณดาวเทียม อย่างน้อย 3 ดวง เพื่อหาตำแหน่งของเรา (ด้วยเครื่องรับสัญญาณ GPS) หรือ ทำไมจุดควบคุมสำหรับการอ้างอิงตำแหน่งโลก ถึงไม่สามารถวางตัวอยู่บนแนวเส้นตรงเดียวกัน เป็นต้นUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-23280659979487502392011-05-30T14:30:00.003+07:002011-05-30T15:01:45.995+07:00การกรองความถี่สูงและความถี่ต่ำ (Hi & Low pass filtering)สงสัยอายุที่เพิ่มขึ้นจะมีส่วนทำให้ความจำลดลง เพราะลืมทุกทีเมื่อต้องมาทำงานกับตัวกรอง (Filter) ทั้งสองแบบนี้ วันนี้เลยขอบันทึกความเข้าใจไว้กันลืม!!!<br /><br /><span style="font-weight: bold;">การกรองความถี่สูง (Hi pass filter)<br /></span><span>เป</span><span>็นการกรองสัญญานที่ยอมให้ข้อมูลความถี่สูงผ่านได้ ตัวอย่างการใช้งานคือ การเพิ่มความคมชัด (Sharpening)<br /><br /><span style="font-weight: bold;">การกรองความถี่ต่ำ (Low pass filter)</span><br /></span><span>เป</span><span>็นการกรองสัญญานที่ยอมให้ข้อมูลความถี่ต่ำผ่านได้ </span><span>ตัวอย่างการใช้งานคือ การทำเบลอ (Blurring)<br /><br />ส่วนรายละเอียดของการใช้ตัวกรองในการทำ PanSharpening ไว้มีโอกาสจะเข้ามาเพิ่มภายหลัง<br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-8056281842694942522011-03-23T11:41:00.002+07:002011-03-23T11:44:53.531+07:00gdal_merge ใน FWtools 2.4.7 ใช้งานไม่ได้ผมลองใช้ gdal_merge ใน FWtools เวอร์ชัน 2.4.7 แล้วปรากฏว่า ไม่สามารถทำงานได้อย่างถูกต้อง กล่าวคือ โปรแกรมจะต่อชนภาพให้ แต่ภาพนั้นไม่มีค่า Digital Number (DN) วิธีแก้ไขง่ายที่สุดที่คิดได้คือ กลับไปใช้งานเวอร์ชัน 2.4.6 ปรากฏว่า Work!!! ใช้งานได้ <br />จังอยากแนะนำทุกท่านที่อาจเจอปัญหาเดียวกับผม...Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-68003025211099829772011-02-24T16:43:00.002+07:002011-02-24T16:47:47.627+07:00PostGIS: สร้าางตารางข้อมูลใหม่จาก ข้อมูลที่สืบค้นบางครั้งเราต้องการสร้างตารางข้อมูลใหม่ (ชั้นข้อมูลเชิงตำแหน่งใหม่) ในฐานข้อมูลเชิงตำแหน่ง (Spatial Database) ตัวอย่างเช่น ชั้นข้อมูลเส้นทางคมนาคมถนน ซึ่งในฐานข้อมูลนั้นมีข้อมูลอรรถาธิบาย (Attribute) มากมายเกินความจำเป็น อาทิ ชื่อถนน ความกว้างช่องจราจร ความยาวของส่วนย่อย ประเภทพื้นผิว สภาพถนน โดยที่เราต้องการชั้นข้อมูลใหม่ที่มีเพียงแค่ชื่อถนน (road name: rdname) และพิกัดของแต่ละจุดเท่านั้น (geometry: the_geom) เราจะทำอย่างไร???<br />หลังจากศึกษาในคู่มือของ Postgis พบว่าโปรแกรมได้เตรียมฟังก์ชัน create table as สำหรับการตอบวัตถุประสงค์ในครั้งนี้ เรามาดูตัวอย่างการใช้งานกันเลยนะครับ<br /><br />SQL syntax: create table <span style="font-weight:bold;">table_name</span> as select <span style="font-weight:bold;">*** </span>from <span style="font-weight:bold;">*** </span>where <span style="font-weight:bold;">***</span><br /><br />ตัวอย่าง<br />create table <span style="font-weight:bold;">road_name</span> as<br />select <span style="font-weight:bold;">rdname, the_geom</span> from <span style="font-weight:bold;">road</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-41156622848407948712011-02-09T16:01:00.009+07:002011-02-09T17:24:24.113+07:00แก้สมการ Overdetermined เพียงกระพริบตา (ปี๊บๆ)Ex: จากตัวอย่างหนังสือเรื่อง GIS & MCDA ของ จาเซ็ค หน้าที่ 211 เราต้องการหาค่าแลมดา (Lamda: L) โดยมีสมการเงื่อนไขดังนี้<br />L1 = 0.5(L2) + 0.3(L3)<br />L2 = 0.7(L1) + 0.7(L2)<br />L1 + L2 + L3 = 1<br />ปรากฏว่าในหนังสือได้คำตอบคือ L1 = 0.4, L2 = 0.3 และ L3 = 0.3 จะพบว่าค่าที่ได้นั้นใช้ได้ในบางเงื่อนไขเท่านั้น (คำตอบมีได้หลายคำตอบหรือคำตอบนั้นไม่ใช่ Unique solution) ทำให้ผลลัพธ์อาจผิดพลาดได้ ........... แล้วเราจะทำอย่างไีีร<br />ก่อนอื่นเรามาดูเงื่อนไขหรือข้อมูลที่เรามีก่อนดังนี้ครับ<br />1. เรามีตัวไม่ทราบค่า (Unknown) 3 ตัวคือค่าแลมดา L1, L2, L3<br />2. เรามีสมการอย่างน้่อย 3 สมการ (ตามตัวอย่างในหนังสือ)<br />3. จากการศึกษาพบว่า ในหนังสือนั้นขาดการนำเอาเงื่อนไขบางอย่างมาสร้างสมการคือ L3 = 0.3(L1) + 0.5(L2)<br />4. เมื่อเรามีสมการเพิ่มขึ้นจะพบว่า เงื่อนไขของระบบสมการนี้จะเข้าสู่เงื่อนไขของ Overdetermined system (จำนวนสมการมากกว่าจำนวนตัวไม่ทราบค่า)<br />คราวนี้เรามาดูวิธีแก้ระบบสมการเชิงเส้นที่ Overdetermined ด้วยเมทริกซ์ดังตัวอย่างดังนี้<br /><br /><span style="font-weight:bold;">Condition Equation:</span><br />L1 = 0.5(L2) + 0.3(L3)<br />L2 = 0.7(L1) + 0.7(L2)<br />L3 = 0.3(L1) + 0.5(L2)<br />L1 + L2 + L3 = 1<br />A = [-1 .5 .3; .7 -1 .7; .3 .5 -1; 1 1 1]<br />X = [a; b; c]<br />L = [0; 0; 0; 1]<br /><br />V = AX+L<br />N = transpose (A)*A<br />U = transpose (A)*L<br /><span style="font-weight:bold;">Normal Equation:</span><br />transpose (X)* transpose (N) + transpose (U) = 0<br />หรือ N*X + U = 0 หรือ N*X = -U<br />X = - inv(N) * U<br /><br />ส่วนวิธีการคำนวณด้วย Matlab มีดังนี้<br />a = [-1 .5 .3; .7 -1 .7; .3 .5 -1; 1 1 1]<br />l = [0; 0; 0; 1]<br />x = a\l<br />คำตอบที่ได้คือ <br />x = [0.2941; 0.4118; 0.2941] หรือ<br /> L1 = 0.2941<br /> L2 = 0.4118<br /> L3 = 0.2941Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-50427358525768928052011-01-29T18:44:00.003+07:002011-01-30T21:08:56.794+07:00ตัวอย่างการใช้ While ด้วย Pythonอ่านประวัติของ Archimedes อยู่ดีๆ ดันโยงไปที่ โยฮันน์ คาร์ล ฟรีดริช เกาส์ ซะงั้น เลยอดไม่ได้ที่จะทึ่งถึงความอัจฉริยะของ เกาส์ เมื่อมีอายุได้เพียง 7 ขวบ เหตุการณ์เกิดขึ้นเมื่อคุณครูได้สั่งให้นักเรียนบวกเลขตั้งแต่ 1 ถึง 100 ชั่่วขณะเพียงแค่หันหลัง เด็กชายเกาส์ก็ตอบขึ้นมาว่า 5,050 เมื่อถูกถามว่าได้คำตอบนั้นมาได้อย่างไร เด็กชายเกาส์เขียนอธิบายดังนี้<br /><br />100+99+98+...+1 = 101+101+101+...+101 = 101×50 = 5050 ดังนั้นคำตอบคือ 5050<br /><br />เป็นไงละครับ....ไม่ใ่ช่อัจริยะคิดไม่ได้นะเนี่ย<br />อ้างอิงจาก <a href="http://th.wikipedia.org/wiki/คาร์ล_ฟรีดริช_เกาส์">http://th.wikipedia.org/wiki/คาร์ล_ฟรีดริช_เกาส์</a><br /><br />เรามาทดลองดูว่าการบวกเลขตั้งแต่ 1-100 นั้นหากเขียนด้วยภาษา Python โดยใช้ While loop นั้นต้องเขียนอย่างไร<br />############################<br />i = 1<br />total = 0<br />while (i<=100):<br /> total = total + i;<br /> i = i + 1;<br /> print total<br />############################Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-21839475748789439752011-01-19T23:17:00.002+07:002011-01-19T23:25:08.846+07:00Pansharpening: Brovey transformation<!--[if gte mso 9]><xml> <o:officedocumentsettings> <o:relyonvml/> <o:allowpng/> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-US</w:LidThemeOther> <w:lidthemeasian>X-NONE</w:LidThemeAsian> <w:lidthemecomplexscript>TH</w:LidThemeComplexScript> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:applybreakingrules/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* 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;} </style> <![endif]--><span style="line-height: 115%;font-family:";font-size:100%;" lang="TH" >การแปลงแบบ </span><span style="line-height: 115%;font-family:";font-size:14pt;" ><span style="font-size:100%;">Brovey </span><span lang="TH" style="font-size:100%;">นั้นจะอาศัยค่าความสว่าง (ฺBrightness Value - BV) ของข้อมูลภาพแบบหลายช่วงคลื่น (</span><span style="font-size:100%;">Multispectral image</span><span lang="TH" style="font-size:100%;">) และค่าความสว่างของข้อมูลภาพแบบช่วงคลื่นเดียว</span><span style="font-size:100%;"> (Panchromatic image) </span><span lang="TH" style="font-size:100%;">มาทำการคำนวณหาค่าความสว่างของข้อมูลภาพที่ผ่านการหลอมรวม </span><span style="font-size:100%;">(Fused image) ดังภาพที่ 1 ดังนี้<br /></span></span><div style="text-align: center;"><span style="line-height: 115%;font-family:";font-size:14pt;" ><span style="font-size:100%;"><span style="line-height: 115%;font-family:";font-size:14pt;" ><span style="font-size:100%;"><span style="line-height: 115%;font-family:";font-size:14pt;" ><span style="font-size:100%;"><span style="line-height: 115%;font-family:";font-size:14pt;" ><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcDcIzG885uCH7qf1nxNOGgYOZjy4Bw2TnVf1RUx3nFYoH7J6YFP72yDfMNehtJh9geVqORG-BpJjU-rd7MnoD4RZsUs_2Bn87lkBJOeNR7ZvzOBvFpaqosDAxihSnXRD3Cg9-rkDQpJw/s1600/Eq-Brovey.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 217px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcDcIzG885uCH7qf1nxNOGgYOZjy4Bw2TnVf1RUx3nFYoH7J6YFP72yDfMNehtJh9geVqORG-BpJjU-rd7MnoD4RZsUs_2Bn87lkBJOeNR7ZvzOBvFpaqosDAxihSnXRD3Cg9-rkDQpJw/s400/Eq-Brovey.jpg" alt="" id="BLOGGER_PHOTO_ID_5563933342121318482" border="0" /></a></span></span></span></span></span></span>ภาพที่ 1 สมการการแปลงแบบ Brovey</span></span><br /></div><span style="line-height: 115%;font-family:";font-size:14pt;" ><span style="font-size:100%;"><br /><br /><br /><br /><br /></span></span><img src="file:///C:/Users/hp/AppData/Local/Temp/moz-screenshot.png" alt="" />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2921358827821881589.post-35554602655890665182011-01-05T15:23:00.003+07:002011-01-05T19:21:35.069+07:00Factror/Variable/Parameterความแตกต่างของ Factror/Variable/Parameter (ปัจจัย/ตัวแปร/พารามิเตอร์) จากการค้นคว้าเบื้องต้นพบว่า ทั้ง 3 คำ นี้มีความเกี่ยวเนื่องกันอยู่โดยขอยกตัวอย่างเพื่อความเข้าใจดังนี้<br />โจทย์คือ ผมต้องการหาพื้นที่เหมาะสมสำหรับการเพาะปลูกข้าว<br />ปัจจัย (Factor) ที่ผมใช้พิจารณาสำหรับการหาพื้นที่เหมาะสมคือ <span style="font-weight: bold;">ข้อมูลดิน</span><br />ตัวแปร (Variable) ที่ผมสนใจคือ <span style="font-weight: bold;">แร่ธาตุในดิน</span> เช่น ไนโตรเจน (N) โปแตสเซียม (P) และฟอสฟอรัส (K)<br />พารามิเตอร์ (Parameter) คือ <span style="font-weight: bold;">ปริมาณของแร่ในดิน</span>Unknownnoreply@blogger.com0