今天我們來討論幾個(gè)沒有太大關(guān)聯(lián)的內(nèi)容,如果在這幾個(gè)問題方面有人有自己獨(dú)特的見解,或已經(jīng)知道了這方面的技術(shù),那么還請(qǐng)您在評(píng)論中提出來,供大家探討,下面我們就來探討一下吧。
一、這幾天忙著測(cè)試和修改gis系統(tǒng),發(fā)現(xiàn)了一些bug的同時(shí)也有了新的需求,不僅改變了界面風(fēng)格和布局而且代碼也少有變化,地圖變化最大,需要加入柵格圖(太可怕了,一幅柵格圖竟然有1.3g),如何加載呢?因?yàn)檫@次的gis系統(tǒng)是b/s結(jié)構(gòu)的,而且功能也不小,除了柵格圖外還有很多層的矢量圖,并且提供圖層數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)的互查功能,所以非常擔(dān)心加載和顯示柵格圖時(shí)會(huì)非常的慢,或者造成服務(wù)器死機(jī),但是今天發(fā)現(xiàn)過去好像有些“杞人憂天”,柵格圖加載和顯示還是可以成功的。具體內(nèi)容如下:
1、想了解柵格圖是否能加載,需要了解arcims的工作原理,這方面的知識(shí)我們?cè)诒鞠盗须S筆的前幾篇隨筆中也有討論過,下面再簡(jiǎn)單說明一下:mapnet控件是解讀arcims回傳得arcxml文檔,并通過虛擬路徑來加載arcims根據(jù)請(qǐng)求所產(chǎn)生的圖片。arcims圖形服務(wù)可以產(chǎn)生的圖片類型有*.jpg、*.jpeg、*.png-8bit、*.png-24bit、*.gif(需要特殊的序列號(hào)或注冊(cè)文件)。
2、也正是因?yàn)橛羞@種工作原理,雖然柵格圖的整幅圖文件很大,但是arcims會(huì)否將自身來處理生成的圖片文件大小,并不會(huì)產(chǎn)生一個(gè)上g的圖片文件在b/s程序和網(wǎng)絡(luò)中傳送呢。經(jīng)過本人的試驗(yàn)證明arcims確實(shí)控制了傳送文件的大小,再加入了柵格圖后,圖片文件并沒有想象的大,所以也就不用去切割柵格圖文件了,這使本人很高興。(<!--此處寫有柵格圖的圖片文件的大小,最小和最大文件大小-->,圖片大小僅供參考)
二、還有一個(gè)問題是mapnet控件的問題,mapnet控件有一個(gè)去獲得圖層數(shù)據(jù)的函數(shù)myil.recordset(myisq2, true, false, myigf),但是此函數(shù)最多加載的數(shù)據(jù)為2000條,最后生成數(shù)據(jù)集dataset,那么這就意味著此dataset的第0張表最多有2000條數(shù)據(jù),但是mapnet控件又給我們提供了一個(gè)對(duì)象的屬性myisq2.where,來查詢所需要的圖層上某個(gè)或某些元素,這個(gè)屬性中可以使用sql語句,下面是有關(guān)的代碼片斷:
| 以下為引用的內(nèi)容: 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);//根據(jù)圖層讀取數(shù)據(jù)35 int dscount = ds.tables[0].rows.count; 36 ……37 }38 catch39 ![]() { 40 ……41 }42 }43 ![]() 44 ……45 46 ![]() |
新聞熱點(diǎn)
疑難解答
圖片精選