How to export contour plot as shape file?

29 ビュー (過去 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 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by