<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      編程 & 生活 -- 西西吹雪

      開心工作,快樂生活 (原創文章,轉載請注明出處)

      導航

      MO開發小技巧(一)

             本人用VB+MO開發近兩年,中間積累了一些小經驗,對老手可能沒用,但對新手可能有一點幫助。下面把它記下來,也算是一個小小的總結。很多東西沒想起來,下次更新時補上。 大部分內容只是概述了實現的思路,具體實現的方法,有心者自己領會吧~,不對之處,請指教。

      一、出圖線寬的問題。
         問題描述:MO出圖一般使用Output2方法。但該方法有一個問題就是出圖后線寬特別細,這是由于打印機分辨率比屏幕分辨高得多的緣故。為了得與屏幕顯示相同地線寬,必須在打印前對顯示符號(Symbol)對象作相應的調整,執行完畢后再調整回來。
        出圖代碼如下:

          Dim dblScale As Double
          dblScale = GetDeviceCaps(Printer.hdc, 88) / GetDeviceCaps(Me.hdc, 88)  '即打印機分辨率/屏幕分辨率
          ResetLnSize dblScale
         
          On Error GoTo errh 
        
          '此處執行打印操作,mpprinter是本人組織開發的專門用于打印出圖的控件
          mpPrinter.DoPrint()
         
          ResetLnSize 1 / dblScale


      '下面是用于縮放線寬的函數
      Private Sub ResetLnSize(dblScale As Double)
          Dim i As Integer
          Dim obj As Object
          Dim ly As MapLayer
          For i = 0 To Map1.Layers.Count - 1
              Set obj = Map1.Layers(i)
              If TypeOf obj Is MapObjects2.MapLayer Then
                  Set ly = obj
                  If ly.ShapeType <> moShapeTypePoint Then
                      ly.Symbol.Size = CInt(ly.Symbol.Size * dblScale)
                  End If
              End If
          Next
         
          '跟蹤層的Event的線粗也要設置,只要設置跟蹤層所有的symbol就可以了。
          Dim Sym As MapObjects2.Symbol
          For i = 0 To Map1.TrackingLayer.SymbolCount - 1
              Set Sym = Map1.TrackingLayer.Symbol(i)
              If Sym.SymbolType <> moPointSymbol Then
                  Sym.Size = CInt(Sym.Size * dblScale)
              End If
          Next i
      End Sub
       
         

      二、指北針。最簡單的辦法是使用ESRI公司提供的指北針字體ESRI_North。

      三、注記的縮放。顯示注記一般用LabelRenderer來實現,要實現與地圖其它內容一起縮放,只要設置HeightField屬性即可。HeightField即高度字段,是一個數值型字段。

      四、關于編輯功能
      1、新建線或面時的捕捉問題。用MO新建要素的傳統方法是用TrackLine或TrackPolygon方法。但該方法有一個致命的弱點就是新建過程中不能進行捕捉,這是由于MO對系統消息進行了屏蔽的緣故。為了能夠實現捕捉,只能自己再想辦法實現。最簡單辦法是自己處理MouseDown,MouseMove,MouseUp事件,判斷狀態,然后在TrackLayer中添加或修改一個GeoEvent來實現,這樣就可以在新建要素過程中實現捕捉了。

       

      2、新建線、多邊形點個數太多時的閃爍問題。當點的個數很多時,會閃爍比較厲害。為了避免出現這種情況,可以在新建過程中,將加入的點集人為分為若干個點一組,每一組成為一個獨立的GeoEvent。但這樣處理比較麻煩。

      3、編輯回退的問題。首先將編輯進行分類,可以分為節點編輯,新增要素,刪除要素三種。更新要素(如移動)可以歸結為新增一個要素和刪除一個要素,分割(split等)也是如此。然后根據這些類型定義不同的數據結構對其進行保存。保存方式可以保存在內存中,也可以保存為臨時的Shape文件中,建議使用后者,因為保存屬性比較方便,同時不占用內存,理論上可以不限回退步數。

      4、歷史版本問題。 要點:第一,需要保存歷史數據的圖層在入庫時要建立一個對應的的歷史圖層,此時歷史圖層與現狀層數據完全一致,作為歷史數據的初始狀態;第二,將所有編輯過程歸結為刪除和新增兩種操作,編輯可以歸結為刪除一個(或幾個)要素,同時新增一個(或幾個)要素。然后在歷史圖層中添加兩個字段:新增時間和刪除時間,現狀的數據的刪除時間可以定義為9999-01-01。 第三要啟用事務編輯,一次編輯過程包含若干個編輯步驟。一次編輯過程可以形成一個版本,也可以歸入上一次編輯所屬的版本中,在編輯結束時應允許選擇。一次編輯過程中的的所有編輯步驟要經過計算處理成兩個列表,及新增要素列表和刪除要素列表,在事務提交時同時寫歷史層。第四、版本的合并,清除等操作均可以歸結為對歷史圖層的新建時間和刪除時間兩個字段的操作。 第五,版本的標識可以建立一個普通table保存,更加人性化。



         

      posted on 2005-03-23 14:28  西西吹雪  閱讀(3174)  評論(11)    收藏  舉報

      主站蜘蛛池模板: 国产精品亚洲综合色区丝瓜| av天堂午夜精品一区| 亚洲精品国产成人| 少妇高潮尖叫黑人激情在线| 无码国产一区二区三区四区| 国产精品一区二区不卡视频| 日韩av综合中文字幕| 久久亚洲精品情侣| а∨天堂一区中文字幕| 无码人妻斩一区二区三区| 国产高清乱码又大又圆| 亚洲aⅴ无码专区在线观看春色| 欧美嫩交一区二区三区 | 亚洲中文字幕成人无码| 热久久美女精品天天吊色| 人妻日韩人妻中文字幕| 东京热一精品无码av| 亚洲sm另类一区二区三区| 亚洲精品国产精品国在线| 亚洲精品一区二区三区蜜| 黑人大群体交免费视频| 国产精品第一二三区久久| 亚洲成人动漫av在线| 亚洲免费成人av一区| 色偷偷女人的天堂亚洲网| 挺进粗大尤物人妻中文字幕| 久草热大美女黄色片免费看| 婷婷开心深爱五月天播播| 麻豆一区二区三区精品视频| av在线播放国产一区| 欧美精品一区二区在线观看播放 | 少妇真人直播免费视频| 国产精品啪| 国产亚洲精品自在久久vr| 国产欧美日韩另类在线专区| 亚洲国产精品毛片在线看| 精品素人AV无码不卡在线观看| 国产精品日韩精品日韩| 色爱区综合激情五月激情| 亚洲精品乱码久久久久红杏| 一本久道久久综合中文字幕|