欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【GIS开发随笔--GIS技术的一点理解和MapNet控件试验】,下面是详细的分享!
GIS开发随笔--GIS技术的一点理解和MapNet控件试验
今天我们来讨论几个没有太大关联的内容,如果在这几个问题方面有人有自己独特的见解,或已经知道了这方面的技术,那么还请您在评论中提出来,供大家探讨,下面我们就来探讨一下吧。
一、这几天忙着测试和修改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 ![]() |
以上所分享的是关于GIS开发随笔--GIS技术的一点理解和MapNet控件试验,下面是编辑为你推荐的有价值的用户互动:
相关问题:200分!!我是程序员用C#.net开发GIS系统。用什么...
答:不知道你是做底层开发 还是基于平台的二次开发 现有的开发平台 如ESRI公司的AO AE都是不错的 还有MAPGIS SUPERMAP 公司的 选用哪个取决于你公司的财力和系统的特性了 基于ArcGIS Desktop 开发即为基于AO的二次开发。 ArcObject是ESRI公司的Arc G... >>详细
相关问题:gis的开发方法有哪些
答:独立开发 指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C十十、Delphi等,在一定的操作系统平台上编程实现。这种方式的好处在于无须依赖... >>详细
相关问题:求.Net for gis10 engine安装,我用VS2010开发。其...
答:正常情况是在工具箱中有ArcGIS Windows Forms选项卡,该选项卡包含一堆gis控件; 而你的情况可分几种情况讨论: 1 存在该选项卡,只是没控件或缺少部分gis控件 右击该选项卡,在弹出右键菜单中选择“选择项”菜单,稍等片刻,由于它会显示加载的dl... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-




IMapNet myIMapNet 
}
}