VC2010MFC下的ArcEngine開發(一)

      一個月前就想開始寫這個專題,因爲參與一個項目被擱置了,那個項目開發中期涉及SDE的效率,也是第一次因爲效率被陷入泥潭,以後專門寫個文章好好總結一下這個事情。

      開始這個題目吧,先列個問題清單。

      1、爲什麼用VC寫?

      2、爲什麼是VC2010?

      3、爲什麼要用MFC框架?

      4、這樣架構能解決什麼問題?

      真正的程序員用C,真正的ArcGIS二次開發人員用VB,但是真正的ArcGIS的COM開發用VC。這是第一個問題的答案。因爲經常寫一些組件給其他程序員用,所以我用VC。在這個過程中,我慢慢掌握瞭如何使自己寫的COM應用於開發,這個過程不是技術上的,而是感覺上的。舉個例子,我基本不考慮是不是這個功能能不能寫出來,而是我的接口怎麼命名,接口下的方法我該如何組織,參數如何表達,這個是ESRI的底層應用開發人員在做的事,我也在做同樣的是。只是我偏應用些。事實上,經歷了移植,多語言的調用,以及非託管的效率,也會慢慢轉到用VC來開發。

      爲什麼VC2010是非常好的選擇呢,這麼說吧,UI集成BCG的VC2010,界面效果就是好。這是自MFC4.2版本以來最大的改變。更豐富的類庫,更友好的開發界面爲什麼不用?我用VC6寫了四年的程序。其間的2005,2008都沒有心動,哈這次終於忍不住用VC2010了。只是VC2010的程序需要安裝X86runtime,不過這個又有何妨,至少比.netFrame2.0強,好歹我也是非託管的?

      用MFC可以解決大部分的UI建設。2010的MFC嚮導做得還是很好的。

      爲什麼這麼解決呢,我是不是在造輪子?不是的。複雜的問題常常被簡單的表面現象所迷惑。ArcGIS的框架是對基本問題的抽象,有沒有考慮過爲什麼要分Catalog和Arcmap呢?我的答案是製圖和數據生產管理的需要。我的框架要解決的問題是什麼呢?很簡單,解模型,數據分析,結果展示,出圖。由此我需要一個類似ArcCatalog和ArcMap集成的MFC框架下的應用。

     回答了上面的問題,就可以開始開發了。

    要準備什麼呢?

   1、理解VC的部件

   2、熟悉AO

   3、知道如何寫COM

   最後,可能很多人會問,你寫得和別人寫得有什麼不同,很多人都模仿着ArMap寫過了,我只想說,我寫的更穩定,效率更高。

 

 

圖上已經使用了三大控件,TOC,MapControl,PageLayoutControl

協調好這三個控件,我用了很長時間。

1、Map和Layout如何關聯,ESRI做了什麼?難道流行的深度拷貝是很好的解決方案?

大部分人會避開兩個控件的同時存在,剩下的人會求助於深度拷貝,我只想說,我加載過大數據ArcMap所佔內存爲1.5個G,這個時候還能拷貝麼?

2、如果是多個DataFrame是不是支持?專題圖下的南海諸島是不是在ArcMap下用了兩個DataFrame?

90%的類似程序不支持兩個以上的DataFrame,因爲用的是MapControl.剩下的小部分人用的是PageLayoutControl,同時用上的很少,用好的更少。

3、如何使得TOC的變化影響Map和Layout?

這個是必須的

4、技術上還需要使得當前的控件所在Doc窗口都可以變化,控件也要隨窗口變化?

VC2010MFC的好處體現在這裏。

5、穩定性如何?開發的過程中是不是會遇到Map和Layout相互干擾的問題?或是有窗口相互影響,以致顯示不正常的問題?

爲了穩定,我連續寫和測試了很長一段時間。

6、爲什麼沒說到工具條控件?

因爲ArcEngine Toolbar是垃圾,所以只是ArcEngine下使用。但是command設計的很好。

 

 

 

  

    

 

 

 

 

 

 

   

 

發佈了77 篇原創文章 · 獲贊 77 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章