how to deal with large polygons ?

1 view (last 30 days)
Reema Alhassan on 1 Jul 2018
Answered: Anton Semechko on 1 Jul 2018
hello everyone, I'm using geoimread() to read the image with the x and y coordinates of each polygon. and then I extract the x and y coordinates of each polygon and use inpolygon() to intersect the coordinates of the image and the polygon but if the polygon was large the inpolygon() doesn't give a result (the program is is busy for a long time)
is there a function faster than inpolygon()? or is there a way to divide the polygon to small polygons and process each one alone? the code is working when I intersect small polygons with the image only. in the attachment you can find a screen shot of the shape and the stalliate image
numOfpolygons=size(shape,1);
total=0;
for i=1:numOfpolygons
rx = shape(i).X(1:end-1);
ry = shape(i).Y(1:end-1);
[X,Y] = meshgrid(x,y);
sumOfValues= sum(result(:));
total=total+sumOfValues;
sumOfValues1=sprintf('%f', sumOfValues)
end
disp('The total:');
sumOfValues1=sprintf('%f',total)

Anton Semechko on 1 Jul 2018
Included in the above submission is 'DecimatePoly_demo3' function, which demonstrates how 'DecimatePoly' can be used to improve run-time of in-polygon tests at the cost of minor misclassification errors.