VBA on Visio

กันยายน 29, 2009

_____ผมเองก็เป็นอีกคนที่ชอบใช้ Visio ในการเขียน Flowchart หรือ Diagram อาจจะเป็นเพราะคุ้นเคยหรือไงไม่ทราบ ใช้มากี่ปีก็ยังไม่ได้เปลี่ยนซักที วันนี้ไปเจอ code ที่เค้าใช้เขียน VBA ใน VISIO เพื่อแปลง Er-diagram ไปเป็น Microsoft Access 2003 Database Schema ขอเอามาแปะไว้เพื่อว่าท่านใดที่ใช้ Visio และอยากลองเอาไปใช้งานได้หรือจะ apply ไปใช้กับ DBA ตัวอื่น เช่น SQLSERVER หรือ POSTGRESQL ก็ได้

Option Explicit

Const newDBPath     As String = "C:\newDB.mdb"

Public Sub New_Db1()

Dim db As DAO.Database

'Visio Modelling Engine
Static vme As New VisioModelingEngine
Dim models As IEnumIVMEModels
Dim model As IVMEModel
Dim elements As IEnumIVMEModelElements
Dim dwgObj As IVMEModelElement

'Tables
Dim objTblDef As IVMEEntity
Dim objTblAttribs As IEnumIVMEAttributes
Dim objFldDef As IVMEAttribute
Dim objDataType As IVMEDataType
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim strName As String

'Indexes
Dim objIndexes As IEnumIVMEEntityAnnotations
Dim objIndex As IVMEEntityAnnotation
Dim objIndexFlds As IEnumIVMEAttributes
Dim objIndexFld As IVMEAttribute
Dim ind As DAO.Index

'Relationships
Dim objRltshp As IVMEBinaryRelationship
Dim objIndexPriFlds As IEnumIVMEAttributes
Dim objIndexPriFld As IVMEAttribute
Dim objIndexFrgFlds As IEnumIVMEAttributes
Dim objIndexFrgFld As IVMEAttribute
Dim rel As DAO.Relation

'Delete existing Database
On Error Resume Next
Kill newDBPath
On Error GoTo 0

'Create new DAO database
Set db = CreateDatabase(newDBPath, dbLangGeneral)

'Set up refernces to entities ie tables and relationships in the visio
modelling engine
Set models = vme.models
Set model = models.Next
Set elements = model.elements
Set dwgObj = elements.Next

On Error GoTo TblErr

'Add tables and indexes
Do While Not dwgObj Is Nothing

'Have we got a table definition?
If dwgObj.Type = eVMEKindEREntity Then

'Add Tables

'Set a refernce to the table definition
Set objTblDef = dwgObj

'Create DAO Table Def
Set tdf = db.CreateTableDef(objTblDef.PhysicalName)

'Set a refernce to the columns category of the table definition
Set objTblAttribs = objTblDef.Attributes

'Select first row of field data in the columns category
Set objFldDef = objTblAttribs.Next

Do While Not objFldDef Is Nothing

'Set a reference to the fields datatype
Set objDataType = objFldDef.DataType

'Get the name of the field
strName = objFldDef.PhysicalName

'Get the name of the fields datatype
Select Case Left(UCase(objDataType.PhysicalName), 5)

Case "TEXT(", "CHAR(", "VARCH"
Dim length As Integer
length = Mid(objDataType.PhysicalName,
InStr(objDataType.PhysicalName, "(") + 1, (Len(objDataType.PhysicalName) -
InStr(objDataType.PhysicalName, "(") - 1))
If length > 255 Then
Set fld = tdf.CreateField(strName, dbMemo)
Else
Set fld = tdf.CreateField(strName, dbText, length)
End If

Case "COUNT" 'Autonumber fields
Set fld = tdf.CreateField(strName, dbLong)
fld.Attributes = dbAutoIncrField

'Create DAO fields as required
Case "LONG": Set fld = tdf.CreateField(strName, dbLong)
Case "DOUBL", "DECIM", "NUMER": Set fld =
tdf.CreateField(strName, dbDouble)
Case "INTEG", "SMALL", "SHORT": Set fld =
tdf.CreateField(strName, dbInteger)
Case "SINGL", "REAL": Set fld = tdf.CreateField(strName,
dbSingle)
Case "DATET": Set fld = tdf.CreateField(strName, dbDate)
Case "BIT": Set fld = tdf.CreateField(strName, dbBoolean)
Case "BYTE": Set fld = tdf.CreateField(strName, dbByte)
Case "CURRE": Set fld = tdf.CreateField(strName,
dbCurrency)
Case "FLOAT": Set fld = tdf.CreateField(strName, dbFloat)
Case "GUID": Set fld = tdf.CreateField(strName, dbGUID)
Case "LONGB": Set fld = tdf.CreateField(strName,
dbLongBinary)
Case "LONGT", "LONGC": Set fld =
tdf.CreateField(strName, dbMemo)
Case "BINAR", "VARBI"
length = Mid(objDataType.PhysicalName,
InStr(objDataType.PhysicalName, "(") + 1, (Len(objDataType.PhysicalName) -
InStr(objDataType.PhysicalName, "(") - 1))
Set fld = tdf.CreateField(strName, dbBinary, length)
Case Else: length = 1 / 0 'Stop code to enable debug

End Select

'Set field attributes
If objFldDef.AllowNulls = False Then
fld.Required = True
End If

'Save field in DAO table def
tdf.Fields.Append fld

'Select next field in the table definition
Set objFldDef = objTblAttribs.Next

Loop

'Save the new table.
db.TableDefs.Append tdf

'Add Indexes

On Error GoTo IndErr

'Select the indexes in the table definition
Set objIndexes = objTblDef.EntityAnnotations

'Select the first Index in the table definition
Set objIndex = objIndexes.Next

Do While Not objIndex Is Nothing

'Create the Index in the database
Set ind = tdf.CreateIndex(objIndex.PhysicalName)

'Select the first field of the Index Definition
Set objIndexFlds = objIndex.Attributes
Set objIndexFld = objIndexFlds.Next

Do While Not objIndexFld Is Nothing

'Add field to index in database
ind.Fields.Append
ind.CreateField(objIndexFld.PhysicalName)

'Select the next field in the index definition
Set objIndexFld = objIndexFlds.Next

Loop

'Primary Index
If objIndex.kind = eVMEEREntityAnnotationPrimary Then
ind.Primary = True
End If

'Unique Index
If objIndex.kind = eVMEEREntityAnnotationAlternate Then
ind.Unique = True
End If

'Add index to database
tdf.Indexes.Append ind

'Select the next index in the data model
Set objIndex = objIndexes.Next

Loop

End If

Set dwgObj = elements.Next

Loop

'End first pass, Set up for the second pass through the model
On Error GoTo RelErr

Set elements = model.elements
Set dwgObj = elements.Next

Do While Not dwgObj Is Nothing

'Have we got a relationship?
If dwgObj.Type = eVMEKindERRelationship Then

'Add  relationships

Set objRltshp = dwgObj

'Create Relationship
Set rel = db.CreateRelation(objRltshp.PhysicalName)

'Define its properties.
With rel

'Specify the primary table. (The child table in VME)
.Table = objRltshp.SecondEntity.PhysicalName

'Specify the related / foreign table. (The parent table in
VME)
.ForeignTable = objRltshp.FirstEntity.PhysicalName

'Specify attributes for cascading updates and deletes.
If objRltshp.UpdateRule = eVMERIRuleCascade Then
.Attributes = dbRelationUpdateCascade
End If

If objRltshp.DeleteRule = eVMERIRuleCascade Then
.Attributes = dbRelationDeleteCascade
End If

'Add the fields to the relationship

'Read Primary table fields
Set objIndexPriFlds = objRltshp.SecondAttributes
Set objIndexPriFld = objIndexPriFlds.Next

'Read Foreign table fields
Set objIndexFrgFlds = objRltshp.FirstAttributes
Set objIndexFrgFld = objIndexFrgFlds.Next

Do While Not objIndexPriFld Is Nothing

'Field name in primary table.
Set fld = .CreateField(objIndexPriFld.PhysicalName)

