Страница 1 из 1
Таблица высот и библиотека для работы с ней
Добавлено: 27 апр 2011, 15:28
anonymouse
Добрый день!
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.
Пожелания:
Открытые исходники
Язык разработки С++ (хотя заинтересуют и исходники на других похожих языках таких как C# и Java - если что переписать несложно)
При этом в общем нежелательно использование каких-либо "тяжелых" библиотек типа QT, wxWidgets, т.е. таких, которые могут повлечь необходимость подключения всей библиотеки целиком. В идеале исходник должен использовать "чистый си" или что-то вроде того. Хотя, я так полагаю, это нереальное требование... в принципе я готов к тому, чтобы взять кусок кода, выполняющий интересующую меня функцию, и выделить его в самостоятельный модуль, главное чтобы были хотя-бы какие-то исходники.
Также нежелательно подключение к проекту каких-то больших ГИС. Ради единственной функции это ИМХО избыточно. Чем меньше объем подключаемого кода - тем лучше.
Что посоветуете?
Re: Таблица высот и библиотека для работы с ней
Добавлено: 27 апр 2011, 16:11
Mavka
хранящий таблицу высот для заданного региона
С гридами... для Cpp... тонкую... Популярен
GDAL, но он толстоват.
А формат - обычно используют растровые, например,
GeoTIFF умеет хранить пиксели со значением Float64.
P.S.
Такое не пойдет? (SAGA GIS, у нее свой текстовый формат.)
Re: Таблица высот и библиотека для работы с ней
Добавлено: 27 апр 2011, 16:44
gamm
anonymouse писал(а):Добрый день!
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.
есть такая программа SURFER, формат описан в документации (версии 6 и 7). Судя по тому, что формат включен в GDAL, он открытый и бесплатный - и незатейливый: небольшой заголовок, и данные по строкам. Высота получается незатейливой линейной интерполяцией (пишется на С за полчаса).
Формат версии 7 более сложный, включает линейные элементы (линии разрыва), и т.д., и является тэговым (типа TIFF). Но опять содержит заголовок и ту же сетку, остальные тэги можно пропустить.
Есть еще BIL и ASCII GRID им.ESRI, они включены в GDAL. т.е. вроде тоже ограничений не должно быть.
У GeoTIFF есть преимущество - произвольный формат пикселей, компрессия и хранение проекции. И GDAL не такая уж тяжелая библиотека для нынешних компьютеров.
Re: Таблица высот и библиотека для работы с ней
Добавлено: 17 май 2011, 12:34
anonymouse
А что посоветуете с форматами данных?
Я тут посмотрел на сайте - можно скачать "Рельеф России" с торрента (еще не скачал, там какой-то формат IMG), или карты в формате "mp". Еще здесь есть данные OpenStreetMap в форматах "shape" shp и osm xml.
Наверное, стоит ориентироваться на эти форматы (mp, shp, osm xml).
Есть какие-нибудь библиотеки, чтобы открыть их в памяти и извлекать из них данные?
Re: Таблица высот и библиотека для работы с ней
Добавлено: 17 май 2011, 12:57
Voltron
Ну выше же сказали: GeoTiff, ASCII GRID...
Карты в форматах MP, Shape и OSM XML это векторные данные и в большинстве случаев не несут в себе информации о высотах.
Для работы уже советовали GDAL, чем она не устраивает? Если «толстая», так можно же пересобрать, оставив только необходимый функционал.
Re: Таблица высот и библиотека для работы с ней
Добавлено: 17 май 2011, 14:30
anonymouse
А где карты в этих GeoTiff/ASCII GRID скачать-то? Все должно быть из открытых источников и доступно для свободного скачивания (почему я и стал смотреть в сторону OpenStreetMap... кстати, не может быть чтобы у них высот не было)
Я посмотрел здесь, вроде бы самый известный сайт, и перечислил то что тут есть. "Рельеф России" в торренте - это, судя по названию, как раз то что нужно. Внутри какой-то формат IMG. Можно из него как-то получить эти рекомендуемые вами форматы?
GDAL нереально большая... даже простая сборка заняла более около 20 минут (не считая времени, потраченного на то чтобы заставить ее собираться под Visual Studio), не вижу смысла с этим разбираться, да и просто нет времени и ресурсов. Всегда должны быть маленькие компактные и не имеющие зависимостей библиотечки. Для примера - базы данных sqlite, tinyxml для xml, и т.д. (сейчас скачал с репозитория libgeotiff, как всегда в линкусовом коде куча всяких левых файлов, но вроде разобраться можно)
Re: Таблица высот и библиотека для работы с ней
Добавлено: 17 май 2011, 15:01
Voltron
anonymouse писал(а):А где карты в этих GeoTiff/ASCII GRID скачать-то? Все должно быть из открытых источников и доступно для свободного скачивания (почему я и стал смотреть в сторону OpenStreetMap... кстати, не может быть чтобы у них высот не было)
SRTM,
GDEM не подходят? Если вы так уверены на счет OSM — вперед, работайте с OSM.
anonymouse писал(а):Внутри какой-то формат IMG. Можно из него как-то получить эти рекомендуемые вами форматы?
Это не рекомендуемые форматы, а форматы, которые чаще всего используются для таких данных. IMG можно и не конвертировать, GDAL работает с ним напрямую. Если все же нужен другой формат — сконвертируйте при помощи gdal_translate или другого ПО, например, ArcGIS, ERDAS...
anonymouse писал(а):GDAL нереально большая... даже простая сборка заняла более около 20 минут (не считая времени, потраченного на то чтобы заставить ее собираться под Visual Studio),
Хм... собрал с первой попытки. И понадобилось на это с моим Sempron'ом на 1.6 Ghz меньше 20 минут. У вас что embedded какой-то что так критичен объем? Еще раз предлагаю вырезать лишние драйвера и лишний функционал.
anonymouse писал(а):не вижу смысла с этим разбираться, да и просто нет времени и ресурсов.
Думаете, с маленькими компактными и не имеющими зависимостей библиотеками разбираться не надо будет? Впрочем, дело ваше.
Re: Таблица высот и библиотека для работы с ней
Добавлено: 17 май 2011, 15:17
Максим Дубинин
у OSM есть такая уникальная вещь как треки и высоты могут быть в них, но регулярной сетки нет, они точно также используют SRTM, GDEM
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 11:35
anonymouse
SRTM я так понимаю в формате geotiff?
Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр? (скачать в готовом виде или сделать пакетное конвертирование конкретной программой) Судя по материалам сайта, в таком формате были исходные данные для SRTM.
Была бы папка с "квадратиками"-тайлами, каждый тайл однозначно соответствует какому-то градусу широты и долготы (имя файла), размеры всех тайлов фиксированы, из долей градуса вычисляется пиксель внутри тайла, который бы был высотой над уровнем моря. Это был бы идеальный вариант для меня, программа-загрузчик пишется за полчаса, и не нужно тянуть никаких зависимостей, адаптировать код с линукса на винду и разбираться с огромными библиотеками.
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 12:31
Александр Мурый
anonymouse писал(а):
Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр?
Есть. Например,
здесь. Кстати, ссылки на данные в исходном формате HGT есть в упомянутой статье про SRTM. Только учтите, что это довольно старая вторая версия (SRTM v2), сейчас актуальны версии 3 и 4.
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 12:47
anonymouse
Мне нужны как раз не исходные данные (в которых, как я понял из статьи, есть какие-то ошибки), а обработанные. За ссылку спасибо, потренируюсь пока на этих файлах, остается открытым вопрос о получении таких тайлов из более современных данных.
Может, просто порекомендуете ГИС, с помощью которой можно один раз корректно сконвертировать geotiff в HGT ?
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 12:51
Mavka
GDAL/OGR -
Raster Formats, столбец "Create".
Судя по вашему настроению, идеальный вариант - "ASCII Gridded XYZ".
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 13:20
anonymouse
Идеальный вариант я уже нашел:) Это те самые "HGT", которые мне посоветовали сообщением выше - для использования в программе ничего лучше просто не придумать. Написать класс для работы с этим можно быстрее чем писать сюда сообщение:) Создаю матрицу указателей на тайлы, загружаю (или подгружаю динамически по мере необходимости) нужные тайлы (не все конечно), и дальше простейшая функция получения высоты по координатам.
"ASCII gridded" это судя по названию, текстовый формат, т.е. его еще нужно перегнать в raw binary. Я писал в первом сообщении, что желательны текстовые формты, на самом деле простой растр еще лучше.
Еще заодно - несколько вопросов по HGT. Размер одного тайла 2884802 байта, т.е. это матрица типа short размером 1201*1201 пикселей. Судя по названиям - например "N47E143" - каждый тайл соответствует одному градусу.
В какую сторону ориентированы тайлы? Скажем, тайл N47 E143 - у него точка (0,0) это ровно N47 E143, а остальные точки матрицы - в сторону N48 E144? Т.е. например для широты - от экватора в направлении полюсов?
P.S. просто непонятно, что значит "нижний левый угол" тайла (как написано
http://gis-lab.info/qa/srtm.html) в приложении к земному шару. Для южной широты это что?
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 15:58
anonymouse
Написал класс, смотрю - в тайлах какие-то странные числа, есть отрицательные, слишком большие положительные... Посмотрел в HEX-редакторе... четные столбцы (если считать с нуля), как правило, содержат числа 0, 1, 2, 3, а нечетные - разные числа. Вывод: мотороловский порядок байт:) Старший байт по младшему адресу, младший - по страшему. Развернул байты при загрузке - все стало ОК. ИМХО, будет полезно указать это в документации.
Re: Таблица высот и библиотека для работы с ней
Добавлено: 20 май 2011, 16:58
Александр Мурый
anonymouse писал(а):Вывод: мотороловский порядок байт:) ... ИМХО, будет полезно указать это в документации.
Вот вы программист, а не почитали перед этим документацию
А
здесь в Quickstart.pdf английским по белому написано про порядок байтов..