隨感 GIS開發的困惑

2022-01-21 21:15:57 字數 1851 閱讀 7875

從事gis應用開發也有3年了,但是做了些東西自己始終不滿意,不是不穩定就是效率低,不是功能雜就是不實用!

首先是ae開發,我必須說自己很欣賞arcgis的軟體設計架構和思想。但是在開發的過程中也確實遇到了很多問題。首先是效率問題,oracle的效率很高,可是建立在oracle之上的sde載入向量圖層,新增、刪除要素類卻很慢,這個讓人很費解。不全是資料量的問題,即使是乙個圖層也會有這樣的問題。ae過於龐大了,安裝了arcengine占用了太多的空間和記憶體,畢竟是互操作封送了資料。不知道「嵌入互操作型別」能不能解決這個問題!

其次是擴充套件性上,可能沒有任何一款軟體能夠開放到如此程度吧,想擴充套件自己的資料格式或資料結構非常困難。尤其是應用gis到工程領域還是有很多問題的。當然也有這樣的原因,由於ae的龐大,開發者往往不具備足夠的知識來洞悉其中的門道。確實,作為一名gis專業的畢業生,整個大學和研究生階段都沒有系統的講授軟體底層的知識。比如gis演算法,計算機圖形學,就算講了也都是皮毛,對於資料結構和資料庫等應用技術也都是自己摸索的。誠然學生最重要的是培養自己的學習能力,但是在從業後估計少有人能夠深入的再研究這些基礎的東西了吧。沒有系統的知識也很難去深入的進行二次開發。

第三個是穩定性,這個主要是開發者的原因,當然也有ae的問題。專案開發總是太龐雜,太亂。

現在所在一家三維公司有乙個自己的平台,從擴充套件性方面來說確實是提高了很多,可以做自己想要的渲染結果,但是卻也是有諸多問題:

一是程式版本很亂,不同版本的dll可能有不同的問題,可能會缺失其它版本所具有的功能。

二是整合了很多開源的**,拿來主義,存在很多不穩定因素。而且大家都懶的自己寫寫東西,連驗證有時候都不願意去做。專案任務分配時候根本不會給你那麼長的時間。一旦你說功能有了,領導就認為修改是分分鐘的事情。

三就是需求,專案的需求總是一變再變,導致做的系統總是很龐大,開發都沒有心情了。giser本來不具備行業知識,這個可以學習,但是想專業!難,很難,可能也只是能夠裝模作樣罷了,這樣浮躁的社會,從事三五年就能把行業的業務知識搞清楚了嗎?我覺得很困難。

四軟體的架構設計非常混亂,總體框架設計、許可權管理總是很亂,名義上是外掛程式式、rbac,但是也僅此而已。功能總是要完成了之後才說許可權的問題。gis不知道是不是都和主流的軟體開發脫節,不注重軟體架構的分層。圖形資料不好分層,業務上明明就是資訊管理,卻沒有什麼orm對映,邏輯分層這樣的東西。可能gis專業人員當專案經理根本就沒有很多軟體設計的經驗吧。資訊管理系統和圖形資料處理系統區別很大,和資料分析的區別很大,參與的專案總是把所有的功能雜揉在一起,乙個系統既包括資訊管理,又包括圖形編輯處理,還包括資料的計算和分析。對於gis圖形軟體尤其是3d軟體,採用網路總是要考慮資料的傳輸和載入問題的,載入向量資料越多越影響系統的執行效率,如果有影像資料就更慢了。業務分析功能往往是有中間結果的,這些資料沒有必要上傳到伺服器,所以儲存在本地。於是系統就成了這個樣子,可以載入基礎地圖資料,可以根據業務需要在sde中新建各種圖層,支援圖層版本註冊和編輯。有的時候需要從map中載入圖層,有的時候要從sde中載入資料,有的時候要從非空間的oracle庫中取資料。從map和非空間資料庫中獲取各種圖層、屬性和引數資料進行計算並將分析結果儲存在本地,在計算的的過程中可能需要從本地載入一些資料進行分析。這樣的系統總是很慢,載入資料慢,分析慢,連資訊管理都要卡,可能還會莫名其妙的崩掉。一會是聯機資料一會是本地資料,我覺得很彆扭,這個和arcgis這樣的通用平台有什麼區別?只是sde定死了,乙個非空間庫定死了。其實arcgis完全可以實現啊,而且分析功能用的還是gp。個人感覺如果是資訊管理乾脆做個b/s的得了,這樣還實用些,本來就是分許可權管理的嗎!如果是用於工程設計的軟體的話還是做個單機的算了,像sufer軟體那樣。把arcgis那套版本機制拿過來用也沒有必要非得聯機啊?人家本來就有離線版本啊。設計完了可以提交檔案也可以入庫啊!更扯的是本來已經很龐大的系統了還要同時支援聯機和離線!在加上沒有分層設計,所以各種條件判斷。為了保證程式不出問題,各種try-catch-log。

GIS開發 分享常用的gis演算法(C )

在系統開發中,有時會用到一些常用的空間演算法,引用一些類庫是可以解決問題,但是有時類庫的執行效率比較慢,引用的東西比較多,如果需要的方法不多,可以寫一些簡單的計算方法。下邊分享幾個常用的gis計算方法 判斷點是否在麵裡 public bool ispointinpolygon listpoly,cv...

GIS開發方式

gis小白,正在慢慢學習。如有不對不妥的地方,請大家指出。總結一下gis的開發方式 1 底層開發 c,c 難度很大,所需的人力物力要多。是跟硬體 動態庫 函式庫打交道的底層開發。大多數情況下不會採用這種方式。2 二次開發 vb,vc c 等 1 嵌入式開發 非gis專業人員常採用的技術之一 只有少數...

GIS開發學習記錄

日誌 7.14 1 4 2 1 e 1 7.25 1 5 2 1 e 1 1.1 main屬於方法,不能在方法中宣告方法,需要在main外宣告類 方法,才可在main中呼叫。1.2呼叫方法時,需先宣告類。class classname new class 1.3 想傳遞位址引數時,引數前加ref即可...