Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Python
29-12-2010, 11:12,
#21
RE: Python
Systemowa jak systemowa. Jest to zmienna iface modułu qgis.utils: http://trac.osgeo.org/qgis/browser/trunk...n/utils.py

którego nie zaimportowałeś, jak głosi komunikat. Ale dla wtyczki i tak się tak nie da, zamiast tego wskaźnik do interfejsu jest przekazywany przez QGISa do jej pseudo-konstruktora, czyli metody MojaWtyczka.__init__(iface) . Zazwyczaj wtyczki zaczynamy tak:

class MojaWtyczka():
def __init__(self, iface):
self.iface = iface

Ponieważ iface jest tu zmienną lokalną i działa tylko wewnątrz metody __init__, to od razu go podstawiamy pod self.iface, czyli pole iface klasy MojaWtyczka. Później, wewnątrz obiektu wtyczki masz do niej dostęp przez self.iface (a z zewnątrz oczywiście przez mojawtyczka.iface ).
29-12-2010, 14:10,
#22
RE: Python
Wtyczkę mam napisaną w ten sposób, że główny program odwołuje się do modułu, w którym mam definicje poszczególnych funkcji. W tej chwili informację o iface podaję jako zmienne dla poszczególnych funkcji w module. Można to jakoś uprościć, żeby zmienna ta była widziana bezpośrednio w module?
MojaWtyczka.iface nie bardzo mi odpowiada, bo jeśli będę chciał zastosować ten sam moduł w innej wtyczce, to będę musiał zmieniać na MojaWtyczka2.iface.
29-12-2010, 14:28, (Ten post był ostatnio modyfikowany: 29-12-2010, 14:28 {2} przez borys.)
#23
RE: Python
A spróbuj w tym module utworzyć zmienną iface, zaimportować ją i i podstawić w konstruktorze wtyczki:

Kod:
from mojmoduł import iface
class MojaWtyczka():
    def __init__(self, ifaceeee):
        global iface
        iface = ifaceeee

Może podziała, albo jak nie to jakoś tą drogą Smile
02-01-2011, 23:16,
#24
RE: Python
Jak można odczytać sygnał emitowany przez daną klasę?
Np stawiam nowy obiekt poprzez

QgsVectorLayer.addFeature()

i chciałbym odczytać ID dodanego obiektu.
W dokumentacji jest sygnał featureAdded, ale nie wiem jak go odczytać.
02-01-2011, 23:50,
#25
RE: Python
Musisz go gdzieś podłączyć:
QObject.connect(nadajnik, SIGNAL("sygnał (parametry)"), slot)

Teoria -> googlaj pod hasłami PyQt signals slots
Praktyka -> przeszukaj zainstalowane wtyczki pod hasłem connect
22-02-2011, 16:14, (Ten post był ostatnio modyfikowany: 22-02-2011, 16:15 {2} przez Rayo.)
#26
RE: Python
W jaki sposób wyszukać na warstwie obiekty o danych atrybutach? Ja robię to tak, że w pętli sprawdzam dany atrybut kolejno każdego obiektu i porównuję z zadanym warunkiem. Jest to jednak wolne przy dużej ilości obiektów, a poza tym nie chce mi się wierzyć, że nie ma na to gotowego sposobu.
Zastanawiałem się nad warstwa.select(), ale nie wiem jak podać warunki.
22-02-2011, 21:11,
#27
RE: Python
Jeszcze jedno pytanie. Jaka jest różnica między klasami QgsVectorDataProvider a QgsVectorLayer?
Część metod jest identyczna dla nich obu: wyszukiwanie obiektów, zliczanie itd. Której klasy należy używać dla wtyczek wyszukujących obiekty po atrybutach, obiekty przecinające się itp.?
28-02-2011, 21:18,
#28
RE: Python
Jeśli chodzi o wolne wyszukiwanie obiektów w pętli to problem rozwiązany - QGIS strasznie zwalnia nie przy wyszukiwaniu, a przy zaznaczeniu dużej ilości obiektów na warstwie (i tego należy unikać). Dzieje się tak nie tylko przy zaznaczaniu poprzez Pythona, ale "ręcznie" również. Otwarcie tabeli atrybutów z paroma tysiącami obiektów trwa strasznie długo. Ta sama tabela bez zaznaczonych obiektów otwiera się bezproblemowo.
04-05-2011, 12:01, (Ten post był ostatnio modyfikowany: 04-05-2011, 12:53 {2} przez Rayo.)
#29
RE: Python
Jak w Pythonie można obliczyć obwód poligonu?
Długość i powierzchnię obiektu można wyliczyć za pomocą metod length() i area() klasy QgsGeometry, ale do liczenia obwodu nic nie mogę znaleźć..
Zrobiłem mały eksperyment i wyliczyłem długość dla poligonu (metoda length()). W wyniku otrzymałem obwód Smile
Działa też dla obiektów złożonych i "dziurawych".


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Python: selekcja elementów randyX 0 6 102 28-06-2016, 15:05
Ostatni post: randyX
  Kreator zapytań a Python Rayo 2 13 477 26-07-2012, 20:39
Ostatni post: Rayo
  Python - tabela atrybutów odwołanie Jarek_Re 6 31 272 30-05-2012, 11:51
Ostatni post: Rayo
  Python: valueMap damian 8 33 773 09-12-2011, 02:07
Ostatni post: borys
  Python - pytanie Rayo 2 13 607 29-08-2011, 18:56
Ostatni post: Rayo

Skocz do: