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

ASP.NET
asp.net Linq TO Sql 分页方法
asp.net 用XML生成放便扩展的自定义树
asp.ent下合并两个结构相同的DataTable
asp.net 遍历repeater中的控件的几种方式
asp.net 处理原文件中过长的viewstate代码
asp.net下遍历页面中所有的指定控件的代码
获取创建Membership的数据库创建脚本
asp.net AJAX注册类
asp.net 处理F5刷新页面重复提交页面的一个思路
ASP.NET 缓存分析和实践浅析提高运行效率
asp.net 读取并显示excel数据的实现代码
ASP.NET中常用的用来输出JS脚本的类
ASP.NET中内嵌页面代码的一个问题
asp.net(C#)操作excel(上路篇)
一个基于Asp.Net MVC的权限方案
ASP.NET实例教程:51job网站地区选择功能
ASP.NET教程:友好的Html和JS适合SEO
ASP.NET教程:使用.ashx文件去除重复内容
ASP.NET做SEO:制作架构清晰和更新及时的网站地图
ASP.NET优化:Sql注入和Html注入的黑帽SEO

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 268 ::
收藏到网摘: 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