Forum QGIS
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 Wink
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...