Таблица высот и библиотека для работы с ней
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Таблица высот и библиотека для работы с ней
Добрый день!
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.
Пожелания:
Открытые исходники
Язык разработки С++ (хотя заинтересуют и исходники на других похожих языках таких как C# и Java - если что переписать несложно)
При этом в общем нежелательно использование каких-либо "тяжелых" библиотек типа QT, wxWidgets, т.е. таких, которые могут повлечь необходимость подключения всей библиотеки целиком. В идеале исходник должен использовать "чистый си" или что-то вроде того. Хотя, я так полагаю, это нереальное требование... в принципе я готов к тому, чтобы взять кусок кода, выполняющий интересующую меня функцию, и выделить его в самостоятельный модуль, главное чтобы были хотя-бы какие-то исходники.
Также нежелательно подключение к проекту каких-то больших ГИС. Ради единственной функции это ИМХО избыточно. Чем меньше объем подключаемого кода - тем лучше.
Что посоветуете?
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.
Пожелания:
Открытые исходники
Язык разработки С++ (хотя заинтересуют и исходники на других похожих языках таких как C# и Java - если что переписать несложно)
При этом в общем нежелательно использование каких-либо "тяжелых" библиотек типа QT, wxWidgets, т.е. таких, которые могут повлечь необходимость подключения всей библиотеки целиком. В идеале исходник должен использовать "чистый си" или что-то вроде того. Хотя, я так полагаю, это нереальное требование... в принципе я готов к тому, чтобы взять кусок кода, выполняющий интересующую меня функцию, и выделить его в самостоятельный модуль, главное чтобы были хотя-бы какие-то исходники.
Также нежелательно подключение к проекту каких-то больших ГИС. Ради единственной функции это ИМХО избыточно. Чем меньше объем подключаемого кода - тем лучше.
Что посоветуете?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Таблица высот и библиотека для работы с ней
С гридами... для Cpp... тонкую... Популярен GDAL, но он толстоват.хранящий таблицу высот для заданного региона
А формат - обычно используют растровые, например, GeoTIFF умеет хранить пиксели со значением Float64.
P.S. Такое не пойдет? (SAGA GIS, у нее свой текстовый формат.)
лангольеры под окном жрали время ом-ном-ном
-
- Гуру
- Сообщения: 4057
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Таблица высот и библиотека для работы с ней
есть такая программа SURFER, формат описан в документации (версии 6 и 7). Судя по тому, что формат включен в GDAL, он открытый и бесплатный - и незатейливый: небольшой заголовок, и данные по строкам. Высота получается незатейливой линейной интерполяцией (пишется на С за полчаса).anonymouse писал(а):Добрый день!
Требуется такая вот, думаю, довольно простая вещь.
Какой-то формат (желательно открытый), хранящий таблицу высот для заданного региона. Требуется бесплатность и открытость данного формата, возможность открыто скачать файл и пользоваться им в оффлайне (это важно, любые web-сервисы, требующие подключения к интернету, не подходят)
И самое главное - некая функция, на вход которой подаются координаты точки (широта и долгота), а на выходе получаем высоту в метрах.
Формат версии 7 более сложный, включает линейные элементы (линии разрыва), и т.д., и является тэговым (типа TIFF). Но опять содержит заголовок и ту же сетку, остальные тэги можно пропустить.
Есть еще BIL и ASCII GRID им.ESRI, они включены в GDAL. т.е. вроде тоже ограничений не должно быть.
У GeoTIFF есть преимущество - произвольный формат пикселей, компрессия и хранение проекции. И GDAL не такая уж тяжелая библиотека для нынешних компьютеров.
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Re: Таблица высот и библиотека для работы с ней
А что посоветуете с форматами данных?
Я тут посмотрел на сайте - можно скачать "Рельеф России" с торрента (еще не скачал, там какой-то формат IMG), или карты в формате "mp". Еще здесь есть данные OpenStreetMap в форматах "shape" shp и osm xml.
Наверное, стоит ориентироваться на эти форматы (mp, shp, osm xml).
Есть какие-нибудь библиотеки, чтобы открыть их в памяти и извлекать из них данные?
Я тут посмотрел на сайте - можно скачать "Рельеф России" с торрента (еще не скачал, там какой-то формат IMG), или карты в формате "mp". Еще здесь есть данные OpenStreetMap в форматах "shape" shp и osm xml.
Наверное, стоит ориентироваться на эти форматы (mp, shp, osm xml).
Есть какие-нибудь библиотеки, чтобы открыть их в памяти и извлекать из них данные?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Таблица высот и библиотека для работы с ней
Ну выше же сказали: GeoTiff, ASCII GRID...
Карты в форматах MP, Shape и OSM XML это векторные данные и в большинстве случаев не несут в себе информации о высотах.
Для работы уже советовали GDAL, чем она не устраивает? Если «толстая», так можно же пересобрать, оставив только необходимый функционал.
Карты в форматах MP, Shape и OSM XML это векторные данные и в большинстве случаев не несут в себе информации о высотах.
Для работы уже советовали GDAL, чем она не устраивает? Если «толстая», так можно же пересобрать, оставив только необходимый функционал.
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Re: Таблица высот и библиотека для работы с ней
А где карты в этих GeoTiff/ASCII GRID скачать-то? Все должно быть из открытых источников и доступно для свободного скачивания (почему я и стал смотреть в сторону OpenStreetMap... кстати, не может быть чтобы у них высот не было)
Я посмотрел здесь, вроде бы самый известный сайт, и перечислил то что тут есть. "Рельеф России" в торренте - это, судя по названию, как раз то что нужно. Внутри какой-то формат IMG. Можно из него как-то получить эти рекомендуемые вами форматы?
GDAL нереально большая... даже простая сборка заняла более около 20 минут (не считая времени, потраченного на то чтобы заставить ее собираться под Visual Studio), не вижу смысла с этим разбираться, да и просто нет времени и ресурсов. Всегда должны быть маленькие компактные и не имеющие зависимостей библиотечки. Для примера - базы данных sqlite, tinyxml для xml, и т.д. (сейчас скачал с репозитория libgeotiff, как всегда в линкусовом коде куча всяких левых файлов, но вроде разобраться можно)
Я посмотрел здесь, вроде бы самый известный сайт, и перечислил то что тут есть. "Рельеф России" в торренте - это, судя по названию, как раз то что нужно. Внутри какой-то формат IMG. Можно из него как-то получить эти рекомендуемые вами форматы?
GDAL нереально большая... даже простая сборка заняла более около 20 минут (не считая времени, потраченного на то чтобы заставить ее собираться под Visual Studio), не вижу смысла с этим разбираться, да и просто нет времени и ресурсов. Всегда должны быть маленькие компактные и не имеющие зависимостей библиотечки. Для примера - базы данных sqlite, tinyxml для xml, и т.д. (сейчас скачал с репозитория libgeotiff, как всегда в линкусовом коде куча всяких левых файлов, но вроде разобраться можно)
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Таблица высот и библиотека для работы с ней
SRTM, GDEM не подходят? Если вы так уверены на счет OSM — вперед, работайте с OSM.anonymouse писал(а):А где карты в этих GeoTiff/ASCII GRID скачать-то? Все должно быть из открытых источников и доступно для свободного скачивания (почему я и стал смотреть в сторону OpenStreetMap... кстати, не может быть чтобы у них высот не было)
Это не рекомендуемые форматы, а форматы, которые чаще всего используются для таких данных. IMG можно и не конвертировать, GDAL работает с ним напрямую. Если все же нужен другой формат — сконвертируйте при помощи gdal_translate или другого ПО, например, ArcGIS, ERDAS...anonymouse писал(а):Внутри какой-то формат IMG. Можно из него как-то получить эти рекомендуемые вами форматы?
Хм... собрал с первой попытки. И понадобилось на это с моим Sempron'ом на 1.6 Ghz меньше 20 минут. У вас что embedded какой-то что так критичен объем? Еще раз предлагаю вырезать лишние драйвера и лишний функционал.anonymouse писал(а):GDAL нереально большая... даже простая сборка заняла более около 20 минут (не считая времени, потраченного на то чтобы заставить ее собираться под Visual Studio),
Думаете, с маленькими компактными и не имеющими зависимостей библиотеками разбираться не надо будет? Впрочем, дело ваше.anonymouse писал(а):не вижу смысла с этим разбираться, да и просто нет времени и ресурсов.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Таблица высот и библиотека для работы с ней
у OSM есть такая уникальная вещь как треки и высоты могут быть в них, но регулярной сетки нет, они точно также используют SRTM, GDEM
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Re: Таблица высот и библиотека для работы с ней
SRTM я так понимаю в формате geotiff?
Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр? (скачать в готовом виде или сделать пакетное конвертирование конкретной программой) Судя по материалам сайта, в таком формате были исходные данные для SRTM.
Была бы папка с "квадратиками"-тайлами, каждый тайл однозначно соответствует какому-то градусу широты и долготы (имя файла), размеры всех тайлов фиксированы, из долей градуса вычисляется пиксель внутри тайла, который бы был высотой над уровнем моря. Это был бы идеальный вариант для меня, программа-загрузчик пишется за полчаса, и не нужно тянуть никаких зависимостей, адаптировать код с линукса на винду и разбираться с огромными библиотеками.
Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр? (скачать в готовом виде или сделать пакетное конвертирование конкретной программой) Судя по материалам сайта, в таком формате были исходные данные для SRTM.
Была бы папка с "квадратиками"-тайлами, каждый тайл однозначно соответствует какому-то градусу широты и долготы (имя файла), размеры всех тайлов фиксированы, из долей градуса вычисляется пиксель внутри тайла, который бы был высотой над уровнем моря. Это был бы идеальный вариант для меня, программа-загрузчик пишется за полчаса, и не нужно тянуть никаких зависимостей, адаптировать код с линукса на винду и разбираться с огромными библиотеками.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Таблица высот и библиотека для работы с ней
Есть. Например, здесь. Кстати, ссылки на данные в исходном формате HGT есть в упомянутой статье про SRTM. Только учтите, что это довольно старая вторая версия (SRTM v2), сейчас актуальны версии 3 и 4.anonymouse писал(а): Скажите, а есть возможность получить не geotiff, а простой формат "матрицы высот", т.е. простой 16 или 32 битный растр?
Редактор материалов, модератор форума
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Re: Таблица высот и библиотека для работы с ней
Мне нужны как раз не исходные данные (в которых, как я понял из статьи, есть какие-то ошибки), а обработанные. За ссылку спасибо, потренируюсь пока на этих файлах, остается открытым вопрос о получении таких тайлов из более современных данных.
Может, просто порекомендуете ГИС, с помощью которой можно один раз корректно сконвертировать geotiff в HGT ?
Может, просто порекомендуете ГИС, с помощью которой можно один раз корректно сконвертировать geotiff в HGT ?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Таблица высот и библиотека для работы с ней
GDAL/OGR - Raster Formats, столбец "Create".
Судя по вашему настроению, идеальный вариант - "ASCII Gridded XYZ".
Судя по вашему настроению, идеальный вариант - "ASCII Gridded XYZ".
лангольеры под окном жрали время ом-ном-ном
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Re: Таблица высот и библиотека для работы с ней
Идеальный вариант я уже нашел:) Это те самые "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) в приложении к земному шару. Для южной широты это что?
"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) в приложении к земному шару. Для южной широты это что?
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 27 апр 2011, 15:11
- Репутация: 0
Re: Таблица высот и библиотека для работы с ней
Написал класс, смотрю - в тайлах какие-то странные числа, есть отрицательные, слишком большие положительные... Посмотрел в HEX-редакторе... четные столбцы (если считать с нуля), как правило, содержат числа 0, 1, 2, 3, а нечетные - разные числа. Вывод: мотороловский порядок байт:) Старший байт по младшему адресу, младший - по страшему. Развернул байты при загрузке - все стало ОК. ИМХО, будет полезно указать это в документации.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Таблица высот и библиотека для работы с ней
Вот вы программист, а не почитали перед этим документациюanonymouse писал(а):Вывод: мотороловский порядок байт:) ... ИМХО, будет полезно указать это в документации.
А здесь в Quickstart.pdf английским по белому написано про порядок байтов..
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей