Извлечение данных для каждого района из матрицы в Matlab - PullRequest
0 голосов
/ 19 января 2019

У меня есть матрица (331X301) с разрешением 0,1 градуса, охватывающая всю Индию, и шейп-файл уровня района с атрибутом districtName.Я обычно извлекаю данные для каждого района из матричного растра в ArcGIS.Есть ли способ извлечь средние данные (среднее для всех сеток с шагом в 0,1 градуса, которые попадают в этот район) для всего района в Матлабе?

Ссылка для шейп-файла: https://1drv.ms/f/s!Ajxh9oeoND9bhOcwrzoLfEqBUNUTOg

Ссылка для данных: https://1drv.ms/u/s!Ajxh9oeoND9bhOcva9i-ByW45YBwoA

Примечание: данные имеют размер 3-331x301x12.

Код, которыйНаложение шейп-файла на данные ниже:

Однако шейп-файл S имеет 2299 атрибутов, я не смог извлечь значение z2 для каждого из этих 2299 атрибутов

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');

contourf(x,y,z2,'LineColor','none');

hold on

displaying 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]);

1 Ответ

0 голосов
/ 21 января 2019

Следовательно, у вас есть, по сути, набор из 12 изображений ...

Вы можете приблизительно изобразить 1-ю карту (и следующие) в виде:

imshow(data(:,:,1),[0 400])

И среднее значение в виде:

imshow(mean(data,3),[0 400])

Но, боюсь, вам нужно что-то еще?

Кстати, я не вижу содержимого файла в первом приложении

...