網頁

2010年9月6日 星期一

MapGuide_OracleSpatial或SQLSpatial圖例顯示問題

越來越多案子都使用會使用Oracle Spatial跟SQL Spatial來當作空間資料庫,但因為上述這兩種空間資料都沒有一般我們認為應該一個表格只會存在一種型態的限制,也就是說一個表格內我們可以混雜的存放點、線和面的資料,至於要不要混著儲存,或是拆開存放當然都還是要看規劃而定。

因為以上的原因,當MapGuide的資料來源是上述的空間資料庫時,MapGuide studio會預設"你想要同時顯示三種型態"的資料,也就是像下圖這樣,擁有點、線、面的樣式設定。
第一次看到的時候你一定會想,MapGuide Studio實在是太貼心了,但是當你使用他預設的圖層控制區塊來顯示時,你會發現全部的圖都有一個節點,攤開以後分別顯示你設定的點、線、面樣式(左圖),而我們所希望見到的應該是像右圖這樣。

恰巧今天又處理到這個問題,之前都是用筆記本來存放一些小技巧,今天剛好又要做一次,就順便截了圖。所以這篇主要就是要說明,我們要如何在使用Oracle Spatial跟SQL Spatial當空間資料來源時還是讓MapGuide保有正常的圖例顯示。

步驟:
1. 輸入http://localhost/mapguide2010/mapagent/index.html進到Web Tier Tests頁面。

2. 點選GetResourceContent功能。(輸入你要改變圖層的ResourceID,EX:Library://TPSW/Layers/LNLayerName.LayerDefinition)

3. 按下Submit,輸入MapGuide的帳密,就可以得到該圖層的XML檔案。(當然你也可以藉由程式來獲取XML檔)

4. 可以先嘗試把節點收起來,就可以發現一些很熟悉的設定。

5. 接下來你就可以依照你的需求,把不要的刪掉。比如說你只需要點型態,就把PointTypeStyle留下來,LineTypeStyle跟AreaTypeStyle刪掉。(我是建議不要在這邊對樣式做編輯,反正Studio有UI介面可以編輯。)

6. 接下來我們回到Web Tier Tests點選SetResource的功能。輸入剛剛匯出的ResourceID,並且選擇要匯回去的XML檔案。

7. 按下Submit,就可以回到Studio裡面看看結果。


通常我們使用Oracle Spatial跟SQL Spatial不太可能只有一個圖層需要做設定,難道要一個一個匯出來改完再匯回去嗎?你有兩個選擇:
1. 寫程式來批次,其實就是寫一個改變XML的程式。(可以參考改XML)
2. 第二個就是對匯出來的XML做一些小改變,就匯回去,節省匯出刪型態的時間。

沒有留言:

張貼留言