2009年6月25日 星期四

大型影像的網頁呈現方法

大型影像在網頁上的呈現,常使用的方式為資料細緻層次(Level of Detail, LOD)的技術,其中影像金字塔是常用的技巧。簡單的說就是將大張影像先分層處理,每層按固定的方式切成同樣大小的圖片。這樣一來大圖的呈現就如同Google Map一樣快,也就是用空間換速度。詳細地原理可以參考維基百科-http://en.wikipedia.org/wiki/Pyramid_(image_processing)

處理好的影像金字塔圖片可以由類以Google Map API的javascript API呈現在網頁上。例如以下的網站,就用它來顯示醫學的病理樣本。http://informatics.med.nyu.edu/virtualmicroscope/viewer/124

2009-06-25_165105

看來呈現比較簡單,但是大型影像要如何預先處理呢?

有幾個方式

1.自行開發

全部都自己來寫程式,這個程式高手可以作得到。中研院的GIS中心也作得很多影像地圖的切割處理。

2.免費軟體

推薦使用Zoomifyer  http://www.zoomify.com/。如何使用 可以參考這篇 http://content.ndap.org.tw/index/?p=830。處理好的圖,若要用在地圖上,可以Worldkit這個免費的Flash軟體整合於地圖上,網址:http://worldkit.org/

當然還有很多,請大家自己去找,例如 Open Source的軟體。

3.商業軟體

Deep Zoom Composer是微軟出的也免費的,可以下載使用。
http://www.microsoft.com/downloads/details.aspx?FamilyID=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&DisplayLang=en

它功能也不錯,不過它是使用Silverlight的技術。但強者應該可以把它改成由Google Map API顯示。

4.使用影像金字塔的程式庫

最後一個比較特別。微軟已經將此功能實作在 Sliverlight的API中,可以直接在您的程式中使用它來切圖及呈現。Sliverlight DeepZoom API的截圖資訊如下。

2009-06-25_163418

也因為如此,微軟較新的軟體都加入了影像金字塔(DeepZoom)技術,例如 MS Lab中 Powerpoint的 pptPlex (好玩…有機會大家試試吧)及作照片3D環景 Photosynth…等。對Photosynth有興趣的人可以看這篇 http://content.ndap.org.tw/index/?p=958。對Powerpoint的pptPlex有趣興的人可以看看以下這影片。

使用DeepZoom開發而成的大圖瀏覽程式的好處是不須更動原本大部的系統,只需將呈現的部分交由此程式處理,即可達到快速流暢看圖之目的。

另外還有兩點好處

1.保護原始的圖檔

原始的圖檔路徑及檔名使用者的瀏覽器端幾乎是無法得知,因為封裝在Silverlight程式中,就算破解取得也是大量的處理好的小圖路徑。

2.放大縮小非常順暢平滑

Sliverlight DeepZoom在不同圖層之間會作圖片放大/縮小的效果,讓使用者幾乎感覺是無層縮放。

以下是一個例子,使用Sliverlight API,第一次呈現大圖時動態將大圖切圖後,呈現在網頁上;第二次及之後就可以很順很快的瀏覽大圖(第二次後直接用處理好的圖片)。因為此青銅器圖片版權之因素,無法讓一般大眾下載,但是透過此技術即使不下載也可以看見自己有興趣的細節。

2009-06-25_161509 

下次遇到大圖的呈現,就不要再用按縮圖看大圖的方式,來試試上述的個種方式吧。

2009年6月23日 星期二

Google Map上如何呈現大量的線段資料

最近有人問我如何在Google Map上呈現GPS Log的資料,一段路線就可能就包含上萬點。對我來說最簡單的方式即是作成Tile影像圖層在套疊在地圖上。但是他的需求是需要圖示沿若在線段上移動,這點就沒有辦法用簡單的Tile影像圖層來作了,需要在javascript中有實際的線段資料。於是跟他聊了一會,使用一些經驗法則來處理,例:依地圖的Zoom Level來簡化資料量,再依據這個想法實作一個方式處理。

沒想到Google及其它研究機構提出一個完整的方式,即可以直接用它即可。

一、先使用Encoded Polyline即大量資料縮小即編碼

Encoded Polyline的演算法說明:
http://code.google.com/intl/zh-TW/apis/maps/documentation/polylinealgorithm.html

線上編碼工具

2009-06-24_100145

http://code.google.com/intl/zh-TW/apis/maps/documentation/polylineutility.html

二、在程式碼引用

程式裡面有三個參數可以調整,如下。

verySmall=0.0008,
numLevels=9,
zoomFactor=4

可以根據需求來微調。Encoded Polyline程式的部分如下。

2009-06-24_100617

結果如下,仔細觀察可以發現,Zoom Level值愈小,線條愈簡單,Zoom Level 0~7都僅是簡單的兩點。
Zoom Level 14,線條已經可以細到完全在道路內了。

重點,整個程式載入很快,且使用起來不會lag,有需求的人,趕快改用這個方法吧。

Zoom Level 4

2009-06-24_101129

Zoom Level 7

2009-06-24_101148

Zoom Level 8

2009-06-24_101159

Zoom Level 9

2009-06-24_101322

Zoom Level 10

2009-06-24_101331

Zoom Level 11

2009-06-24_101341

Zoom Level 12

2009-06-24_101358

Zoom Level 14

2009-06-24_101556

更多Encoded Polyline資訊

http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/PolylineEncoderClass.html

Ajax Map Demo

http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/example2.html

Falsh Map Demo

http://gmaps-samples-flash.googlecode.com/svn/trunk/examples/PolylineEncoding.html

2009年6月20日 星期六

AR(擴充實境)最近的情況及AR實作

AR在手機上的應用,最早只是國外實驗室的Demo,後之有看英文網站在介紹,不過沒時間告訴大家,現在中文網站也有介紹了,而且已是商業化的軟體。大家可以過去看看,詳情請看http://taiwan.cnet.com/crave/0,2000088746,20139025,00.htm

重點要有GPS、電子羅盤及影像處理技術,就可以作出這樣的運用。看來要內建此功能在汽車的擋風玻璃上的時間不遠了,當然之後就是內建再眼鏡上。

另外 沒有高檔的手機要怎麼辦又想玩AR怎麼辦,你可以玩玩Open小將的AR

如何玩請參考 http://www.wretch.cc/blog/thebz1/20629474&page=4

 

若不喜歡Open小將,只喜歡海棉寶寶怎麼辦。

你可以使用免費的 Google SketchUp加上AR-media Plugin(試用版30秒限制)。步驟如下

  1. 安裝Google SketchUpAR-media Plugin
    2009-06-20_112050
    AR-media安裝完要設定一下SketchUP Plugin的目錄
  2. 列印出http://www.inglobetechnologies.com/en/products/arplugin_su/download/Marker.pdf
  3. 安裝好您的Web Cam(網路攝影機)
  4. SketchUP中尋找您要的3D模型,例如:海棉寶寶,之後下載
    2009-06-20_112552
  5. 按下AR-media按鍵鈕
    2009-06-20_112815
  6. 把印出來的紙在web Cam前面晃晃
    p.s.試用版的AR-media每次有三十秒的時間可以玩

當然您若嫌海綿寶寶太幼稚,不符合宅的感覺,您也可以換成以下的3D模型。

2009-06-20_113417

不過我猜最多的運用還是用在建築上,這就靠大家發揮囉~

使用QGIS將ESRI Shape檔轉換座標系統-以TWD67 TM2轉WGS84為例

之前大家一定常用中研院提供的工具,例如:ShpTrans之類的程式,可以將ESRI Shape座標轉換。

程式來源http://www.ascc.sinica.edu.tw/gis/ISTIS/tools.html

若是遇到座標系統,ShpTrans程式不支援,或要自訂座標系統的參數,這時您就可以使用QGIS來轉換。

轉換步驟如下。

 

一、確定有座標系統的定義

理論上,QGIS裡有的座標系統都可以互轉,如果沒有該座標的定義,請自行新增一個方法可以參考 這篇

2009-06-20_091638

二、將欲轉換的圖層正確指定座標系統

圖資使用運研所的TWD67 TM2 shape

2009-06-20_093003

1.開啟Shape檔,編碼選System,台灣的System預設為Big5

2009-06-20_093440

2.指定此圖層的座標系統,您也可以跳過,之後再指定,如下一步驟

2009-06-20_093533

3.指定圖層的座標系統

2009-06-20_094002

三、轉出WGS84的Shape檔案

1.請選[儲存為shapefile]

2009-06-20_094140

2.指定檔名及資料編碼

編碼選擇我會建議使用UTF-8,這樣Shape檔就可以支援更多的中文字(如:堃)及多國語言。

不過ArcGIS要支援UTF-8要改登錄檔,挺麻煩及危險,詳細請看這篇

2009-06-20_094347

3.選擇WGS 84

本人習慣打WGS84的EPSG ID -4326來快速找,為什麼知道是4326呢?沒什麼背起來就對了。

2009-06-20_094512

4.完成

2009-06-20_094524

以上三個步驟學會了,您想轉換任何座標系統都沒問題了。

2009年6月11日 星期四

Google 資料庫= Google Tables

Google Tables顧名思義就是資料庫的表格。雖然有Google試算表也是類似的功能,但是Google Tables更接近Web Database。Google Tables有實作資料作的許多功能,例如:檢視(View)、甚至資料庫鮮少有的圖表功能。

 

可以支援Google 試算表及個人電腦中的Excel檔。

可以分享記錄及表格

可以自動將地址Geocoding(第一次將欄位指定成Location,再切到地圖檢視),

 

由電腦上傳至Google Tables的Excel表

2009-06-11_170310

修改欄位名稱及型態

2009-06-11_170351

切換至地圖檢視(也有面量圖、統計圖表、時間等圖表)

2009-06-11_170331

就可以在地圖上看見這些地點的分佈,可惜不能把定位好的經緯度及誤差顯示在資料表中

2009-06-11_170958

這會不會太簡單了?看來愈來愈方便。

網址 http://tables.googlelabs.com

2009年6月5日 星期五

Google 街景 新增功能

多了輔助角度及移動導覽功能,讓人使用上更直覺。圓形與矩形會跟著滑鼠移動到不同的位置而呈現。

圓形代表移動至該位置

2009-06-05_091058

矩形則是形動至該處且改變視角,有些會有放大鏡提示,則會自動放大。

2009-06-05_091208

移動過去後,要怎麼回到上一步呢?請按左上角的按鈕,如下圖所示。

2009-06-05_092254

雖然沒有很大的技術突破,但是讓使用者門檻更低亦是很重要的事。而這也往往產品成功的關鍵。

一個成熟的產品,能更持續關注這點真是了不起。

另外有個小道消息,不知道是不是正確與否,那就是台北的景街服務要在六月底上線服務。

可能因為金融海嘯原故,台灣也可能僅作台北的部分。

大家馬上來玩玩吧!


View Larger Map

2009年6月3日 星期三

世界核能發電廠

大陸寫的核能發電廠的簡介,約有全世界四百個核電廠位置。

詳細文章 http://www.williamlong.info/google

kml下載 世界四百个核电站

2009-06-04_134751

2009年6月2日 星期二

Google 地圖中心座標查詢

 

之前介紹 地址查詢bookmarklet http://gis-tech.blogspot.com/2008/09/bookmarklet.html

有時侯要知道Google Map的上的座標,可以用這個bookmarklet,安裝方法如上介紹的Bookmarklet。

程式碼如下..

javascript:var%20m=gApplication.getMap();if(%20m%20){void(prompt('lat,lng',m.getCenter()));}

不過記得哦!座標是地圖的中心點座標。

2009-06-03_134034