Предложение по доработке API Qgis: синхронизация редакции
- 
				Dorofeev
- Активный участник
- Сообщения: 194
- Зарегистрирован: 08 фев 2007, 23:29
- Репутация: 1
- Откуда: Симферополь
- Контактная информация:
							 Предложение по доработке API Qgis: синхронизация редакции
						Предложение по доработке 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
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
я так понимаю, что по этой же причине нет возможности и например прорезать один полигон другим в QGIS.
если подобное дополнение будет сочтено сообществом разумным и достаточным, я берусь перевести и донести наш запрос до разработчиков QGIS
			
			
									
						
							если подобное дополнение будет сочтено сообществом разумным и достаточным, я берусь перевести и донести наш запрос до разработчиков QGIS
пристегивайтесь, турбулентность прямо по курсу
			
						- 
				Voltron
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Предложение по доработке API Qgis: синхронизация редакции
В Сях не очень силен (я паскалист). Посмотрел исходники, почитал доку... на мой взгляд, проблема описана правильно, и актуальность предложенной доработки большая. Не только fTools но и многие другие инструменты сохраняют результат работы в новый слой, что часто весьма не удобно.
Присоединяюсь к предыдущим ораторам и готов оказать посильную помощь.
			
			
									
						
										
						Присоединяюсь к предыдущим ораторам и готов оказать посильную помощь.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
спасибо за реакцию, оказывается QGIS-овцы и сами наталкивались на подобное ограничение и принимают предложение
http://n2.nabble.com/synchronization-fu ... 49387.html
			
			
									
						
							http://n2.nabble.com/synchronization-fu ... 49387.html
пристегивайтесь, турбулентность прямо по курсу
			
						- 
				Dorofeev
- Активный участник
- Сообщения: 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
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Предложение по доработке API Qgis: синхронизация редакции
пристегивайтесь, турбулентность прямо по курсу
			
						- 
				GIS-dev
- Участник
- Сообщения: 54
- Зарегистрирован: 27 авг 2009, 11:01
- Репутация: 1
							 Re: Предложение по доработке API Qgis: синхронизация редакци
						Re: Предложение по доработке API Qgis: синхронизация редакци
		
													
							
						
			
			
			
			
			Этот метод до сих пор существует только в виде патча или включен в состав QGIS?
			
			
									
						
										
						- 
				Voltron
- Гуру
- Сообщения: 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.
- 
				GIS-dev
- Участник
- Сообщения: 54
- Зарегистрирован: 27 авг 2009, 11:01
- Репутация: 1
Re: Предложение по доработке API Qgis: синхронизация редакци
Эти два метода я видел. Но не обратил внимания, что они введены вместо заявленного в патче "changeFeature".Voltron писал(а): Ну нельзя же быть до такой степени ленивым. Вы бы по ссылке сходили что ли... Или Ъ по ссылкам не ходят?Почти два года как реализовано. И доке по API есть.changeGeometry() was implemented in r10701. Use changeAttributeValue() to update the attributes.
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot] и 11 гостей
