2011-07-21 8 views
1

今私はMatlabでmapstructを作成してから、shapewrite()関数を使って個々にシェイプファイルとしてエクスポートしています。Matlabで 'Geostruct'データの配列を作成

しかし、個々にエクスポートするのではなく、それらをすべて配列に格納し、最後に、配列に格納されているmapstructsのすべてのポイントを保持する単一のshapefileとして保存します。

私の問題は、これらのマップ構造を保持するために配列を初期化する方法がわかりません。私は試しました

`a = struct(sizeofarray)` 

しかし、mapstructsと互換性がありません。私はどんな助けもありがとう!

+0

私は 'mapstruct'に経験はありませんが、これは役に立つかもしれません(構造の配列を作る):http://stackoverflow.com/questions/4166438/how-do-i-define-a-structure-in- matlab/4169216#4169216 – Amro

答えて

2

あなたはcell arrayにあらゆる種類のデータを保存することができます。

a = cell(sizeofarray,1); 

あなたは、このようにそれらを割り当てることができます。私が正しくあなたを理解していれば

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

はしかし、あなたは、MATLABからmapstructsを持っていますMapping Toolboxを使用し、このフォームの構造体を連結したい場合:

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

おそらくあなたの個々のmapstructsのすべてが同じフィールドを持っている場合は、使用してあなたのmapstructsのいずれかを複製することにより、構造体配列を初期化することができるはず

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

を行うというように...

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にあります。

+0

私は私の質問に2つの答えを選ぶことができたら、私は(私は彼が最初に投稿したb/cを選択し、彼は最終的に使用した実装でした)。このテクニックは、私の場合も同じですが、すべて同じフォーマットです。再度、感謝します! – Aaron

関連する問題