Главная

Начало

Главная
География
Интерфейс
ТЗ
Начало
Очистка
Верификация
Описания
Эксперимент

Карта

Первичная обработка БД OSM




Назад...   Далее...

Решил-таки скачать данные заново, прекрасно понимая, какой объём работы меня ждёт. Впрочем, не столько меня, сколько мой компьютер, естественно. Начал скачивать... и тут же начал материться! Во-первых, предлагается скачивать одним (!) файлом всю базу в 65 гигов архива и "несколько сотен гигабайт в развёрнутом виде". Да ещё и с наглой приписочкой: "Если Ваше программное обеспечение не позволяет работать с файлами такого объёма, Вы должны его обновить". С какой радости?! Вам что, несколько файлов завести квалификации не хватает?! Раньше вы хотя бы архивы нарезали на блоки в 4 гига (хотя объёмы исходников уже тогда были маразматически большими). Не умели скачивать подобные чудовища, а теперь научились, и решили похвастаться? Не знаете, куда приткнуть свою дурацкую 64-разрядную арифметику? Или вы не в курсе, что этот ваш многогигабайтный файл хранится на диске, будучи нашинкованным на дорожки и сектора? А передаётся потребителю, нарезаясь на пакеты TCP/IP/Ethernet - иначе вы вообще не смогли бы ничего ни сохранить, ни передать! И сколько часов его прикажете скачивать? Или дней? А если вдруг ошибка в контрольной сумме - это не такая уж и редкость - тогда что? Скачивать заново? Вы способны привести ХОТЬ ОДИН довод в пользу единого файла, кроме гнутых пальцев его создателей? Вот и я не могу! Впрочем, все эти трепыхания вполне в "мейнстриме": на Windows7 перестал работать наш Мираж (отказались поддерживать полноэкранный режим задач), в 64-разрядной версии перестал работать Синдбад, генератор сайтов (которым я и делаю вот этот сайт), да и всё остальное. Про "совместимость снизу" эти ублюдки давно уже и не заикаются. А зачем? Быдло схавает! Приучено...

Одним словом, я НЕ стал скачивать всякие "Special Sub Regions" вроде US Midwest, Alps или British Isles (я качал с OpenStreetMap Data Extracts). Но потом меня "вынудили" скачать всю Африку (поскольку я не увидел в "нарезке", скажем, Судана), всю Южную Америку (она по объёму меньше Африки, так что "до кучи"), Центральную Америку, Океанию - эти ещё меньше... наконец, мне это надоело: с какой стати я должен перелопачивать двойные и тройные объёмы данных?! Только из-за неряшливости составителей? Или из-за их гнутых пальцев со своим супер-пупер-гипер-терабайтным файлом? Что, страна какая-нибудь исчезнет с карты? Да и хрен с ней! Так что ни Северную Америку (в смысле, как единый файл - и Канаду, и США я скачал "поштатно"), ни Азию, ни Европу, ни Германию-Францию-Великобританию-Польшу-Италию - в общем, ничего из того, что имеет дочерние нарезки я скачивать не стал. Актуальность данных - декабрь 2018 года. В развёрнутом виде исходные данные занимают 875 855 041 648 байт (815.7 Гб). Примерная последовательность действий первого этапа обработки:

  • Крупные файлы разрезаем на блоки объёмом не более 4 Гб: у меня 32-разрядная математика, и менять её из-за каких-то распальцованных идиотов из OpenStreetMap лично я не собираюсь.
  • Отрезаем наиболее бросающийся в глаза "структурированный" мусор (данные, относящиеся не к самой карте, а к истории её создания) под атрибутами version, timestamp, changeset, source и created_by.
  • Выделяем данные разных типов, определяемых тегами 1-го уровня вложенности (таких типов всего три: node, way и relation), в отдельные группы, чтобы иметь возможность дальнейшую их обработку производить по специализированным алгоритмам.
  • Структурируем данные точечных элементов карты (узлов), т.е. переводим в вид nodeID-lat-lon.
  • Структурируем траектории типа way как набор входящих в них идентификаторов узлов nodeID.
  • Структурирем траектории типа relation как набор входящих в них идентификаторов дочерних элементов с их тегами и дополнительными данными (например, об их роли в родительской траектории).
  • Отделяем данные от описаний и структурируем описания в виде Entity-Attribute-Value. Даные описаний переводим в реляционный формат (дописываем отдельным полем идентификатор родителя).
  • Убираем мусор (закрывающие теги).

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

28.03.2019 09:48
 
`