• 学习《Building Applications with FME Objects》 之六 转换要素


    这个API可以非常容易的在格式之间做转换,首先打开reader和writer(具体操作前两篇已经有介绍),可以简单的使用FMEODialog的xlatePrompt方法显示窗口,同时允许用户输入reader和writer的参数:

    image

    注意:FMEODialog对象仅能用于WINDOWS平台

    下面的代码演示了该方法返回的参数并传递给reader和writer:

    Public Sub TranslationPrompt(sSourceDir As String, _
                                    sDestDir As String)
        Dim sDestDataset As String
        Dim sDestFormat As String
        Dim sSrcDataset As String
        Dim sSrcFormat As String
        Dim bCompleted As Boolean
        Dim bEnd As Boolean
        Dim fmeFeature As FMEOFeature
        Dim fmeDialog As FMEODialog
        Dim fmeSrcDirectives As FMEOStringArray
        Dim fmeDestDirectives As FMEOStringArray
        Dim fmeKeywords As FMEOStringArray
        Set fmeKeywords = m_fmeSession.createStringArray
        Set fmeDialog = m_fmeSession.createDialog
        Set fmeSrcDirectives = m_fmeSession.createStringArray
        Set fmeDestDirectives = m_fmeSession.createStringArray
        bCompleted = fmeDialog.xlatePrompt("MIF", sSourceDir, _
                     "MIF", sDestDir, _
                     sSrcFormat, sSrcDataset, fmeSrcDirectives, _
                     sDestFormat, sDestDataset, fmeDestDirectives)
        If bCompleted = True Then
            Set m_fmeReader = m_fmeSession.createReader( _
                                        sSrcFormat, _
                                        True, fmeSrcDirectives)
            Call m_fmeReader.open(sSrcDataset, fmeKeywords)
            Set m_fmeWriter = m_fmeSession.createWriter( _
                                                sDestFormat, _
                                                fmeDestDirectives)
            Call m_fmeWriter.open(sDestDataset, fmeKeywords)
    End Sub

    xlatePrompt方法支持的参数:

    image

    如何源和目标的参数中都提供了TITLE值,那么优先采用目标参数中设定的TITLE值。

    一旦reader和writer被打开,就可以简单的做要素转换,从reader写到writer,代码如下:

    bEnd = False
    Do While bEnd = False
        bEnd = m_fmeReader.readSchema(fmeFeature)
        If bEnd = False Then
            Call m_fmeWriter.addSchema(fmeFeature)
        End If
    Loop
    bEnd = False
    Do While bEnd = False
        bEnd = m_fmeReader.read(fmeFeature)
        If bEnd = False Then
            Call m_fmeWriter.write(fmeFeature)
        End If
    Loop

     

    提示:FMEOWriter的addSchema和write方法会清空传递给它的要素,如果你还打算在写入后继续使用该要素,那么在写入前先对该要素进行clone(克隆)。

     

    一旦所有的要素被转换完毕,就需要关闭reader和writer,如下:

    Call m_fmeReader.Close

    Call m_fmeWriter.Close

     

     

     

     

    参考资料:

    《Building Applications with FME Objects》February 2005

    转载请注明文章来源 http://www.cnblogs.com/booolee

  • 相关阅读:
    java中map接口hashMap以及Enty之间的用法和关系
    Collection集合总结,List和set集合的用法,HashSet和LinkedHashSetde用法
    微信小程序开发攻略
    Java闰年的计算,Calendar的用法
    Java计算计算活了多少天
    Java用代码演示String类中的以下方法的用法
    Java判断一个字符串中有多少大写字母、小写字母和数字
    Java将一个字符串的首位改为大写后边改为小写的实现,String
    Java 获取一个字符串中,另一个字符串出现的次数
    linux下重命名文件或文件夹(linux)
  • 原文地址:https://www.cnblogs.com/booolee/p/1549760.html
Copyright © 2020-2023  润新知