How to export contour plot as shape file?

조회 수: 8 (최근 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 CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by