Export tabeli do pliku *txt - 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: Export tabeli do pliku *txt (/thread-1872.html) |
Export tabeli do pliku *txt - guziec88 - 22-04-2020 Cześć, potrzebuję pomocy odnośnie automatycznego exportu tabeli to *txt. Moja tabela zawiera kolumny "Godlo", "param1","param2","param3","param4". W jaki sposób zrobić export aby powstały mi pliki *txt gdzie nazwą plików będzie wartość pola danego rekordu w kolumnie "Godlo", a w pliku zawarte będą wartości z pozostałych kolumn oddzielone np. "enterem" ?? pozdrawiam RE: Export tabeli do pliku *txt - xmaziax - 22-04-2020 Skrypt w Pythonie chyba najszybciej RE: Export tabeli do pliku *txt - guziec88 - 22-04-2020 istnieje szansa na jakąś podpowiedź ? RE: Export tabeli do pliku *txt - xmaziax - 23-04-2020 Wg mnie do takich rzeczy można najlepiej użyć pythona - musisz napisać skrypt w tym języku. Zakładam, że masz jakąś warstwę otwartą w QGIS np. shp z tymi danymi i z niej chcesz je "wypluć". Skrypt powinien iterować po wierszach tabeli warstwy, z kolumny z nazwą pliku pobierasz nazwę i w określonej lokalizacji tworzysz taki plik. Do niego zapisujesz wartości z kolejnych atrybutów itp. I tak w pętli po wszystkich wierszach. To kilka linijek kodu tak na oko np. to co poniżej, ale musisz sobie już zmodyfikować pod siebie, Np takie coś: U mnie tabela miała 6 kolumn id, nazwa pliku (w kolumnie o indeksie 1) i 4 atrybuty (indeksy od 2 do 5) Musisz mieć zaznaczoną warstwę aktywną i założony folder wyjścia. Działa na QGIS3 Kod: lyr = iface.activeLayer() RE: Export tabeli do pliku *txt - guziec88 - 24-04-2020 Dziękuję !!! Wpisałem powyższy kod, dostosowałem do swojej tabeli wygląda to tak: lyr = iface.activeLayer() features = lyr.getFeatures() sciezka = 'c:/temp/gen_plikow/' for feat in features: atrybuty = feat.attributes() with open(sciezka + atrybuty[GODLO] + '.txt' , 'w') as raport: raport.write(atrybuty[1]+'\n') raport.write(atrybuty[2]+'\n') raport.write(atrybuty[3]+'\n') raport.write(atrybuty[4]+'\n') raport.write(atrybuty[5]+'\n') raport.write(atrybuty[6]) Lecz po uruchomieniu skrypku wyskakuje mi błąd przetwarzania: Traceback (most recent call last): File "C:/PROGRA~1/QGIS3~1.10/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py", line 224, in runAlgorithm exec(self.editor.text(), _locals) File "<string>", line 1, in <module> NameError: name 'iface' is not defined co mogę robić źle ? RE: Export tabeli do pliku *txt - xmaziax - 24-04-2020 A gdzie to wpisujesz? Z poziomu edytora pythona w QGis powinno to działać normalnie. W starszych wersjach należało importować, z tego co pamiętam. Na początek możesz to dodać: Kod: from qgis.utils import iface GODLO zamień na numer kolumny z warstwy ( liczony od 0) - u mnie to była 2 kolumna dlatego wpisałem 1 Folder 'c:/temp/gen_plikow/' założyłem wcześniej Te wszystkie wcięcia są ważne, musisz to mieć tak jak w tym co wkleiłem. Kod: from qgis.utils import iface zdjęcie RE: Export tabeli do pliku *txt - guziec88 - 24-04-2020 Folder założyłem tak jak w kodzie, poprawiłem tak jak napisałeś. Dalej jest błąd - plik w załączniku. Może ma to związek z rodzajem pól ? Pierwsza kolumna to string reszta double... RE: Export tabeli do pliku *txt - xmaziax - 24-04-2020 Kod: raport.write(str(atrybuty[2])+'\n') RE: Export tabeli do pliku *txt - guziec88 - 25-04-2020 Działa ! Dziękuję za pomoc i cierpliwość ! |