SRTM тайлы
Добавлено: 27 фев 2014, 08:47
Пишу программу, в состав которой входит карта Земли, а также трехмерный глобус (как Google Earth). Тайлы для картографии беру из OpenStreetMap.
Возникла мысль каким-то образом задействовать высоты над уровнем моря. С очень высокой вероятностью моим коллегам по проекту они понадобятся для определенных целей, ну и вообще неплохо было бы иметь как фичу.
Из общедоступных данных на каком-то форуме посоветовали SRTM. Думаю, все тут знают что это такое - специальные тайлы, вся земля разбита на сегменты по параллелям и меридианам с шагом 1 градус, внутри каждого тайла хранится матрица высот.
Но вот какое дело. Вся эта куча тайлов весит прилично - 17 гигабайт, и при отображении всей Земли сами понимаете, грузить все эти гигабайты одновременно никому не нужно. А нужно как-то применить подход OSM, т.е. чтобы на всю Землю был сначала один тайл, затем 4, затем 16, 256 и т.д. Т.е. нужно из линейного покрытия SRTM сделать многоуровневое, для простоты - в точности такое же как в OSM. Т.е. в каждом тайле 256*256 высот, каждый тайл на следующем уровне разбивается на 4 штуки.
И сразу первый вопрос - а может, это уже сделано? Совершенно не хочется изобретать велосипеды, что-то городить с алгоритмами корвертации, может оно уже есть и достаточно просто скачать эти данные откуда-то?
Второй вопрос - если это не сделано, то как это сделать. Совершенно не представляю как грамотно решить такую задачу. Понятно что будет некоторая потеря точности, но может быть существуют алгоритмы, позволяющие ее минимизировать? Какой общий подход к таким задачам? Например, если нужно построить тайл верхнего уровня, то высоты соседних точек объединяются - берется максимум?
Возникла мысль каким-то образом задействовать высоты над уровнем моря. С очень высокой вероятностью моим коллегам по проекту они понадобятся для определенных целей, ну и вообще неплохо было бы иметь как фичу.
Из общедоступных данных на каком-то форуме посоветовали SRTM. Думаю, все тут знают что это такое - специальные тайлы, вся земля разбита на сегменты по параллелям и меридианам с шагом 1 градус, внутри каждого тайла хранится матрица высот.
Но вот какое дело. Вся эта куча тайлов весит прилично - 17 гигабайт, и при отображении всей Земли сами понимаете, грузить все эти гигабайты одновременно никому не нужно. А нужно как-то применить подход OSM, т.е. чтобы на всю Землю был сначала один тайл, затем 4, затем 16, 256 и т.д. Т.е. нужно из линейного покрытия SRTM сделать многоуровневое, для простоты - в точности такое же как в OSM. Т.е. в каждом тайле 256*256 высот, каждый тайл на следующем уровне разбивается на 4 штуки.
И сразу первый вопрос - а может, это уже сделано? Совершенно не хочется изобретать велосипеды, что-то городить с алгоритмами корвертации, может оно уже есть и достаточно просто скачать эти данные откуда-то?
Второй вопрос - если это не сделано, то как это сделать. Совершенно не представляю как грамотно решить такую задачу. Понятно что будет некоторая потеря точности, но может быть существуют алгоритмы, позволяющие ее минимизировать? Какой общий подход к таким задачам? Например, если нужно построить тайл верхнего уровня, то высоты соседних точек объединяются - берется максимум?