Inpolygon for Georeference raster and polygone files.

14 Ansichten (letzte 30 Tage)
Marmar
Marmar am 10 Mai 2018
Kommentiert: Amin am 18 Okt. 2022
Hi there, I had a shapefile that imported in MATLAB by shaperead (the shapefile contains about 500 polygons, it is now a struct file & each row defines a polygone) and I have a raster which is georeferenced for the same area which I imported by geotiffread. I want to know the values (mean, sum, max) of the raster pixels that are located in each polygons. I have been suggested to use inpolygon, but I don't have any idea how can I put a my struct and raster and in the inpolygon function. Any idea is really appreciated.

Antworten (1)

duilio fonseca
duilio fonseca am 19 Aug. 2019
Bearbeitet: duilio fonseca am 19 Aug. 2019
Hi there, i have a solution,
% in my case i used lon and lat from NetCDF file, you can use the georefence data from your tiff.
%example
lon=-(77:0.05:65); %longitude in WGS84 for example with 0.05 degrees of resolution
lon=-(55:0.05:50); %longitude in WGS84 for example with 0.05 degrees of resolution
%Now do you have to craete a Mesh
[X,Y]=meshgrid(lon,lat);
points=[X(:),Y(:)]; %point of the grid
%Load your polygons
S = shaperead('yourfile.shp');
%Loading polygons (one by one)
for i=1:length(S)
%you can define yours polygons with some variable... or do it directly from Shape
polygons={S(i).X,S(i).Y}; %S(i).X and S(i).Y define the polygon "i" coordenates
%Index of point inside of each a polygon "i"
ind=inpolygon(points(:,1),points(:,2),polygons{:,2},polygons{:,3});
%here the function depends of you, in this example i used mean
mean_variable_polygon(i,:)=mean(your_raster_file(ind));
clear polygons ind
end
In other case, i recomend you use Zonal statistic extraction tool from Qgis.
  2 Kommentare
Dylan Ruth
Dylan Ruth am 17 Jul. 2022
I'm not the original poster, but seriously, thank you so much for this code! Worked like a charm for some work I'm doing with surface elevation DEMs.
Amin
Amin am 18 Okt. 2022
How can I do the same operation in python?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by