今天我們來討論幾個沒有太大關聯的內容,如果在這幾個問題方面有人有自己獨特的見解,或已經知道了這方面的技術,那么還請您在評論中提出來,供大家探討,下面我們就來探討一下吧。
一、這幾天忙著測試和修改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語句,下面是有關的代碼片斷:
| 以下為引用的內容: 1 using system;2 using system.collections;3 using system.componentmodel; 4 using system.data;5 using system.drawing;6 using system.web;7 using system.web.sessionstate;8 using system.web.ui; 9 using system.web.ui.webcontrols;10 using system.web.ui.htmlcontrols;11 using gongansys.class;12 using studioat.ims;13 using studioat; 14 using 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 try29 ![]() { 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 catch39 ![]() { 40 ……41 }42 }43 ![]() 44 ……45 46 ![]() |
新聞熱點
疑難解答
圖片精選