文章

目前顯示的是 2015的文章

Maperative使用教學

圖片
最近玩Maperative,發現它可以作很多地形繪圖的東西,是我以前就想要作的。
作等高線地形圖,可以增加渲染、分層設色的功能,也可以作向量輸出。





北部



桃園台地群



雪山到大霸




操作過程老樣子就是錄成影片,全部加起來差不多半小時,看完就會操作了啦。

https://www.youtube.com/playlist?list=PLm6x13NbsKl56B6eufroUBCF5IKR1CgLq


設定圖資 網站說明
預設的是SRTM3,但是有洞
set-dem-source  name=SRTM3

有經過「補洞」的是SRTMV3R3
set-dem-source  name=SRTMV3R3

參考
http://wiki.openstreetmap.org/wiki/SRTM
http://maperitive.net/docs/Commands/SetDemSource.html


改變rules的contours可以顯示或隱藏等高線相關資訊


分層設色圖(參考上河) 網站說明
generate-hypsometric ramps=0:#f1eee8;1:#8fd48e;50:#818c7b;100:#4f847a;200:#818d7a;300:#a09576;500:#bba186;700:#bfb0aa;900:#bea198;1200:#c2a496;1500:#a28c81;1800:#a87e72;2100:#946f4e;2400:#946748;2700:#c1765d;3000:#a95e48;3300:#c26e61;3600:#c46661;4000:#6c363a

底圖變淺
add-web-map provider=mapnik intensity=0.7

海平面上升的hypsometric 
generate-hypsometric  ramps=0:blue;1:green;1000:#FFCB77;2000:white


輸出 網站說明
export-bitmap width=500
export-bitmap scale=11


設定座標範圍 網站說明
設定地理座標範圍
set-geo-bounds 120.971703881821,24.8198055325488,120.973510061623,24.8185677195484

設定列印座標範圍
set…

製作3D地形模型(使用Maperative、Blender、MeshLab)

圖片
http://www.thingiverse.com/thing:1229560
最近又對立體模型、3D列印感興趣了,不過要作什麼好呢?突然覺得地形模型好像不錯,可是怎麼作呢?

剛好最近看數學函數建模的資料,東連西連看到一個利用OSM為圖資的地圖軟體Maperative,就從這個軟體開始,讓我拼湊出製作地形模型的方式了。

下面這個是新竹地區的3D模型



這個則是送進3D印表機印出來的成果,可以用摸的摸出台地、丘陵、河川等地形特徵,要隨意用什麼視角看也都是可以的。


從頭前溪、鳳山溪出海口往陸地看去,新竹平原的北有湖口台地、南有香山丘陵、東有雪山山脈,形成一個地形隘口,就像是畚箕一樣,所以這稱作為畚箕嘴地形,從立體模型上更能看出這個特徵。這個畚箕嘴地形也就是造就九降風的原因,讓新竹有了「風城」的稱號。



我製作了台北和新竹的立體模型,都放在Thingiverse,不過我都有把z軸比例拉大,讓山高一點
http://www.thingiverse.com/thing:1229560


這麼酷的模型怎麼作呢?我錄製了三段影片,分別說明如何從Maperative取得地形資料檔,還有用MeshLab減面,再利用Blender建模,都在以下這個播放清單
https://www.youtube.com/playlist?list=PLm6x13NbsKl72M9QbExIUv9NoqNK65tJi


Maperative是免費軟體,圖資來自OSM,而高度資料應該是來自NASA的DTM,因為我以前作過Garmin的等高線地圖圖資,我看到兩個的DTM缺失值是一樣的。
找到要製作的地方之後,兩步就可以產出3D檔
Map/Set Printing Bounds
Tools/Export to 3D
得到的是Collada格式的檔案


檔案先用Blender轉成stl,再匯入MeshLab去作減面
File/Import Mesh
Filters/Remeshing,Simplification and Reconstruction/Quadric Edge Collapse Decimation
用預設值apply之後,Export Mesh as...另外存一個stl檔
然後再開啟那個stl檔,重複作上面的減面手續
作幾次不一定,看你的需求,重點是面數減少卻又不會影響模型外觀。





最後用Blender …

數學函數紙模型

圖片
半年前去東京,看到一系列很美的模型,是用數學函數做出的。看到的當下,沒辦法拍照,回國之後找好久終於找到是哪邊出品的。原來是大橋製作所製作的,是很美的數學模型。
網站http://www.sugakuart.com/


會找到這個連結,其實是翻「青少年のための科学の祭典」,看到他們有資料
立体グラフ 「数楽アート」を作ろう 裡頭還有附上型紙,印下來剪一剪,就可以跟著作一個數學函數立體紙模型。
跟著作是一回事,我更想要弄懂怎麼製作,這樣我就可以任意產生各種函數來作模型了。
Google搜索引擎就有圖表繪製的功能,像是搜尋列直接輸入z=x^2-y^2,就可以看到這樣鞍型圖




或是輸入z=x*y*0.5,也有不同的鞍型圖


鞍型圖非常有意思,以為是谷底,其實是山頂,以為是山頂,其實還只是谷底,處在什麼位置,端看你用什麼角度去看。

所以我第一個嘗試就用鞍型圖來作吧,第一步是產出鞍型圖的曲面數據。這步驟我用Gnu octave來製作。

命令很簡單,兩行就可以產出z=0.5xy的數據,然後把數據存在0.5xy.dat這個檔案裡
d = ((-10:0.2:10)' * (-10:0.2:10))*0.5 ;
save("0.5xy.dat", "d");

接下來要做出立體的模型,我使用OpenSCAD來作,這是一個用寫程式碼來作立體建模的軟體。

程式也很簡單,就三行搞定
translate([0,0,70]) union(){
surface(file = "0.5xy.dat",center = false, convexity = 10);
translate([0,0,-70])cube([100,100,20]);

}




做出模型之後,存成stl檔,接下來就可以作應用了。 STL檔案我存在thingiverse上頭,還包括幾個不同的數學函數模型。 z=axy 鞍型 z=-(x2+y2) 是個拋物面 z=1-(x2+y2)^0.5 這個像是個角錐 z=acos(x2+y2) 這個像是水滴產生的波紋 z=x2-y2 另外一種鞍型

然後怎麼做出這樣的模型呢?需要用到123D make,在Autodesk的網站上可以免費下載。
123D make操作都很簡單,比較要注意的是怎麼設定「厚度」,由於我作的成品,可能用紙來作,也可…

如何邀約一場演講

因為擔任過演講者,我有過許多奇特的經驗,不乏令我翻白眼的邀約,還有令我感動的邀約。而在這些經驗之後,我也反省自己,當我是一個邀約者,我應該怎麼作,才能給予演講者該有的尊重,以下就是我的經驗。


邀約誰?
通常邀約者是因為擔任行政職位,或是有計畫在身的人。因此你被責付任務要去邀約,然而你可能完全不熟悉講者的領域,那怎麼辦?是不是就直接打電話去找講者,問他可以講什麼題目嗎?如果你真的這麼作,那你就開始不尊重對方了。

你應該先上網查詢講者的相關資料、發表、著作、演講過的題目......等,或是看看youtube上有沒有相關的影片,對講者有進一步的認識之後,然後去思考這個問題
「你希望安排這場演講,聽眾可以從講者那邊得到什麼?講者又可以為聽眾帶來什麼樣的議題」

先設定好了題目或是方向之後,再去進行下一步。

怎麼聯絡?
那麼,可以直接打電話去問了嗎?且慢,擔任行政工作的你可能會忘記一件重要的事,你邀約對象的工作性質不一定像你一樣。你可能會想,打電話直接邀約,不是就可以了嗎?可是當你賣力一直打電話找這個老師時,你會發現怎麼電話都很難找到他,總是同事來接電話,這怎麼回事啊?

中小學教師中通常只有擔任行政職的人,辦公桌上才會有電話,而且行政職的人才有比較高的可能性讓你一找就到。沒當行政的,就是當導師、專任老師,經常都不會在辦公室裡,而辦公室裡的電話,可能都是數十人共用一個電話。當你一直打電話進辦公室,其實就在造成對方的困擾。

老師待在辦公室裡,很少會聽到電話響起就立刻起身去接的,因為本身都還有其他事要作,而且接起的電話也未必是找他的。於是通常都是靠近電話的人,被吵得受不了之後,才去接起電話的。因此,請想想,當你高頻率地一直撥打辦公室電話,想要找你要邀約的老師,會造成他什麼樣的困擾?

那麼應該怎麼約呢?直接撥手機可以嗎?不一定行得通。你有空打給他,但是他不一定有空可以回給你啊,對方上課的時候,哪有可能接起電話。如果你打手機聯絡,沒有聯絡上,也要記得留言,或是傳簡訊告知。

許多人不習慣打了手機留言,而是聽到沒人接就掛斷,過一陣子再繼續打,但是請你用你辦公室的電話撥一通給自己手機,你看看顯示的號碼是什麼?你有沒有辦法從你手機知道是那個單位找的?如果你們單位有總機,那麼對方回撥過去,就只能聽到「OO單位您好,請直撥分機號碼......」,誰找的?完全不知道耶,沒留言沒簡訊,對方就只能看到一串沒…

使用音效卡進行數位量測的課程

圖片
目前設計的這個專題課程是以STEM為主的課程,從上次的紙電路開始,現在開始學習使用麵包板和音效卡進行數位量測,知道類比訊號轉換成數位訊號的方法之後,未來再學習Arduino的數位量測與動作。

基本上就是用神經系統的運作去理解,那些感測器就是受器,像是電容式麥克風、壓電片、光敏電阻、紅外線接收二極體,而電腦或是Arduino就是中樞。

基本連接很簡單,就是麵包板和幾條線,還有音源線、立體耳機母座。



耳機母座和麵包板的結合,可以把訊號很方便地藉由麵包板的送入音源線,當然最後就是進入電腦了。



一開始建議可以先用電容式麥克風來做測試,電容式麥克風可以將聲音訊號轉換成電能。


然後也可以用壓電片來連接麵包板,這樣可以感測震動訊號,或是螞蟻在壓電片上行走的訊號


也可以用光敏電阻來感測光的訊號,配合雷射光就可以做越線偵測,或是可以感測日光燈的閃光頻率。



而這次的課程主要是學習用紅外線接收二極體來接收紅外線訊號,另外要搭配紅外線發光二極體喔。使用這個紅外線發光與接收的組合,是因為這個會比光敏電阻的反應還快一些。



以下就是教學的影片,先簡單介紹麵包板與麥克風的連結方式



接著介紹幾種感測器的連接方式,你也可以用並聯方式連接多個感測器,這樣就能進行更多的感測活動。例如用兩組麥克風可以測音速,用兩組壓電片可以測固體的音速,用兩組紅外線接收感應,可以偵測通過的速度。


硬體和電腦的連接,是把音源線插入麥克風輸入孔。如果電腦的輸入孔是耳機和麥克風做在一起的,那就要另外購買分接器,一端是三環四極的3.5mm公頭,另外一端則是兩條線,分別是耳機和麥克風的輸入母頭。

耳麥合一的筆電,通常它的輸入只有單聲道的,對某些量測來說不太方便。你也可以購買USB數位音效卡來當輸入的介面,但是缺點是USB音效卡的取樣頻率通常是44.1KHz或是48KHz,而電腦本身的取樣頻率是可以更高的。


關於取樣頻率還有計算時間差的方式,可以看下一部影片,此軟體是Audacity。


學生在學習量測方式之後,就要自己發揮創意準備工具製作量測裝置



最後則是由學生自己錄製一段影片說明量測的方式和計算方式

血糖恆定的遊戲

圖片
從協調講到恆定的時候,體溫變化和血糖恆定,是兩個蠻容易用引導活動來帶的主題。

我講內分泌的時候,會讓學生自己採血驗血糖,一共驗兩次。驗了第一次之後,再喝一杯濃濃葡萄糖水,半小時之後再驗一次,當然很容易看到血糖升高的變化。
寫在白板上的數據有兩個蠻特別的,一個是116變104,一個是118變93。兩個同學都是下課就去打球,一打鐘衝進教室就開始驗血糖,喝了葡萄糖水之後,過半小時再驗第二次。兩種變因的情況下,要看第二次都比較難,不過倒是可以看到兩個學生運動後立刻驗血糖,都驗到蠻高的數據。


玩完這個活動之後,我就想來設計一個互動遊戲,是幾個同學作角色扮演擔任腺體細胞,會分泌腎上腺素、胰島素、升糖素,三者互相協調把血糖控制在某一個範圍裡。


於是我就開始著手寫這個互動遊戲了,我從網上找到smoothiecharts這個js的library,讓開發過程非常簡單輕鬆,一下子就用js+html寫了一個簡單的遊戲,用瀏覽器玩就可以了。




檔案就放在雲端硬碟
https://drive.google.com/drive/u/0/folders/0Bzwhi7Oh9a5ZaFA4d3hkZ2UwMVU

把兩個檔案都下載了,放在同一個資料夾,然後用瀏覽器開那個bloodSugar.html就可以玩了。

遊戲會隨著時間變化出現進食、運動、睡覺等狀況,不同狀況都會對血糖值有不同的影響。

玩家必須隨時偵測血糖變動狀況,分泌不同的激素。血糖值要維持在70-110之間(兩條橫線之間)才會加分,超過或太低都會扣分。


電腦上可以用鍵盤按g分泌升糖素、按i降血糖、按e分泌腎上腺素(都是選用激素的英文首字),或是直接按按鈕也行。

玩eyewire遊戲來作視網膜細胞研究

圖片
人的神經元有數百億之多,延伸的神經纖維不計其數,究竟那些神經纖維怎麼延伸呢?是不是作個顯微切片拍張照就可以看到了呢?沒那麼簡單!

「這是用掃描式電子顯微鏡拍攝的視網膜細胞的一部分,可以看到神經纖維的走向」
「是嗎?到底怎麼走的?你告訴我啊!怎麼什麼都看不到」

(影像擷取自eyewire網站)
細胞是立體的,影像是平面的,所以需要把平面中屬於單一神經細胞的纖維挑出來,然後再一層一層拼接在一起。說起來很容易,但是做起來很困難。雖然電腦可以作這件事情,但是人腦更專長於視覺辨識,所以有沒有可能是大家貢獻一點腦力,作一些,然後電腦學著跟著作,然後作判斷分析呢?

有喔,現在這類型用群眾人腦外包的科學研究正火熱呢!MIT這eyewire計畫,就是其中一個。他們使用了掃描式電顯拍攝了老鼠的視網膜上的神經細胞,然後有來自145個國家,超過20萬人的參與。

作什麼呢?就是玩遊戲,像這樣影片一樣,把每張顯微圖片上,把屬於單一神經的纖維都塗上顏色,一層一層作,就可以建構出一個立體結構


遊戲畫面就是這樣



每次處理一個小方塊,大小只有4.5微米,只有神經細胞的一小部份。當每個小方塊都處理完之後,就可以看出神經元複雜的情況了。




而如果把周圍鄰近的神經元都3D建模出來以後,更能夠看到神經元之間複雜的突觸,是怎麼連結的。你可以從這個Cell Museum中看到這些細胞,他們包括了視網膜裡的雙極細胞和神經節細胞。




想玩玩的話,用臉書帳號登入Eyewire.org就可以了,網站有一步一步的教學。

網站也有提供教育者一整頁的神經系統相關教學資源,有影片、數位媒體等

用python分析 moodle 活動完成報表

圖片
事情要從讓九年級作個別化學習課程開始,當初是暑輔的時候開始進行,學生一週有兩節生物課,所以一週一單元的進度算是恰當。可是開學之後的課程是兩週一節,有的時候還會因為國定假日、段考等放掉,就變成一個月上一次課,最久的一次是一個半月上一次課。

所以大家的進度就會差很多,快得很快,慢得很慢,活生生的差異化。於是乎我得用不同的方式來掌握學生進度,moodle有個外掛Gismo大大幫助了我,只要選好人名之後,就可以即時產出報表,有紅色方塊的就是那個小單元有達到100分的。可是這樣會有一個缺點,有些同學如果當節怠慢沒作,我從這樣的圖表裡是看不到的。









還好還好,Gizmo可以調整時間區間,我可以看到在這段時間裡誰做了多少,於是我就可以規定每個學生該節都要通過五個或六個測驗。但是啊,還是有個缺點,我得上下來回捲動畫面,才能知道一個學生完成了多少。上課就變成我得常常作在電腦前捲來捲去,幫學生檢視他完成度有多少,畢竟學生可能不太記得啊。我心想,我應該把時間用在學生身上啊,怎麼可以在那邊捲來捲去的。





於是乎,開始想要自己寫一個程式來抓進度,一開始是想自己改寫Gismo的外掛,不過打開來看之後,根本就看不懂。還是乾脆自己動手寫好了。

這段時間剛好都在看大數學堂的大數據分析教學影片,就發現可以用python來解決問題,分析的對象就從moodle本身的「活動完成進度」報表來作。

我要作到能從這張報表產出橫條圖,而且我能改變統計的起始區間,還有橫條圖的顯示模式、班級類別...。更重要的是,要能不斷更新,讓我不被綁在電腦前面,只要螢幕投出來,師生都可以同時看到進度。




既然目標定好了,就是開始執行的時候。我覺得熟python的人,應該是一兩下就可以弄出來了,不過我是初學者,寫得差點想放棄。


好朋友美芳去參加論壇聽到的話,我覺得很棒
「不要因為做不到而說沒辦法,要為可能作得到而想辦法。」

雖然寫得很久,但是最後也做出來了,喔耶。


python的程式碼在這
https://drive.google.com/folderview?id=0Bzwhi7Oh9a5ZMHd5aVY2VFJnaTg&usp=sharing

用python每隔幾秒就去抓一次活動完成報表,分析之後做出一個會自動整理頁面的html檔,而那個檔就是呈現橫條圖。所以我只要python開了,瀏覽器也開啟那個檔案,它就會一直更新一直更新…

iJump考卷的試題分析

圖片
這篇喔,是結合以下兩篇的結果
用R作成績分析(2)-產出SP Table與視覺化呈現試題、學生與班級分析圖表
曬考卷喔-用iJump當主題作生物上冊第一次段考的試卷


考卷出得很有意思,我也盡量去出一些不是記憶的題目,但是分析出來會長什麼樣哩?

有一種出題的概念是希望學生寫考題時,由簡單寫到難,才不會打擊學生,不過我們出題倒是沒有說一定這樣設計就是了。看題目分析的難度也通常都是0.5以上,只有幾題是低於0.5的。





看了這個圖表就知道有幾題是有問題的喔,舉幾個例子來看喔

第12題難度低、鑑別度也低、問題注意係數很高
第40題鑑別度高、難度低、
第10題注意係數略高





以12題來說,當初出題的想法是讓學生寫C,但是仔細一點的學生會發現D也是符合題幹所敘述的,所以這就是老師自己被既有知識卡住了啊,後來這題就CD都算分了。

12.宣瑾玩完了原始地球之後,就穿越回到現在的地球。她從海平面起飛,每隔一段距離就去用生命探測儀去調查那個高度是不是有生物存在。請問當宣瑾飛到哪個高度之後,就偵測不到任何生物了?
(A)1 公里
(B)5 公里
(C)10 公里
(D)20 公里
第10題的部份,雖然都是課文裡的知識,只是通常不是學生讀的重點。所以分析時就會發現學生作答有一些異質性。
10.iJUMP 功能超多的,還能夠潛水呢!宣瑾駕著它潛入了海洋裡頭去採集海水。經過電腦分析之後,她發現海水裡具有許多礦物質,像是鈉、鈣...等。請問這些海洋裡的礦物質的主要來源是什麼?
(A)海洋裡的生物死亡之後,被細菌分解形成的
(B)陸地上的岩石被水侵蝕溶解,被河流帶到海洋
(C)存在於天空中的灰塵,因為降雨而被帶到海洋
(D)外星球的隕石、碎粒穿越大氣層掉落海洋形成的

第40題的部份,很多人都會選C,忽略了有些物質是進不去的。其實我不太想考這種因為小疏忽就會錯的題目,所以下次再出這樣的題目時,就會儘量避免這種考記憶的題目。

40.宣瑾仔細觀察細胞內的構造時,發現無論是細胞外圍的細胞膜,或是細胞內的構造(例如液胞、葉綠體),外圍都是有膜包圍起來的。請問那層「膜」的功能是什麼?
(A)支撐細胞,讓細胞穩固
(B)使膜內的化學反應可以獨立進行,不會受到膜外環境的影響
(C)保護膜內的環境,阻擋所有膜外的物質進入膜內部
(D)膜能製造出養分,提供細胞或細胞內構造充足營養

曬考卷喔-用iJump當主題作生物上冊第一次段考的試卷

圖片
設定一個主題貫穿整張考卷這事,好幾年前出上冊第三次段考的時候就曾經作過,那個範圍裡有很多疾病、症狀的名稱(糖尿病啦、心血管問題啦、中風),所以那時候我虛擬了一家人,裡頭就是爸爸中風、媽媽有糖尿病、哥哥有侏儒症之類的,結果考完以後,學生來問我「老師,你怎麼都知道我家裡發生什麼事情」「呃......」

我才知道原來世界上真的有巧合啊

那麼我第一次段考的題目這樣出,總不會有巧合了吧!題目主軸就是個時光穿越機iJump啊,故事都寫在小框框裡,如果不看故事,光看題幹也都是可以寫出來的。

聽學生說,一堆人寫完了之後都在看天花板,然後第二次段考拿到自然考卷時,好多學生很期待考卷上會出現iJump第二集啊,不過我們都是輪流出題,所以不會有第二集的,但明年我再出題,我也是有新的素材啊。

後來我自己用Moodle玩密室脫逃時,也是有把iJump放到題目素材哩。









用R作成績分析(2)-產出SP Table與視覺化呈現試題、學生與班級分析圖表

圖片
上上個月試著用R做了簡單的試題分析,一直覺得不過癮,於是繼續花時間鑽研怎麼用R再做出更有意思的試題分析,經過好幾天的嘗試之後,總算搞定了。

R的命令檔放在這邊
https://docs.google.com/document/d/1tphSeYBPWrgjmeQ3YS-abI37Xk73A1xGMXpiJtI6teg/edit?usp=sharing

分析的讀卡檔必須是utf8(無BOM)的文字檔,格式如下圖。如果是用windows的,用notepad++來處理文字檔比較保險。因為內建的記事本,會幫文字檔加入BOM,用R處理時就會發生錯誤。



可產出的圖表如下,直接做出成績分佈圖,還有全年級的成績盒鬚圖,紅線代表的是全部應試者的平均分數



對個別班級或學生有用的是「學生問題分析圖」,也就是SP Table(或叫做SP chart),可以看出那些題目是難題、易題,哪些學生有可能粗心,並且可以直接提供學生作為學習參考。



針對題目的分析,可以看這幾個圖,能夠看出哪些題目的難度低、鑑別度低或是注意係數偏高,然後再針對這些問題作質性討論。






以左上的難度圖來說,高的線段就是簡單的,所以學生作答時應該會覺得輕鬆容易,低的線段就是難的,學生作到那邊時就會得很沮喪吧。所以這張組圖應該就是視覺化呈現學生作答時的心路歷程吧。左下的則是把所有題目依難度高低排序出來,以這份題目來說,絕大部分的難度都是高於0.5。



通過率和難度算法不太一樣,通過率就是全部應試者答對該題的比率,難度則是用高分組和低分組的答對率相加除以2。不過兩者呈現的趨勢其實差不多就是了(高分組和低分組都是用25%去計算)

除了這些以外,內部還有一些數據分析的文字檔可以作為試題分析的參考。