Creating Random Points inside a created polygon which has no definite boundaries
7 次查看(过去 30 天)
显示 更早的评论
Hello I am currently working on a bit of a project where I need to be able to create random points inside of an already created polygon that does not have known set boundaries. For my code provided below I am using the state of Washington that does not have any set boundaries for me to generate my points from. If I could get some proper guidance on the steps to take that would be wonderful. Thank you!
states = shaperead('usastatehi.shp');
wa = p(45); %creates a polgon in the shape of Washington State
numPointsIn = 20;
for i = 1:numPointsIn
flagIsIn = 0;
while ~flagIsIn
x(i) = rand(1);
y(i) = rand(1);
flagIsIn = polyshape(wa);
end
end
plot(wa,'r+')
0 个评论
采纳的回答
Walter Roberson
2017-11-29
Caution: the below code probably has problems for areas that cross 180E/W:
states = shaperead('usastatehi.shp');
st = states(45); %creates a polgon in the shape of Washington State
stBB = st.BoundingBox;
st_minlat = min(stBB(:,2));
st_maxlat = max(stBB(:,2));
st_latspan = st_maxlat - st_minlat;
st_minlong = min(stBB(:,1));
st_maxlong = max(stBB(:,1));
st_longspan = st_maxlong - st_minlong;
stX = st.X;
stY = st.Y;
numPointsIn = 20;
for i = 1:numPointsIn
flagIsIn = 0;
while ~flagIsIn
x(i) = st_minlong + rand(1) * st_longspan;
y(i) = st_minlat + rand(1) * st_latspan;
flagIsIn = inpolygon(x(i), y(i), stX, stY);
end
end
mapshow(st, 'edgecolor', 'r', 'facecolor', 'none')
hold on
scatter(x, y, '.')
hold off
2 个评论
Walter Roberson
2017-11-29
I think it is just left-over on your axes. mapshow() happens to construct the patch object in a way that does not clear the axes. You can add in a cla() before the mapshow()
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Computational Geometry 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!