How to export contour plot as shape file?

6 ビュー (過去 30 日間)
Amra Rajuli
Amra Rajuli 2018 年 4 月 19 日
コメント済み: Ozgur Kirca 2023 年 12 月 6 日
Hi, I want to export result of plotting as shapefile. Before, I use several syntaxes, like shapewrite, but it does not work. Thank you.
[X,Y,Z] = peaks;
figure
A=contour(X,Y,Z,20);
shapewrite(A,'contour.shp')

採用された回答

KSSV
KSSV 2018 年 4 月 19 日
編集済み: KSSV 2018 年 4 月 19 日
[X,Y,Z] = peaks;
figure
A=contour(X,Y,Z,20);
% shapewrite(A,'contour.shp')
x = A(1,:) ;
y = A(2,:) ;
Data = struct([]) ;  % initilaize structure
for i = 1:length(x)
    Data(i).Geometry = 'Point' ;
    Data(i).X=x(i)  ;  % x value 
    Data(i).Y =y(i) ;  % y value
    Data(i).Name = randseq(1) ;   % some random attribute/ name
end
shapewrite(Data, 'myfile.shp')
  5 件のコメント
Max Friedrich
Max Friedrich 2021 年 2 月 4 日
In your attached figure you are asking where a set of extra scattered points come from. It may come from the contour matrix A itself. For each new contour line extra information is stored. The code provided by KSSV is interpreting this information as coordinates. Following example (based on KSSV solution) solves that problem:
x_cont = A(1,:);
y_cont = A(2,:);
count_parts=1;
idx=1;
while idx<length(y_cont) % extracts each single contour
part(count_parts,:)=[idx+1 idx+y_cont(idx)];
idx=idx+y_cont(idx)+1;
count_parts=count_parts+1;
end
count_parts=count_parts-1;
Data = struct([]) ; % initilaize structure
for i = 1:count_parts
Data(i).Geometry = 'Line' ;
Data(i).X=x_cont(part(i,1):part(i,2)) ; % x value
Data(i).Y =y_cont(part(i,1):part(i,2)) ; % y value
Data(i).Z =x_cont(part(i,1)-1) ; % store the contour value
end
shapewrite(Data, 'myfile.shp')
Ozgur Kirca
Ozgur Kirca 2023 年 12 月 6 日
Great script, worked very nicely! Thank you @Max Friedrich!!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by