'Field name in related table.
fld.ForeignName = objIndexFrgFld.PhysicalName

'Append the fields to the relationship
.Fields.Append fld

'Repeat for other fields if a multi-field relation.
Set objIndexPriFld = objIndexPriFlds.Next
Set objIndexFrgFld = objIndexFrgFlds.Next

Loop

End With

'Save the newly defined relation to the Relations collection.
db.Relations.Append rel

End If

Set dwgObj = elements.Next

Loop

Set db = Nothing

Exit Sub

TblErr:
Debug.Print "Tbl Err"
Debug.Print " "
Resume Next

IndErr:
Debug.Print objTblDef.PhysicalName, objIndex.PhysicalName,
Err.Description, "Idx Err"
Debug.Print " "
Resume Next

RelErr:
Debug.Print objRltshp.SecondEntity.PhysicalName,
objRltshp.FirstEntity.PhysicalName, Err.Description, "Rel Err"
Debug.Print " "
Resume Next

End Sub

อ้างอิงจาก
http://www.eggheadcafe.com/software/aspnet/32121825/forward-engineer-visio-er.aspx

Photogrammetric Week 2009_

กันยายน 29, 2009

_____งาน Photogrammetric Week 2009 เพิ่งผ่านไปได้ไม่นาน เมื่อสัปดาห์ก่อนก็มีการเปิดให้ดาวน์โหลด paper ที่นำเสนอในงานได้แล้ว โดยข่าวการเปิดให้ดาวน์โหลดค่อนข้างๆเงียบๆไม่แน่ใจว่าจะเก็บไว้จำหน่ายหรือไม่  พอดีผมไปทราบจากฝรั่งใจดีที่รู้จักกันทาง mail คนหนึ่ง แกแจ้ง url มาให้ทราบ งานนี้หลังจากบอกพี่น้องที่รู้จักกันแล้ว เห็นว่าหลายๆบทความน่าจะมีประโยชน์ต่อคนทำงานด้านนี้ที่จะได้เรียนรู้เทคโนโลยีใหม่ๆ ในบ้านเราซึ่งเทคโนโลยีด้านนี้บ้านเราก็ไม่ธรรมดา เรามีโปรเจคใหญ่ทาง Digital Photogrametric และมีการใช้ LIDAR  เลยนำ url มาฝากกันแวะเข้าไปดาวน์โหลดได้ที่

http://www.ifp.uni-stuttgart.de/publications/phowo09/phowo09.en.htm

**ปล. ได้รับข่าวจากท่านอาจารย์ ไพศาล ว่าหนึ่งใน prof. ที่พูดในงาน คุณ George Vosselman จะแวะเวียนมาบรรยายที่เมืองไทย ยังไงถ้าได้รับหมายกำหนดการที่แน่นอนจะแจ้งให้ทราบอีกทีครับ

Fritsch09_klein


Web Cam Sensor

กันยายน 27, 2009

____ปัจจุบัน webcam กลายเป็นอุปกรณ์หนึ่งที่ถูกนำมาใช้ในการติดต่อสื่อสานผ่านทางอินเตอร์เน็ต เรียกได้ว่าถ้าซื้อโน๊ตบุ๊คเครื่องรุ่นใหม่แถบทั้งนั้นจะติด webcam มาให้เราได้ใช้ chat กับเพื่อนผ่านโปรแกรมต่างๆเช่น MSN วันนี้ผมมีสองตัวอย่างเกี่ยวกับการนำเอา webcam มาพัฒนาต่อยอดเทคโนโลยีจนกลายมาเป็นผลิตภัณฑ์และบริการ

____ตัวแรกโดนใจผมสุดๆคงเป็น Bandai’s NetTansor เจ้า wifi webcam robot ความเท่ห์คือสามารถควบคุมการบังคับได้ และสามารถตรวจจับสิ่งกีดขวางข้างหน้าด้วย sensor บนตัวหุ่นยนต์ ข้อมูลภาพก็สามารถส่งผ่านเครือข่ายไร้สายมายังศูนย์ควบคุมใกล้ๆได้ หุ่นยนต์ตัวนี้ขนาดเล็กไม่ใหญ่มากไปเคลื่อนที่ด้วยล้อ ผมว่าเจ้าตัวนี้สามารถทำหน้าที่เป็นยามลาดตระเวนรอบๆห้องได้

_____อันที่สองเป็น service ตัวนี้ไปเจอจาก web manager: CBIZ เป็นระบบบริการ แปลง webcam ของเราให้กลายเป็นกล้องวงจรปิด โดยเราสามารถสมัครเข้าไปใช้งานที่ HighlightCam ซึ่งข้อดีคือ application เป็น flash vdo ไม่ต้องติดตั้งโปรแกรม HighlightCam มีฟีเจอร์การตรวจจับการเปลี่ยนแปลงของภาพ กรณีที่มีการเปลี่ยนแปลงระบบจะแจ้งเตือนเราผ่านทาง email ครับ แวะเข้าไปใช้งานได้ที่ http://highlightcam.com/

3

______วันอาทิตย์นี้เลยลองทำ application เล่นคือ  sensor web snapshot ผมใช้ python ไป control webcam ผ่านทาง videocapture และ PIL และส่งข้อมูลพร้อม infomation เข้าไปเก็บบน server จากนั้นก็เอา restful ไปครอบเพื่อความง่ายและเร็วในการเข้าถึงจาก application ตัว webcam ผมใช้ webcam Pro 9000 ของพี่ภาณุ

______ตัว application อาจะยังไม่เทพนักเพราะว่าทำเอาสนุกๆอนาคตจะเอา SOS Adaptor ไปครอบให้มัน feed ข้อมูลเข้าระบบและใช้ OpenCV ทำ image detection ตั้งใจว่าจะลองเอาไปใช้กับพวกงาน landslide โดย set พื้นที่ศึกษาเป็นจอมปลวกหลังบ้าน ได้ผลประการณ์ใดจะเอามาบอกครับ

4

อ้างอิงจาก

http://www.engadget.com/2006/10/19/bandais-nettansor-the-wifi-webcam-on-wheels/

http://manager.co.th/CBiZReview/ViewNews.aspx?NewsID=9520000112467


Free Essays on Geography and GIS

กันยายน 27, 2009

____Free Essays ทางด้าน GIS ของ ESRI ปี 2009 เปิดให้ดาวน์โหลดมาอ่านกันแล้วครับ โดยจัดทำและเขียนจากผู้เชียวชาญหลายคนในด้าน GIS ข้อดีคือตัวอย่างของการนำ GIS ไปใช้อ่านแล้วจะได้เปิดมุมมองให้ก้าวขึ้น ชุดนี้เป็นการรวมบทความที่อยู่ใน Arcnew มาไว้ในเล่มตัวอย่างหัวข้อดังนี้

* “GIS: Designing Our Future” by Jack Dangermond
* “Implementing Geographic Information Technologies Ethically” by Harlan J. Onsrud
* “GIScience for Human Rights” by Doug Richardson
* “Transport 2.0: Meeting Grand Challenges with GIScience” by Harvey J. Miller
* “Geography Education and GIS Professional Development” by Doug Richardson
* “Changing the Face of Geography: GIS and the IGU” by Roger F. Tomlinson
* “Process Models and Next-Generation Geographic Information Technology” by Paul M. Torrens
* “Geographic Literacy in U.S. by 2025″ by Daniel C. Edelson
* “Geography, GIS, and Mental Health” by Doug Richardson
* “The National Geospatial Advisory Committee: An Action Agenda” by Anne Hale Miglarese
* “Global Dialogues: GIScience and Sustainable Development in Africa” by Doug Richardson
* “Get Involved with Geo-Education Reform” by Daniel C. Edelson

____ท่านที่สนใจดาวน์โหลดได้ที่ http://www.esri.com/library/bestpractices/essays-on-geography-gis-vol2.pdf

123


ASM

กันยายน 27, 2009

____เวลาที่เป็นวันอาทิตย์คนทำงานมักจะไม่อยากให้ถึงวันจันทร์เร็วๆ ผมก็เป็นอีกคนที่คิดเช่นนั้น ไม่ใช่ไม่อยากทำงานนะ แต่ไม่อยากเจอรถติดอยากย้าย office ไปตั้งไว้ที่เขาใหญ่ มีวิวสวยๆ อากาศดีๆ ไม่ต้องรีบร้อน ที่สำคัญต้องมีอินเตอร์เน็ตความเร็วสูง อ้าปากค้างมานานหลายปี 3G ก็ยังไม่คลอดมาให้ใช้ ผมว่าอาจจะรอเปิดบริการพร้อมหลินปิงอายุ 5 ขวบก็เป็นได้ บรรยากาศดีมีผลอย่างมากต่อสมอง โดยเฉพาะการคิด รวมไปถึงสุขภาพ ยิ่งตอนนี้สุขภาพผมไม่ค่อยดีนักอากาศดีๆน่าจะช่วยให้ผมมีชีวิตที่มีความสุขก็เป็นได้

_____จั่วหัวว่า ASM ไม่ใช้ว่าจะเขียนเรื่องเครือข่ายโทรศัพท์แต่อย่างไร จริงๆแล้วจะเขียนเรื่องเกี่ยวกับ Geoinfomatic ในภูมิภาค Asia จึงขอเขียนถึงกลุ่มหรือสมาพันธ์ที่ร่วมกันตั้ง e magazine ชื่อว่า ASM(Asian Surveying &Mapping) โดยเป็น web portal ที่รวมเนื้อหา ข่าวคราว กิจกรรมและเหตุการณ์ที่เกี่ยวข้องกับ GIS RS และ GNSS ความน่าสนใจก็คือมันเป็นการย่อยข่างระดับภูมิภาค ทำให้เราได้ทราบถึงเรื่องราวหรือข่าวเกี่ยวกับการพัฒนาองค์ความรู้ หรือเทคโนโลยีด้านนี้ของประเทศในแถบเอเซีย แต่เท่าที่ดูข่าวส่วนมากนักไปทางขายของ เทคโนโลยีส่วนมาจะเป็นการ showcase ของบริษัทหรือผลิตภัณฑ์ มีเรื่องของเทคนิคและความรู้นิดหน่อย ที่พอจะอ่านได้สนุกหน่อยเป็นเรื่องของการ implement  เทคโนโลยี Geoinfomatic ในประเทศต่างๆ อ่านแล้วรู้เลยว่าบ้านเรายังห่างจากจีน อินเดีย ญี่ปุ่น สิงคโปรหลายโข ไม่ว่ากันเข้าใจได้เพราะประเทศไทยยังมัวสนุกกับการเล่นกีฬาสีกันอยู่ ท่านที่สนใจแวะไปอ่านและสมัครเป็นสมาชิกได้ที่ http://www.asmmag.com/

_____ไหนๆก็เขียนถึงข่าวด้าน Asian แล้วขอ update ข่าวประเทศเพื่อนบ้านที่เป็นคู่แข่งของเราเช่น เวียดนามสักหน่อย เวียดนามกำลังจะปล่อยดาวเทียม RS ของตัวเองดวงแรกในปี 2010 ที่สำคัญคือทำเอง รายละเอียดผมยังไม่ทราบมากนักคราวๆก็เป็น high-resolution โดยใช้ความร่วมมือ ทางเทคโนโลยีกับทาง Japan Aerospace Exploration Agency ชื่อดาวเทียมนี้คือ Pico-Dragon เป็นดาวเทียมขนาดเล็กขนาด 10×10×10cm น้ำหนัก 2 kg อายุการใช้งานประมาณ 6 เดือน ประโยชน์ใช้ในงานพยากรณ์อากาศ การติดตามการเปลี่ยนแปลงของทรัพยากร แต่ที่พี่เวียดจะเน้นสุดๆคือการได้ใช้องค์ความรู้ในการพัฒนาดาวเทียมเอง ซึ่งคาดว่าเมื่อปล่อยดวงนี้แล้ว ก็จะมีโปรเจคสองที่พัฒนาขยาย ขนาดของดาวเทียมต่อไป

อ้างอิงมาจาก

http://www.lookatvietnam.com/2009/09/vietnam-about-to-launch-super-small-satellite.html


KML Again>>

กันยายน 26, 2009

______ต้องยอมรับว่า Google เป็นอีกหนึ่งผู้เล่นที่เข้ามามีบทบาทมากในวงการ gis ของโลกโดยฝรั่งนับการเริ่มต้นเข้ามาในงานด้าน Geoinfomatic ของ Google ตั้งแต่ google ไปซื้อ keyhole และปล่อยโปรแกรม Google Earth มาให้ผู้ใช้ได้ใช้งาน ซึ่งในตอนนั้นก็เป็นการเปิดประสบการใหม่ๆของการเผยแพร่ข้อมูลเชิงพื้นที่ โดยเฉพาะภาพถ่ายดาวเทียมรายละเอียดสูงทำให้หลายคนได้มีโอกาสมองเห็นหลังคาบ้านตัวเองในมุมมองเดียวกับนกและเทวดา เป็นที่ประทับใจกันเป็นอย่างมาก มาถึงวันนี้ Google ก็ยังไม่หยุดที่จะพัฒนางานด้านนี้ และมีการเพิ่มหรือปรับปรุงข้อมูลภาพถ่ายดาวเทียมตามช่วงเวลาลงไปด้วย โดยปัจจุบันในเมืองไทยส่วนมากก็จะมี 2 ช่วงเวลาที่สามารถเรียกดูได้จากโปรแกรม Google Earth

______วันนี้ไม่ได้ตั้งใจจะเอาเรื่องเก่ามาเล่าใหม่แต่อย่างใด แต่ผมเองอยากจะเขียนถึงคำถามที่ผมมักจะต้องตอบซ้ำๆกันทาง eamil นั้นก็คือทำอย่างไรจะสามารถนำข้อมูล GIS ของเราเข้าไปแสดงผลบน Google Earth หรือ Google Map ได้โดยอย่าง่ายที่สุด ซึ่งแน่นอนว่าก็คงจะหนีไม่พ้นการแปลงข้อมูล GIS ให้อยู๋ในรูปไฟล์มาตรฐาน KML ซึ่งสามารถแสดงผลและสืบค้นได้ผ่านทางโปรแกรมของ Google เช่น Google Earth ,Google Map ขั้นตอนก็ไม่ยุ่งยากครับเริ่มต้นดังนี้

1. เลือกโปรแกรมที่จะใช้

____โปรแกรมที่จะใช้มีหลายหลายทั้งแบบที่ฟรีและเสียเงิน ผมลกตัวอย่างบางส่วนมาให้ดูเช่น shp2kmlKML2KMLArc2Earth หรือตัวที่ผมใช้ GDAL/OGR

ดาวน์โหลดและติดตั้งได้ที่  http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries

2. แปลงระบบพิกัด Google ใช้ระบบพิกัดแบบ Geodetic Coordinate โดยค่าพิกัดเป็น Lat ,Lon จริงๆแล้วถ้าไม่คิดอะไรมาก ก็ใช้รหัส SRS:EPSG4326 ได้

ogr2ogr -f “ESRI Shapefile” -t_srs epsg:4326 mypoi_geo.shp mypoi.shp

3. แปลงข้อมูลไปเป็น KML โดยข้อมูลต้นแบบสามารถเป็นได้ทั้ง shapefile, CSV, Database(Postgis) ผมเตรียมตัวอย่างคราวๆมาให้ดู

-PostGIS 2KML

ogr2ogr -f “KML” POI.kml PG:”host=myhost user=myuser dbname=dbname password=mypassword” -sql “select gid, name, the_geom from myPOI”

-Shapfile2KML

ogr2ogr -f “KML” -where “score > 4″ POI.kml sel_POI.shp

** Where : SQL สำหรับเลือกข้อมูลครับ

4. รันข้อมูล อาจจะเปิดใน Google Earth หรือใช้ Google Map ก็ได้

อ่าน KML เพิ่มเติมที่

http://code.google.com/apis/kml/documentation/kml_tut.html


