MATLAB: Creating Random Points inside a created polygon which has no definite boundaries

MATLABpoint generatorpolygonrandomset polygonstatesunknown boundaries

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+')

Best Answer

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