對於GIS行業,可能很多人不是很瞭解,對我來說也不是很瞭解,在此呢,我就我自己的看法發表一下簡單的看法,有什麼不同的意見可以一起交流。

GIS雖說是屬於地理科學或者說測繪科學與技術的範疇,但是很大一部分和計算機、數學有很大的聯絡。對於一個合格的GIS開發人員,可能需要掌握的東西太多了,壓在我們身上的擔子太重了,下面就不同方面的開發人員所需掌握的技能做一個簡單介紹:

一、從開發的層次上來分

        GIS開發從開發層次上來劃分的話,一般分為底層開發和二次開發。

對於底層開發來說,需要的東西就很多,比如,你要實現GIS底層的幾何物件模型那麼就要熟悉幾何學及其相關的計算幾何知識,對於空間資料視覺化,你需要掌握計算機圖形學和相關平臺的繪圖API函式,比如windows的GDI等,也可以是OPENGL或者DX。對於空間資料相關的屬性資料管理,你需要掌握資料庫,不管是大型的還是小型的,開源的和商業的,你總得掌握一個吧。對於空間分析這樣的高階功能,需要掌握幾何學和運籌學相關的知識,比如最短路徑演算法,就這個東西,就值得你研究的。你如果想要開發地圖註記等模組,別小看註記都是一些文字,但是真正要配置的時候,這些文字需要怎樣排列和分佈,才會使地圖看上去整潔美觀,並且註記之間沒有壓蓋,可以說這事一個優化問題,你也許需要去看看一些優化或仿生類的演算法才能解決。你只要瞭解和掌握這些知識就可以了嗎?不,你還需要學習程式語言啊,這樣你才能開發出實際的系統。還有很多很多,就不一一列舉了。

      對於二次開發,以前的二次開發都是和GIS基礎平臺軟體結合很緊密的,這也加重了開發人員的負擔,因為你需要學習一門新的語言,比如AML,mapbasic等。後來隨著元件技術的發展,出現了元件GIS,比如mapobject,AO,AE,mapx,supermap object等等,從此二次開發人員就可以用通用的高階程式語言(c++,c#,java)嵌入GIS元件進行開發了。雖然有些演算法進行封裝了,但是你需要熟悉元件庫的相關API函式,這也是一件很累的事,相信學習過AO,AE的人都會覺得剛開始的時候特別難學。

二、從行業或者說應用領域來分

     1、網路GIS,在這個領域,你需要掌握計算機網路的基礎知識,這是前提,還需要學習各種前臺語言,比如html,javascript,css等,後臺伺服器端的語言需要掌握JSP或者ASP之類的。當然,你可以藉助於現在的成熟的網路GIS產品來開發你的應用,比如你呼叫google API,使用arcgis server搭建你的應用框架,還有各種的開源GIS專案。最近比較流行的flex和html5貌似是這個方面的開發人員比較好的選擇,這個領域我不懂,可能說的不到位。

    2、嵌入式GIS,可以看做是桌面GIS的延續,看你的嵌入式平臺,你可以選擇linux,windows ce,塞班,安卓,ios等,平臺太多了,這樣要求開發人員首先掌握平臺相關的知識,然後你才能開發嵌入式GIS程式了。需要掌握的語言根據不同語言來選擇。比如windows ce你可以選擇c++,#,vb。linux你可以選擇c++。塞班你可以選擇qt框架。安卓你可以用java,ios你必須使用objective-C語言。

    3、三維GIS,這是一個模擬真實地理世界的領域,三維GIS需要開發人員掌握C++程式語言,三維幾何圖形的演算法、三維視覺化與渲染的演算法,技術含量比較高,需要開發人員有很強的開發能力。其次,你需要掌握三維圖形API,opengl或者D3D都可以。

其次,如果是結合具體應用領域的話,你還需要掌握相關行業的業務知識。這也沒辦法,我想軟體開發所有行業也都如此吧?

GIS,希望明天更美好!