Таблица высот и библиотека для работы с ней

Кроме QGIS
Ответить
anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 27 апр 2011, 15:28

Добрый день!
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.

Пожелания:
Открытые исходники
Язык разработки С++ (хотя заинтересуют и исходники на других похожих языках таких как C# и Java - если что переписать несложно)
При этом в общем нежелательно использование каких-либо "тяжелых" библиотек типа QT, wxWidgets, т.е. таких, которые могут повлечь необходимость подключения всей библиотеки целиком. В идеале исходник должен использовать "чистый си" или что-то вроде того. Хотя, я так полагаю, это нереальное требование... в принципе я готов к тому, чтобы взять кусок кода, выполняющий интересующую меня функцию, и выделить его в самостоятельный модуль, главное чтобы были хотя-бы какие-то исходники.
Также нежелательно подключение к проекту каких-то больших ГИС. Ради единственной функции это ИМХО избыточно. Чем меньше объем подключаемого кода - тем лучше.

Что посоветуете?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Таблица высот и библиотека для работы с ней

Сообщение Mavka » 27 апр 2011, 16:11

хранящий таблицу высот для заданного региона
С гридами... для Cpp... тонкую... Популярен GDAL, но он толстоват.
А формат - обычно используют растровые, например, GeoTIFF умеет хранить пиксели со значением Float64.

P.S. Такое не пойдет? (SAGA GIS, у нее свой текстовый формат.)
лангольеры под окном жрали время ом-ном-ном

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Таблица высот и библиотека для работы с ней

Сообщение gamm » 27 апр 2011, 16:44

anonymouse писал(а):Добрый день!
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.
есть такая программа SURFER, формат описан в документации (версии 6 и 7). Судя по тому, что формат включен в GDAL, он открытый и бесплатный - и незатейливый: небольшой заголовок, и данные по строкам. Высота получается незатейливой линейной интерполяцией (пишется на С за полчаса).

Формат версии 7 более сложный, включает линейные элементы (линии разрыва), и т.д., и является тэговым (типа TIFF). Но опять содержит заголовок и ту же сетку, остальные тэги можно пропустить.

Есть еще BIL и ASCII GRID им.ESRI, они включены в GDAL. т.е. вроде тоже ограничений не должно быть.

У GeoTIFF есть преимущество - произвольный формат пикселей, компрессия и хранение проекции. И GDAL не такая уж тяжелая библиотека для нынешних компьютеров.

anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Re: Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 17 май 2011, 12:34

А что посоветуете с форматами данных?
Я тут посмотрел на сайте - можно скачать "Рельеф России" с торрента (еще не скачал, там какой-то формат IMG), или карты в формате "mp". Еще здесь есть данные OpenStreetMap в форматах "shape" shp и osm xml.
Наверное, стоит ориентироваться на эти форматы (mp, shp, osm xml).

Есть какие-нибудь библиотеки, чтобы открыть их в памяти и извлекать из них данные?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Таблица высот и библиотека для работы с ней

Сообщение Voltron » 17 май 2011, 12:57

Ну выше же сказали: GeoTiff, ASCII GRID...

Карты в форматах MP, Shape и OSM XML это векторные данные и в большинстве случаев не несут в себе информации о высотах.

Для работы уже советовали GDAL, чем она не устраивает? Если «толстая», так можно же пересобрать, оставив только необходимый функционал.

anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Re: Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 17 май 2011, 14:30

А где карты в этих GeoTiff/ASCII GRID скачать-то? Все должно быть из открытых источников и доступно для свободного скачивания (почему я и стал смотреть в сторону OpenStreetMap... кстати, не может быть чтобы у них высот не было)
Я посмотрел здесь, вроде бы самый известный сайт, и перечислил то что тут есть. "Рельеф России" в торренте - это, судя по названию, как раз то что нужно. Внутри какой-то формат IMG. Можно из него как-то получить эти рекомендуемые вами форматы?

GDAL нереально большая... даже простая сборка заняла более около 20 минут (не считая времени, потраченного на то чтобы заставить ее собираться под Visual Studio), не вижу смысла с этим разбираться, да и просто нет времени и ресурсов. Всегда должны быть маленькие компактные и не имеющие зависимостей библиотечки. Для примера - базы данных sqlite, tinyxml для xml, и т.д. (сейчас скачал с репозитория libgeotiff, как всегда в линкусовом коде куча всяких левых файлов, но вроде разобраться можно)

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Таблица высот и библиотека для работы с ней

Сообщение Voltron » 17 май 2011, 15:01

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 писал(а):не вижу смысла с этим разбираться, да и просто нет времени и ресурсов.
Думаете, с маленькими компактными и не имеющими зависимостей библиотеками разбираться не надо будет? Впрочем, дело ваше.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Таблица высот и библиотека для работы с ней

Сообщение Максим Дубинин » 17 май 2011, 15:17

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

anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Re: Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 20 май 2011, 11:35

SRTM я так понимаю в формате geotiff?
Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр? (скачать в готовом виде или сделать пакетное конвертирование конкретной программой) Судя по материалам сайта, в таком формате были исходные данные для SRTM.
Была бы папка с "квадратиками"-тайлами, каждый тайл однозначно соответствует какому-то градусу широты и долготы (имя файла), размеры всех тайлов фиксированы, из долей градуса вычисляется пиксель внутри тайла, который бы был высотой над уровнем моря. Это был бы идеальный вариант для меня, программа-загрузчик пишется за полчаса, и не нужно тянуть никаких зависимостей, адаптировать код с линукса на винду и разбираться с огромными библиотеками.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Таблица высот и библиотека для работы с ней

Сообщение Александр Мурый » 20 май 2011, 12:31

anonymouse писал(а): Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр?
Есть. Например, здесь. Кстати, ссылки на данные в исходном формате HGT есть в упомянутой статье про SRTM. Только учтите, что это довольно старая вторая версия (SRTM v2), сейчас актуальны версии 3 и 4.
Редактор материалов, модератор форума

anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Re: Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 20 май 2011, 12:47

Мне нужны как раз не исходные данные (в которых, как я понял из статьи, есть какие-то ошибки), а обработанные. За ссылку спасибо, потренируюсь пока на этих файлах, остается открытым вопрос о получении таких тайлов из более современных данных.
Может, просто порекомендуете ГИС, с помощью которой можно один раз корректно сконвертировать geotiff в HGT ?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Таблица высот и библиотека для работы с ней

Сообщение Mavka » 20 май 2011, 12:51

GDAL/OGR - Raster Formats, столбец "Create".
Судя по вашему настроению, идеальный вариант - "ASCII Gridded XYZ".
лангольеры под окном жрали время ом-ном-ном

anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Re: Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 20 май 2011, 13:20

Идеальный вариант я уже нашел:) Это те самые "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) в приложении к земному шару. Для южной широты это что?

anonymouse
Новоприбывший
Сообщения: 9
Зарегистрирован: 27 апр 2011, 15:11
Репутация: 0

Re: Таблица высот и библиотека для работы с ней

Сообщение anonymouse » 20 май 2011, 15:58

Написал класс, смотрю - в тайлах какие-то странные числа, есть отрицательные, слишком большие положительные... Посмотрел в HEX-редакторе... четные столбцы (если считать с нуля), как правило, содержат числа 0, 1, 2, 3, а нечетные - разные числа. Вывод: мотороловский порядок байт:) Старший байт по младшему адресу, младший - по страшему. Развернул байты при загрузке - все стало ОК. ИМХО, будет полезно указать это в документации.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Таблица высот и библиотека для работы с ней

Сообщение Александр Мурый » 20 май 2011, 16:58

anonymouse писал(а):Вывод: мотороловский порядок байт:) ... ИМХО, будет полезно указать это в документации.
Вот вы программист, а не почитали перед этим документацию :roll:
А здесь в Quickstart.pdf английским по белому написано про порядок байтов..
Редактор материалов, модератор форума

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»

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

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