MapXtreme 中改变feature颜色

本文提供了使用C#和VB.NET代码来更新MapInfo地图样式的方法。通过打开指定的地图文件,选择地图元素并应用新的填充颜色及边框宽度,最后通过数据库连接更新地图样式。

1.C# code:
MapInfo.Data.Table table = MapInfo.Engine.Session.Current.Catalog.OpenTable(@"C:\Program Files\MapInfo\MapXtreme2004\Maps\North America\usa.tab";
this.mapControl1.Map.Load(new MapTableLoader(table));

MapInfo.Data.SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchAll ();
MapInfo.Data.IResultSetFeatureCollection irfc = MapInfo.Engine.Session.Current.Catalog.Search(table.Alias,si);
MapInfo.Data.Feature ftr = irfc[0];

MapInfo.Styles.SimpleInterior sis = new MapInfo.Styles.SimpleInterior(9,System.Drawing.Color.Purple );
MapInfo.Styles.LineWidth lw = new MapInfo.Styles.LineWidth(3,MapInfo.Styles.LineWidthUnit.Point );
MapInfo.Styles.SimpleLineStyle sl = new MapInfo.Styles.SimpleLineStyle (lw,3);
MapInfo.Styles.AreaStyle ar = new MapInfo.Styles.AreaStyle (sl,sis);

MapInfo.Styles.CompositeStyle cs = new MapInfo.Styles.CompositeStyle(ar);
ftr.Style = cs;

MapInfo.Data.MIConnection connection = new MapInfo.Data.MIConnection();
connection.Open();

MapInfo.Data.MICommand command = connection.CreateCommand();
command.CommandText = "update " + ftr.Table.Alias + " set obj = @obj,MI_Style=@style where MI_Key = @MIKEY";
command.Parameters.Add("@obj", ftr.Geometry );
command.Parameters.Add("@MIKEY", ftr.Key);
command.Parameters.Add("@style",cs);
command.ExecuteNonQuery();

command.Dispose();
connection.Close();
connection.Dispose();

2.VB.NET code:
Dim table As MapInfo.Data.Table = MapInfo.Engine.Session.Current.Catalog.OpenTable("C:\Program Files\MapInfo\MapXtreme2004\Maps\North America\usa.tab"
Me.MapControl1.Map.Load(New MapTableLoader(table))

Dim si As MapInfo.Data.SearchInfo = MapInfo.Data.SearchInfoFactory.SearchAll()
Dim irfc As MapInfo.Data.IResultSetFeatureCollection = MapInfo.Engine.Session.Current.Catalog.Search(table.Alias, si)
Dim ftr As MapInfo.Data.Feature = CType(irfc, MapInfo.Data.IDynamicFeatureCollection)(1)

Dim sis As New MapInfo.Styles.SimpleInterior(9, System.Drawing.Color.Purple)
Dim lw As New MapInfo.Styles.LineWidth(3, MapInfo.Styles.LineWidthUnit.Point)
Dim sl As New MapInfo.Styles.SimpleLineStyle(lw, 3)
Dim ar As New MapInfo.Styles.AreaStyle(sl, sis)

Dim cs As New MapInfo.Styles.CompositeStyle(ar)
ftr.Style = cs

Dim connection As New MapInfo.Data.MIConnection
connection.Open()

Dim command As MapInfo.Data.MICommand = connection.CreateCommand()
command.CommandText = "update " + ftr.Table.Alias + " set obj = @obj,MI_Style=@style where MI_Key = @MIKEY"
command.Parameters.Add("@obj", ftr.Geometry)
command.Parameters.Add("@MIKEY", ftr.Key)
command.Parameters.Add("@style", cs)
command.ExecuteNonQuery()

command.Dispose()
connection.Close()
connection.Dispose()

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/zhangjie_xiaoke/archive/2008/11/07/3245075.aspx

转载于:https://www.cnblogs.com/googlegis/archive/2009/12/12/2979026.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值