Страница 1 из 1
возможно ли объединить все кусочки карт srtm РФ
Добавлено: 04 авг 2015, 12:47
MTi
Здравствуйте! Вопрос по matlab.
Вопрос заключается в следующем: возможно ли объединить все кусочки карт srtm РФ в единую матрицу и работать с ней по координатам?
Пока объединяю только по 2, если объединять для всей РФ, то код слишком уж громоздкий будет.
Код: Выделить всё
[Z_UP, R_UP] = geotiffread('srtm_51_01.tif');
[Z_DOWN, R_DOWN] = geotiffread('srtm_51_02.tif');
map=[Z_UP; Z_DOWN];
mapref= R_UP;
mapref.RasterSize=[12002 6001];
mapref.LatitudeLimits=[50 60];
mapref.LongitudeLimits=[70 75];
ERinMeter=6371000;
lat1=56.54638;
lon1=74.81697;
lat2=56.13838;
lon2=74.73653;
distInMeters=distance(lat1,lon1,lat2,lon2,ERinMeter);
[z,rng,lat,lon]=mapprofile(double(map), mapref,[lat1 lat2],[lon1 lon2]);
figure
plot(deg2km(rng),z)
Наверняка есть какая-то возможность сделать проще.
вот карты
https://drive.google.com/file/d/0B1T...ew?usp=sharing
https://drive.google.com/file/d/0B1T...ew?usp=sharing
Может лучше использовать другие карты? Прошу помощи!!!!!!
Заранее огромное спасибо за помощь.
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 04 авг 2015, 12:57
jerry-maori
А Вам зачем? Т.е. какова финальная цель усилия?
От ответа на этот вопрос многое зависит. Может и не надо ничего объединять...
+ я вас сразу скажу, что для оперирования такой матрицей даблов вам никаких оперативных памятей не хватит...
Кроме того, в приведённом коде рассмотрен частный случай объединения (когда матрицы исходные имели размер 6001 на 6001 пиксель.) + заранее известно, что женить надо по горизонтали. А вообще они должны быть 6000 на 6000 и располагаються могуть как угодно. Поэтому он и написан прям пошагово
если прям есть великое желание женить в общем случае, то я бы сначала посчитал бы, как, зная номер одного листа, определить всех его соседей... ну и там уже просто дальше...
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 04 авг 2015, 13:02
MTi
В том то и дело, что уже памяти не хватает... double уже ему не нравится. Попутный вопрос, может вы знаете, как это исправить? пишет out of memory.
Карты мне нужно объединить для того, чтобы по координатам строить линии прямой видимости. Из-за того, что фрагменты карт маленькие, зачастую одна точка попадает в один фрагмент, а другая в другой. чтобы сделать наиболее общий код нужно объединить как можно больше фрагментов карт, чтобы не зависеть от координат и чтобы можно было с любыми координатами работать.
Возможно, есть какая-то цельная карта с которой можно работать...
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 04 авг 2015, 13:59
jerry-maori
MTi писал(а):В том то и дело, что уже памяти не хватает... double уже ему не нравится. Попутный вопрос, может вы знаете, как это исправить? пишет out of memory.
Есть верный способ... Больше памяти... Мне вот нравятся цифры в районе 128 GB....
double уже ему не нравится
Мне он тоже в данном случае не нравится... Ибо избыточен зело... вполне float (single) достаточно
А вообще -- чой-то Вы уже третий (за последние два месяца на этом форуме), кто строит по SRTM в MATLAB линии видимости... И темка специальная имеется....
А по существу вопросу -- поскольку взаиморасположение тайлов SRTM и их границы (в плане координат) известны, то сначала (зная координаты расположения антены и приёмника), определите, какие тайлы сам нужны. И их объединяйте... Ну или (если прям душа желает непременно ВСЮ карту упихать), то читатйте про
http://www.mathworks.com/help/matlab/ref/sparse.html
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 04 авг 2015, 21:37
ericsson
Я на все 100% уверен, что ничего объединять не надо, и задачу решать нужно иначе. Но топикстартер, вероятно, упрям и хочет дальше проламывать головой стену.
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 05 авг 2015, 05:20
MTi
ericsson, так я и прошу помощи! Смотрите предпоследнюю строку моего поста... Может и не нужно объединять, я задачу изложила, нужно работать с координатами, возможно, можно использовать другие карты, не SRTM. Если бы я знала, как сделать иначе, я бы не открывала эту тему. Прошу без сарказма.. Если не можете помочь, то зачем вообще что-то писать?!
jerry-maori спасибо за подсказку.
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 05 авг 2015, 07:18
ericsson
Учитывая кривизну Земли, вам совершенно точно не надо ничего объединять в масштабах целой страны.
Сарказм здесь совершенно не при чем.
Re: возможно ли объединить все кусочки карт srtm РФ
Добавлено: 05 авг 2015, 08:22
jerry-maori
Делаете просто
1. Смотрите, через какие тайлы SRTM пройдёт ваша линия
2. Для каждого тайла рассчитываете координаты точки входа линии видимости в этот тайл и точки выхода
3. По очереди загружаете нужные тайлы и снимаете вектора профиля высот и координат по горизонтали (за деталями го в спец. тему, я там много всякого написал)
4. Повторяем процедуру для остальных тайлов.
Собираем итоговый вектор линии видимости, профиля высот и прочего шлака.
Правда тут мы принимаем, что Земля имеет форму чемодана. Если надо кривизну и прочее -- то это надо мат.часть учить.