Learning GeoTech@MIT

กันยายน 23, 2009

_____ถ้าเอ่ยชื่อ MIT คาดว่าหลายท่านที่จบการศึกษาระดับมหาวิทยาลัยคงจะรู้จักชื่อนีั้เป็นอย่างดี ความโด่งดังของ MIT เป็นที่กล่าวขวัญมานานแล้ว โดยเฉพาะทางด้านเทคโนโลยีและศาสตร์แขนงต่างๆ MIT ได้เปิดโอกาสการเรียนรู้มากขึ้นสู่ภายนอกผ่านทาง OCW หรือที่เรียกกันว่า MIT Opensource Course Ware : http://ocw.mit.edu/OcwWeb/web/home/home/index.htm โดยเปิดให้ผู้คนต่างๆสามารถเข้าถึงเอกสารและตำราสำหรับเรียนรู้ในวิชาต่างๆที่มีการเปิดสอนใน MIT แน่นอนว่าอาจจะไม่ใช้ทั้งหมดแต่ก็มีหลายส่วนที่น่าสนใจ และมีการ update เพิ่มขึ้นมาเรื่อยๆ อย่างที่ผมเคยเขียนไว้เสมอใน blog ว่าในยุคปัจจุบัน internet มีส่วนช่วยในการเรียนรู้หรือพัฒนาองค์ความรู้ของเราได้มากขึ้น การเรียนรู้ทางอินเตอร์เน็ตก็เป็นอีกหนึ่งหนทางที่จะสามารถสร้างมูลค่าเพิ่มให้กับตัวเองเพื่อให้เราอยู่รอดในยุคของทุนนิยมได้

______ MIT OCW มีมากมายหลายศาสตร์และหลาย course ซึ่งผมได้ข่าวมาว่าปัจจุบันเริ่มมีคนไทยที่คิดก่อการดีเริ่มทำการแปลและรวบรวมเอกสารใน MIT OCW กันแล้ว วันนี้ผมขอนำเสนอ course ที่ผมติดตามและเข้าไปอ่านศึกษาหาความรู้จาก MIT OCW แน่นอนว่าพยายามคัดที่เกี่ยวข้องกับ Geoinfomatic บางส่วนมาให้ดูกันล้วนๆ

1. Spatial Database Management and Advanced Geographic Information Systems

http://ocw.mit.edu/OcwWeb/Urban-Studies-and-Planning/11-521Spatial-Database-Management-and-Advanced-Geographic-Information-SystemsSpring2003/CourseHome/index.htm

2. A Workshop on Geographic Information Systems

http://ocw.mit.edu/OcwWeb/Urban-Studies-and-Planning/11-520Fall-2005/CourseHome/index.htm

3. Advanced Geotechnical Engineering

http://ocw.mit.edu/OcwWeb/Civil-and-Environmental-Engineering/1-364Fall2003/CourseHome/index.htm

4. Environmental Engineering Applications of Geographic Information Systems

http://ocw.mit.edu/OcwWeb/Civil-and-Environmental-Engineering/1-963Fall-2004/CourseHome/index.htm

5.Introduction to Geology

http://ocw.mit.edu/OcwWeb/Earth–Atmospheric–and-Planetary-Sciences/12-001Spring-2008/CourseHome/index.htm

6. Differential Geometry

http://ocw.mit.edu/OcwWeb/Mathematics/18-950Fall-2008/CourseHome/index.htm

_____เป็นแค่บางส่วนเท่านั้นนะครับ เพราะ OCW มีหลาย course ให้เลือกโดยแบ่งตาม theme ด้านต่างๆ ข้อดีคือเราสามารถเรียนรู้ GIS ใน theme ด้านต่างๆได้ เพราะ GIS เป็นแค่เครื่องมือหนึ่งในการนำไปใช้ในศาสตร์แขนงต่างๆ ใน OCW ครอบคลุมทั้งด้าน วิศวกรรม ,ธุรกิจ ,ขนส่ง,สิ่งแวดล้อมและอื่นๆมากมาย ดังนั้นการได้เข้าไปดูก็เท่ากับเราสามารถเปิดหูเปิดตา เปิดสมองให้กว้างขึ้นไปอีก


Definitions of cloud computing from big guy

กันยายน 22, 2009

_____บ่ายแก่ๆอารมณ์ชิวๆนั่งเขียนงานไปได้สักพักเริ่มอยากหาอไรสนุกๆดูเลยแวะเข้าไปใน youtube ไปเจอ vdo clip เกี่ยวกับ cloud computing เข้าโดยไม่ใช่ clip ธรรดาแต่เป็นการแสดงกึ่งๆวิสัยทรรศ เรื่องๆ cloud computing ของ คุณ Larry Ellison ซึ่งเป็น CEO ของ oracle และ Steve Ballmer CEO ของ Microsoft มาดูกันว่าอนาคตของ cloud computing ในมุมมองของ big guy ทั้งสองจะเป็นอย่างไร


Children tracking kit

กันยายน 22, 2009

_____เดี่ยวนี้ภัยอันตรายมีอยู่รอบตัวจริงๆครับ โดยเฉพาะกรุงเทพมหานครเมืองใหญ่ที่ รวมตัวของคนหลากหลาย บางครั้งผู้คนต่างก็จ้องที่จะเอาเปรียบกัน เด็กก็เป็นอีกหนึ่งเป้าหมายของมิจฉาชีพที่คอยจ้องจะทำร้าย ดังจะเห็นได้จากข่าวการลักพาตัว หรือการหลอกเด็กไปขาย หรือจับมาขอทาน ในต่างประเทศ พ่อแม่มักจะสอนให้เด็กๆ ดูแลตัวเอง บางครั้งเราจะเห็นเด็กในวัย 5-6 ขวบขึ้นรถเดินทางไปไหนต่อไหนกันเองแล้ว หนทางหนึ่งที่จะทำให้พ่อแม่สามารถติดตามลูกน้อยได้ ในกรณีที่กลับบ้านไม่ตรงเวลาคงหนีไม่พ้นที่จะต้องพึ่งเทคโนโลยี GPS

_____ปัจจุบันมีสินค้าที่ผลิตมาขายผู้ปกครอง นั้นคือนาฬิกา GPS เป็นนาฬิกา digital สีสันสดใสลวดลายสวยงามเป็นที่ดึงดูดใจของเด็กๆ ข้อดีคือนอกจากจะเป็นนาฬิการแล้ว อุปกรณ์นี้ยงัมีเครื่องรับ GPS ที่สามารถส่งตำแหน่งของเครื่องรับกลับมายัง server ที่คอย monitor อยู่ได้ตลอดเวลาทำให้ผู้ปกครองสามารถติดตามหาตำแหน่งของเด็กน้อยได้ ความน่าสนใจคือ การออกแบบให้ GPS นั้นทำงานได้โดยใช้พลังงานน้อย สินค้าชื่อ num8 โดยเคลมความถูกต้องเชิงตำแหน่งที่ 10 feet สนนราคาที่ £149.99 สนใจแวะไปดูรายละเอียดที่

http://www.telegraph.co.uk/technology/6205027/Childrens-watch-with-Google-maps-tracking-system.html


Deep Zoom!!!

กันยายน 20, 2009

______ท่ามกลางสภาวะการเมืองที่เคร่งเครียด ร้อนแรง ผมไปเจอ vdo clip ฮาๆเลยนำมาฝากกันครับ เอาไว้ดูแก้เครียด รับรองว่าถ้าท่านเส้นไม่ลึกนักดูยังไงก็ต้องอมยิ้มหรือฮาออกมาดังๆแน่นอน


Blue Coffee

กันยายน 17, 2009

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

