QGIS API - 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: QGIS API (/thread-630.html) |
QGIS API - maciek - 30-12-2011 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 RE: QGIS API - borys - 04-01-2012 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. |