GIS之路在何方——兼論ArcGIS(本文僅探討GIS軟體的未來發展趨勢。純屬自娛自樂。觀點有失偏頗,歡迎評論!)GIS是地理資訊系統的簡稱,作為一個行業,其更應該具有軟體工程的屬性,而與地理學關係不大。所以,各大學地理系(偏文)開設此專業,不太適合。GIS是個技術性很強,卻沒多少理論價值的學科。搞自己的GIS軟體,難度很大,但也不是不可行,如北京超圖和武漢中地就做的很好。GIS軟體經曆了整合式、組件式、Web服務式等幾個發展階段。整合式已經被淘汰,可能為數不多的系統躺在國外大學的研究所裡。組件式雖然發展多年,但仍不過時,因為應用系統的千差萬別,需要靈活搭建應用平台,所以最好的辦法是做成組件式。目前應用領域越來越寬廣。可以設想,組件式這種模式還會存在相當長的一段時間。需要指出的是ESRI ArcGIS的組件式GIS產品,如MapObjects(MO)和ArcObjects(AO)。我覺得AO好象是在MO基礎上開發出來的,或者至少受了MO的啟發。但是AO走了一個極端,就是凡物則組件。就象Java語言,萬物皆是對象。這其實是個誤區。任何事情到了極端都未必是好事情,就象AO,複雜龐大到讓人望而生畏。我自覺也算熟練開發人員,目前還不敢用AO來做項目。給我的感覺,設計AO的人應該是學院派。接著,ArcEngine產生了。因為沒使用過,所以不好評論。如果說ArcEngine是用來彌補AO的缺陷的,那麼不正說明AO設計上的失誤麼。MO是一套ActiveX對象的體繫結構。設計思想簡單實用。但也可以看出它是用比較老的Windows 組件開發語言架構(我估計是MFC)。有些地方寫的還是敷衍了事,功能較少,談不上體系。在大項目中使用MO會給程式員帶來很大的困擾。比如符號化、線型化、圖層配置、地物編輯、多資料來源、列印等等。而這些基本的GIS功能,是客戶需要的。不能期待一個使用VB的開發人員來完善MO的這些功能,如果無法深入到MO內部,這些事情無論如何是做不好的。這樣就存在一個悖論,用AO太難了(起碼對大多數程式員),用MO太簡單了(簡單是指MO本身的功能太簡單,而無法完成業務)。這個現實的問題是迴避不了的。ESRI設計AO本來的目的是替代MO的,但是MO目前的市場並不弱,說明AO本身的局限導致AO的應用出現了問題。AO的設計缺點是太過龐大、複雜、混亂。龐大是指軟體的尺寸和規模;複雜指對象之間的關係錯綜複雜;兩者結合起來就是混亂。設計需要匠心,要精巧和細緻。這樣寫出來的代碼才精簡高效。而ESRI以為搞了一套AO就萬事大吉了,所有GIS開發,就是AO組件搭台唱戲的過程,這就錯了——天下沒有不變的道理。自己開發組件GIS也需要吸取MO、AO的特點和教訓。MO太簡單、AO太複雜。所以可以折衷一下,只做必要的事情,不做所有的事情。還有就是隱藏複雜於簡單的背後。當一個人習慣簡單的東西,才能適應越來越複雜的東西。這是一個過程。我的看法是:未來的GIS要發展出類似遊戲一樣的行業應用來。GIS地圖引擎其實類似遊戲引擎。這樣看,無論AO還是MO最終都要淘汰。(那麼象AO那樣設計出複雜的介面幹什麼呢?)如果以為掌握了ESRI的開發工具就可以萬事大吉了,那就錯了。未來的2次開發只能越來越簡單,沒有人會花幾個月甚至半年的工夫學ArcObjects,有那時間還真不如打打遊戲有意義。目前地圖的顯示太枯燥、刻板,當然這也是工程的需要。但是,一個大膽的設想就是未來的GIS必須給我們構築一個虛擬現實的世界,這個世界是有生命的,不僅僅是枯燥的點、線、面,要有建築、陽光、空氣、綠色植物、水和情感——它應該是現實世界的再造。當我們漫遊在GIS的世界裡,就進入一個現實的世界,這裡有一切我們需要的東西:你可以看到KFC店裡香噴噴的雞翅;可以看到南京路上攢動的人群;可以在西湖裡看自己的影子;你還可以開著越野車撒歡地跑在鄉村公路上。Web服務式的GIS其實是一種應用模式。它與組件是不矛盾的。任何一個大型軟體都要細分成單元,所以組件式的發展會與軟體工程密切相關。服務式的GIS簡化了對客戶的要求,所以必將成為占統治地位的應用模式——WebGIS。
無論哪種GIS,都需要構築一個豐富多彩的世界。這就是GIS未來發展的方向。我預計5年時間會出現這樣的產品。如果沒有,我來做一個 。