Вас Мылко, Роман Билусяк

РЕДАКТИРОВАТЬ: Эта статья была написана для DOU.ua и отсутствовала в списке, доступна только по ссылке там https://dou.ua/lenta/articles/ml-from-space/ Сейчас, спустя три месяца мы делаем его общедоступным, чтобы больше компьютерных фанатов могло найти и прочитать.

Мы Curiosio - супергид для любителей путешествий. Curiosio состоит из передового оптимизатора и графа знаний точек и мест. Недавно мы разработали функции для нового модуля машинного обучения для Curiosio, и одной из них было повышение. Высота географического местоположения - это его высота над или под математической моделью уровня моря Земли. Задача казалась такой же простой, как написание программы Hello World на неизвестном языке программирования.

Привет, мир

Я подготовил список из ~ 70 мест, выбранных вручную, и начал извлекать их высоту из OSM, Викиданных и Википедии. Почти сразу я заметил разнообразие того, как и где присутствовали данные о высоте. Это напомнило мне разнообразие названий основных вещей в разных разговорных языках (например, собака, дождь, еда), потому что они развивались независимо. Возвышение во всех них присутствовало под разными названиями и формами, но в большинстве случаев отсутствовало вовсе:

  • В OSM есть Key: ele
  • В Викиданных указано высота над уровнем моря (P2044)
  • В Википедии есть {{Infobox… elevation_m =…}} для метров и {{Infobox… elevation_ft =…}} для футов.
  • В Википедии есть возвышение в произвольной форме текста на странице

Я решил связать больше наборов данных, поэтому заглянул в GeoNames. Отметка должна была быть там, она была, но не для всех локаций из отобранного списка:

  • В GeoNames есть таблица geoname со столбцом высот.

Здесь я почувствовал, что эта миссия даже близко не соответствует «Hello World» по сложности, и уведомил Романа о возможных сюрпризах с точкой данных о высоте ... Он нашел данные. Что делать в таких ситуациях? Поднимите уровень абстракции. Как высоко? Пока он не начнет работать на нашу проблему. Итак, мы подняли планку на ~ 240 километров (150 миль) над Землей в Космос.

Космические Технологии

Миссия Shuttle Radar Topography (SRTM) была международным проектом, возглавляемым Национальным агентством изображений и картографии и НАСА при участии Немецкого аэрокосмического центра DLR. Его цель заключалась в получении наиболее полной цифровой топографической базы данных Земли с высоким разрешением. SRTM состояла из специально модифицированной радиолокационной системы, которая летела на борту Endeavour во время его 11-дневной миссии в феврале 2000 года. Эта радиолокационная система собирала около 8 терабайт данных для получения высококачественных трехмерных изображений поверхности Земли.

Для получения топографических данных полезная нагрузка SRTM была оснащена двумя радиолокационными антеннами. Одна антенна была расположена в отсеке для полезной нагрузки «Шаттла», другая - на конце 60-метровой (200-футовой) мачты, которая выступала из отсека для полезной нагрузки, когда «Шаттл» находился в космосе. Миссия SRTM покрыла примерно 80% поверхности Земли (71% поверхности Земли покрыто водой) с глобальным разрешением 90 метров и разрешением 30 метров над США.

Многонациональный научно-исследовательский спутник НАСА Terra (EOS AM-1) был запущен в 1999 году. Он является флагманом системы наблюдения за Землей (EOS). Он оснащен усовершенствованным космическим радиометром теплового излучения и отражения (ASTER) - японским датчиком, который является одним из пяти дистанционных сенсорных устройств на борту. Он собирает данные с февраля 2000 года. В октябре 2011 года были выпущены данные хорошего качества Глобальной цифровой модели рельефа ASTER (GDEM) как v2, лучше, чем SRTM для пересеченной горной местности.

В сентябре 2014 года НАСА выпустило улучшенную версию SRTM. Ранее данные SRTM для регионов за пределами Соединенных Штатов собирались для публичного опубликования с интервалом 3 угловых секунды, что составляет 1/1200 градуса широты и долготы, или около 90 метров (295 футов). Новые данные были выпущены с интервалом в 1 угловую секунду или около 30 метров (98 футов), что показывает полное разрешение исходных измерений.

Мы будем использовать новую SRTM для данных о высотах в качестве одной из точек данных для машинного обучения для одного модуля в Curiosio.

Большое спасибо космонавтам, картографам АО «Лаборатория реактивного движения» и NGA / NIMA! Хорошо, обратно на Землю ...

Данные о высоте

Данные о высоте Земли были опубликованы НАСА, что означает, что данные находятся в общественном достоянии. Работы, находящиеся в общественном достоянии, вообще не защищены правами интеллектуальной собственности, такими как авторское право. Вы можете использовать данные как есть, в том числе в коммерческих целях.

Данные SRTM организованы в отдельные растеризованные ячейки или плитки, каждая из которых покрывает один градус на один градус по широте и долготе. Расстояние между выборками для отдельных точек данных составляет 1 угловую секунду, 3 угловых секунды или 30 угловых секунд, обозначаемых как SRTM1, SRTM3 и SRTM30, соответственно. Поскольку одна угловая секунда на экваторе соответствует примерно 30 метрам по горизонтали, SRTM1 и SRTM3 иногда называют данными «30 метров» или «90 метров».

