Совместное редактирование геоданных – это одна из самых уязвимых частей работы с ГИС. Чем больше редакторов и чем дольше длится проект, тем выше риск ошибок и случайных удалений.
Отсутствие возможности откатить внесённые правки нередко приводит к огромным издержкам, а отсутствие прозрачной информации об их времени и авторстве не позволяет адекватно контролировать процессы.
Чтобы сделать работу с векторными данными более безопасной и управляемой, мы добавили в NextGIS Web систему контроля версий векторных объектов.
Зачем нужен контроль версий
Типичные ситуации, с которыми сталкиваются команды:
- непонятно, кто и когда изменил объект;
- сложно восстановить данные «как было вчера», когда что-то случилось;
- ошибки обнаруживаются слишком поздно;
- нет объективной информации о динамике редактирования данных, чтобы оценить скорость работы и спрогнозировать затраты;
- при аутсорсинге редактирования нет прозрачности действий третьей стороны.
Контроль версий решает эти проблемы, добавляя полную историю изменений и возможность безопасного возврата к предыдущим состояниям данных.
Как это устроено в NextGIS Web
Для любого векторного слоя можно включить «Версионирование». Если эта опция активна, то слой подробно регистрирует все изменения, которые с ним происходят, и неограниченно долго накапливает их историю. В большинстве случаев, версионирование включено по умолчанию.

В историю изменений попадают действия:
- создание объекта;
- изменения геометрии, атрибутов, вложений или описания объекта;
- удаление объекта;
- восстановление объекта после его удаления.
Для каждого события происходящего с данными фиксируется его автор, дата и время, тип операции, и информация о внесенных в объекты изменениях.
При этом источник изменений может быть самым разным, не важно, отредактировали ли объект через веб-интерфейс NextGIS Web, на веб-карте, подключившись из QGIS, из мобильного приложения, или через API – изменение будет описано и сохранено в любом случае.
Прямо в веб-интерфейсе векторного слоя доступен просмотр всех зарегистрированных событий – кнопка «История изменений».

Откроется таблица, в которой сведена вся информация о версиях – даты, авторы, содержимое изменений, сформировавших версию. Доступны фильтры по датам.
Важно, что это не просто справочная информация или журнал событий. Эти версии – срезы состояния слоя на каждый период. Вы можете «откатить» слой на выбранную версию. История изменений после неё при этом не потеряется, так как технически «откат» просто создаст новую версию, восстанавливающую облик слоя на заданный момент. Поэтому при необходимости вы без проблем и потери данных сможете отменить и «откат».

Вторая опция – записать состояние слоя в выбранный момент времени в новый набор данных. В терминах контроля версий можно сказать «сделать слепок» или «ответвиться». Так вы всегда сможете подробно проинспектировать состояния слоя на нужный момент в его отдельной копии, или разделить процесс работы с данными на отдельные части.
Полный доступ к истории изменения объектов есть и через программный интерфейс – NextGIS Web API. С его помощью вы можете автоматизировать построение отчётов, отвечающих вашим требованиям, интегрировать сведения во внешние аналитические системы.
Как версионирование помогает совместной работе в QGIS
Механизм версионирования позволил нам построить системную работу с данными, хранящимися в NextGIS Web, из QGIS. Настольная ГИС в любой момент может опросить сервер на предмет того, какие изменения в нём произошли за последнее время, и получить не весь потенциально огромный набор данных, а только выжимку: «Вот, что изменилось в наборе данных за этот период».
Это не только радикально ускоряет обмен информацией, но и позволяет безопасно разрешать конфликты правок, поддерживать полную информированность всех участвующих в процессе работы программ. Допускается и безболезненная работа с серверными данными в офлайн-режиме, а когда связь появляется, программы спокойно обмениваются всеми изменениями. Больше нет необходимости загружать всё целиком, сравнивать состояние и выполнять множество следующих за этим действий.

Благодаря версионированию вы можете работать над проектами из QGIS с разных компьютеров большими командами, одновременно внося изменения в общие для всех редакторов наборы данных, видя прямо на карте что делают коллеги.

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

И, конечно, все изменения, вносимые со всех компьютеров, можно будет увидеть в таблице истории в NextGIS Web, сохраняя полный контроль над процессом.
Дополнительные инструменты
Мы постоянно расширяем арсенал средств для работы с версионированием, и часть из них попадает в NextGIS Toolbox – наш движок онлайн-геообработки. Сейчас доступно два полезных инструмента, связанных с историей изменения объектов.
Отчёт об изменениях ресурса
Инструмент позволяет быстро сгенерировать подробный отчёт об активности редакторов за указанный период времени. На входе – слой, папка со слоями или карта. На выходе – удобный отчёт, в котором показана как общая динамика изменений, так и её разбиение по отдельным слоям и редакторам. Это лёгкий способ увидеть кто и как работал над вашим проектом.

История векторного объекта
Инструмент ориентирован на глубокий анализ изменений конкретного объекта. Это может быть актуально, если в ваших слоях активно изменяются объекты, например, вы производите мониторинг быстро меняющихся границ, или обновляете координаты движущегося объекта. Инструмент создаст файл GeoPackage, в котором наглядно собраны все состояния объекта за указанный диапазон дат.

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

В целом, иметь историю изменений и возможность работать с ней полезно, даже если вы работаете в одиночку.
Как взять свои геоданные под контроль
Начните хранить их в NextGIS Web вместо россыпей файлов и кустарно развёрнутых серверов баз данных. Получить собственный экземпляр Веб ГИС вы можете:
- прямо сейчас в нашем облаке;
- на собственных серверах вашей организации.