前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从MapX到MapXtreme2004[7]-对Table、Feature等的理解

从MapX到MapXtreme2004[7]-对Table、Feature等的理解

作者头像
用户1075292
发布2018-01-23 11:04:27
6420
发布2018-01-23 11:04:27
举报
文章被收录于专栏:听雨堂听雨堂

一、Table

        2004中,Table还是表,可以来自原始的mapinfo表,也可以来自数据库的二维表、文本等。Table的等价概念是feature集合,如下代码:

代码语言:js
复制
        (_tempTable as IFeatureCollection).Clear();

        当然,可以通过枚举器,来逐个访问table的行,如下:

代码语言:js
复制
         Selection sl =MapInfo.Engine.Session.Current.Selections.DefaultSelection;
         IResultSetFeatureCollection fc=sl[0];        
         IFeatureEnumerator fn=fc.GetFeatureEnumerator();        //IFeatureCollection也有GetFeatureEnumerator
         ListBox1.Items.Clear();
         while(fn.MoveNext())
            if(fn.Current.Geometry.GetType().ToString()=="MapInfo.Geometry.LegacyText")
                 ListBox1.Items.Add(((MapInfo.Geometry.LegacyText)fn.Current.Geometry).Caption);

        当然,用

代码语言:js
复制
                foreach(Feature feature in tb)

        也是毫无问题的,因而,table和结果集是等价的。   

二、Feature

        Feature等价于表中的行。只与行有关,而与具体的图元的类型无关。换言之,Feature只是指图元对应的表行,而与图元的属性无关。

        用Feature.Table可以引用到所属的表。

        用Table.TableInfo可以引用到表的结构信息。

        Feature具有的默认列,一般都包括obj,Mi_key,Mi_Style。obj我个人认为就是Feature对应的几何对象。用Feature.Geometry属性可以引用。

        Feature.Geometry的类型是FeatureGeometry,它是各种具体图元(点线面文字...)的父类,Feature.Geometry属性所对应的,其实是具体的类。(我向这个属性赋点对象,发现没错)。

        对Feature的使用,可以通过CataLog的SearchForFeature来查找,如下

代码语言:js
复制
            MapInfo.Engine.Session.Current.Catalog.SearchForFeature("Layer1",MapInfo.Data.SearchInfoFactory.SearchWhere("MI_Key='"+strKey+"'") ) 

        由于ID其实并不唯一,所以,较好的查找对象是MI_Key。同时,Catalog还有其他的查找函数,如SearchNearest等。

        加入Feature时,往往需要指定这些基本的信息,有多种加入方法,参见本系列的[5]。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2005-07-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档