Plot line with points at given distance

Hi all,
I need to find a way to plot markers along a line (river course; attached file) with a given distance, e.g. each 500m.
Is there a way to extract these values. The find function does not work in this situation since I only get an empty double column vector. I've used the TopoToolbox before, so the dataset is a STREAMobj which might be diffucult to read for one who hasn't the toolbox installed.
I tried to plot new points with spacing, but since the river is not smoothed and also should not be, point spacing starts and every new edge.
plot(Facet1)
hold on
spacing = 500;
plot(Facet1(1:spacing:end,1),'ro')
In advance thanks for your help.

4 个评论

Is this an accurate representation of your data?
S = load('NEU.mat')
Warning: Variable 'NEU' originally saved as a STREAMobj cannot be instantiated as an object and will be read in as a uint32.
S = struct with fields:
NEU: [6×1 uint32]
S.NEU
ans = 6×1
3707764736 2 1 1 1 3
The MATLAB that is used to run code in MATLAB Answers doesn't have TopoToolbox installed, so it doesn't know how to recreate a STREAMobj object that was created using that toolbox and saved in the MAT-file.
Ah, I see. I thought all the toolboxes were available here, so that's good to know.
Yes I updated my question. Should have mentioned that before.

请先登录,再进行评论。

 采纳的回答

Since you are working with TopoToolbox, you might want to use the function getlocation. If you have a STREAMobj S, then you can retrieve points at a distance of 500 m as follows:
DEM = GRIDobj('srtm_bigtujunga30m_utm11.tif');
FD = FLOWobj(DEM);
S = STREAMobj(FD,'minarea',1000);
S = klargestconncomps(trunk(S));
[x,y,val] = getlocation(S,[0:500:max(S.distance)]);
plot(S)
hold on
plot(x,y,'ok','MarkerFaceColor',[.5 .5 .5])
axis image

类别

帮助中心File Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息

产品

版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by