应用MapXtreme2004开发GIS代码(C#) 搜索TAB表中的元素
A:
MapXtreme2004代码 读取TAB表中的元素
例如,用记事本打开要访问的TAB文件“农安.tab”,可以看到下面内容:
!table
!version 300
!charset WindowsSimpChinese
Definition Table
Type NATIVE Charset "WindowsSimpChinese"
Fields 2
地理码 Char (10) Index 1 ;
名称 Char (10) ;
下面我们就来读取该表的所有“名称”元素。并将其加入到DropDownList控件中。
private static string _findLayerName = "农安";
private static string _findColumnName = "名称";
MapInfo.Data.Table table=MapInfo.Engine.Session.Current.Catalog.GetTable(_findLayerName);
if(table!=null)
{
MIDataReader tr;
MIConnection con=new MIConnection();
MICommand tc=con.CreateCommand();
tc.CommandText="select "+_findColumnName+" from "+_findLayerName;
con.Open();
tr=tc.ExecuteReader();
while (tr.Read())
{
DropDownList1.Items.Add(tr.GetString(0));
}
tc.Cancel();
tc.Dispose();
tr.Close();
con.Close();
}
B:
应用MapXtreme2004开发GIS代码(C#) 搜索TAB表中的元素
注:本贴跟上面帖子“MapXtreme2004代码 读取TAB表中的元素”
private void FindYuansu()
{
Find find = null;
try
{
MapInfo.Mapping.Map map = null;
//获取地图
if (MapInfo.Engine.Session.Current.MapFactory.Count == 0 ||
(map = MapInfo.Engine.Session.Current.MapFactory[0]) == null)
{
return;
}
//开始搜索
MapInfo.Mapping.FeatureLayer findLayer = (MapInfo.Mapping.FeatureLayer) map.Layers[_findLayerName];
find = new Find(findLayer.Table, findLayer.Table.TableInfo.Columns[_findColumnName]);
FindResult result = find.Search(DropDownList1.SelectedItem.Text);
if (result.ExactMatch)
{
//重新设置地图
map.Center = new DPoint(result.FoundPoint.X, result.FoundPoint.Y);
MapInfo.Geometry.Distance d = new MapInfo.Geometry.Distance(30, map.Zoom.Unit);
map.Zoom = d;
}
else
{
Response.Write("没有搜索到!");
}
find.Dispose();
}
catch (Exception)
{
if (find != null) find.Dispose();
}
}