
Импортируем открытые гео данные из OpenGeoDB в Elasticsearch

Have you ever looked for a flat? Would you like to add some machine learning and make a process more interesting?
Have you thought about the influence of the nearest metro to the price of your flat?
What about several kindergartens around your apartment? Are you ready to plunge in the world of geo-spatial data?
Данная публикация это начало цикла статей. Если вам интересно, скажите об этом, а если не интересно, цикл на этом и закончится, тогда просто смотрите ниже список необходимого программного обеспечения и примеры.
Также смотрите другие статьи цикла:
Это не пошаговое руководство по визуализации трех- и четырехмерных данных, а подход к тому, как и чем это можно сделать и, притом, сделать качественно. Вероятно, многие из нас бывали в ситуациях, когда уже есть подготовленные с большим трудом данные, которые необходимо визуализировать, но неизвестно, как же это сделать так, чтобы не испортить все впечатление от выполненной работы. Существует много коммерческого программного обеспечения для этих целей, но мы будем рассматривать исключительно Open Source программы.
Также смотрите другие статьи серии "Как визуализировать и анимировать (геофизические) модели":
В зависимости от проекта и масштаба данных мы можем выбрать различные варианты визуализации — и все же, для любого масштаба данных важным является именно позволить наглядно оценить этот масштаб. К примеру, на региональном уровне отображение на глобусе Земли позволит легко понять как масштаб, так и расположение изучаемой территории. Вот мы и займемся отображением данных на глобусе.
Слева направо: EMAG2 Earth Magnetic Anomaly, Sandwell and Smith Free Air Gravity Grid, GEBCO Gridded Bathymetry Data.
Также смотрите другие статьи серии "Как визуализировать и анимировать (геофизические) модели":
Для визуализации анимированных 3D результатов без симуляции реальных процессов используются различные эффекты прозрачности и движения. При выполнении 3D симуляции — моделировании динамических процессов — нам необходимо уметь показывать 4D результаты. Когда анимированный результат визуально достаточно близок к результату симуляции, его нередко так и называют; в любом случае, во избежание ошибочной трактовки результатов необходимо ясно указывать используемые для визуализации данные и методы.
Также смотрите другие статьи серии "Как визуализировать и анимировать (геофизические) модели":
Наглядная визуализация позволяет быстро понять суть работы и полученных результатов, но, случается, — понять неправильно. Как однозначно продемонстрировать результаты и, притом, избежать груды подтверждающих формул и ссылок на другие работы — так, чтобы все было визуально очевидно (в хорошем смысле слова)?
На картинке выше представлены результаты улучшение гравитационных данных GGMplus Free-Air Gravity Anomaly 200м с помощью рельефа SRTM 30м техникой переноса компонент пространственного спектра.
Также смотрите другие статьи серии "Как визуализировать и анимировать (геофизические) модели":
В результате численного моделирования мы обычно получаем воксельные модели, которые для дальнейшей обработки и анализа необходимо преобразовывать в сетчатые поверхности. На картинке ниже в полупрозрачной воксельной модели изображена геологическая структура, выделенная и преобразованная в сетчатую поверхность и дополненная поверхностью рельефа.
Значительная часть геофизических публикаций в "солидных" журналах используют широко известную поправку к гравитационным данным — редукцию Буге. И все глобальные модели гравики ее используют. Наверное, это что-то очень важное и основано на детально проработанной теории? Давайте посмотрим, как можно графически проиллюстрировать смысл этой поправки. На рисунке показана идеальная плоскопараллельная пластина радиусом 200км, применяемая для вычисления поправки Буге согласно определению:
Рисунок из книги К.Ф. Огородникова «На чем Земля держится», 1953 г.
В связи с растущим публичным интересом к анализу и визуализации различных пространственных моделей (например, для изучения распространения вирусов) мне вспомнился один из проектов, которыми я занимался на фриланс-платформе Upwork. Эта работа выполнена по заказу корпорации Google и заключалась в создании общедоступного датасета OpenStreetMap (OSM) на Google Cloud Platform для работы с ним с помощью Google BigQuery и создании некоторых примеров анализа данных OpenStreetMap (смотрите Python Jupyter Notebooks в репозитории). Моей частью проекта была работа с данными; кто сразу хочет посмотреть код — добро пожаловать в мой гит-репозиторий bigquery-openstreetmap. Далее я расскажу, в чем заключаются преимущества созданного датасета (хинт: реализован и доступен классификатор слоев на SQL) и как его можно использовать.
Обращение к читателям: убедительная просьба избежать обсуждения Upwork в частности и фриланса в целом в комментариях, ну надоело же, право слово… разные там проекты есть.
Результаты анализа дорожной сети города Бостона по данным OpenStreetMap. Красным цветом обозначены хайвеи с высоким Betweenness centrality (bc), зеленым — улицы с высоким bc, желтым — хайвей с низким bc, серым — улицы с низким bc.
Дисциплина Computational fluid dynamics(CFD) или, на русском языке, Вычислительная гидродинамика изучает поведение различных потоков, в том числе вихревых. Это и моделирование цунами, и лавовых потоков, и выбрасываемых из жерла вулкана камней вместе с лавой и газами и многое другое. Посмотрим, как можно использовать совместно MantaFlow и ParaView, реализовав на встроенном в MantaFlow языке Python необходимые функции конвертации данных. Как обычно, исходный код смотрите в моем GitHub репозитории: MantaFlow-ParaView.
Визуализация шлейфа извержения вулкана. Мы уже видели эту картинку в серии статей про визуализацию в ParaView Как визуализировать и анимировать (геофизические) модели, обсуждали создание геологических моделей в статье Методы компьютерного зрения для решения обратной задачи геофизики, а теперь поговорим и о моделировании дыма.
Ранее в статьях мы уже обсудили доступные данные (результаты наземных и спутниковых гравитационных и магнитных измерений, ортофото и космические снимки, цифровые модели рельефа), теоретические подходы и методы обработки (интерферометрия, построение обратных геофизических моделей), обработку данных в ParaView (выделение изоповерхностей) и Blender (высококачественная визуализация и анимация подготовленных в ParaView данных) и даже посмотрели Python Jupyter notebook с вычислениями и визуализацией моделей (включая выделение изоповерхностей средствами библиотеки VTK). Осталось построенные геотермальные изоповерхности конвертировать в формат модели дополненной реальности и получить геотермальную модель в дополненной реальности (AR). Как всегда, модель доступна на GitHub в репозитории ParaView-Blender — в виде исходных STL/PLY файлов и проектов Blender, плюс там же лежат скрипты Google Earth Engine (GEE) для получения композитных снимков Landsat 8 и Sentinel-2 и скрипты для конвертации AR моделей.
AR Модель геотермального резервуара Лахендонг, полуостров Минахаса, Северный Сулавеси, Индонезия Замеры температуры по скважинам обозначены цветными дисками — синим 0-150°C (далеко от резервуара), белым 150-250°C (переходная область вблизи от резервуара), красным 250-350°C (внутри геотермального резервуара).
После публикации серии статей про построение геологических моделей пришло время обсудить, скажем прямо, самое интересное — а насколько эти модели достоверны? Несомненно, все представленные ранее модели интересны и полезны — землетрясения, вулканы, золотые месторождения и другие. Теперь покажем, что они являются действительными геологическими моделями. На самом деле, мы уже все доказательства упоминали, но сегодня обсудим подробно. Теоретическая часть и история метода приведены в статье Методы компьютерного зрения для решения обратной задачи геофизики, на гитхабе опубликован Python ноутбук 3D Density Inversion by Circular Hough Transform (Focal Average) and Fractality Index с оценкой достоверности моделирования, и я даже написал техническую статью непосредственно об используемых там вычислительных методах Вычислительная геология и визуализация: пример Python 3 Jupyter Notebook, не касаясь геологического смысла выполняемых вычислений. Кроме того, в статье Геология XXI века как наука данных о Земле модель землетрясения заверена с помощью результатов спутниковой интерферометрии.
Понадобилось мне недавно нарисовать в Python данные на карте, благо в данных есть координаты. Казалось бы, что может быть сложного... Но обо всем по порядку.
Цифровые модели поверхности и рельефа (ЦМП/ЦМР) – являются важной и неотъемлемой составляющей геоинформационных систем (ГИС). Они являются источником высотной информации и решают задачу определения высоты Z в указанной точке с координатами XY на местности. ЦМП и ЦМР могут быть как регулярными, так и нерегулярными (чаще всего их делят по формату хранения высотных отметок (растровые и векторные). Растровые ЦМП/ЦМР чаще всего поставляются в виде геопривязанного растра с типом пиксельных значений позволяющих хранить дробные отрицательные числа (32-bit float). Повсеместная реализация и внедрение информационных сервисов (прежде всего онлайн), делает необходимым отображение пользователям высотной информации в интерактивном режиме (определение Z при перемещении курсора XY) и ставит перед разработчиком задачу донесения этой информации. Если в случае с векторными данными, мы можем отобразить высотный пикет в координатах XY и показать записанный ему атрибут Z, то с растровыми (регулярными) моделями высот такое не выйдет, иначе мы должны хранить атрибут на каждый пиксель нашего растра (так никто не делает) или быть готовыми его рассчитать и вернуть пользователю с сервера. В принципе, эта задача решена показом на растровых тайлах высотных отметок или горизонталей в виде рисунка, но такой способ отображения высот не интерактивен и несет лишнюю нагрузку на картографическую составляющую тайлов.
Когда мы расставляем мебель в комнате, мы ориентируемся на габаритные размеры мебели и фурнитуры, а не на их занимаемую площадь, и мебель часто квадратной формы. С полигонами на карте дело обстоит немного иначе, они могут быть произвольной формы, но должны иметь определенную площадь, а задача такая же как и с мебелью - уместить всё в комнату (участок). Когда полигоны квадратные, то рассчитать нужное изменение длины ребра для получение желаемой площади, не так и сложно. С полигонами сложной формы всё не так просто, но и это тоже не проблема, ведь можно методом тыка подобрать нужную площадь. Проблема возникает когда количество полигонов возрастает. Пример: на изменение полигона сложной формы уходит 5 минут (грубо говоря), но нам нужно изменить 15 полигонов, считаем и получаем 75 минут. За 75 минут можно сделать гору полезных дел, а всего было отредактировано 15 полигонов. Если полигоны придется менять заново? вдруг нужно их будет разбить на другую площадь? Вот была бы такая программа, которая сама бы изменяла полигон и добавляла бы нужную площадь.
Продолжу рассказ "Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap" секретами о геоданных OpenStreetMap, на которых множество компаний построили бизнес но не все делятся подробностями... Что ж, сегодня приоткроем завесу!
База данных в PosgreSQL после загрузки из дампа занимает больше 587 GB. Это уже по меркам СУБД большая база и одна огромная таблица на каждый тип объектов не сработает. Для управляемости такие данные надо секционировать, хорошо что PostgreSQL поддерживает декларативное секционирование данных. Осталось лишь придумать как разделить географические данные. После поисков и сравнений мне на помощь пришла иерархическая гексагональная геопространственная система индексирования H Все это было реализовано в моем проекте openstreetmap_h3 для быстрой обработки и загрузки мира в базу.
Today I will discover America to you based on OpenStreetMap data in PostgreSQL15/PostGIS and my project openstreetmap_h3. Let's run the query and compare its execution time on the Citus column store in PostgreSQL and on the standard 100GB database partitioned by H3 geoindex.
We will find the top15 buildable locations in North America and the total length of roads, as well as their type and surface. I will not overload the publication with program logs, let's focus on the data! You can easily repeat all requests yourself on your laptop/computer.
Information