天道酬勤

博观而约取,厚积而薄发!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MapXtreme2004新手资料续【转】

Posted on 2010-04-30 13:14  Happy Coding  阅读(272)  评论(0编辑  收藏  举报

1.从ORACLE表中加载图层的问题。。。
MIConnection Connection=new MIConnection();
Connection.Open();
TableInfoServer tis1=new TableInfoServer("WORLD",
   "SRVR=ora8i;UID=wzz;PWD=11111111",
   "select * from world",MapInfo.Data.ServerToolkit.Oci);
MapInfo.Data.Table [] tables=new MapInfo.Data.Table[2];
tables[0]=Connection.Catalog.OpenTable(tis1);
  TableInfoServer tis2=new TableInfoServer("WORLDCAP",
  "SRVR=ora8i;UID=wzz;PWD=11111111",
  "select * from worldcap",MapInfo.Data.ServerToolkit.Oci);
tables[1]=Connection.Catalog.OpenTable(tis2);
MapControl1.Map.Load(new MapInfo.Mapping.MapTableLoader(tables));

2.存在SqlSever中XY坐标点的绑定代码
//XY绑定:含有x,y坐标点的图层放置在Sql Server数据库中,按xy坐标生成点图层
//1.要在存在该表的数据库中建立MAPINFO_MAPCATALOG表,否则会报错:
//"An unhandled exception of type 'MapInfo.Data.TableException' occurred in mapinfo.coreengine.dll.
//Additionalinformation: 不能打开表。 ODBC 错误: ODBC RC=-1, ODBC SQLState=S0002, DBMSRC=208, DBMS Msg=[Microsoft][ODBC SQL Server Driver][SQL Server]对象名'MAPINFO.MAPINFO_MAPCATALOG' 无效。
//2.要含xy坐标点的表建立主键,否则会报错:
//"Additional information: 不能打开表。因为不能识别唯一键,不能访问远程数据。"

   //建立XY空间方案
   MapInfo.Data.SpatialSchemaXY xy = new MapInfo.Data.SpatialSchemaXY();
   xy.XColumn = "X";
   xy.YColumn = "Y";
   xy.NullPoint = "0.0, 0.0";
   xy.StyleType = MapInfo.Data.StyleType.None;
   xy.DefaultStyle = new MapInfo.Styles.CompositeStyle();
   xy.CoordSys = MapInfo.Engine.Session.Current.CoordSysFactory.CreateLongLat(MapInfo.Geometry.DatumID.WGS84);

   //建立TableInfo
   MapInfo.Data.TableInfoServer ti = newMapInfo.Data.TableInfoServer("Customers","Driver={SQLServer};Server=LIXIAOHUI;Database=test;Uid=sa;Pwd=sa;","select * fromUs_Cust",MapInfo.Data.ServerToolkit.Odbc);
   ti.SpatialSchema = xy;
   MapInfo.Data.Table miCustomers = MapInfo.Engine.Session.Current.Catalog.OpenTable (ti);
   MapInfo.Mapping.FeatureLayer featureLayer = new MapInfo.Mapping.FeatureLayer(miCustomers);
   mapControl1.Map.Layers.Add(featureLayer);
   mapControl1.Map.SetView(featureLayer);

3.如何查看整个地图
Map map = mapControl1.Map;
IMapLayerFilter lyrFilter = MapLayerFilterFactory.FilterByType(typeof(FeatureLayer));
MapLayerEnumerator lyrEnum= map.Layers.GetMapLayerEnumerator(lyrFilter);
map.SetView(lyrEnum);
或者:
   Map map = mapControl1.Map;
   IMapLayerFilter lyrFilter = new FilterByLayerType(LayerType.Normal);
   MapLayerEnumerator lyrEnum= map.Layers.GetMapLayerEnumerator(lyrFilter);
   map.SetView(lyrEnum);