Найти новый созданный объект по ID после сохранения слоя

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
GIS-dev
Участник
Сообщения: 54
Зарегистрирован: 27 авг 2009, 11:01
Репутация: 1

Найти новый созданный объект по ID после сохранения слоя

Сообщение GIS-dev » 01 дек 2011, 08:45

Проблема в следующем: в векторном слое создается новый объект(фича) после чего слой сохраняется в БД PostgreeSQL/PostGIS функцией QgsVectorLayer::commitChanges(); В этот момент в недрах API QGIS фиче присванивается реальный идентификатор (первичный ключ в базе) но для программы, использующей API она теряется.
Можно ли после сохранения слоя однозначно найти её, не используя костылей вроде выборки наибольшего по величине ключа в поле (межу сохранением и выборкой может произойти ещё запись в базу, добавившая новое значение) или поиска по геомтерии фичи (функция PostGIS ST_Equals не работает на поиск совпадающей геометрии, возможно из-за внутренних погрешностей вычисления, а другие функции типа вичисления наименьшего расстояния между фичами ST_Distance также дают негарантированный результат если в слое фича пересекается геометрией с другими объектами).

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя