Skip to main content

Crearea de poligoane din fragmente de linie în FME

By February 18, 2019May 21st, 2019FME

Crearea poligoanelor în FME se poate face folosind polilinii sau obiecte tip linie și funcția AreaBuilder. Din moment ce rețeaua de rută ciclică este un set de obiecte tip linie conectate topologic, AreaBuilder poate crea obiecte poligonale din liniile care sunt conectate prin vertexuri / puncte finale și forma un contur (de exemplu un poligon închis). Cu toate acestea, ariile pot fi create și din linii deconectate folosind LineCloser.

Date

Vom lucra pe un Shapefile cu date despre trasee de biciclete din Wroclaw, care se pot descărca de aici.

Exercițiu

Deschideți FME Workbench
Dacă nu s-a deschis încă, lansați FME Workbench și creați un nou mediu de lucru.

poligony_fme (1)Setați Reader Format
Setați Reader Format în Esri Shapefile.

poligony_fme (2)

Adăugați AreaBuilder

Adăugați funcția AreaBuilder la script și deschideți parametrii săi.
Deselectați Create Donuts box pentru evitarea creării poligoanelor goale.
Attributes Accumulation sunt setate la folosirea atributelor dintr-o funcție în mod prestabilit, astfel încât caracteristica poligonului va obține atribute dintr-o singură polilinie care o creează. Traseele bicicletelor au trei atribute – lungime, direcție și tipul traseului. Lungimea va trebui să fie calculată din nou, dar direcția și tipul nu vor fi necesare. Să setăm Drop Incoming Attributes deoarece nu dorim să păstrăm atributele.
În schimb, selectați Generare listă și setați numele la “dlugosc” (lungime). Selectați Add numai atributele selectate în listă și apoi doar atributul SHAPE_LEN. Acest lucru va determina fiecare caracteristică creată să aibă o listă care să păstreze lungimile liniilor din care este format poligonul. Acestea vor fi folosite pentru a calcula perimetrul fiecărui poligon creat.

poligony_fme (3)

Crearea unui identificator pentru poligoane 

Adăugați un Counter după AreaBuilder și deschideți parametrii.
Schimbați numele atributului creat în PolygonID. Acesta va fi un identificator autonumeric unic,  pentru poligoane create anterior. Restul parametrilor rămân în mod implicit.

poligony_fme (4)

Calculați perimetrul poligonului
După Counter adăugați ListSummer și deschideți setările. Ca listă sursă selectați dlugosc{}. SHAPE_LEN și denumiți summed attribute “circuit”.
Counter-ul însumează elementele listei (lungimile liniilor) pentru fiecare poligon, care va avea ca rezultat un atribut care va păstra perimetrul pentru fiecare poligon.

poligony_fme (5)

Păstrați unele atribute
Adăugați AttributeKeeper și deschideți setările. Selectați “obwod” (perimetru) și atributele PoligonID pentru a le păstra.

Setați Writer Format
Setați formatul Writer în Esri Shapefile și schimbați definiția fișierului la automat, astfel încât numele fișierului și definiția atributului pot fi alese automat. Acest lucru va determina Workbench să definească automat lista de atribute. În plus, lista de atribute ale tipului de caracteristică Writer se va actualiza automat în momentul în care atributele sunt modificate (adică redenumite, eliminate etc.) în spațiul de lucru.

Executați script-ul.

poligony_fme (6)

După executarea script-ului, rezultatele pot fi vizualizate făcând clic pe adaptorul de salvare și pe pictograma cu lupă. După cum puteți vedea, am reușit să creăm poligoane și să calculăm perimetrul fiecăruia dintre ele. Astfel de poligoane pot fi utilizate în continuare pentru a analiza disponibilitatea căilor, de exemplu prin analiza buffer.

Input

poligony_fme (7)Output

poligony_fme (8)

Transformeri:

  • AreaBuilder – Ia un set de linii conectate din punct de vedere topologic și creează caracteristici poligonale corecționale topologice, unde linia formează forme închise.
  • Counter – Adaugă un atribut numeric unei caracteristici și atribuie o valoare. Fiecare caracteristică ulterioară care trece prin transformator primește o valoare incrementată – cu alte cuvinte, Counter numără caracteristicile.
  • ListSummer – Calculează suma tuturor elementelor dintr-o listă.
  • AttributeKeeper – Elimină toate atributele și atributele listă, cu excepția celor specificate pentru a fi păstrate.