Широты и долготы ненулевых элементов сетки данных
[lat,lon] = findm(Z,R)
[lat,lon] = findm(latz,lonz,Z)
[lat,lon,val] = findm(...)
mat = findm(...)
[lat,lon] = findm(Z,R) вычисляет широты и долготы ненулевых элементов регулярной сетки данных, Z. R может быть объектом географической растровой ссылки, ссылочным вектором или ссылочной матрицей.
Если R - объект географической растровой ссылки, RasterSize свойство должно быть совместимым с size(Z).
Если R является ссылочным вектором, он должен быть 1 на 3 с элементами:
[cells/degree northern_latitude_limit western_longitude_limit]
Если R является ссылочной матрицей, она должна быть 3 на 2 и преобразовывать индексы растровых строк и столбцов в географические координаты или из них в соответствии с:
[lon lat] = [row col 1] * R
Если R является ссылочной матрицей, она должна определять (без вращения, без перекоса) соотношение, в котором каждый столбец сетки данных падает вдоль меридиана, а каждая строка падает вдоль параллели. По умолчанию используется интерполяция ближайшего соседа. NaN возвращается для точек за пределами сетки или для которых lat или lon содержат NaN. Все углы в единицах градусов.
[lat,lon] = findm(latz,lonz,Z) возвращает широты и долготы ненулевых элементов геолокационной сетки данных Z, который является логическим или числовым массивом M-by-N. Как правило, latz и lonz массивы M-by-N широты-долготы, но latz может быть вектором широты длины M и lonz может быть вектором долготы длины N.
[lat,lon,val] = findm(...) возвращает значения ненулевых элементов Z, в дополнение к их местоположениям.
mat = findm(...) возвращает один вывод, где mat = [lat lon].
Эта функция работает в двух режимах: с обычной сеткой данных и с геоориентированной сеткой данных.
Сетка данных может быть результатом логической операции. Например, загрузить растровые данные отметки и объект ссылки на географические ячейки. Затем найдите все местоположения с отметками более 5500 метров.
load topo60c
[lat,lon] = findm((topo60c > 5500),topo60cR);
[lat lon]ans = 34.5000 79.5000 34.5000 80.5000 30.5000 84.5000 28.5000 86.5000
Эти точки находятся в Гималаях. Найдите значения сетки в этих расположениях с помощью geographicToDiscrete и sub2ind функции.
[row,col] = geographicToDiscrete(topo60cR,lat,lon); indx = sub2ind(size(topo60c),row,col); heights = topo60c(indx)
heights =
5559
5515
5523
5731