最近參加面試,面試官問我"你的開發經歷主要都是二次開發是麼?" 我想了想回答"是"。這個問題在一般公司是不會被問到的。 這是gis行業的乙個特有含義的說法。 二次開發,基本的意思就是你開發水平有限,和真正的程式開發人員有一定的差距。
其實我從開始搞軟體開發一直都是在做二次開發,開始是做.net framework 然後是spring framework之後是ao,ae 在之後skyline,google map api,baidumap api等等。對還有jquery。不借助第三方介面完成的原生**好像就只有html和css。如果我作為乙個普通開發者貌似經歷很豐富,可能待遇也不錯。要是作為乙個giser,在gis行業就比較遺憾了,不管你水平如何你都是二次開發。
我剛入行是不怎麼會寫程式的,總覺的寫程式是個深奧的事情。做了5年的開發回頭看看,這是個體力活。軟體行業其實也和gis一樣,經過多年的積累產生了很多封裝好的sdk,能用來完成自各樣的任務。絕大多少的程式設計師也會借助這些sdk來高質量的完成自己的工作。要是不精通幾個第三方的框架,那你做的東西肯定需要多化不少時間來完成工作。 這種「二次開發」在軟體行業被稱作是否熟悉某個框架,而這點對乙個開發者來說也是優勢之一。
整個網際網路行業的快速發展也要求開發人員能夠借助第三方的框架來高效的完成軟體開發。gis專案開發是一樣的,使用者沒辦法等你很長時間讓你去開發乙個高效優質的演算法。他們只希望快速的得到結果,滿足他的需求。所以通過二次開發來滿足使用者的需求就是乙個非常合適的解決方案。
而作為乙個合格的gis開發者,除了掌握必要的軟體開發技能外還必須掌握普通開發者不用掌握的技能。
你最好了解地圖資料的生成流程,知道地圖是怎麼來的。會通過gis軟體進行向量化,能處理遙感影像資料,會使用測繪儀器新增空間資料。不敢說精通至少應該會。
其次你對空間資料型別也需要深刻理解,地圖資料可以分為兩大類。向量資料和柵格資料。向量資料可以分為點,線,面三大類,在cad裡面還會有復合圖層這種型別。在oracle spatial中有六種描述方式(point、linestring、polygon、multipoint、multilinestring、multipolygon)。柵格資料就是,可以是衛星影像,dem,地圖切圖資料。這些資料都是你在程式開發過程中除了string和number型別之外的資料型別。
同時這些資料還必須在乙個統一的體系中,一般稱作座標系統。上面說到空間資料都是基於某個座標系統來進行生成和管理的。座標系統常用的橢球大概有3種,這基礎上還有兩種表達方式地理座標和投影座標。他們之間可以相互轉換。這也是非gis專業開發人員最頭疼的部分。
當你理解上面所有內容後你還需要不斷深入學習arcgis產品體系,skyline產品體系,國產各種gis專業軟體來管理和應用空間資料。如果要想熟練的進行gis軟體的二次開發絕對不是查查文件就可以的。開發介面一般都很抽象,除了具備專業知識你也要會使用這個軟體,知道他能做那些事情。你才能明白那些介面是幹什麼的。知道介面能幹什麼,想實現起來也沒那麼容易。比如你想做個最佳路徑分析,絕對不是傳入起點終點那麼簡單,這個需要道路資料建立拓撲關係,如果分析錯誤,這個問題你就要用你的gis專業知識從頭找原因了。
系統開發階段其實比普通的開發者需要知道的還要多,因為你資料庫中多了6種空間資料型別,也多了不少空間分析的儲存過程。普通系統中該有的資料表和業務邏輯也乙個也少不了,部分業務內容還需要與地圖互動。
gis的開發人員的知識儲備和綜合素質的要求遠大於普通開發者。為什麼gis二次開發這麼不受待見。很不理解。
怎麼破呢?放空自己,忘記gis。 做自己想做的事情。
關於二次開發
首先,看他的目錄結構,知道每個資料夾,甚至每個檔案是幹什麼的,這個常用的discuz等都有相關的資料,並不是所有的檔案都要一一看懂 其次,他的模板語言語法是怎麼樣的,定義了哪些全域性變數 全域性陣列 常量。再次就是看他的核心類 核心函式是怎麼寫的。對架構感興趣的,可以看看他的路由解析類 控制器類 資...
postek二次開發 POSTEK二次開發介面
例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...
mcms二次開發 YzmCMS二次開發手冊
摘要 yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有一.yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口...