______กาแฟที่จะชงกาแฟที่อร่อยๆเหมือนการทำงานเป็นทีม กาแฟต้องดี คนคั่วต้องเก่งสามารถรู้ถึงวิธีการคั่วเม็ดกาแฟที่แตกต่างกันไปตามสภาวะอากาศและฤดูกาลปลูก กาแฟพันธุ์เดียวกันแต่อากาศต่างกัน รสชาติกาแฟก็ต่างไป ร้านนี้เป็นร้านที่แปลกดี ผมไม่ค่อยเห็นใครใช้กาแฟอิตาเลียนเบรนด์ทำกาแฟเอสเปรสโซ่แก้วละ 45 บาทขาย นับว่าเป็นลาภปากจริงๆ กาแฟดีต้องตั้งใจทำตั้งแต่ บด อัด ชง วันหลังจะมาโม้รายละเอียดให้ฟัง แต่ความน่าสนใจของพี่สาวบาริสต้าร้านนี้คือ พี่เค้ามีวิธีการอัดกาแฟแบบตั้งใจจริงๆ บ่งบอกได้ถึงความละเอียดและความใส่ใจในการชง การอัดผงกาแฟกับพอตตาฟิลเตอร์ ถ้าแน่นไปหรือไม่สม่ำเสมอเอียงไปข้างหนึ่ง รสชาติของกาแฟที่จะถูกสกัดออกมาก็จะไม่เต็มที่ พี่คนนี้ใช้แทมเปอร์เคาะพอตตาฟิลเตอร์ ค่อยๆกดลงไปแล้วค่อยบรรจงใส่กาแฟลงในหัวบนเครื่องชงแบบ 9 บาร์ไม่นานกาแฟเอรสเปรสโซ่หอมๆ 30 cc ก็ออกมา

______ผลงานของพี่คนนี้ค่อนข้างดี ซึ่งเกิดจากการใส่ใจจริงๆ สังเกตได้จากเครม่าที่ลอยในแก้วเอรสเปรสโซ่ สีน้ำตาลทองสวยไม่ over หรือ under ไป ผมนั่งกินกาแฟหอมกับเค้กส้ม พร้อมนั่งอ่านหนังสือเกี่ยวกับกาแฟที่มีมากมายบนชั้นหนังสือ ร้านนี้ถ้าไม่ขายกาแฟ อาจจะเปิดเป็นห้องสมุดกาแฟได้เลย ใครจะไปเชื่อว่าผมจะเจอหนังสือ Barista Book ของ จิฮิโร่ โยโกยาม่า บาริสต้าในตำนานของญี่ปุ่นที่เมืองไทยไม่น่าจะมีเกินร้อยเล่ม ร้านนี้มีดีอีกอย่างที่เพลงเพราะ โซฟานั่งสบายและมีพื้นไม้ปาเก้สีน้ำตาลนวล ถือว่าลงตัวมาก ผมเองชอบที่จะมานั่งทำงานในร้านกาแฟ เพราะว่าบรรยากาศแบบนี้แหละคือบรรยากาศแบบที่ส่งเสริมการใช้ความคิด มันสามารถกระตุ้นต่อมคิดได้ดีกว่า การนั่งเงียบในห้องสมุด หรือจะนั่งจ้มปุกบนเก้าอี้ตัวเดิมในออฟฟิศพร้อมกับฟังเสียงนินทาพรางๆ ร้านกาแฟเป็นสถานที่ที่มี dynamic เหมาะกับการใช้ชีวิตช้าๆไม่รีบร้อน ไม่กดดันเกินไป ในขณะเดียวกันบรรยากาศสบายๆก็ช่วยให้เรามีสมาธิเพิ่มขึ้น ว่างๆถ้าคิดอะไรไม่ออก ลองหอบงานแวะเข้าร้านกาแฟ สั่งอะไรร้อนมากินสักแก้ว รับรองหัวสมองวิ่งชิวเลยครับ


Augmented Reality on Google Earth

กันยายน 16, 2009

____ผมเองเคยเขียนถึงเรื่องของ Augmented Reality มาหลายหัวข้อแล้ววันนี้ของเอาอีกตัวอย่างหนึ่งมานำเสนอ ตัวอย่างที่ว่าเป็นแนวคิดของการนำข้อมูลแบบสดๆจาก vdo มาเสนอบนแผนที่ 3D บนโปรแกรม Google Earth ซึ่งถูกพัฒนาโดย Georgia Institute of Technology โดยข้อมูลฉากหลังเป็นข้อมูลสภาพภูมิประเทศจริงจากระบบบริการข้อมูลแผนที่จาก google earth โดยแสดงข้อมูลภาพถ่ายดาวเทียมและ terrian ในแบบ 3D ข้อมูลที่มาจาก live vdo จะถูก project ลงบนพื้นที่ภูมิประเทศจริง ซึ่งทำให้ผู็ชมมองเห็นภาพเคลื่อนไหวจาก vdo ไปพร้อมกับการดูข้อมูลสภาพพื้นที่จริง นอกจากนี้ยังแสดงผลการเคลื่อนไหวของโมเดล 3D บนโปรแกรม google earth ซึ่งสัมพันธ์กับ vdo ได้ด้วย แน่นอนว่าที่นำมาเสนอนี้เป็นเพียงผลการศึกษาจากในหน่วยวิจัย แต่สิ่งหนึ่งที่ทำให้เราเห็นได้คือ อนาคนเราอาจจะมี application แบบนี้ให้ได้ใช้งานเป็นแน่แท้ ลองดูตัวอย่างจาก vdo clip ด้านล่างประกอบนะครับ จะได้เห็นภาพมากขึ้น ว่าแต่ว่า 3G บ้านเราเมื่อไหร่จะได้ใช้นี่….


เกมส์เศรษฐีบน Google map

กันยายน 14, 2009

________ย้อนอดีตกลับไปเมื่อสมัยยังเด็ก ผมเชื่อว่าทุกคนคงจะต้องมีกลุ่มก๊วนเพื่อนใกล้บ้านที่เคยวิ่งเล่น เคยจับกลุ่มซิ่งรถ BMX รอบหมู่บ้าน โตขึ้นมาหน่อบถึงตอนประถม เกมส์ยอดฮิตของเด็กน้อยเกมส์หนึ่งก็คือเกมส์เศรษฐี เกมส์ที่ผู้เล่นได้จำลองตัวเป็นเศรษฐีมีเงินให้จับจ่ายซื้อที่ดิน หรืออสังหาริมทรัพย์ที่ชีวิตนี้ในโลกความเป็นจริงเราอาจจะไม่สามารถได้จับจองได้ ที่เอ๋ยถึงเกมส์เศรษฐีเพราะวันนี้ผมมีเกมส์เศรษฐีแบบใหม่มาแนะนำ แต่เป็นเกมส์เศรษฐีแบบใหม่บนโลก web 2.0

_______Monopoly City Streets เป็นเกมส์เศรษฐีแบบ online ที่เปิดให้ผู้เล่นสามารถเข้าไปซื้อ ขายที่ดิน อสังหาริมทรัพย์ผ่านอินเตอร์เน็ต โดยใช้ข้อมูลแผนที่จริงบน Google Map โดยใช้ข้อมูลแผนที่จาก Google Map API และใช้ข้อมูลถนน หรือ geocode จาก OpenStreetMap การเล่นก็ไม่ยากสามารถเล่นเป็นกลุ่ม online ได้โดยผู้เล่นมีเงินเริ่มต้น 3 ล้าน สามารถซื้อขายที่ดินได้ทั่วโลก โดยสามารถค้นหาโซนที่ต้องการลงทุนได้จากชื่อถนน ลองแวะเข้าไปลงทะเบียนและทดลองเป็นเศรษฐีในฝันได้ที่ http://www.monopolycitystreets.com/ ตอนนี้ผมเองก็เล็งที่เล็กๆเอาไว้เปิดร้านเรียบร้อยแล้ว

123


Photogrammetry Week 2009

กันยายน 11, 2009

