С детства обожаю рассматривать карты, особенно старые. Какие просторы! Сколько стран! Карта как холст картины, на котором воображение рисует то, как жили люди, как распространяли свое влияние и устанавливали власть. Еще карта ограничивает территории стран, причем делает это четко, категорически. И вот тут появляются сомнения, например: а существовали ли границы, как мы определяем их сейчас, тысячу лет назад, еще раньше?
Нет, конечно, цари считали какую-то землю своей, какую-то чужой. Относилось ли это к территориям или к более конкретным объектам: поселениям, полям? А что насчет гор, озер, рек? Оставались ли границы неизменными так долго, как это показывают доступные карты? Есть большие сомнения… Становится интересно: откуда вообще эти данные? Чья это точка зрения?
Что бы сделать неопределённость еще более явной, вот вам еще цитата из Wikipedia:
Госуда́рство — политическая форма организации общества на определённой территории, суверенная организация публичной власти, обладающая аппаратом управления и принуждения, которому подчиняется всё население страны.
Ни в науке, ни в международном праве не существует единого и общепризнанного определения понятия «государство»[1].
Тезисы
Около года назад был создан проект Historica, цель которого создать гео-исторический атлас, отражающий максимально объективную историческую картину, используя только общедоступные исторические данные.
Проект опирается на следующие тезисы:
-
Доступные исторические карты содержат неточные данные (этот тезис затронут во вступлении)
Слишком точные границы там, где их быть не должно
Недостаточная детализация
Ограниченное количество данных
карты грешат субъективными оценками
Объективное отображение возможно. (Как минимум возможно отобразить сомнения или наличие различных мнений)
Техническое решение возможно, все необходимые
компоненты либо существуют, либо реализуемы
Использование
Один из самых трудных для меня вопросов, поскольку мне нравиться подход «нет необходимости – не делай». Мне самому, как я уже упоминал, очень интересны карты. Но для чего еще, за очевидным исключением, можно использовать такой инструмент?
Очевидное это:
-
Преподаватели истории
материалы для лекций
интерактивные уроки
-
Профессиональные историки
базы данных
возможность публикаций
возможность совместной работы
Неочевидных возможностей - гораздо больше.
Реализация
Клиент
Итак, что же собой представляет гео-исторический атлас с точки зрения пользователя? Это прежде всего карта, дающая возможность пространственного перемещения, и выбор уровня детализации. Существует достаточное количество решений для работы с картами, можем выбирать. Нам понадобиться не так много:
Менять масштаб
Перемещать окно просмотра по всей карте
Отображать на карте города, страны и их названия, а соответственно точки, полигоны и надписи
Предоставить возможность добраться до источника данных
Следующий необходимый компонент — это контроллер положения во времени. Его назначение подгрузка данных, соответствующих выбранной дате. Вот тут мы понимаем, что данных будет много, и чем ближе к текущему моменту - тем больше. Сравните для примера, сколько городов нужно отобразить на карте в 2000 BC (до нашей эры) и в 2000 AD (нашей)!
Похоже на обычный географический атлас, с количеством страниц по количеству лет. Или дней. Смотря какой минимальный шаг детализации временной шкалы, мы выберем. Данных будет много, и это заставит нас поработать над оптимизацией их передачи и отображения.
Что у нас есть для реализации вышеупомянутого? Как минимум две разработки:
Обе достаточно известны и имеют сообщества, поддерживающие и развивающие их. Обе системы поддерживают отображение данных несколькими способами, включая формат GeoJSON. Вкратце, это текстовый файл JSON, содержащий описание нескольких классов примитивов (точки, полигоны, линии). То, что нужно!
База данных фактов
Здесь мы храним данные, которые отправляем клиенту по его запросу. Это набор файлов формата GeoJSON, содержащего данные о местоположении городов, границ стран. А расширив немного этот формат мы получим возможность передать вместе с этими примитивами еще и дополнительные метаданные, такие как:
Названия
Ссылки на источник
Вот тут мы и можем внести лепту в процесс оптимизации передачи информации на бэкэнде, заранее сформировав данные, оптимизированные для просмотра с учетом трех критериев, указанных клиентом в запросе:
Время
Координаты окна просмотра
Масштаб
Конечно, это не единственная возможность, еще существуют разработки, оптимизирующие работу с гео-данными, например PostGIS для PostgreSQL.
Интересен вопрос, каким образом рассчитывать границы стран. Ведь надо учитывать, что только в последние века у нас человечества появилась возможность тщательно документировать границы государств. Здесь есть несколько возможностей, например:
Рассчитывать пересечение зон влияния известных населенных пунктов разных стран (градиентный спуск)
Использовать современные минимальные административные территории, как минимальный элемент мозаики
Проверка фактов
Отображаемые факты должны быть объективны и точны — это наша основная цель. Так как же нам этого достичь? Можем отказать в праве существования фактам, для которых существует альтернативная интерпретация. Например: согласно Wikipdeia/bu Астрон вошел в состав Героста в 145 AD, а согласно usa.cogress.lib – Астрон до 147 AD входил в состав Картензии. (Все данные вымышлены, а совпадения – неумышленны).
В данном примере мы должны проигнорировать оба факта.
Следующим шагом можем добавить правило, по которому источники данных получат веса. Затем добавим правила, по которым можно будет оценивать веса источников. Тогда факт из Wikipedia или библиотеки конгресса будет использован для отображения, как достоверный.
Конечно, здесь мы выходим на тонкий лед субъективности правил. Однако, если набор применяемых правил будет общедоступным, а сами правила опциональными, то это даст пользователю возможность использовать только тот набор правил, который он считает верным.
Еще один вариант – специальный способ отображения неоднозначных данных. Честно дадим пользователю знать, что часть информации противоречива, неполна, и в целом требует отдельного подхода при использовании. В таком случае пользователь сразу поймет, что с Астроном, в данный период, не все так однозначно.
Однако, факты можно обрабатывать по правилам, только если они сравнимы. Любой разработчик скажет вам, что сравнение данные разных типов требует предварительного приведения к какому-то общему типу. И еще нужно суметь, не потерять при этом информацию! А значит, необходим этот самый формат фактов.
Помимо основного факта: поселение, наименование, периоды принадлежности, к государствам, еще необходимо хранить набор метаданных, имеющие значение, при определении веса самого факта, например: источник данных.
Сырые данные
Двигаемся дальше. Где будем брать данные для отображения?
Не будем себя ограничивать источниками, давайте принимать во внимание и обрабатывать все до чего можем дотянуться:
Доступные в сети энциклопедии, начиная со всех языковых версий Wikipedia
Университетские библиотеки
Государственные архивы
Оцифрованные карты, включая старинные (хотя со старинными придется повозиться, чтобы их привести к нормальным координатам)
Археологические базы данных
Поисковик
С видами источников данных мы определились. Однако, только малая часть из них структурирована и пригодна для непосредственного использования. Большая же часть требует дополнительной обработки для превращения в сырые данные, описанные в предыдущей части.
Эту часть работы на себя должны взять плагины-поисковики, которые периодически будут пересматривать источники данных в поисках новой или обновленной информации, и отправлять это в хранилище, в виде сырых фактов.
Плагины могут быть очень разными: прасеры, драйвера к базам данных, NLP анализаторы (обработчики естественного языка), но все они будут объединены в одну семью единым выходным форматом данных.
Итак, минимальный набор компонентов описан, и на этом мы пока остановимся.
Заключение
Проект уже запущен, имеет некоторые POC-наработки и реализацию в виде сайта Historica. Проект некоммерческий, так что он поддерживается исключительно силами энтузиастов.
Если вам интересен вопрос, у вас есть идеи – присоединяйтесь!
Мы уверены, что предложенное решение не единственно верное и может быть улучшено. Что касается возможностей применения, то их гораздо больше, чем было упомянуто, и ограничиваются они только количеством участников-разработчиков.
У нас на руках есть все технологии для создания инструмента, есть понимание, что мы хотим получить, и есть возможность поддержки инфраструктуры.
Следующим шагом мы собираемся привлечь небольшую команду для разработки прототипа, возможно даже в виде небольшого проекта с грантом на разработку.
После чего мы планируем перевести проект в открытый, где все волонтерские идеи и разработки могут получить прописку. Сам же проект, в виде инициативной группы, возьмет на себя работу по целостности системы и поддержке его инфраструктуры.
Комментарии (8)
tbl
18.02.2022 11:56У меня не получается прочитать текст без лишних ухищрений
А куда на сайте надо потыкать, чтобы посмотреть реализацию?
Basla Автор
18.02.2022 12:57Существующий POC, пока еще в доступе по закрытой ссылке. Он только демонстрирует идею, и работает с синтетическими данными.
Мы рассматриваем идею дать доступ к этому ресурсу ограниченному кругу заинтересованных.Myclass
18.02.2022 14:36… только идея, но без открытой начинки. А что скрывать-то? Зато сколько «начальников» над идеей уже с их резюме на сайте указано. Не хочу обидеть. Просто. И меня это никак не касается. Не
распил-ли этоожидающая-ли это никаких результатов «инвестиция»? Очередность действий вроде другая должна быть. Но подожду. Может быть я через-чур строг.
TyVik
18.02.2022 22:49А мне кажется, что идея крутая, сам давно такую хочу сделать. Но когда смотрел, открытых данных примерно не было. Можно было, конечно, подобный сайт https://chronas.org/ спарсить, но приключение то ещё. Поэтому думаю начать с малого - рисовать путешествия и события. Те же битвы, основания городов и прочие точечные вещи хорошо парсятся с Wikidata через SPARQL. Если интересно, пишите в личку. Я свой проект так данными и наполнял.
Немного не понятен технологический стек. Вроде как PostGIS, но рядом MongoDB. Ну и модель наполнения мне кажется должна быть подобно Википедии (а код открыт). Там тоже битв много, но вроде как о чём-то люди могут договориться.
Myclass
живу в Европе и давно убедился, что нет такого понятия. У каждой группы людей (народа, страны, единомышленников итд.) была и будет своя перспектива/колокольня, с которой смотрят на то или иное событие. Это не критика в вашу сторону.
Десять человек видили аварию на дороге и каждый увидел что-то своё.
boxvk257
Название статьи отбивает желание ее читать.
Myclass
вот ведь, а мой мозг вначале прочитал это без ошибки. ;)
Basla Автор
Спасибо за замечание. Попробуете еще раз? :)