Основная точка входа в SRTM v2 - https://dds.cr.usgs.gov/srtm/version2_1/

Index of /srtm/version2_1
    Documentation/
    NAVMac800QSFile
    SRTM1/
    SRTM3/
    SRTM30/
    SWBD/
Index of /srtm/version2_1/SRTM1
    Parent Directory
    Region_01/
    Region_02/
    Region_03/
    Region_04/
    Region_05/
    Region_06/
    Region_07/
    Region_definition.jpg
Index of /srtm/version2_1/SRTM1/Region_01
    N38W112.hgt.zip
    N38W113.hgt.zip
    N38W114.hgt.zip
    N38W115.hgt.zip
    N38W116.hgt.zip
    N38W117.hgt.zip
    N38W118.hgt.zip
    ...

Имена файлов относятся к широте и долготе левого нижнего угла плитки - например, N38W112 имеет левый нижний угол на 38 градусах северной широты и 112 градусах западной долготы. Заархивированные файлы HGT представляют собой файлы высоты, содержащие ЦМР, также известные как модели высотных отметок. Матрица высот предоставляется в виде 16-битных целочисленных данных со знаком в простом двоичном растре. 16-битные целые числа представляют высоту каждой ячейки в метрах, расположенных с запада на восток, а затем с севера на юг. В файл не встроены байты заголовка или конца. Данные хранятся в основном порядке строк (все данные для строки 1, за которыми следуют все данные для строки 2 и т. Д.).

Порядок байтов является стандартным с прямым порядком байтов, начиная с самого старшего байта. Поскольку они представляют собой целые числа со знаком, высота над уровнем моря может составлять от -32767 до 32767 метров, охватывая диапазон высот, который можно найти на Земле. Эти данные также содержат случайные пустоты по ряду причин, таких как затенение, аномалии развертки фазы или другие специфические для радара причины. Пустоты помечаются значением -32768.

Наиболее удобный способ доступа к данным - использование библиотеки SRTM.py и ее порта golang go-elevations. Лицензия обеих библиотек - Apache 2.0, разрешающая коммерческое использование. Обе библиотеки были разработаны tkrajina, также известным как Tomo Krajina - программистом из Вишняна, Истра, Хорватия. Престижность Томо!

Пример на Python, как получить высоту по географическим координатам:

import srtm
data = srtm.get_data()
print(data.get_elevation(50.8682, 7.1377))
# Cache files with urls of SRTM files are put in HOME dir.
# In case, you need another location, set the cache dir.
import srtm
data = srtm.get_data(local_cache_dir="foo")
print(data.get_elevation(50.8682, 7.1377))
# Voids happen, get interpolated value
# IDW stands for Inverse Distance Weighted
print(data._IDW(50.8682, 7.1377))

Пример Голанга, как получить высоту по географическим координатам:

import (
    "fmt"
    "net/http"
    "github.com/tkrajina/go-elevations/geoelevations"
)
func main() {
    srtm, err := geoelevations.NewSrtm(http.DefaultClient)
    if err != nil {
        // retry, or reconfig and retry
    }
    ele, err := srtm.GetElevation(http.DefaultClient, 45.2775, 13.726111)
    if err != nil {
        // ...
    }
    fmt.Println(ele)
}

Что насчет данных за пределами досягаемости? Во-первых, открытая площадь не такая большая, как показывает проекция Меркатора. Меркатор тянется около полюсов и сжимается около экватора. Посмотрите другие прогнозы, чтобы убедиться, что покрытие SRTM очень хорошее. Во-вторых, другие источники данных (включая Wikidata, Wikipedia, GeoNames, GDEM) потребуются для высот в заснеженных широтах.

Стараться

Миссию STS-99 успешно выполнил космический корабль Индевор. Вот ссылка на запуск СТС-99. Вот ссылка на историю полета STS-99, которая содержит кадры и описание того, как картографическая техника работала на орбите (начиная с 4 мин. 00 м. И снова с 10 мин. 07 с. С ошибками и слезами). К тому времени это была самая большая жесткая конструкция в космосе. Для записи данных потребовалось 330 больших кассет с лентой. В период с мая 1992 года по июнь 2011 года Endeavour совершил 25 миссий. Он был официально выведен из эксплуатации и помещен в Калифорнийский научный центр в Лос-Анджелесе. Дорога Endeavour к научному центру была самой миссией.

Curiosio

Curiosio - это супергид для любителей путешествий. Мы представляем себе независимое путешествие, когда мир откроется. Мы создаем фундаментальные технологии для нового мира путешествий. Curiosio - это система вычислительных знаний + поисковая машина + система ответов. Куриозио аккуратно + чисто + круто на экране. Curiosio является продвинутым и передовым браузером. Мы делаем ML в основном для графа знаний. Мы делаем Эволюционный ИИ для искусственного интеллекта. Будьте осторожны и любопытны, следите за обновлениями!