Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie - 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: Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie (/thread-1093.html) |
Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie - sebaq - 02-07-2014 Zastanawiam się jak pobrać za pomocą Pythona (w skrypcie Init uruchamianym przy edycji warstwy), atrybut aktualnie edytowalnego obiektu (np. GID czy dowolnie inny) jak i nazwę aktywnej warstwy. Mam stworzony formularz ui, którym kopiuję pliki (wskazane przez użytkownika z dowolnej lokalizacji) na serwer plików. Ścieżka na serwer jest na sztywno przypisana w kodzie ale chciałbym aby pliki lądowały w miejscu składającym się z: ścieżka_do_serwera/aktywna_warstwa/GID_edytowanego_obiektu/nazwa_kopiowanego_pliku. Dlatego zależy mi na dobraniu się do tych dwóch danych (aktywna warstwa, GID obiektu). Kod warstwa=qgis.utils.iface.activeLayer() działa w konsoli Pythona w QGISie ale w skrypcie init już nie, co chyba kiedyś tłumaczył tutaj Borys. Jeżeli mógłbym liczyć na małe wsparcie w tym zakresie to proszę o pomoc. Dzięki! RE: Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie - sebaq - 10-07-2014 Trochę to trwało ale się udało Aktywną warstwę w skrypcie init możemy pobrać przechwytując załadowany formularz (layerid): def open_form (dialog,layerid,featureid): Natomiast żeby mieć GID obiektu musimy wpierw zapisać do bazy świeżo dodany obiekt (to ona decyduje jaki będzie kolejny nr GID) i później go przechwycić z formularza: GID = dialog.findChild(QLineEdit,"gid")) W sprawie skryptów ini polecam Nathan's QGIS blog ... RE: Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie - sebaq - 15-07-2014 I jeszcze jedno pytanie... jak sprawdzić czy aktywna warstwa, pozyskiwana za pomocą def open_form (dialog, layerid, featureid): jest włączona do edycji? Pozdrawiam! RE: Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie - p0cisk - 16-07-2014 Spróbuj w ten sposób: Kod: QgsMapLayerRegistry.instance().mapLayer(layerid).isEditable() Pozdrawiam RE: Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie - sebaq - 16-07-2014 Super! Dzięki... |