【问题标题】:Developing a Shapefile using MATLAB Mapping Toolbox using Object Oriented Programming使用面向对象编程的 MATLAB Mapping Toolbox 开发 Shapefile
【发布时间】:2013-05-21 11:38:27
【问题描述】:

我正在使用 MATLAB(映射工具箱)在不同国家/地区之间创建大量线路。由于有这么多行,我正在尝试使用面向对象的编程来做到这一点。

问题是我从“Transline”类创建了很多对象(线),但是当我尝试使用“shapewrite”命令将整个集合导出为形状文件时,MATLAB 告诉我它是无效的,因为“shapewrite”命令需要一个“struct”类型的输入参数,而不是“Transline”(这是这些对象的类)。有什么方法可以使用面向对象的编程将线集导出为 shapefile?

谢谢。

【问题讨论】:

    标签: oop mapping matlab


    【解决方案1】:

    我认为您最好的选择是在将对象传递给 shapewrite 之前简单地调用 struct(myObjs)。如果结构的输出格式不正确,您可以重载对象中的 struct 方法。例如。

    methods
       function myStructOfObj=struct(obj)
                 %create correct structure
       end
    end
    

    【讨论】:

    • 谢谢,但是你能告诉我在哪里写这段代码吗?我实际上想创建超过 50 行(每行都是一个对象)并将整个集合而不是单独的行转换为一个结构。如果我在我创建对象的代码末尾写这个,它只会将第一个转换为结构而忽略其他。如果我将它合并到我的类定义文件中,例如,作为一种方法,它根本没有任何效果
    • 我终于想通了!感谢您的回答;真的很有帮助!
    • 很高兴为您提供帮助,所以我猜您认为 struct 方法不会在对象树中递归调用。
    • 是的,因为即使我将 struct 函数作为方法包含在类定义文件中(类的名称是“Transmissionline”),我从该类创建的任何对象仍然属于该类类类型(传输线)而不是“结构”。所以,在我创建对象(translines)的代码中,我在每个对象调用之后添加了这个命令:basetranslines(1,i) = struct(transline);我=我+1;然后我使用 basetranslines 作为 shapewrite 命令的 mapstruct。这种方法的唯一缺点是我必须为每个对象复制和粘贴另外两行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2010-09-18
    • 1970-01-01
    • 2011-08-11
    • 2011-02-24
    相关资源
    最近更新 更多