在Matlab中创建一个'Geostruct'数据数组

时间:2011-07-21 18:46:43

标签: matlab geolocation

现在我在Matlab中创建mapstructs,然后使用shapewrite()函数将它们作为shape文件单独导出。

但是,我不想单独导出它们,而是将它们全部存储到一个数组中,然后将其保存为一个单一的shapefile,它保存存储在数组中的mapstructs中的所有点。

我的问题是我不知道如何初始化一个数组来保存这些maptructs。我试过了

`a = struct(sizeofarray)`

但它与mapstructs不兼容。我将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:2)

您可以在cell array

中存储任何类型的数据
a = cell(sizeofarray,1);

然后您可以像这样分配它们:

a{1} = firstmapstruct;
a{2} = secondmapstruct;

但是,如果我理解正确,您可以从MATLAB映射工具箱中获得mapstructs并想要连接此表单的结构:

firstmapstruct = 
609x1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    STREETNAME
    RT_NUMBER
    CLASS
    ADMIN_TYPE
    LENGTH

所以你应该这样做

a = firstmapstruct; 
a(end+1:end+numel(secondmapstruct))= secondmapstruct; 

依旧......

答案 1 :(得分:1)

如果您的所有单个地图结构都具有相同的字段,则应该能够使用函数REPMAT复制一个地图结构来初始化结构数组:

a = repmat(mapstruct1,1,N);  %# A 1-by-N structure array

然后根据需要填写每个元素:

a(2) = mapstruct2;  %# Assign another mapstruct to the second array element
a(3).X = ...;       %# Assign a value to the X field of the third element
a(3).Y = ...;       %# Assign a value to the Y field of the third element

您可以在this documentation中找到有关地理数据结构的更多信息。