how to deal with large polygons ?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
here is my code for more info:
shape = shaperead(fullfile('KTAF_sat_shapefiles','shapefiles','SAU1.shp'));
numOfpolygons=size(shape,1);
total=0;
for i=1:numOfpolygons
[A,x,y,I] =geoimread('SVDNB_npp_20150201-20150228_75N060W_vcmcfg_v10_c201504281504.avg_rade9h.tif',shape(i).X,shape(i).Y);
rx = shape(i).X(1:end-1);
ry = shape(i).Y(1:end-1);
[X,Y] = meshgrid(x,y);
mask =inpolygon(X,Y,rx,ry);
result= mask.*A;
sumOfValues= sum(result(:));
total=total+sumOfValues;
sumOfValues1=sprintf('%f', sumOfValues)
end
disp('The total:');
sumOfValues1=sprintf('%f',total)
0 commentaires
Réponses (1)
Anton Semechko
le 1 Juil 2018
Check out 'DecimatePoly' function on FEX: https://www.mathworks.com/matlabcentral/fileexchange/34639-decimate-polygon
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.
0 commentaires
Voir également
Catégories
En savoir plus sur Modify Image Colors dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!