Проблема в следующем: в векторном слое создается новый объект(фича) после чего слой сохраняется в БД PostgreeSQL/PostGIS функцией QgsVectorLayer::commitChanges(); В этот момент в недрах API QGIS фиче присванивается реальный идентификатор (первичный ключ в базе) но для программы, использующей API она теряется.
Можно ли после сохранения слоя однозначно найти её, не используя костылей вроде выборки наибольшего по величине ключа в поле (межу сохранением и выборкой может произойти ещё запись в базу, добавившая новое значение) или поиска по геомтерии фичи (функция PostGIS ST_Equals не работает на поиск совпадающей геометрии, возможно из-за внутренних погрешностей вычисления, а другие функции типа вичисления наименьшего расстояния между фичами ST_Distance также дают негарантированный результат если в слое фича пересекается геометрией с другими объектами).
Найти новый созданный объект по ID после сохранения слоя
-
- Участник
- Сообщения: 54
- Зарегистрирован: 27 авг 2009, 11:01
- Репутация: 1
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя