17.24. Execuția iterativă a algoritmilor

Notă

Această lecție prezintă un mod diferit de a executa algoritmii care folosesc straturi vectoriale, prin rularea lor în mod repetat, iterând entitățile dintr-un strat vectorial de intrare

Cunoaștem deja modelatorul grafic, care reprezintă o modalitate de automatizare a sarcinilor de procesare. Cu toate acestea, în unele situații, modelatorul ar putea să nu fie chiar ceea ce ne trebuie pentru a automatiza o anumită sarcină. Vom vedea una dintre acele situații, și cum să o rezolvăm cu ușurință, folosind o funcționalitate diferită: executarea iterativă a algoritmilor.

Deschideți datele corespunzătoare acestui capitol. Acesta ar trebui să arate astfel.

../../../_images/project1.png

Veți recunoaște DEM-ul nostru bine-cunoscut din capitolele anterioare, și un set de bazine hidrografice extrase din el. Imaginați-vă că trebuie să reducem DEM-ul în mai multe straturi mici, fiecare dintre ele conținând doar datele de elevație corespunzătoare unui singur bazin hidrografic. Acest lucru va fi util dacă doriți mai târziu să calculați unii parametri ce țin de fiecare bazine hidrografice, cum ar fi cota de elevație sau curba hipsographică.

Acest lucru reprezintă o sarcină lungă durată și plictisitoare, mai ales în cazul în care numărul bazinelor hidrografice este mare. Cu toate acestea, este o sarcină care poate fi ușor automatizată, așa cum vom vedea.

Algoritmul utilizat pentru decuparea stratului raster după un strat poligonal este denumit Decuparea grilei cu ajutorul poligoanelor, și are următorul dialog cu parametri.

../../../_images/clip2.png

Puteți să-l executați folosind stratul bazinelor hidrografice și DEM-ul ca intrare, apoi veți obține următorul rezultat.

../../../_images/full_clip.png

După cum puteți vedea, se utilizează aria acoperită de toate poligoanele bazinelor hidrografice.

Puteți decupa DEM-ul după un singur bazin hidrografic, prin selectarea bazinului dorit, și apoi prin rularea algoritmului așa cum am făcut-o mai înainte.

../../../_images/selection.png

Deoarece numai entitățile selectate sunt folosite, numai poligonul selectat va fi folosit pentru a decupa stratul raster.

../../../_images/selection_clip.png

Făcând acest lucru pentru toate bazinele, se va produce rezultatul pe care îl căutăm, dar aceasta nu arată ca un mod foarte practic de lucru. În schimb, să vedem cum automatizăm rutina selectare și decupare.

Mai întâi de toate, eliminați selecția anterioară, astfel încât toate poligoanele să fie utilizate din nou. Deschideți algoritmul Decupare grilă după un poligon, apoi selectați aceleași surse ca și înainte, dar de data aceasta faceți clic pe butonul pe care le veți regăsi în partea dreaptă a intrării stratului vectorial, în care ați selectat stratul bazinelor hidrografice.

../../../_images/iterate_button.png

Acest buton va cauza divizarea stratului de intrare selectat în mai multe straturi, pe măsură ce se descoperă entitățile, fiecare dintre ele conținând câte un singur poligon. Algoritmul va fi solicitat în mod repetat, câte o dată pentru fiecare dintre aceste straturi cu un singur poligon. Rezultatul, în loc de un singur strat raster, va consta într-un set de straturi raster, fiecare dintre ele corespunzând câte unei execuții a algoritmului.

Iată rezultatul pe care îl veți obține, dacă ați rulat algoritmul de tăiere așa cum s-a explicat.

../../../_images/result_iterative.png

Pentru fiecare strat, paletă de culori alb-negru, (sau orice paletă pe care o utilizați), este ajustată în mod diferit, de la minim până la valorile sale maxime. Acesta este motivul pentru care puteți vedea diferite piese, iar culorile nu par a se potrivi la granița dintre straturi. Valorile, cu toate acestea, se potrivesc.

Dacă introduceți un nume pentru fișierul de ieșire, fișierele rezultate vor fi denumite folosind ca nume de fișier și, ca sufix, un număr corespunzător pentru fiecare iterație.