MapX从数据库读取数据形成新图层(C#)

数据|数据库

MapX从数据库读取数据形成新图层(C#) 2005-5-10在C#中实现MapX从数据库读取数据形成新图层分为两个问题:1.         MapX从数据库读取数据形成新图层;2.         将DataTable转换为ADO的Recordset。这里的第二个问题是由第一个问题引起的,因为MapX是一个COM控件,而且它只支持ADO的数据访问方式,而C#编程时一般会使用ADO.NET方式,为此需要在两种方式之间做一下转换。(当然也可以在C#中使用ADO方式,但这毕竟是落后的方法。该解决办法可参考文章《Visual Basic.NET中使用ADO访问数据库》)。对第二个问题的解决办法,参见作者的另一篇文章《将DataTable对象转换为Recordset对象》(http://blog.csdn.net/allentao/archive/2005/05/11/373634.aspx),本文章只讲述在得到了Recordset对象后,如何解决第一个问题。步骤如下:1.         创建CMapXFields对象,并对应数据库中字段添加字段;2.         创建CMapXBindLayer对象,指定其坐标值字段的序号;3.         向map.DataSets中添加数据集,从而生成新的图层;4.         指定新图层中要素的显示风格,本文采用显示位图的方式,为此需要将要显示的位图放入MapX安装目录的CUSTSYMB文件夹下。

 代码如下:              private void CreatNewLayerfromDB(string layerName, ADODB.Recordset rsNoPass)              {                     this.DeleteLayerByName(layerName);   //将原有层删除

                      CMapXFields flds=new FieldsClass();

                      // Describe the structure of the Unbound dataset                     flds.Add("stationid", "theid", AggregationFunctionConstants.miAggregationIndividual,                            FieldTypeConstants.miTypeString);                     flds.Add("address", "address", AggregationFunctionConstants.miAggregationIndividual,                             FieldTypeConstants.miTypeString);                     flds.Add("longitude", "longitude", AggregationFunctionConstants.miAggregationSum,                             FieldTypeConstants.miTypeNumeric);  //经度                     flds.Add("latitude", "latitude", AggregationFunctionConstants.miAggregationSum,                             FieldTypeConstants.miTypeNumeric);  //纬度

                      CMapXBindLayer bindLayerObject=new BindLayerClass();                     bindLayerObject.LayerName=layerName;                     bindLayerObject.RefColumn1=3;                     bindLayerObject.RefColumn2=4;                     bindLayerObject.LayerType=BindLayerTypeConstants.miBindLayerTypeXY;

                      CMapXDataset dataSet=map.DataSets.Add(DatasetTypeConstants.miDataSetADO,                             rsNoPass, layerName, "stationid", "address", bindLayerObject, flds, false );

                      CMapXLayer layer=map.Layers._Item(layerName);                     layer.OverrideStyle= true;                     string picName="icon.BMP";                     if(layer.Style.SupportsBitmapSymbols == true)                     {                            layer.Style.SymbolType = SymbolTypeConstants.miSymbolTypeBitmap;                            layer.Style.SymbolBitmapSize = 60;                            layer.Style.SymbolBitmapTransparent = true;                            layer.Style.SymbolBitmapName = picName;                     }                                                         }

               private void DeleteLayerByName(string layerName)              {                     int count=map.Layers.Count;                     for(int i=1; i<count; i++)                     {                            if(map.Layers._Item(i).Name==layerName)                                   map.Layers.Remove(i);                     }              }

说明: MapX控件中的序号是从1开始的,这一点可从上面的代码中Layers集合与Fields集合的序号使用上可以看出。

时间: 2024-10-31 05:45:33

MapX从数据库读取数据形成新图层(C#)的相关文章

求一个能从数据库读取数据并显示到坐标图上的java程序

问题描述 求一个能从数据库读取数据并显示到坐标图上的java程序 新手学java,但是现在急需一个能从数据库读取数据并显示到坐标图上的java程序,希望各位能够给一点帮助,谢谢了 解决方案 http://www.open-open.com/lib/view/open1337915511824.htmlhttp://blog.csdn.net/sjf0115/article/details/7059407 解决方案二:

highcharts如何从SQL Server数据库读取数据生成饼状图

问题描述 highcharts如何从SQL Server数据库读取数据生成饼状图 highcharts如何从SQL Server数据库读取数据生成饼状图 解决方案 这个也是我想关注的问题

listview-android studiod 从数据库读取数据失败

问题描述 android studiod 从数据库读取数据失败 从数据库读取数据到listview,但是不知为什么,在没添加数据进数据库的时候,能进activity,但是一旦添加进去以后就开始报错了 DBhelper.java public class DBHelper extends SQLiteOpenHelper{ private final static String DATABASE_NAME = "demo.db"; private final static int DAT

数据库读取数据数组格式转换

问题描述 数据库读取数据数组格式转换 array(5) { [0]=> array(2) { ["id"]=> string(1) "1" ["user_name"]=> string(5) "fuwe" } [1]=> array(2) { ["id"]=> string(1) "2" ["user_name"]=> string

分组 排列-从数据库读取数据,到模板输出时按照字段catname的首字母顺序进行分组排列怎么实现?

问题描述 从数据库读取数据,到模板输出时按照字段catname的首字母顺序进行分组排列怎么实现? 如: A-E 阿伟点金 曹氏点金 曹向阳 F-J 何昆宗 海啸 黄建超 韩烨 金界传奇 K-O 刘宁波 刘云灵 李兴淼 李生论 零点拓 P-T 乔振华 孙建发 石勇 U-Z 吴量 沃伦点 小张论金

基于echarts+ajax数据库读取数据并返回前端

1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小demo的效果图如下:(很熟悉,有没有) 2.按照echarts的使用方法新建一个echarts.html文件.为ECharts准备一个具备大小(宽高)的Dom(讲的有点细,熟悉的朋友直接跳过) <!DOCTYPE html><head>     <meta charset=&quo

从数据库读取数据后将其输出成html标签的三种方法_javascript技巧

也许很多人从数据库中读的数据是不需要数据成html标签的,但是也许有一天你们会发现当我们需要输出成html标签时编译器却自动帮我们输出成字符串了这是我们可以这样来 方法1: 最常用的方法,使用JS或JQ JQ: $("#div").html("<span>我是HTML代码</span>"); JS: var dobj=document.getElementById("div"); dobj.innerHTML = &quo

问一个jsp从数据库读取数据然后用CSS排版的问题

问题描述 这个是读取mysql数据库数据并在table中显示出来的代码.通过从数据库读取出的标题与字符串比较,并将标题里面的内容分别输出在对应的标题下.menucontent[0]是标题,menucontent[1]是标题下的子菜单,menucontent[2]是超连接,大神应该都能看懂吧然后用CSS修改了下,运行后是这个效果:不过这是竖着排列的,我想实现每一个标题+子菜单能横着排列.就像下面这样:求大神帮忙,用CSS怎么实现呢........... 解决方案 解决方案二:别用表格了,用<ul>

treeview动态从数据库读取数据以后我每次点击treenode都会重新读取一次数据,请高手指点一下

问题描述 这样的结果就是我点击多少次,树里面就有多少个相同的子节点请高手指点 解决方案 解决方案二:如果该页面在点击后重新load了一次(读取数据的事件写在page_load里)为什么会这样的呢??解决方案三:if(!IsPostBack){加载数据;}解决方案四:去学习一下....刚学,还未使用过ispostback非常感谢