Как в Matlab построить профиль местности?
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Как в Matlab построить профиль местности?
Доброго всем дня. Я в топографических вопросах новичек. Прошу помощи.
Построение профиля местности в Matlab - вопрос конечно общий. Поэтому начну сначала.
Я так понял сначала нужно загрузить геопространственные данные в формате Geotiff например.
Где их скачать - подскажите пожалуйста.
Заранее премного благодарен.
Построение профиля местности в Matlab - вопрос конечно общий. Поэтому начну сначала.
Я так понял сначала нужно загрузить геопространственные данные в формате Geotiff например.
Где их скачать - подскажите пожалуйста.
Заранее премного благодарен.
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
- jerry-maori
- Гуру
- Сообщения: 585
- Зарегистрирован: 22 авг 2012, 17:02
- Репутация: 143
- Откуда: Нижний Новгород
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Re: Как в Matlab построить профиль местности?
Trir, спс за подсказку. Только вот разобраться пока сложно. Может подскажите.trir писал(а):http://gis-lab.info/qa/srtm.html
В вашей ссылке там рассказывается о данных SRTM. Насколько я понял в этой статье
есть ссылка http://gis-lab.info/data/srtm-tif/ , в которой представлены данные SRTM
в формате Geotiff (мозаика 5х5 градусов).
Все ли я правильно понял?
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Re: Как в Matlab построить профиль местности?
А вообще правильно ли использовать данные в формате Geotiff? Я так понял что это
растровые данные. А для построения нужны векторные данные.
Является ли Shape-файл векторным данными? И где их скачать можно?
растровые данные. А для построения нужны векторные данные.
Является ли Shape-файл векторным данными? И где их скачать можно?
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как в Matlab построить профиль местности?
Нифига вы не поняли!
Geotiff, в данном случае, это "regular data grid"!
Geotiff, в данном случае, это "regular data grid"!
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Re: Как в Matlab построить профиль местности?
Не буду оправдываться. Подскажите что нужно сначала понять и что такое "regular data grid"???trir писал(а):Нифига вы не поняли!
Geotiff, в данном случае, это "regular data grid"!
А то я уже запутался.
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как в Matlab построить профиль местности?
Объяснить?
А с чего начать?
Что вы знаете и что непонимаете?
А с чего начать?
Что вы знаете и что непонимаете?
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Re: Как в Matlab построить профиль местности?
Мне нужно построить профиль местности и выстроить линию прямой линии между двумя точками, чтобы видетьtrir писал(а):Объяснить?
А с чего начать?
Что вы знаете и что непонимаете?
есть какие-либо препятствия или нет.
Я так понял сначало надо загрузить геопространственные данные какой-либо местности.
Геопространственные данные я так понял есть в векторной и растровой форме. Какие из них лучше использовать?
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: Как в Matlab построить профиль местности?
Все зависит от используемого ПО, но 90% моделирования задач видимости решается на растровых данных (грид, DEM и т.п.), можно и векторные - но нужно будет уже на их основе моделировать такую поверхность (т.е. опять создавать растр), а уже на ее основе моделировать видимость.
- jerry-maori
- Гуру
- Сообщения: 585
- Зарегистрирован: 22 авг 2012, 17:02
- Репутация: 143
- Откуда: Нижний Новгород
Re: Как в Matlab построить профиль местности?
В Map toolbox всё нужное уже есть.. И загрузка растров, и инструментарий для линий видимости...
Почитайте встроенную справку по данному toolbox...
Почитайте встроенную справку по данному toolbox...
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Re: Как в Matlab построить профиль местности?
Читаю. С английским сложновато конечно.
А вот такой вопрос: Скачал я по ссылке http://gis-lab.info/data/srtm-tif/ значит архив srtm_49_01.zip.
Там три файла. Один с расширением .tif. Ну с ним все понятно - это файл именуемый Geotiff.
А ест еще два файла с расширением .hdr и .tfw - это "кто" такие?
А вот такой вопрос: Скачал я по ссылке http://gis-lab.info/data/srtm-tif/ значит архив srtm_49_01.zip.
Там три файла. Один с расширением .tif. Ну с ним все понятно - это файл именуемый Geotiff.
А ест еще два файла с расширением .hdr и .tfw - это "кто" такие?
Последний раз редактировалось rashid_s 08 дек 2014, 17:47, всего редактировалось 1 раз.
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 05 дек 2014, 10:06
- Репутация: 0
- Откуда: Омск
Re: Как в Matlab построить профиль местности?
А кстати дошел я до ссылки http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp
Там можно скачать либо в формате Geotiff либо в формате ArcInfo ASCII. А в каком формате лучше - кто
подскажет?
Там можно скачать либо в формате Geotiff либо в формате ArcInfo ASCII. А в каком формате лучше - кто
подскажет?
- jerry-maori
- Гуру
- Сообщения: 585
- Зарегистрирован: 22 авг 2012, 17:02
- Репутация: 143
- Откуда: Нижний Новгород
Re: Как в Matlab построить профиль местности?
Касаемо формата -- вообще то пофиг.
Geotiff даст вам матрицу с 16bit int
ASCII даст примерно тоже самое.
Если планируется обрабатывать какой-то большой участок, что лучше ASCII ( матлаб большие ASCII файлы быстрее считывает, чем большие растры)
+ учтите, что вроде как в ASCII в заголовке идут данные по геопривязке. т.е. там чуть аккуратнее придётся считывать...
Для tiff вся привязка лежит в tfw файле.
В итоге вы в любом случае получите матрицу давблов, где каждая ячейка -- высота в определённой точке.
А дальше всё зависит от того, есть у вас map tool box или нет.
Если есть - курите его функции
Если нет - курите mathcentralexhcange по словам "height profile"
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 построить профиль местности?
Опять в личке всплыл вопрос по профилям, поэтому немножко некропоста, дабы закрыть тему...
Прилагаю вариант, который учитывает возможность использования более одного тайла SRTM и вообще хитёр
Прилагаю вариант, который учитывает возможность использования более одного тайла 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 (169.75 КБ) 14307 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя