Community-generated Traffic Information System
ข้อมูลหาย ขออัพอีกครั้ง
Community-generated Traffic Information System
http://www.slideshare.net/inatialz/communitygenerated-traffic-information-system
[note] curly braces และ เพื่อนๆ
![]()
From the top: square brackets, curly brackets (braces),
parentheses, angle brackets, and (in red) inequality signs
จาก http://en.wikipedia.org/wiki/Braces_%28punctuation%29#Braces
ลองเล่น python + Imaging + numpy
มี Assignment Digital Image Processing เลยหาเครื่องมือที่จะเอามาใช้หน่อย ตอนแรกกะจะใช้ opencv แต่ลองเอา wrapper ที่ทำให้ python ใช้ opencv มาลองดีกว่า เพื่อความมันส์(อยากเขียน python เป็น)
เขียนไปเขียนมา ทำไปเกือบเสร็จ (python + opencv) เจอปัญหาเรื่อง datatype นิดหน่อย (ไม่รู้ว่ามัน cast ไปเป็น pointer to aligned image data ยังไง)
ผสานกับเวลาที่เหลือน้อย จึงคิดว่า กลับไปเขียน opencv + c ให้เสร็จก่อนดีกว่า ที่เขียนใน python มันเพี้ยนๆ
พอเขียน opencv + c เสร็จ (แต่ไม่เรียบร้อย)
แต่รู้สึกว่า ในการทำงานหลายๆส่วนกับ opencv นั้น ไม่ค่อยเป็นที่พอใจ มันเขียน code เวิ่นเว้อไป เช่นการทำ invert สีของรูปภาพ
// invert the image
for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
แต่ในพวก MATLAB มันเขียนแค่ 255 – matrix สี จึงคิดหาโปรแกรมอื่นมาใช้แทน MATLAB เพราะขี้เกียจเข้า windows เพื่อไปใช้ MATLAB และ อีกอย่างมันไม่ฟรีด้วย
จึงได้ข้อมูลพวก scilab , octave เอ้า ! โหลดมาลองซะหน่อย
และหลังจากนั้นไปอีก….. อ่านต่อ กดเลย !
(Cache) Python 2.4 + numpy + matplotlib + Imaging
จากความเดิมตอนที่แล้วที่ ใช้ python 2.5 กับ numpy แล้วก็ Imaging 1.1.6 ก็ทำงานไปได้ระดับหนึ่ง
แต่เกิดอยากจะ plot histogram ขึ้นมาเลยไปมองที่ scipy เนื่องจากครั้งที่แล้วยังลงไม่ได้
แต่แล้วก็ได้พบพานกับ matplotlib-0.99.1.1 เคยเห็นใน superpack ก็เลยโหลดมาลองซะหน่อย
Unit Vectors – Normalizing ใช้ python และ numpy
ก่อนที่เราจะ normalize vector ได้ เราต้องหา norm ( magnitude หรือ ขนาด) ของมันก่อน

ซึ่งมันหาได้โดยการ ถอด Square root ของ ผลบวกกำลังสองครับ (sumsquare)
length = sqrt((ax * ax) + (ay * ay) + (az * az))
length = sqrt(9 + 1 + 4) = 3.742
ซึ่ง 3.742 จะเป็น ขนาดของ Vector [1,2,3] ครับ
ถ้าจะ normalize vector นี้ก็เอา magnitude ไปหารทุกตัวครับ
x = 3.0 / 3.742 = 0.802
y = 1.0 / 3.742 = 0.267
z = 2.0 / 3.742 = 0.534
ซึ่งใน python เขียนแค่
ก็จะได้คำตอบ
array([ 0.26726124, 0.53452248, 0.80178373])
[Google Maps Geocoding] ลอง Parse Json ด้วย Groovy + Java (Netbeans)
โปรเจ็คตลกๆมาอีกแล้ว เพราะโปรเจ็คนี้ผมใช้ Json Lib + Groovy + Java
แต่ผมใช้ Groovy ดึง json (URL.text) แล้วใช้ Java เป็นตัวแกะ jsonObject เป็น jsonArray
หลังจากนั้นเอาข้อมูลโยนกลับไปให้ Groovy ถอดเอาเฉพาะส่วนที่ต้องการออกมา (ในที่นี้คือ coordinates — latitude ,longitude นั่นแหละ)
ดูวุ่นวายมาก ทั้งๆที่ เขียน Groovy อย่างเดียวก็ได้ เพราะ Json Lib ก็ลองรับ groovy หรือจะเขียน Java เพียวๆ เลยก็ได้
เรื่องของเรื่องคืออยากเขียน Java ร่วมกับ Groovy อีกครั้ง เพราะไม่ค่อยถูกกับ Java จริงๆ
มันดูเวื่นเว้อ มันเขียนเวิ่นเว้อด้วย ยาวๆ งงๆ (อาจเป็นเพราะไม่ได้ศึกษาอย่างลึกซึ้ง)
groovy มันสั้น เข้าใจง่าย ไม่เวิ้นเว้อ (อาจจะใช้ได้ไม่เต็มประสิทธิภาพ แต่ผมชอบ พวก Closures )
เหตุผลที่ไม่เขียน Groovy เพียวๆไปเลยก็เพราะว่า
code ตัวอย่างที่เค้ามีให้ดู มันพิมพ์ผิด
def fromList = [1,true,'json'] as JSONarray
มันควรจะต้องเป็น JSONArray เมื่อแก้และเอาอันอื่นมาลองดู มัน cast เป็น Type พวก net.sf.json.* ไม่ได้ อาการประมาณนี้
ก็เลยลองซัด Java + Groovy ไปเลย
มันก็เจอปัญหานิดหน่อยเพราะ ไม่ได้อ่าน Dependency List เลยค่อยๆตามหา พอได้ครบแล้วเพิ่งจะเห็นว่ามันมีบอกไว้ว่า
Json-lib requires (at least) the following dependencies in your classpath:
- jakarta commons-lang 2.4
- jakarta commons-beanutils 1.7.0
- jakarta commons-collections 3.2
- jakarta commons-logging 1.1.1
- ezmorph 1.0.6
น่าเขกกะโหลกจริงๆ อ่านต่อ กดเลย !
ลองถอดข้อมูลจาก JSON Format ด้วย Grails
จากตอนที่แล้ว Reverse Geocoding (Address Lookup) ผ่าน http
เรื่องวันนี้ ! ให้สังเกตว่า
เมื่อเรา Request ไปข้อข้อมูลของ Thammasat Rangsit เราจะได้ ข้อมูลหน้าตาประมาณนี้
{
"name": "Thammasat Rangsit",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "Thammasat Rangsit Sport Center, Khlong Nueng, Khlong Luang, Pathum Thani 12110, Thailand",
"AddressDetails": {
"Accuracy" : 9,
"AddressLine" : [ "Thammasat Rangsit Sport Center" ]
},
"ExtendedData": {
"LatLonBox": {
"north": 14.0785781,
"south": 14.0569314,
"east": 100.6173654,
"west": 100.5853506
}



