Actually the data I have has latitude(x) and longitude(y) of a road and also I have height of the road (z). Now I want to construct a plot which has shows height too and that height should be color coded. How can I do that ?

2 件のコメント

Sam Chak
Sam Chak 2022 年 3 月 21 日
Are you trying to plot a top view of the roads and indicate the height of each road?
Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
Yes that is what I want. I copied a data in below comment which include longitude, latitude and height

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

 採用された回答

KSSV
KSSV 2022 年 3 月 21 日

0 投票

Read about surf. It also depends on what data you have and how want to show up the plot. More help on sharing the data and showing your expectations.

7 件のコメント

Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
Here A is the longitude, Bis the latitude and C is the elevation. I have tried surf plot but it is not making sense.
KSSV
KSSV 2022 年 3 月 21 日
Try plot3 with limiting axis to the range you want.
Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
In Plot3 there is no color coding and it looks weired.
Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
@KSSV What your opinion?
KSSV
KSSV 2022 年 3 月 21 日
x = A;
y = B;
z = C ;
col = x; % This is the color, vary with x in this case.
surface([x x],[y y],[z z],[col col],...
'facecol','no',...
'edgecol','interp',...
'linew',2);
Now you need to change the view and limit the axis using axis. Read about view and axis
Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
Yes I think its helping out. Thanks
KSSV
KSSV 2022 年 3 月 21 日
Your data is huge, you need to restrict the data to a certain limit, plot and then see.

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

その他の回答 (1 件)

Sam Chak
Sam Chak 2022 年 3 月 21 日

0 投票

I guess you want to show something like this. Because the data is dense, it is not recommended to show the height of every point. But you can definitely adjust how and which particular point/region that you want to show the heights.
plot(A, B)
for t = 1:4379:numel(A)
text(A(t) + 0.0001, B(t) + 0.0001, ['(',num2str(C(t)),')'])
end

7 件のコメント

Sam Chak
Sam Chak 2022 年 3 月 21 日
Perhaps @KSSV can help on how to 'beautify' the plot and display the heights of the road.
Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
Thanks Sam. Why is it on just a single line I need something like this? How can I do that? Assume I dont get lines but how do i even get dots? I need elevation to be color coded.
Sam Chak
Sam Chak 2022 年 3 月 21 日
Okay, I'm trying to figure out what you want. The spatial data latitude and longitude indicate the position of each point on a 2D surface. Then you want the color gradient to represent the elevation of each point, isn it?
Muhammad Qaisar Fahim
Muhammad Qaisar Fahim 2022 年 3 月 21 日
Yes exactly. You understood it correctly
Sam Chak
Sam Chak 2022 年 3 月 21 日
I converted the longitude, latitude, elevation to Cartesian coordinates, and then used @KSSV's suggested code to plot it. Is this what you want?
x = C.*cos(B).*cos(A);
y = C.*cos(B).*sin(A);
z = C.*sin(B);
col = x; % This is the color, vary with x in this case.
surface([x x],[y y],[z z],[col col],...
'facecol','no',...
'edgecol','interp',...
'linew',2);
Sam Chak
Sam Chak 2022 年 3 月 21 日
Wait. I think you need to consider the Earth radius (6371 km) in order to project the location of the points on the curved surface in Cartesian coordinates.
And then at each point, you want to show the elevation in the C.mat data using the color gradient. I think the z coordinate in not needed.
x = (6371).*cos(B).*cos(A);
y = (6371).*cos(B).*sin(A);
z = (6371).*sin(B);
Sam Chak
Sam Chak 2022 年 3 月 21 日
Is the road curved? We need you to confirm.
x = (6371).*cos(B).*cos(A);
y = (6371).*cos(B).*sin(A);
scatter(x, y)

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

カテゴリ

ヘルプ センター および File ExchangeGeographic Plots についてさらに検索

製品

リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by