物探论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 732|回复: 0

C#开发GIS应用简明教程[七]

[复制链接]
发表于 2013-3-15 18:09:06 | 显示全部楼层 |阅读模式

可以看到,我们在窗口左边放置了一个ListView控件,并在ListView中增加了4列(Columns)来显示数据.同时,把MapX控件的地图换成了我们自己制作的"小区"地图.
在button1的单击事件button1_Click中编写如下代码:
MapXLib.Fields flds=new MapXLib.FieldsClass();
MapXLib.Layer lyr=axMap1.Layers._Item("HouseLayer");
MapXLib.Dataset dts=null;

flds.Add("ID","ID",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("名称","名称",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("月供年限","月供年限",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeInteger);
flds.Add("水电费","水电费",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeFloat);

dts=axMap1.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer,lyr,lyr.Name,0,0,0,
flds,false);
listView1.Items.Clear();
for(int i=1;i<=dts.RowCount;i++)
{
    listView1.Items.Add( new ListViewItem(new string[]{dts[i,1].ToString(),
                                                      dts[i,2].ToString(),
                                                      dts[i,3].ToString(),
                                                      dts[i,4].ToString()}));
}
axMap1.DataSets.RemoveAll();

    代码依旧很短,是对以前所介绍知识的进一步深化.这里要注意的是对dts的应用.运行程序,可以看到程序把所有的图元数据都正确地读取出来了.
    在程序末尾,我们将MapX控件中的DataSets全部移除,这是为了以后再使用DataSets方便.
    2.添加数据(Data Adding)
    在图层表上添加数据实际上就是添加图元,只不过这个图元是带有数据信息的.
    仍然使用读取数据的例子,我们在窗口上增加一个按钮button2,编写它的单击事件代码button2_Click如下:
MapXLib.Feature ftr=new MapXLib.FeatureClass();
MapXLib.Points pts=new MapXLib.PointsClass();
MapXLib.Point pt=new MapXLib.PointClass();
MapXLib.RowValues rvs=new MapXLib.RowValuesClass();
MapXLib.Fields flds=new MapXLib.FieldsClass();
MapXLib.Layer lyr=axMap1.Layers._Item("HouseLayer");
MapXLib.Dataset dts=null;
flds.Add("ID","ID",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("名称","名称",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeString);
flds.Add("月供年限","月供年限",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeInteger);
flds.Add("水电费","水电费",MapXLib.AggregationFunctionConstants.miAggregationSum,
MapXLib.FieldTypeConstants.miTypeFloat);

dts=axMap1.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer,lyr,lyr.Name,
0,0,0,flds,false);

rvs=dts.get_RowValues(0);
rvs._Item("ID").Value="0003";
rvs._Item("名称").Value="C栋";
rvs._Item("月供年限").Value=20;
rvs._Item("水电费").Value=21.73;
ftr.Attach(axMap1.GetOcx());
ftr.Style=axMap1.Layers._Item("HouseLayer").Style;
ftr.Style.RegionPattern=MapXLib.FillPatternConstants.miPatternSolid;
ftr.Style.RegionColor=16711680;
ftr.Type=MapXLib.FeatureTypeConstants.miFeatureTypeRegion;
pt.Set(1,1);
pts.Add(pt,1);
pt.Set(2,1);
pts.Add(pt,2);
pt.Set(2,2);
pts.Add(pt,3);
pt.Set(1,2);
pts.Add(pt,4);

ftr=axMap1.FeatureFactory.CreateRegion(pts,ftr.Style);
ftr=axMap1.Layers._Item("HouseLayer").AddFeature(ftr,rvs);
ftr.Update(ftr,rvs);
axMap1.DataSets.RemoveAll();


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|物探论坛 ( 鄂ICP备12002012号 微信号:iwutan )

GMT+8, 2024-5-10 19:34 , Processed in 0.086231 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表