GIS開發隨筆--GIS技術的一點理解和MapNet控件試驗_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:封裝stream,在讀寫stream時提供事件通知
      前陣子的工作涉及一些網絡編程,使用了面向流的方式做傳輸數據。在代碼過程中,遇到一個新需求就是要統計流量。其實最簡單的辦法就時在讀寫流的地方增加代碼,把功能增加上去就可以。但是我覺得

      今天我們來討論幾個沒有太大關聯的內容,如果在這幾個問題方面有人有自己獨特的見解,或已經知道了這方面的技術,那么還請您在評論中提出來,供大家探討,下面我們就來探討一下吧。

      一、這幾天忙著測試和修改GIS系統,發現了一些Bug的同時也有了新的需求,不僅改變了界面風格和布局而且代碼也少有變化,地圖變化最大,需要加入柵格圖(太可怕了,一幅柵格圖竟然有1.3G),如何加載呢?因為這次的GIS系統是B/S結構的,而且功能也不小,除了柵格圖外還有很多層的矢量圖,并且提供圖層數據和數據庫數據的互查功能,所以非常擔心加載和顯示柵格圖時會非常的慢,或者造成服務器死機,但是今天發現過去好像有些“杞人憂天”,柵格圖加載和顯示還是可以成功的。具體內容如下:

      1、想了解柵格圖是否能加載,需要了解ArcIMS的工作原理,這方面的知識我們在本系列隨筆的前幾篇隨筆中也有討論過,下面再簡單說明一下:MapNet控件是解讀ArcIMS回傳得ArcXML文檔,并通過虛擬路徑來加載ArcIMS根據請求所產生的圖片。ArcIMS圖形服務可以產生的圖片類型有*.JPG、*.JPEG、*.PNG-8bit、*.PNG-24bit、*.GIF(需要特殊的序列號或注冊文件)。

      2、也正是因為有這種工作原理,雖然柵格圖的整幅圖文件很大,但是ArcIMS會否將自身來處理生成的圖片文件大小,并不會產生一個上G的圖片文件在B/S程序和網絡中傳送呢。經過本人的試驗證明ArcIMS確實控制了傳送文件的大小,再加入了柵格圖后,圖片文件并沒有想象的大,所以也就不用去切割柵格圖文件了,這使本人很高興。(<!--此處寫有柵格圖的圖片文件的大小,最小和最大文件大小-->,圖片大小僅供參考)

      二、還有一個問題是MapNet控件的問題,MapNet控件有一個去獲得圖層數據的函數myIL.Recordset(myISQ2, true, false, myIGF),但是此函數最多加載的數據為2000條,最后生成數據集DataSet,那么這就意味著此DataSet的第0張表最多有2000條數據,但是MapNet控件又給我們提供了一個對象的屬性myISQ2.Where,來查詢所需要的圖層上某個或某些元素,這個屬性中可以使用Sql語句,下面是有關的代碼片斷:

      以下為引用的內容:
      1using System;
      2using System.Collections;
      3using System.ComponentModel;
      4using System.Data;
      5using System.Drawing;
      6using System.Web;
      7using System.Web.SessionState;
      8using System.Web.UI;
      9using System.Web.UI.WebControls;
      10using System.Web.UI.HtmlControls;
      11using GongAnSys.Class;
      12using StudioAT.IMS;
      13using StudioAT;
      14using System.Xml;
      15
      16……
      17
      18 private void MapNet1_Load(object sender, System.EventArgs e)
      19 {
      20 IMapNet myIMapNet = MapNet1;
      21 ICollectionLayers myICL = myIMapNet.CollectionLayers;
      22 IGetFeatures myIGF = null;
      23 ISimpleMarkerSymbol myISMS = new SimpleMarkerSymbolProperty();
      24 IMapNetAcetateObjects myIMNAO = (IMapNetAcetateObjects)myIMapNet;
      25 myIMNAO.Clear();
      26 IObjectAcetateLayer myIOAL;
      27 IPoint myIP1;
      28 try
      29 {
      30 ILayer myIL = (ILayer)myICL.FindById (Session["LayerID"].ToString());
      31 ISpatialQuery2 myISQ2 = new SpatialQuery();
      32 string ColumnsName = "GIS_ID";
      33 myISQ2.Where = ColumnsName " = '" Session["GIS_ID"].ToString() "'";
      34 DataSet ds = myIL.Recordset(myISQ2, true, false, myIGF);//根據圖層讀取數據
      35 int dscount = ds.Tables[0].Rows.Count;
      36……
      37}

      38 catch
      39 {
      40……
      41 }

      42 }

      43
      44……
      45
      46

      分享:實例開發:ASP.NET創建網絡相冊
      在現在的數碼時代,我們會經常拍攝一些相片以供留念,而隨著數碼照片的增多,往往需要很好地管理這些照片,以便更好地查閱留念。現在網上有不少的電子相冊,都能很好的實現這些功能,那我們能否

      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關.Net教程