学习《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的方法和属性如下图:

 

image

下列表描述属性和方法:

image

如果你的程序操作大型数据集,你应该考虑使用FMEOFeatureVectorOnDisk 集合替换FMEOFeatureVectorOnDisk,用磁盘代替内存存储要素,这样你的应用程序操作大型数据不会受到计算机虚拟内存的限制,FMEOFeatureVectorOnDisk 的方法和属性如下图:

image

 

 

使用字符串集合

FMEOStringArray集合对象存储字符串对象,大部分FME对象的方法和属性用字符串数组作为参数,用于输入和输出。该对象方法和属性如下图:

image

image

image

 

下列代码在一个数组中包含九个元素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

posted @ 2009-08-24 11:43  电电儿  阅读(906)  评论(3编辑  收藏  举报