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集合Object Storage Service字串對象,大部分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