学习《Building Applications with FME Objects》 之十 使用集合
GFME对象API包含下列集合对象:
FMEOStringArray,FMEOFeatureVector和FMEORectangleVector。
这些对象的主要用途是移动数据,比如作为一个参数或返回值,这些对象并不是用来替代VB中的集合的。
如果你FME对象应用程序打算使用其他的集合对象来处理,你可以写过程转换你现有的集合到FME对象集合,例如,下面的FeatureVectorToCollection过程拷贝FMEOFeatureVector对象到VB集合对象:
Sub FeatureVectorToCollection(ByRef colFeatures As Collection)
Dim i As Integer
Dim lCount As Integer
lCount = m_fmeFeatureVector.entries
For i = 0 To lCount - 1
If i = 0 Then
Call colFeatures.Add(m_fmeFeatureVector.element(i))
Else
Call colFeatures.Add( _
m_fmeFeatureVector.element(i), , , i)
End If
Next i
End Sub
注意:上面代码中的FOR中的IF语句是为了控制要素顺序,如果顺序不重要,可以删除IF语句以提高性能。
这个例子展示了FME对象集合对象与VB集合对象的重要区别:FME对象用基于0的索引,VB使用基于1的索引。
在本章,将学习到:
- 用ractangle和feature矢量集合
- 用字符串集合
使用矢量集合
FMEOFeatureVector和FMEORectangleVector集合相似,唯一的不同是,前者保存FMEOFeature对象,后者保存FMEORectangle对象,FMEORectangleVector的方法和属性如下图:
下列表描述属性和方法:
如果你的程序操作大型数据集,你应该考虑使用FMEOFeatureVectorOnDisk 集合替换FMEOFeatureVectorOnDisk,用磁盘代替内存存储要素,这样你的应用程序操作大型数据不会受到计算机虚拟内存的限制,FMEOFeatureVectorOnDisk 的方法和属性如下图:
使用字符串集合
FMEOStringArray集合对象存储字符串对象,大部分FME对象的方法和属性用字符串数组作为参数,用于输入和输出。该对象方法和属性如下图:
下列代码在一个数组中包含九个元素string1, "string 2", aaa, bbb, ccc, <NULL>, eee, xxx, and yyyy.:
Set fmeArray = m_fmeSession.createStringArray
sDelimiter = ";;"
sToken = " "s1 = "string1"
s2 = """string 2"""
s3 = "aaa;bbb;ccc;;eee"
s4 = "xxx yyyy "
Call fmeArray.append(s1)
Call fmeArray.append(s2)
Call fmeArray.appendCSVString(s3, sDelimiter)
Call fmeArray.appendTokenizeString(s4, sToken)
参考资料:
《Building Applications with FME Objects》February 2005
转载请注明文章来源 http://www.cnblogs.com/booolee