A. mapserver的mapfile文件怎麼調式
一、手工修改:
這種方式檻太高,首先需要了解mapfile文件的結構,需要熟讀Mapfile寶典《Mapfile
Reference》,搞清楚每個參數的詳細含義,一般人沒有個把星期是搞不懂的。
二、其它軟體輸出:
目前部分開源軟體支持輸出MapServer格式的文件,像QGIS
,MapWinGIS等,ArcGIS也有相關的插件可以輸出mapfile,但它們輸出的文件往往會丟失很多信息,像符號等很容易丟失,而且容易出錯,在MapServer中無法直接使用,還需要打開做進一步修改,也就是說還需要了解Mapfile的文檔結構。
我一直在想為什麼MapServer就沒有配置工具呢?其實,關於MapServer的工程文件配置界面,已經有其他人做過相關的開發,有幾個這方面的開源項目,都是BS架構開發的,個人感覺比較好的是maplab,做的比較深入,功能也相對比較豐富,但不知道什麼原因,這些項目到目前為止都停止開發了,maplab最後的版本可能是maplab-<?xml:namespace
prefix = st1
/>,比較老了,已經不支持現在的MapServer5,,可能是維護起來比較困難,大家都放棄開發了。
工作中我們也有這方面的需求,開發一個mapfile生成工具,這個光榮的任務是由我來承擔的,由於我以前是做組件開發的,相對來說更熟悉CS架構,並不打算用BS的方式來開發。MapServer可以生成的C#類庫,本來想用它在C#中直接做用戶界面,但不知道什麼原因,在ASP.NET項目中用C#調用這些類庫是沒有問題的,但在Windows應用程序項目中便問題多多(難道是封裝出來的類庫只能再BS架構中用?)。時間緊迫沒精力去研究太深,後來我索性用自己最擅長的技術了,管他麻不麻煩,先實現了再說。具體實現就是將MapServer的C類庫重新封裝成了一系列COM介面,然後再在C#中調用自己封裝的介面來做界面,很快地便實現了一個小工具。有人可能會問,為什麼不直接用VC做界面,沒什麼原因,就是我不喜歡,太麻煩,C#開發界面多方便,呵呵。
總體來說我對這個小工具還是很滿意的,功能也不多,就像是一個小型的GIS軟體,由地圖顯示、圖層列表、工具條和菜單幾個部分組成,可以直接打開MapServer的mapfile文件並顯示,如果打開map文件出錯可以顯示詳細的錯誤信息,也可以新建一個mapfile文件,直接向mapfile中添加圖層,對其配置符號,設置標注,可見比例尺等。對打開的mapfile文件可以進行縮放等各種瀏覽操作,mapfile的各種屬性配置基本都可以修改並實時的體現在工具的顯示界面中,修改到自己滿意了之後,可以將mapfile文件輸出,直接在MapServer中調用。
甚至可以加上屬性查詢、空間量算等功能,所有MapServer能實現的功能都可以做到這個小工具中,當然這些都是後話了,工作中不需要這些所以也就沒有實現。
完成之後,發現這就是一個小型的桌面GIS系統,雖然開始開發的時候感覺這么做走了彎路,現在想想這也是一條可取之路,開源軟體的更新頻率很高,如果MapServer的底層庫函數發生了變化,也只需要將它的C類庫重新編譯一次就可以繼續使用了,即使MapServer擴展了功能模塊,我們也只需要再增加相關的介面便可以。維護起來相對比較簡單,軟體的持續更新也就有了保障。