Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Python
21-12-2010, 01:04 AM
Post: #1
Python
Jak w Pythonie uzyskać dane warstwy o określonej nazwie? Coś podobnego jak poniżej, ale nie dla warstwy bieżącej, tylko o podanej nazwie.

layer = self.iface.mapCanvas().currentLayer()
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 11:52 AM
Post: #2
RE: Python - dane warstwy o określonej nazwie
Fragment fToolsów (pióra, a raczej klawiatury, Carsona Farmera):

Kod:
def getMapLayerByName( myName ):
    layermap = QgsMapLayerRegistry.instance().mapLayers()
    for name, layer in layermap.iteritems():
        if layer.name() == myName:
            if layer.isValid():
                return layer
            else:
                return None

Borys Jurgiel
Zespół Rozwojowy Quantum GIS
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 10:43 PM
Post: #3
RE: Python
Dzięki.
Co prawda udało mi się to wcześniej rozwiązać w trochę inny sposób, ale to rozwiązanie jest bardziej "eleganckie" Smile
Swoją drogą myślałem, że istnieje jakaś gotowa funkcja..

Jeśli znacie jakieś materiały mogące pomóc w nauce pisania skryptów dla QGISa to proszę o info. Szczególnie mile widziane z dużą ilością przykładów Smile
Na razie korzystam z tego co jest na stronie http://www.qgis.org
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 10:47 PM
Post: #4
RE: Python
No to już masz gotową funkcję ;-)

Generalnie są 4 źródła:
- http://www.qgis.org/pyqgis-cookbook/
- API Quantuma http://doc.qgis.org/stable/classes.html
- API Qt4 http://doc.qt.nokia.com/stable/classes.html
- istniejące wtyczki Smile

Borys Jurgiel
Zespół Rozwojowy Quantum GIS
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 11:38 PM
Post: #5
RE: Python
No jedną funkcję dodatkową już mam. Za to pytań jeszcze więcej Smile

Np nie wiem jak odczytać piąty atrybut obiektu
Robię tak:
y.attributeMap()[5]
gdzie y to mój obiekt

W odpowiedzi dostaję coś takiego:
<PyQt4.QtCore.QVariant object at 0x06BC49D0>

Jak z tego wyciągnąć wartość atrybutu w formie tekstowej?
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 11:43 PM
Post: #6
RE: Python
Trzeci punkt mojej wyliczanki Smile Klas z prefiksem Q w nazwie szukaj w dokumentacji Qt, a klas z Qgs -- w quantumowej.
http://doc.qt.nokia.com/stable/qvariant.html#toString

Borys Jurgiel
Zespół Rozwojowy Quantum GIS
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 11:46 PM
Post: #7
RE: Python
Dzięki bardzo.
Teraz jest OK.
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-12-2010, 11:50 PM
Post: #8
RE: Python
Innymi słowy:
a = QVariant(2.5)
a.toString() # zwróci QStringa "2.5"
a.toInt() # zwróci krotkę (3, True), gdzie 3 to 2,5 zaokrąglone do integera, zaś True znaczy, że konwersja się udała.

Borys Jurgiel
Zespół Rozwojowy Quantum GIS
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
22-12-2010, 10:46 AM
Post: #9
RE: Python
Jak najprościej zrobić repozytorium wtyczek wewnątrz firmy?
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
22-12-2010, 12:01 PM
Post: #10
RE: Python
Z punktu widzenia Quantuma, repozytorium to plik xml z metadanymi i linkami do zipów z wtyczkami. Ściągnij dowolne istniejące, np. http://pyqgis.org/repo/contributed , i przerób pod swoje wtyczki.

Wtyczkę zipujesz razem z jej katalogiem, przy czym nazwa zipa do pierwszej kropki musi być dokładnie taka, jak zawartego katalogu, czyli albo nazwa_katalogu.zip, albo nazwa_katalogu.przyrostek.zip. Ta druga możliwość służy zamieszczaniu kilku wersji wtyczki, na przykład jednej stabilnej, a drugiej eksperymentalnej - ta ostatnia musi mieć wyższy numer, bo Quantum wybiera zawsze najwyższą kompatybilną wersję (zgodną z tagami <qgis_minimum_version> oraz <experimental>).

Musisz niestety ręcznie pakować wtyczkę i edytować tego xmla, albo samemu napisać sobie skrypt, który to zrobi, bo nie mamy jeszcze stabilnego zautomatyzowanego frameworku do budowania repozytoriów. Ale prace nad nim są w trakcie i wczesną wiosną powinien być gotowy.

Borys Jurgiel
Zespół Rozwojowy Quantum GIS
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
Odpowiedz 


Skocz do: