Как в Matlab построить профиль местности?

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Как в Matlab построить профиль местности?

Сообщение rashid_s » 05 дек 2014, 10:30

Доброго всем дня. Я в топографических вопросах новичек. Прошу помощи.
Построение профиля местности в Matlab - вопрос конечно общий. Поэтому начну сначала.
Я так понял сначала нужно загрузить геопространственные данные в формате Geotiff например.
Где их скачать - подскажите пожалуйста.

Заранее премного благодарен.

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как в Matlab построить профиль местности?

Сообщение trir » 05 дек 2014, 10:58


Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Как в Matlab построить профиль местности?

Сообщение jerry-maori » 05 дек 2014, 11:14


rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Re: Как в Matlab построить профиль местности?

Сообщение rashid_s » 07 дек 2014, 17:17

Trir, спс за подсказку. Только вот разобраться пока сложно. Может подскажите.
В вашей ссылке там рассказывается о данных SRTM. Насколько я понял в этой статье
есть ссылка http://gis-lab.info/data/srtm-tif/ , в которой представлены данные SRTM
в формате Geotiff (мозаика 5х5 градусов).
Все ли я правильно понял?

rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Re: Как в Matlab построить профиль местности?

Сообщение rashid_s » 08 дек 2014, 14:11

А вообще правильно ли использовать данные в формате Geotiff? Я так понял что это
растровые данные. А для построения нужны векторные данные.
Является ли Shape-файл векторным данными? И где их скачать можно?

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как в Matlab построить профиль местности?

Сообщение trir » 08 дек 2014, 14:24

Нифига вы не поняли!
Geotiff, в данном случае, это "regular data grid"!

rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Re: Как в Matlab построить профиль местности?

Сообщение rashid_s » 08 дек 2014, 14:32

trir писал(а):Нифига вы не поняли!
Geotiff, в данном случае, это "regular data grid"!
:( Не буду оправдываться. Подскажите что нужно сначала понять и что такое "regular data grid"???
А то я уже запутался.

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как в Matlab построить профиль местности?

Сообщение trir » 08 дек 2014, 14:55

Объяснить?
А с чего начать?
Что вы знаете и что непонимаете?

rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Re: Как в Matlab построить профиль местности?

Сообщение rashid_s » 08 дек 2014, 16:58

trir писал(а):Объяснить?
А с чего начать?
Что вы знаете и что непонимаете?
Мне нужно построить профиль местности и выстроить линию прямой линии между двумя точками, чтобы видеть
есть какие-либо препятствия или нет.
Я так понял сначало надо загрузить геопространственные данные какой-либо местности.
Геопространственные данные я так понял есть в векторной и растровой форме. Какие из них лучше использовать?

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Как в Matlab построить профиль местности?

Сообщение Донецков » 08 дек 2014, 17:29

Все зависит от используемого ПО, но 90% моделирования задач видимости решается на растровых данных (грид, DEM и т.п.), можно и векторные - но нужно будет уже на их основе моделировать такую поверхность (т.е. опять создавать растр), а уже на ее основе моделировать видимость.

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Как в Matlab построить профиль местности?

Сообщение jerry-maori » 08 дек 2014, 17:33

В Map toolbox всё нужное уже есть.. И загрузка растров, и инструментарий для линий видимости...
Почитайте встроенную справку по данному toolbox...

rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Re: Как в Matlab построить профиль местности?

Сообщение rashid_s » 08 дек 2014, 17:42

Читаю. :D С английским сложновато конечно.
А вот такой вопрос: Скачал я по ссылке http://gis-lab.info/data/srtm-tif/ значит архив srtm_49_01.zip.
Там три файла. Один с расширением .tif. Ну с ним все понятно - это файл именуемый Geotiff.
А ест еще два файла с расширением .hdr и .tfw - это "кто" такие?
Последний раз редактировалось rashid_s 08 дек 2014, 17:47, всего редактировалось 1 раз.

rashid_s
Интересующийся
Сообщения: 18
Зарегистрирован: 05 дек 2014, 10:06
Репутация: 0
Откуда: Омск

Re: Как в Matlab построить профиль местности?

Сообщение rashid_s » 08 дек 2014, 17:46

А кстати дошел я до ссылки http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp :shock:
Там можно скачать либо в формате Geotiff либо в формате ArcInfo ASCII. А в каком формате лучше - кто
подскажет?

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Как в Matlab построить профиль местности?

Сообщение jerry-maori » 08 дек 2014, 19:31

Касаемо формата -- вообще то пофиг.
Geotiff даст вам матрицу с 16bit int
ASCII даст примерно тоже самое.
Если планируется обрабатывать какой-то большой участок, что лучше ASCII ( матлаб большие ASCII файлы быстрее считывает, чем большие растры)
+ учтите, что вроде как в ASCII в заголовке идут данные по геопривязке. т.е. там чуть аккуратнее придётся считывать...
Для tiff вся привязка лежит в tfw файле.
В итоге вы в любом случае получите матрицу давблов, где каждая ячейка -- высота в определённой точке.
А дальше всё зависит от того, есть у вас map tool box или нет.
Если есть - курите его функции
Если нет - курите mathcentralexhcange по словам "height profile"

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Как в Matlab построить профиль местности?

Сообщение jerry-maori » 02 июл 2015, 12:16

Опять в личке всплыл вопрос по профилям, поэтому немножко некропоста, дабы закрыть тему...

Прилагаю вариант, который учитывает возможность использования более одного тайла SRTM и вообще хитёр :)

Код: Выделить всё

clear
clc
[Z_UP, R_UP] = geotiffread('srtm_49_01.tif'); %считываем первый растр
[Z_DOWN, R_DOWN] = geotiffread('srtm_49_02.tif'); %считываем второй растр

GRID_SIZE=size(Z_UP,1);
map=[Z_UP;Z_DOWN]; % склеиваем их в одну матрицу
mapref=R_UP; % сохраняем матрицу привязки растра

% Делаем универсальный вариант с учётом того, какого размера растры - 6000
% или 6001
if GRID_SIZE==6000
    mapref.RasterSize=[12000 6000]; % меняем размер, потому что теперь у нас не два растра 6000x6000, а один размером 12000x6000
    mapref.LatitudeLimits=[50 60]; %корректируем значения границ по широте
    mapref.LongitudeLimits=[60 65]; %корректируем значения границ по широте
else
    mapref.RasterSize=[12002 6001]; % меняем размер, потому что теперь у нас не два растра 6001x6001, а один размером 12002x6001
    mapref.LatitudeLimits=[50 60]; %корректируем значения границ по широте
    mapref.LongitudeLimits=[60 65]; %корректируем значения границ по широте
end
%Точка начала профиля
lat1=54.99889;
lon1=60.37778;
%Точка окончания профиля
lat2=55.12726;
lon2=60.57104;

[z,rng,lat,lon] = mapprofile(double(map),mapref,[lat1 lat2],[lon1 lon2]);

% магия рисования. Делаем референсый вектор
R = georasterref('RasterSize', size(map), 'Latlim', mapref.LatitudeLimits, 'Lonlim', mapref.LongitudeLimits);
figure
%рисуем. geoshow работает фигово (жрёт многие оперативы и вообще
%некошерный)
grid2image(map, R)
hold on
%красим в иные цвета матрицу высот
zlimits = [min(map(:)) max(map(:))];
demcmap(zlimits);
colorbar
plot(lon,lat,'.-r');
xlabel('Долгота');
ylabel('Широта');
title(['Длина профиля в метрах: ' num2str(deg2km(rng(end))*1000)]);

%самая магия. рисуем один график внутри другого. цифры - в процентах от
%размера исходного графика
handaxes2 = axes('Position', [0.4 0.4 0.3 0.3]);
plot(deg2km(rng),z,'-r')
xlabel 'Расстояние от точки старта (км)'
ylabel 'Высота (м)'
%красим подписи в белый цвет
set(get(handaxes2, 'XLabel'), 'Color', 'w','FontSize',12,'FontWeight','bold')
set(get(handaxes2, 'YLabel'), 'Color', 'w','FontSize',12,'FontWeight','bold')
set(handaxes2,'XColor','w')
set(handaxes2,'YColor','w')
%а линии сетки в "радикальный чорный"
set(handaxes2,'GridColor','k');
set(handaxes2,'FontWeight','bold');
grid on
Вложения
untitled.png
untitled.png (169.75 КБ) 14127 просмотров

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей