citec-spbu / Spatial-Data-ETL

Автоматизация сбора и обработки пространственных данных
0 stars 0 forks source link

Изучить методы обновления данных - временные дельты #20

Closed Kkhludneva closed 5 months ago

Kkhludneva commented 7 months ago

Изучить методы актуализации данных OSM, например: https://wiki.openstreetmap.org/wiki/RU:Osmupdate

Учитываем, что работать предстоит с большими объемами данных (РФ/Евразия/планета)

Отразить все рассуждения в комментариях под issue.

TigranNice commented 7 months ago

https://wiki.openstreetmap.org/wiki/Planet.osm/diffs Различия, представленные по адресу https://planet.osm.org/ представляют собой небольшие сжатые XML-файлы в формате OsmChange, которые содержат изменения в данных OpenStreetMap за некоторый период времени. Разработчики могут использовать Diff для синхронизации базы данных OpenStreetMap с последними изменениями, вносимыми картографическим сообществом, или для анализа этих изменений по мере их появления.

TigranNice commented 7 months ago

Порядок действий такой: используем OSM DIFF, далее Osmosis в связке с osm2pgsql обновляем данные в бд

TigranNice commented 7 months ago

Скорее всего не подходит, тк последняя репликация для россии была в 2020 году, а бд обновляется каждый день

nikita03565 commented 7 months ago

@TigranNice Можете показать какой-то пруф, что для России нет данных свежее 2020 года? Скриншот, ссылка, описание куда сходить, чтобы посмотреть

Говорят, osmupdate, который вы же предложили к рассмотрению, умеет брать нужные дифф файлы

Alternatively, the osmupdate can be used to create cumulated diff files (.osc, .osc.gz, .o5c, .o5c.gz). The program will download all necessary diffs between a given timestamp and now. Depending on this period of time, minutely, hourly and daily diffs will be downloaded and processed. It is faster than Osmosis and a bit easier to handle but it lacks a lot of functionality Osmosis provides, for example, osmupdate cannot update databases or write full history diffs (there will be only the newest version of each object in the output file).

Не изучали подробнее как это у него получается и насколько подходит?

На геофабрике кстати тоже есть osc.gz файлы, но они обновляются только раз в день. Если жестко обязательно уметь обновлять чаще, то тогда конечно не подходит.

TigranNice commented 7 months ago

IMG_1475 IMG_1476

Я зашёл в базу данных OSM и напрямую посмотрел. В Репликациях видно, что последняя была сделана в 2020! А на другом скрине видно что сама база данных по России обновлена на 2024.04.09

nikita03565 commented 7 months ago

@TigranNice Там ведь, если зайти внутрь, то можно увидеть, что в папке с минутными апдейтами все обновляется как по часам каждую минуту. К тому же для каждого субрегиона: https://download.openstreetmap.fr/replication/russia/ https://download.openstreetmap.fr/replication/russia/southern_federal_district/krasnodar_krai/

Похоже в 2020 году были загружены начальные данные, а минутные оттуда получается брать можно (но скорее всего не стоит раз дневных и часовых изменений нет и покрытие не полное "provides minutely diffs (.osc.gz) of around 20 countries, check link for availibility")

TigranNice commented 7 months ago

Можно брать все апдейты которые были за день image

Т е поставить время, например 0:00 для обновления. Программа будет брать все файлы, которые есть в базе и применять их к нашей бд

TigranNice commented 7 months ago

image А лучше изучил сайт https://wiki.openstreetmap.org/wiki/Planet.osm/diffs Нашёл что можно брать ежедневные изменения

TigranNice commented 7 months ago

https://docs.osmcode.org/pyosmium/latest/ref_replication.html

нашёл обновление репликаций в pyosmium

nikita03565 commented 6 months ago

@TigranNice можно вас попросить опубликовать до начала разработки краткое, но при этом достаточно понятное описание того, как вы планируете делать обновление данных? Какими инструментами и какая стратегия будет использоваться

Например:

(специально привел пример очень неудачной стратегии)

Если составление такого плана выходит за рамки конкретно этой задачи, то создать новую задачу нет проблем, главное, чтобы этот план был где-то зафиксирован. Относится ко всем задачам, где нужно что-то изучить и продумать как какой-то компонент будет работать.

Мудрая мысль для вас и всех ваших коллег: Вносить изменения в документы (какие угодно, требования или планы-описания будущих работ по реализации) написанные на человеческом языке (русский, английский и тд) во много раз проще, чем вносить изменения в уже написанный и работающий код. А Сергей Юрьевич или я можем найти, что подкорректировать в вашем плане, или вы сами вместе с коллегами найдете, что можно улучшить, обдумывая и обсуждая уже зафиксированный план.

Дополнительная выгода в состовлении подобных описаний: в конце семестра, когда вам нужно будет писать отчет по проекту или составлять презентацию для его защиты, достаточно будет только скопировать это описание вместо того, чтобы напрягать память или пытаться понять по коду как все работает и почему работает именно так.

@Kkhludneva @sevryukov

sevryukov commented 6 months ago

Мудрая мысль для вас и всех ваших коллег: Вносить изменения в документы (какие угодно, требования или планы-описания будущих работ по реализации) написанные на человеческом языке (русский, английский и тд) во много раз проще, чем вносить изменения в уже написанный и работающий код.

Совершенно верно! Есть несколько од про это (они уже не такие свежие по дате издания, но не потерявшие актуальность): Коротко и просто: https://okiseleva.blogspot.com/2018/03/blog-post_59.html Обстоятельно: https://habr.com/ru/articles/332724/

potomushozhenya commented 5 months ago

42