Эта тема возникла здесь: создание шейп-файла с автоматическим приращением первичного ключа в QGIS
Мои предложения будут:
1) Базы данных SQLITE / SpatialLite поддерживают автоинкремент для поля, установленного в INTEGER PRIMARY KEY:
В INSERT, если столбцу ROWID или INTEGER PRIMARY KEY явно не дано значение, он будет автоматически заполнен неиспользуемым целым числом, обычно на единицу больше, чем самый большой ROWID, используемый в настоящее время. Это верно независимо от того, используется ли ключевое слово AUTOINCREMENT.
Каждый раз, когда вы редактируете / создаете полигоны, вы можете заполнять их атрибуты, и SQLITE будет давать ему уникальное добавочное значение в поле, для которого вы установили тип INTEGER PRIMARY KEY.
Когда вы будете готовы к экспорту в GEOJSON, все готово для использования ваших уникальных идентификаторов.
2) При использовании шейп-файлов создайте поле OBJECTID типа INTEGER и используйте выражение калькулятора полей, чтобы заполнять это поле каждый раз, когда вы редактируете / создаете полигоны и должны экспортировать их. Вы потеряете оригинальный идентификатор, который когда-то был у многоугольника, но это единственный способ добиться этого с помощью .SHP. (Мне нужно будет найти выражение поля калькулятора).
PostGIS - это еще один источник данных, который вы, возможно, захотите исследовать, хотя в большей степени, чем SQLITE, вы можете найти ценность в такой системе по мере продвижения вперед ...