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

一、Table

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

        (_tempTable as IFeatureCollection).Clear();

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

         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);

        当然,用

                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来查找,如下

            MapInfo.Engine.Session.Current.Catalog.SearchForFeature("Layer1",MapInfo.Data.SearchInfoFactory.SearchWhere("MI_Key='"+strKey+"'") ) 

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏落影的专栏

iOS开发-OpenGL ES入门教程2

教程 OpenGLES入门教程1-Tutorial01-GLKit 这次的是shader编译链接、glsl入门和简单图形变换。 OpenGL ES系列教程在这...

33580
来自专栏Python小屋

详解Python列表推导式

列表推导式可以使用非常简洁的方式对列表或其他可迭代对象的元素进行遍历和过滤,快速生成满足特定需求的列表,代码具有非常强的可读性,是Python程序开发时应用最多...

53340
来自专栏码匠的流水账

敏感词检测算法小结

经典的AC算法由三部分构成,goto表,fail表和output表,共包含四种具体的算法,分别是计算三张查找表的算法以及AC算法本身。

69820
来自专栏C/C++基础

多益网络2016春季实习校招笔试回顾(C++游戏后台开发)

2016.04.16晚中山大学大学城校区(东校区)参加了多益网络的C++游戏后台开发的笔试。有几道笔试题还是值得斟酌和记录的,特记录如下。比较可惜,因为回老家了...

11720
来自专栏PHP在线

关于PHP浮点数精度损失问题

$f = 0.57; echo intval($f * 100); //56 结果可能有点出乎你的意外,PHP遵循IEEE 754双精度: 浮点数, 以64位...

31350
来自专栏SeanCheney的专栏

《Pandas Cookbook》第02章 DataFrame基本操作1. 选取多个DataFrame列2. 对列名进行排序3. 在整个DataFrame上操作4. 串联DataFrame方法5. 在

62740
来自专栏云霄雨霁

无向图----深度优先搜索

30900
来自专栏C#

DotNet生成随机数的一些方法

  在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的...

21170
来自专栏chenjx85的技术专栏

leetcode-867-Transpose Matrix(矩阵由按行存储变成按列存储)

Given a matrix A, return the transpose of A.

17320
来自专栏架构之路

并查集Union-find及其在最小生成树中的应用

并查集是一种用途广泛的数据结构,能够快速地处理集合的合并和查询问题,并且实现起来非常方便,在很多场合中都有着非常巧妙的应用,。 本文首先介绍并查集的定义、原理及...

41940

扫码关注云+社区

领取腾讯云代金券