Forum QGIS

Pełna wersja: Python - tabela atrybutów odwołanie
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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.
Może to CI w czymś pomoże
http://dbfpy.sourceforge.net/
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.
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.
(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?
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.
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.