Forum QGIS
Python - tabela atrybutów odwołanie - Wersja do druku

+- Forum QGIS (http://forum.quantum-gis.pl)
+-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html)
+--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html)
+--- Wątek: Python - tabela atrybutów odwołanie (/thread-713.html)



Python - tabela atrybutów odwołanie - Jarek_Re - 18-05-2012

Rozpoczynam przygodę z pythonem i niestety utknąłem w jednym miejsu.
Chciałbym mianowicie rozpocząć operacje na tabeli atrybutów. Moje pytanie, czy jest możliwość poruszania się po tej tabeli operując na numerze wiersza i kolumny. Na tą chwile potrafię czytać dane poruszając się od góry do dołu po wierszach. Czy idzie na przykład od razu czytać np komórkę z 5 wiersza i 3 kolumny? chodzi mi o funkcję podobną jaka jest w vba w Excelu czyli np x=Arkusz1.cells(5,3). Z góry dziękuje za pomoc.


RE: Python - tabela atrybutów odwołanie - Crypturgus - 18-05-2012

Może to CI w czymś pomoże
http://dbfpy.sourceforge.net/


RE: Python - tabela atrybutów odwołanie - Jarek_Re - 18-05-2012

Dziękuje za odpowiedź. Jeżeli chodzi o odwołanie się do pliku dbf za bardzo mnie to nie ratuje. Docelowo wtyczka będzie używana na bazie postgis więc nie będzie plików dbf. W projekcje będzie wiele warstw, zarówno shp i postgisowych. Po wyborze aktywnej warstwy (layer = self.iface.activeLayer() ) chciałbym czytać dane bezpośrednio z niej.


RE: Python - tabela atrybutów odwołanie - borys - 18-05-2012

Przez API Qgisa możesz jedynie iterować po obiektach i następnie ich atrybutach. Moja wtyczka Table Manager właśnie korzysta z bezpośredniego dostępu do pliku dbf, a następnie przeładowuje warstwę w QGISie. Ze względu na brak równoległego dostępu do pliku w Windowsach, wręcz najpierw usuwa warstwę z płótna, zapisuje zmiany do dbfa i dopiero ładuje. Również w postgresie tylko tak widziałbym rozwiązanie Twojego problemu...
Tzn. oczywiście w postgresie da się trochę na skróty, a przy wyłączonym keszowaniu tabeli atrybutów i bez użycia stylu opartego na danych nawet uniknąć przeładowywania warstwy, ale chyba nie obejdzie się bez całkowicie niezależnego zapytania do bazy.


RE: Python - tabela atrybutów odwołanie - Rayo - 18-05-2012

(18-05-2012, 09:33)Jarek_Re napisał(a): Czy idzie na przykład od razu czytać np komórkę z 5 wiersza i 3 kolumny?

Czy możesz bliżej wyjaśnić, w jakim celu chcesz czytać z określonego wiersza?


RE: Python - tabela atrybutów odwołanie - Jarek_Re - 21-05-2012

Potrzebuje takich odwołań bo, na podstawie np 3 wierszy wyliczam jedną wartość, którą chciałbym wpisać w określone miejsce. Tak dla przykładu. Pobieram wartości z kolumny A z wiersza 0,1,2 i wpisuje wynik w kolumnę B w wiersz 1. Dzięki takim odwołaniom mógłbym łatwo zapisywać wyniki. To samo tyczy się oczywiście czytania danych. Wyliczając np. kolumnę C potrzebuje dane z kolumny A i B, tyle że z różnych wierszy.


RE: Python - tabela atrybutów odwołanie - Rayo - 30-05-2012

W tabeli atrybutów każdy wiersz to jeden obiekt. Dodatkowo, w zależności po której kolumnie sortujesz, obiekt taki może znaleźć się w różnych miejscach (wierszach) tabeli.
Czy na pewno interesuje Cię wybór danych z określonego wiersza? Czy może wyszukanie obiektu po jego ID lub innym atrybucie?
Podaj jakiś rzeczywisty przykład z Twojego zadania.