当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > GIS开发随笔--GIS技术的一点理解和MapNet控件试验

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

ASP.NET 中的 GIS开发随笔--GIS技术的一点理解和MapNet控件试验


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 69 ::
收藏到网摘: n/a

今天我们来讨论几个没有太大关联的内容,如果在这几个问题方面有人有自己独特的见解,或已经知道了这方面的技术,那么还请您在评论中提出来,供大家探讨,下面我们就来探讨一下吧。

一、这几天忙着测试和修改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, truefalse, myIGF);//根据图层读取数据
35                    int dscount = ds.Tables[0].Rows.Count;
36……
37}

38                catch
39                               {
40……
41                }

42        }

43
44……
45
46