Предложение по доработке API Qgis: синхронизация редакции
-
- Активный участник
- Сообщения: 194
- Зарегистрирован: 08 фев 2007, 23:29
- Репутация: 1
- Откуда: Симферополь
- Контактная информация:
Предложение по доработке API Qgis: синхронизация редакции
В ходе изучения API QGis обнаружилось, что программно нельзя модифицировать объекты редактируемых слоев кроме как через методы класса QgsVectorLayer , которых, к сожалению, не всегда бывает достаточно. Так например нет создания буферных зон и некоторых других функций. Можно написать для этого свою функцию, но она не сможет работать внутри слоя (сможет только сохранить в новый). Поэтому напимер fTools результаты геопроцессинга сохраняет исключительно в новых слоях.
Поэтому хочется обратить на эту проблему внимание разработчиков QGis. Но сначала попросить всех знакомых с программированием по Qgis заглянуть в док, в котором подробно описывается проблема. Может возникнут какие-то замечания или будет чего дополнить.
Ссылка на док : http://docs.google.com/Doc?id=ddjr8h8b_118vhm4qz29
Поэтому хочется обратить на эту проблему внимание разработчиков QGis. Но сначала попросить всех знакомых с программированием по Qgis заглянуть в док, в котором подробно описывается проблема. Может возникнут какие-то замечания или будет чего дополнить.
Ссылка на док : http://docs.google.com/Doc?id=ddjr8h8b_118vhm4qz29
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
я так понимаю, что по этой же причине нет возможности и например прорезать один полигон другим в QGIS.
если подобное дополнение будет сочтено сообществом разумным и достаточным, я берусь перевести и донести наш запрос до разработчиков QGIS
если подобное дополнение будет сочтено сообществом разумным и достаточным, я берусь перевести и донести наш запрос до разработчиков QGIS
пристегивайтесь, турбулентность прямо по курсу
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Предложение по доработке API Qgis: синхронизация редакции
В Сях не очень силен (я паскалист). Посмотрел исходники, почитал доку... на мой взгляд, проблема описана правильно, и актуальность предложенной доработки большая. Не только fTools но и многие другие инструменты сохраняют результат работы в новый слой, что часто весьма не удобно.
Присоединяюсь к предыдущим ораторам и готов оказать посильную помощь.
Присоединяюсь к предыдущим ораторам и готов оказать посильную помощь.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
спасибо за реакцию, оказывается QGIS-овцы и сами наталкивались на подобное ограничение и принимают предложение
http://n2.nabble.com/synchronization-fu ... 49387.html
http://n2.nabble.com/synchronization-fu ... 49387.html
пристегивайтесь, турбулентность прямо по курсу
-
- Активный участник
- Сообщения: 194
- Зарегистрирован: 08 фев 2007, 23:29
- Репутация: 1
- Откуда: Симферополь
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
Просьба протестировать патч. Метод назвается QgsVectorLayer::changeFeature( QgsFeature &f ) и доступен как в С++ так и python.
Код: Выделить всё
Index: /home/drofan/unstable/qgis/python/core/qgsvectorlayer.sip
===================================================================
--- /home/drofan/unstable/qgis/python/core/qgsvectorlayer.sip (revision 10693)
+++ /home/drofan/unstable/qgis/python/core/qgsvectorlayer.sip (working copy)
@@ -364,6 +364,11 @@
/**access range */
RangeData &range(int idx);
+
+ /** Change feature with 3rd party geometry and attribue updates
+ @note this method was added in version 1.1
+ */
+ changeFeature( QgsFeature &f );
public slots:
Index: /home/drofan/unstable/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- /home/drofan/unstable/qgis/src/core/qgsvectorlayer.cpp (revision 10693)
+++ /home/drofan/unstable/qgis/src/core/qgsvectorlayer.cpp (working copy)
@@ -3671,3 +3670,16 @@
}
return 0; //not found
}
+
+void QgsVectorLayer::changeFeature( QgsFeature &f )
+{
+ // do not update when we aren't in editing mode
+ if ( ! mEditable )
+ return;
+
+ mChangedGeometries[f.id()]= *f.geometry();
+
+ mChangedAttributeValues[ f.id()]=f.attributeMap();
+
+ setModified(true,false);
+}
Index: /home/drofan/unstable/qgis/src/core/qgsvectorlayer.h
===================================================================
--- /home/drofan/unstable/qgis/src/core/qgsvectorlayer.h (revision 10693)
+++ /home/drofan/unstable/qgis/src/core/qgsvectorlayer.h (working copy)
@@ -447,6 +447,11 @@
*/
QgsVectorOverlay* findOverlayByType( const QString& typeName );
+ /** Change feature with 3rd party geometry and attribue updates
+ @note this method was added in version 1.1
+ */
+ void changeFeature( QgsFeature &f );
+
public slots:
/** Select feature by its ID, optionally emit signal selectionChanged() */
void select( int featureId, bool emitSignal = TRUE );
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
пристегивайтесь, турбулентность прямо по курсу
-
- Участник
- Сообщения: 54
- Зарегистрирован: 27 авг 2009, 11:01
- Репутация: 1
Re: Предложение по доработке API Qgis: синхронизация редакци
Этот метод до сих пор существует только в виде патча или включен в состав QGIS?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Предложение по доработке API Qgis: синхронизация редакци
Ну нельзя же быть до такой степени ленивым. Вы бы по ссылке сходили что ли... Или Ъ по ссылкам не ходят?GIS-dev писал(а):Этот метод до сих пор существует только в виде патча или включен в состав QGIS?
Почти два года как реализовано. И доке по API есть.changeGeometry() was implemented in r10701. Use changeAttributeValue() to update the attributes.
-
- Участник
- Сообщения: 54
- Зарегистрирован: 27 авг 2009, 11:01
- Репутация: 1
Re: Предложение по доработке API Qgis: синхронизация редакци
Эти два метода я видел. Но не обратил внимания, что они введены вместо заявленного в патче "changeFeature".Voltron писал(а): Ну нельзя же быть до такой степени ленивым. Вы бы по ссылке сходили что ли... Или Ъ по ссылкам не ходят?Почти два года как реализовано. И доке по API есть.changeGeometry() was implemented in r10701. Use changeAttributeValue() to update the attributes.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя