2008-03-28

學生車禍地理訊息系統 - Accident GIS

我知道我是口譯,所以我不應該做這種東西,但是有時候我就忍不住... :D 這次為什麼有做出這個呢?

我們學務處雖然會記錄車禍,但是第一,他們知道的車禍只是學生通知教官的,第二,他們只會記錄每月多少次車禍,多少人受傷,然後公告這些數字。不過,他們不會記錄(或至少不會公告)車禍是誰的錯,也不會公告哪裡發生。

我覺得這對學生不太有用,所以考慮做出這個GIS (Geographic Information System)。Google幾年前已經開始提供GMaps,但是近一年多才終於有台灣的地圖資料。GMaps的API好像也還一直在變化中,但是平常的變化是增加,不是減少。如果你自己也想“玩”一下,可以先看官方的blog

如果你覺得那些都好複雜(就像對一些人開啟一台非Windows電腦一樣“複雜”),不用擔心,我在這裡會告訴你一個很簡單的方法。你知不知道Google Docs?這個服務原來只要讓你在線上建文件或工作表,後來人們發現其實可以把這文件經過分享連結到Gmaps - 或者其它服務。

意思是,我只需要一個HTML檔,放在我的web server,改一些連線的資料,然後永遠只需要在工作表裡面加資料,不用再動HTML檔。有沒有興趣?那我跟你說怎麼做。

我們先需要HTML檔,所以我們最好到我的GIS,在那邊按Ctrl-U(view page as source),然後存檔。之後你當然需要一個適合的地方可以放這個檔案。這可能是一個小小的網頁空間,但是也可能是你自己的伺服器。決定這個位置之後你必須申請自己的Gmaps key。你要在你的網站使用GMaps的地圖,你先需要有連接的key。

下一步:工作表。我們在Google Docs建立新的工作表。請建這些欄位(在第一行每個欄位寫一個名稱): rank, date, long, lat, acc, resp, text,就像這個圖:


說明:rank是排名位置,每次比行少一個。rank決定在網頁上列的順序。date是日期,當然。你可以用別的寫法,但是這個比較簡單使用,也可以很容易讓電腦以日期排序。acc是學生車禍時的交通工具。我原來想用漢字,但是GMaps在這裡好像還不支援。所以我用簡單的數字:1=走路,2=腳踏車,3=機車,4=汽車。resp要表示車禍責任:1=對方,2=學生。而在text可以寫簡單的車禍說明。

還有兩個:long跟lat。這個是地理位置,我們會用一個工具讓我們知道這些數據:getlonlat。你可以在地圖上找車禍的位置,點那個地方,就可以知道數據。

因為我們網頁要讀工作表的資料,我們必須分享它。(所以,不要記錄太私人的資料!)請點"Publish",然後"More Publishing Options"(更多發佈選項)。我們要把檔案格式改成Atom,然後做出URL。那個URL會有這個格式:http://spreadsheets.google.com/feeds/list/[spreadsheet key]/[worksheet id]/public/values

我們需要的是spreadsheet key跟worksheet id。有這兩個,我們回到原來的HTML檔。請你把var param_wsId =的數據改成自己的worksheet id,然後把var param_ssKey =的數值改成自己的spreadsheet key。

之後只有兩個地方還要修改:一個是地圖下的說明。你可以完全刪掉或修改一下。另一個地方在HTML檔的下面。如果你不想知道有多少人有誤打誤撞到你的系統,你可以把一整段刪掉。如果你想用Google Analytics,你最好建一個帳號,然後把我的code換成自己的。

就這樣,這麼快就可以有一個學生車禍GIS。如果有改善的建議,可以在這裡提出。對了,你可能有發現,雖然我在半年前已經做出來了初期的版本,但是我的GIS裡面卻沒有很多資料。沒錯,這就是我們學校的特色:沒有人對任何事情有興趣。希望你的學生不會這樣。

No comments: