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

조회 수: 4 (최근 30일)
Sourangsu Chowdhury
Sourangsu Chowdhury 2019년 1월 22일
댓글: KSSV 2019년 1월 22일
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
Sourangsu Chowdhury 2019년 1월 22일
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.
KSSV
KSSV 2019년 1월 22일
figure
hold on
for i = 1:N
x = S(i).X ;
y = S(i).Y ;
patch(x,y,rand(1,3))
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Map Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by