Extract data from a matrix for each polygon in a shape file

10 次查看(过去 30 天)
I have a matrix (331X301) at 0.1 degree resolution data encompassing entire India and a shapefile with 2299 attributes(polygons). I generally extarct data for each attribute from the matrix raster in ArcGIS. Is there a way to extract the mean data(mean of all the 0.1 degree grids that fall in that attribute) for all the polygons of the shpfile in Matlab?
Note: the data is 3 dimension-331x301x12.
Below is the code written to overlay the shapefile on the data.
However, the shapefile S has 2299 attributes, I could not extract value of z2 for each of these 2299 attributes
Reading the shapefile
S=shaperead('C:\shpfiles\india_adm3.shp');
%selecting the first month from the data of 321x321x12
z2= data(:,:,1)
%makking dummy coordinates for the data
x = linspace(67, 97, 301);
y = linspace(5, 38, 331);
[x,y] = meshgrid(x,y);
y=flipud(y);
%Clipping the data to the coastlines
isin = inpolygon(x,y,S.X,S.Y);
z2(~isin) = NaN;
figure('color','w');
mx=geoshow('landareas.shp', 'FaceColor', 'White');
%display the data
contourf(x,y,z2,'LineColor','none');
hold on
%display the shapefile
S1=shaperead('C:\shpfiles\india_adm3.shp','Attributes',{'BoundingBox'});
lon1 = [S1.X]';
lat1 = [S1.Y]';
plot(lon1,lat1,'Linewidth',2,'color',[0 0 0]);

采纳的回答

KSSV
KSSV 2019-1-22
Read about inpolygon.
  7 个评论
Sourangsu Chowdhury
h = geoshow(S);
set(h.Children, {'CData'}, {S.cx}');
set(h.Children, 'Facecolor', 'flat');
I tried with the following code, but it returns an error,
Error using matlab.graphics.primitive.Patch/set
Value cell array handle dimension must match handle vector length.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by