Forum QGIS

Pełna wersja: QGIS API
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć,
to moje pierwsze kroki z API i konsolą pythona. Czy mógłby ktoś podać przykładowy skrypt jaki należy wpisać żeby od jednej warstwy odjąć drugą?
Mając taki przykład na pewno łatwiej było by napisać coś więcej.

z góry dziękuję za pomoc,
MF
Jeśli chodzi o warstwy rastrowe, to w ten sposób nie poznasz API QGISa. QGIS jest generalnie wektorowy i większość operacji rastrowych wykonuje nie natywnie na wczytanych warstwach, tylko bezpośrednio na źródłowych plikach za pomocą API GDALa. Tak działa na przykład Kalkulator Rastrów (ten w menu Raster). Krótko mówiąc: w konsoli QGISa możesz dokładnie tak samo jak w dowolnej innej konsoli Pythona: załadować moduł osgeo.gdal, wczytać pliki, przetworzyć, zapisać, ale sam QGIS nie będzie miał z tym nic do czynienia. Jeśli Cię to interesuje, przykładów szukaj na stronach GDALa. Zamiast GDALa można użyć np. R, ale to nic nie zmieni w kwestii udziału QGISa.

Zaś jeśli chodzi o odejmowanie warstw wektorowych, czyli wycięcie z wieloboków warstwy A wieloboków z warstwy B, to jak najbardziej wykorzystasz API QGISa. Musisz dobrać się do tych dwóch warstw i iterować po wszystkich obiektach, próbując odjąć każdy obiekt z warstwy A od każdego z warstwy B. Oczywiście przy dużej liczbie obiektów, z których większość oczywiście na siebie nie zachodzi, oznacza to kupę daremnych pętli w Pythonie, co może być dość powolne.

Zacznij od Cookbooka stąd: http://www.quantum-gis.pl/czytelnia/programowanie . Nie pamiętam, czy tam jest napisane, jak się dobrać do aktualnie załadowanych warstw. Sprawa jest dość prosta. Do samego interfejsu QGISa dobierasz się tak:
qgis.utils.iface
do płótna mapy tak:
qgis.utils.iface.mapCanvas()
a np. do bieżącej warstwy tak:
qgis.utils.iface.mapCanvas().currentLayer()

Jak obsłużyć te obiekty, powie Ci już dokumentacja API i rozdziały Loading Vector layers, Using vector layers i tym podobne z Cookbooka.