_____อาทิตย์นี้ในมีงานสำคัญอีกงานหนึ่งเกี่ยวกับ Photogrammetry ชื่องาน Photogrammetry Week 2009 เป็นโอกาสที่ปีนี้ photogrammetry ในเยอรมันมาถึงปีที่ 100 ยาวนานมากผมเองก็พยายามตามเรื่องนี้อยู่ห่างๆ ที่ต้องแวะเวียนเข้าไปบ้างเนื่องจากงานเทคนิค photogrammetry เองก็ยังต้องนำมาใช้ในงาน mapping from space กับพวกภาพถ่ายดาวเทียมรายละเอียดสูงอยู่ แน่นอนว่ากระบวนการวัดหรือการหา IO และ EO อาจจะต่างไปแต่แนวคิดและสมการก็น่าจะนำมาใช้ด้วยกันได้ ปีนี้ผมมีโอกาสทำงานด้านนี้บ้าง เลยกลับไปพลิกตำรา photogram อ่านแต่ที่ต้องอ่านเพิ่มคือ RPF ดาวเทียมบางดวง เช่น ikonos หรือ quickbird ใช้วิธีนี้ในการทำ Geometic collection โดยใช้ อัตราส่วนโพลีโนเมียล 3/3 หรือ 3/1 ซึ่งการใช้ RPF ผมว่าค่อนข้างสะดวกในการคำนวณโดยไม่ไปขึ้นกับวิธีการบันทึกภาพของ sensor แต่ก็ต้องมี GCP ที่มากกว่า Polynomial ปกติ วันหลังมีเวลาจะเขียนเรื่องนี้อีกครับ ไหนๆก็เสียเวลาศึกษามาแล้ว

_____กลับมาที่งาน Photogrammetry Week 2009 ผมเองอ่าน blog ของท่านที่ไปร่วมงานและ web สรุปข่าวและการสัมนา ตกใจอย่างแรงปีนี้ Photogrammetry ยังเป็น Photogrammetry 2.0 เพราะในงานมีคุณ Frank Ley mann เป็น professor ของที่ Stuttgart และยังเป็นที่ปรึกษาของ IBM เกี่ยวกับ On Demand Computing strategy  มาพูดเรื่อง Cloud Computing ในงานนี้ด้วย เนื้อหาผมขออนุญาติไม่กล่าวถึงนะครับ เพราะมันเยอะ โดยสรุปคือการนำเทคโนโลยีนี้มาใช้ในงานด้านการประมวลผลกับปัญหาเชิงซับซ้อน ด้วยหน่วยประมวลผลขนาดใหญ่ที่มีประสิทธิภาพสูง แวะเข้าไปอ่านรายละเอียดได้ที่ http://vector1media.com/vectorone/?p=3668 สงสัยจะเป็นการเขี่ยลูกส่งสัญญาณถึงการเปลี่ยนแปลงของการนำเทคโนโลยีใหม่ๆมาใช้ในงานด้านนี้แล้วกระมัง ไม่แน่ใจว่าประเทศไทยมีใครได้ไปงานนี้หรือเปล่า ถ้ามีรบกวนเอาเอกสารหรือมาเล่าสู่กันฟังบ้างเน้อ ถ้าแวะมาเล่าที่ทำงานจะพาไปเลี้ยงข้าวหนึ่งมือพร้อมพาไปดูสาวด้วย

_____เรื่องของ Cloud Computing ต่อสักหน่อยผมเองก็กำลังศึกษาเรื่องนี้อยู่เหมือนกันครับ ตามอยู่ห่างๆเป็นงานอดิเรก โดยจัดกลุ่มอยู่ในประเภทหมวดงาน ทำก็ได้ไม่ทำก็ได้ ตอนนี้กำลังลองกับ Google App Engine ที่เป็น Cloud infrasturcture สำหรับ share ระบบประมวลผล ที่เปิดให้เราใช้งานได้ฟรีอยู่ตอนนี้ (ที่เลือกเริ่มจากตัวนี้เพราะฟรี) ผมเองมีโปรเจคเล็กๆจะทำ Geocloud กะจะลองใช้ GAE ช่วยประมวลผลและสืบค้นเชิงพื้นที่ โดยเริ่มแรกจะยัดข้อมูลลง Bigtable ของ GAE ให้ได้ก่อน การพัฒนาก่อนค่อนข้างง่ายใช้ได้ทั้ง python และ java ผมใช้ python โดยเลือกสร้าง template ง่ายๆจาก django เอาไว้ถ้าเขียนรายงานเสร็จหรือมีความก้าวหน้ายังไงจะมาเขียนไว้ให้อ่านต่อไปนะครับ สำหรับท่านนที่ต้องการหัดใช้แวะไปศึกษาเพิ่มเติมได้ที่   http://code.google.com/appengine/docs/python/overview.html

1

GAE Launcher สำหรับพัฒนาบนเครื่อง server เราครับ

4appcfg.py สำหรับ upload applation เราขึ้นไปบน GAE

2Dashboard ของ GAE ถึงแม้จะให้แค่ 6.5 CPU Hours ก็ยัง ok อยู่

3ลองหาทางยัด ภาพ spot5 ลงไปใน GFS เก็บเป็น blob แล้วก็ทำ index ครอบไว้ เวลารับ request ก็ไปค้น index ด้วย GQL ใน bigtable ตั้งใจจะใช้ GAE อารมณ์ประมาณ loadbalancing สำหรับ request tile เยอะๆ ต่อไปว่าจะลองทำ processing module ขึ้นมาสำหรับประมวลผลคำสั่งง่ายๆ


BING WMS MAP

กันยายน 10, 2009

_____ปกติไม่ค่อยได้พบการเปิดบริการข้อมูล Commercial Map Service ในรูปแบบโปรโตคอลมาตรฐานของ OGC เท่าไหร่นัก จริงๆแล้วก็ไม่ใช่เรื่องแปลกเพราะพวก Commercial Map Service เช่น Google Map หรือ BING Map พัฒนาและบริการในรูปแบบของ Map API ที่เน้นการ intregration แบบง่าย แต่เป็นระบบปิด กล่าวคือการจะนำข้อมูลจากแหล่งอื่นมาทำงานร่วมกันทำได้ค่อนข้างยาก จะต้องออกแรงมากกว่าปกติ แต่วันนี้ผมเพิ่งไปพบกับข่าวที่หน้าดีใจ คือ BING MAP ระบบบริการข้อมูลแผนที่ของ Microsoft ได้เปิด Service Protocal แบบ WMS 1.3 ให้นักพัฒนาสามารถนำข้อมูลแผนที่และข้อมูลภูมิสารสนเทศจาก Bing Map Service ไปใช้ได้

_____ด้วยความที่ Bing Map รองรับ Web Map Service ทำให้ Application ที่ทำงานบนโปรโตคอลตัวนี้สามารถเชื่อมโยงและนำข้อมูลเข้ามาทำงานในระบบได้ทันที แต่แน่นอนว่า Bing Map ก็ยังต้องมีการลงทะเบียน และมีการสร้าง user และ password ซึ่งใน OGC WMS 1.3 ก็รองรับการเข้ารหัสของ username และ password บนโปรโตคอลนี้ด้วย ทำให้การทำงานแบบนี้ win win ทั้งสองฝ่ายทั้งผู้ใช้และเจ้าของข้อมูล

_____BING Map มีทั้งชั้นข้อมูล ภาพถ่ายดาวเทียม , ถนน และข้อมูลแผนที่สภาพภูมิประเทศ โดยครอบคลุมพื้นที่บริการทั่วโลก มี SRS ที่เปิดให้ใช้งานได้ทั้ง EPSG:4326  EPSG:3857  EPSG:41001  และรองรับ MIME Type ของข้อมูลภาพแผนที่ชนิด image/png image/gif image/jpeg ประสิทธิภาพการทำงานก็เร็วดีทีเดียวครับ แต่เสียอย่างเดียวลายน้ำเยอะไปนิด แต่แนวคิดการเปิดบริการแบบนี้ก็ทำให้ BING MAP ล้ำหน้า Google Map ไปแล้ว เรื่องข้อมูลก็ไม่แพ้กันเพราะ BING Map มีข้อมูลภาพถ่ายดาวเทียมรายละเอียดสูงที่ update กว่าของ Google ข้อจำกัดของ BING MAP อีกอย่างคือข้อมูลถนนยังขาด label ที่เป็นภาษาไทย ลองมาดูตัวอย่างกันนะครับ ผมใช้ QGIS ต่อไปยัง BING MAP Service ผ่าน WMS 1.3.0 ผมเลือก layer : aerial บริเวณสามย่าน

6

7

____ท่านที่ต้องการใช้งานแวะไปลงทะเบียนที่ http://integrate.onterrasys.com/BingMapsWMSBeta/register.aspx


Daphnis

กันยายน 8, 2009

______ประกาศออกมาอย่างเป็นทางการแล้วครับ สำหรับข่าวการเปิดตัวโปรแกรม QGIS เวอร์ชั่นล่าสุดคือ 1.2 ใช้ชื่อรหัสว่า ‘Daphnis’ เวอร์ชั่นนี้มาพร้อมกับความสามารถการ EDIT ข้อมูล(Delete, merging features,Split), การเชื่อมโยงการทำงานกับฐานข้อมูล POSTGRESQL และ Symbology Enhancement โดนใจอีกอันเป็นการเพิ่มส่วนเชื่อมต่อกับ Spatial SQLite

______เวอร์ชั่นนี้ยังมีการปรับปรุง Bug อีกหลายแห่ง ที่ผมชอบที่สุดคงเป็นการเพิ่มปุ่ม Redo/Undo เข้ามาตามเสียงเรียกร้องของผู้ใช้ ไม่แน่ใจว่าทนกันมาได้ไง และอีกส่วนหนึ่งคงเป็นเรื่องของการประมวลผลข้อมูลที่ QGIS ยกภาระการทำงานส่วนนี้ให้กับ GRASS โดยพอร์ตเอา engine ส่วนนี้มาจาก GRASS โดยตรงดังนั้นเรื่องประสิทธิภาพไว้ใจได้นอกจากนี้ยังมี plug-in ชื่อ Ftools สำหรับประมวลผลและวิเคราะห์ข้อมูล อีกโมดูลคงเป็นการปรับตัวเพราะมีการพูดถึงกันใน mailing list คือเรื่องของการใช้งาน python shell script  ผ่าน QGIS API อารมณ์คล้ายกับ VBA หรือ avenue ของ ARCgis ซึ่งเวอร์ชั่นนี้ปรับแก้ bug และพารามิเตอร์ของการเรียกใช้งาน แวะเข้าไปดาวน์โหลดโปรแกรมได้ที่ http://www.qgis.org/

2ตัวอย่าง Ftools สำหรับ Geoprocessing และ Analysis

3

Georeferencer เครื่องมือสำหรับ Georectification มาเวอร์ชั่นนี้มี Model ของ CTS มากขึ้น ถึง Polynomial degree 3 เลยทีเดียว


GPS Weekend

กันยายน 6, 2009

___สุดสัปดาห์นี้มีของเล่นใหม่ที่วันนี้เพิ่งจะมีโอกาสได้แกะกล่องมาลองเล่น ของเล่นที่ว่าคือ GPS chipset ของ SIRFII ตัวนี้ขอยืมอาจารย์วีระพงศ์มาทดลองครับ ของตัวเองสั่งซื้อไปแล้วรอการจัดส่ง ผมซื้อ SIRFTIII ไปประมาณ 2800 บาทรวมกับ borad ที่มี SIM และ GPRS อีก 3000 ตั้งใจจะมาทำ navigation wireless GPS  โดยทดลองทำงานวิจัยเกี่ยวกับ moving object sensor ตอนนี้อยากทดลองเลยขอเล่นของพี่เค้าไปก่อน

___พื้นฐานที่จะทำ application หรือ Hack GPS ต้องรู้คือเรื่องของ GPS Protocal นั้นคือ NMEA ผมเคยสอนวิธีการอ่านและการ GET ค่า GPS DATA มาแล้วรอกลับไปอ่านใน Blog เดิมได้นะครับ วันนี้มาลองดูภาคปฏิบัติกัน

___STEP 1 : ต่อ GPS เข้ากับคอมพิวเตอร์ ผมใช้ USB Interface โชคดีที่พี่เค้ามี Serial 2 USB มาให้เลยทำบน notebook ได้

PIC090903003ชุดอุปกรณ์เชื่อมต่อครับ

41

____ทดลองรับข้อมูลง่ายด้วยโปรแกรม GPS Viewer หรือ GPSBabel เพื่อทดสอบการทำงานของ GPS หน้าตาของ NMEA ก็ประมาณนี้ครับ

$GPGGA,120557.916,5058.7456,N,00647.0515,E,2,06,1.7,108.5,M,47.6,M,1.5,0000*7A
$GPGSA,A,3,20,11,25,01,14,31,,,,,,,2.6,1.7,1.9*3B
$GPGSV,2,1,08,11,74,137,45,20,58,248,43,07,27,309,00,14,23,044,36*7A
$GPGSV,2,2,08,01,14,187,41,25,13,099,39,31,11,172,37,28,09,265,*71
$GPRMC,120557.916,A,5058.7456,N,00647.0515,E,0.00,82.33,220503,,*39
$GPGGA,120558.916,5058.7457,N,00647.0514,E,2,06,1.7,109.0,M,47.6,M,1.5,0000*71

_____ได้ ข้อมูลในรูป NMEA 0183 มาก็อุ่นใจได้แล้วครับ เพราะ GPS คุยกับ เครื่องคอมพิวเตอร์ได้แล้ว แต่ที่สำคัญต้องรู้ด้วยอยู่ พอร์ตคอมไหน อ่าน NMEA อาจจะงง เพราะมันเยอะ ผมเน้นข้อมูล แค่ 4 ตัวคือ X,Y,Z , TIME, GDOP เลือกชุด GPGGA อีกประการที่อยากเขียนไว้ คือ SIRFII ขึ้นไปสามารถ Burn ROM เพื่อ SETUP ค่าได้ผ่าน ATI Command โดยมี API ของ SIRF อยู่ เช่นการกำหนดค่า DOP ในการเลือกใช้ดาวเทียมมา slove หาพิกัด , การกำหนด ค่า epoc และ Baud Rate ลองเข้าไปดูได้ที่

http://www.usglobalsat.com/downloads/NMEA_commands.pdf

http://www.deanandara.com/Argonaut/Sensors/Gps/ConfiguringSirfStarIII.html

_____ทดลอง connect กับ GPS ด้วย Python ผ่าน USB ผมใช้ PySerial แต่ปรากฏว่าไม่ work ลองค้นดูพบว่ามันไม่รองรับตัว converter ที่ใช้ กำลังจะเปลี่ยนใหม่ไปใช้ PyUSB ตอนนี้เอาง่ายลองกับ serial ก่อน

_____มาถึงงานถนัดเขียนโปรแกรมไป parse ข้อมูลที่ต้องการจาก NEMA ง่ายมากเพราะเป็นการพาสค่าจาก string ธรรมดาผมใช้ python  หัวใจสำคัญอยู่แค่นี้เอง

line=”$GPGGA,120557.916,5058.7456,N,00647.0515,E,2,06,1.7,108.5,M,47.6,M,1.5,0000*7A”
line=line.split(“,”)

line=”$GPGGA,120557.916,5058.7456,N,00647.0515,E,2,06,1.7,108.5,M,47.6,M,1.5,0000*7A”

line_set=line.split(“,”)

พอได้ค่าพิกัดมาก็เอาไปแสดงบนแผนที่ก็จบกระบวนความแล้วครับ

อ่านบทความเกี่ยวข้อง

http://emap.wordpress.com/2009/02/09/nmea-sentence/

http://emap.wordpress.com/2009/02/07/bluetooth-gps-simulator/

http://emap.wordpress.com/2009/02/09/python-nmea/


SMMS:2_Bandcombination

กันยายน 5, 2009

_____เช้าๆอากาศดีๆแบบนี้ต้องรีับตื่นมานั่งสูดดมอากาศเข้าไปกักตุนไว้ในปอดเยอะๆ เพื่อดีท๊อกร่างกาย วันนี้อยากเขียนเรื่อง SMMS ให้อ่านต่อครับ ผมเองอาจจะไม่ได้เขียนละเอียดละเมียดละไมในเชิง remote sensing นักเพราะยอมรับว่าไม่ใช่ผู้เชียวชาญ เนื่องจากร้างจากการทำงานด้านนี้มาหลายปีนัก ถ้าเป็นสักสองสามปีก่อนยังพอจำได้อยู่เพราะ ช่วงนั้นเคยทำโปรเจคเกี่ยวกับการใช้งาน Remote Sensing เยอะทำทั้ง active และไม่ active หลายคนอาจจะเถียงนะครับว่าเรียนมาแล้วลืมได้ไง คำตอบคือทำไมจะลืมไม่ได้ล่ะก็วันๆคนเรามีอะไรจะต้องทำ ต้องเรียนรู้ใหม่มากมาย ของเก่าๆที่ไม่ได้ใช้มันก็ต้องย่อมหายไป แต่ที่สำคัญคือความเข้าใจในหลักการมากกว่า ถ้าเข้าใจถึงเวลาที่ต้องใช้เปิดตำราอ่านก็ทำงานได้เลย ที่สำคัญอีกอย่างคือการไม่ติดกับสิ่งสมมติ อย่าคิดว่าเราเรียนมาแล้วทำให้เรากลายเป็นผู้รู้ได้ คนที่เรียนมาสูงบางครั้งอาจจะไม่ชำนาญเท่าคนที่ทำงานอยู่ทุกวัน คนที่ต้องตื่นเช้ามาแปลภาพ ตื่นเช้ามาแปลภาพ บางครั้งพวกนี้โครตเทพเลยนะ ดู histogram แล้วรู้เลยว่าแต่ละ cluster เป็นอะไร

_____เข้าเรื่อง SMMS ดีกว่า ที่กลับมาเขียน SMMS อีกรอบเพราะว่ามี feedback กลับมาดีถึงการอยากจะทดลองนำ HJ1A ไปใช้ในงานแปลภาพและจำแนกสิ่งปกคลุมดิน ในบ้านเราแต่ก็โดนบ่นนิหน่อยว่ามาโปรโมทช้าไป ตอนนี้ archive ยังเปิดใช้ไม่ได้ แต่เชื่อเถอะครับของดีมีประโยชน์ยังไงก็ต้องกลับมาใช้ได้อยู่ดี ประเด็นวันนี้ที่จะเขียนคือเรื่องของ bandcombination เพราะเข้าไปอ่าน blog ของพี่อาร์ทซึ่งให้ link ของ bandcombination ไว้น่าสนใจทีเดียว ที่ว่าน่าสนใจเพราะว่ามันเยอะและบาง component มันต่างจากที่เคยอ่านเจอมา เซียนๆทั้งหลายแวะไปดูได้ที่ http://web.pdx.edu/~emch/ip1/bandcombinations.html ผมเชื่อว่าหลายท่านรู้จักเรื่องของ  bandcombination อย่างดีเพราะการเลือกช่วงคลื่นที่ดีเหมาะกับ spectral signature ของ object ที่จะแยกย่อมทำให้เราสามารถจำแนกวัตถุได้ดี ที่สำคัญไม่แพ้กันคือความสามารถของ sensor ดาวเทียมแบบ HJ1A มันถูกออกแบบให้เป็น hyperspectral Satellite แต่ก่อนเราหาข้อมูลแบบนี้เล่นยากเพราะแพง ตอนนี้มีมาถึงประตูบ้านไม่น่าพลาดจริงๆ

____ขอเริ่มจาก HJ1A ประเภท Optical sensor ที่รายละเอียดภาพ 30 เมตร ที 4 band R,G,B, NIR ช่วงคลื่น ซึ่งใกล้ๆกับของ landsat และมี GSD เท่ากันที่ 30 เมตร

5

ช่วงคลื่นของ HJ1A

3

ช่วงคลื่นของ Landsat 7

_____ดังนั้นเราจึงสามารถรองใช้ Model ของ bandcombination จาก James Quinn ได้ เริ่มต้นจาการดาวน์โหลดไฟล์ Optical sensor เราจะได้ภาพจำนวน 4 ภาพพร้อมด้วย sensor model แบบคราวๆตามที่ผมเคยเขียนมาแล้ว เมื่อเราต้องการเปิดภาพและทำการผสมสีด้วยซอฟต์แวร์ RS หรือ GIS เพิ่อให้ง่ายก็ stack band ก่อนนะครับ ผมใช้ FWTOOLS เป็นเครื่องมือนะ โดย run คำสั่ง  gdal_merge

gdal_merge -of GTiff -o hj1a_stack.tiff -separate H
J1A-CCD2-11-101-20090306-L20000077186-1.TIF HJ1A-CCD2-11-101-20090306-L200000771
86-2.TIF HJ1A-CCD2-11-101-20090306-L20000077186-3.TIF HJ1A-CCD2-11-101-20090306-
L20000077186-4.TIF

gdal_merge -of GTiff -o hj1a_stack.tiff -separate H

J1A-CCD2-11-101-20090306-L20000077186-1.TIF HJ1A-CCD2-11-101-20090306-L200000771
86-2.TIF HJ1A-CCD2-11-101-20090306-L20000077186-3.TIF HJ1A-CCD2-11-101-20090306-
L20000077186-4.TIF

_____ผลลัพธ์จะได้ภาพนามสกุล tiff มาแล้วก็เปิดมันด้วยโปรแกรม GIS หรือ RS ก็ได้เพื่อเตรียมทดลองผสมสี ผมใช้ OPENEV เปิดภาพามาลอง check ค่า histrogram แล้วทำ streaching ซะหน่อยเพื่อให้ได้ภาพที่แจ่มขึ้น
_____ทดลองลงมือผสมสีกันเลย การผสมสีหรือ bandcombination ตามตำราเค้าแบ่งเป็นผสมสีเท็จ และผสมสีจริง ผสมสีเท็จคือการเน้นให้เราแปลภาพได้ง่าย ใช้ช่วงคลื่นที่ detect วัตถุที่เราสนใจ ไปใส่ในสีแดง เพื่อให้ตาเราแยกองค์ประกอบสีได้ดี (สีแดงมี compent สีเยอะกว่าสีอื่นๆ) เช่นแยกพืช พวกคลอโรฟีลใช้ NIR ไปใส่ในสีแดง เป็นต้น ลองจำแนกกันตาม model ของ James Quinn
1
1. water R:1,G:2,B:4
6
2. ดินสิ่งปลูกสร้าง 2,3,1
7
3. จำแนกพืช 4,2,1
8
___สำหรับตารางด้านบน HJ1A แบบ Optical sensor มีแค่ 4 band อาจจะไม่สามารถผสมได้พอ เราจึงสามารถนำ hyperspectral มาใช้ได้ โดยทำการดาวน์โหลดข้อมูล hyperspectral ซึ่งจะได้ข้อมูลในรูปแบบ HD5 รายละเอียดภาพ 100 m  ทำการแปลงไฟล์และ stack ข้อมูลจำนวน 115 band ของ HJ 1A ลงไปในฟอร์แมทที่ใช้กันมาก ผมเลือก Geotiff ใช้คำสั่ง gdal translate

gdal_translate -of GTiff -co “TILED=YES” -sds HJ1A-HSI-11-102-A2-20090310-L20000078916.H5 hj1a.tiff

ข้อดีของ hyperspectral คือมีช่วงคลื่นที่ละเอียดจำแนกวัตถุได้มาก ถ้าเราทราบค่าการสะท้อนคลื่นของวัตถุ ลงทุนหน่อยก็เอา spectrometer ไปวัดกันเลย โดยในหลายงานวิจัยนำไปใช้ตรวจหาคลอโรฟิลด์ และพวกไนโตเจนก็มี  ลองผสมสีแบบ 7,4,2 เพื่อจำแนกพืช เสียดายภาพถ่ายคนละเวลา เมฆเยอะไปมาเลย ข้อสังเกตุอีกข้อคือ ค่า DN ค่อนข้างต่างกันและค่อนข้างไปทางต่ำ ดังนั้นจำเป็นที่จะต้องใช้ histrogram ช่วย

9
___แวะเข้าไปอ่านรายละเอียดเพิ่มเติมเกี่ยวกับ Remote sensing ได้ที่