Tvorba polygonů z fragmentů linií v FME

By February 18, 2019 FME
9-2019-03-18-fme_poligony

Vytváření polygonů lze v FME provádět pomocí křivek nebo liniových objektů a funkce AreaBuilder. Vzhledem k tomu, že okruh sítě je množina topologicky spojených liniových objektů, může AreaBuilder vytvářet polygonové prvky z linií, které jsou spojeny vrcholy/koncovými body a tvoří uzavřený polygon. Nicméně plochu lze vytvořit i z nepropojených linií pomocí funkce LineCloser.

Data

Budeme pracovat s cyklotrasami ve Wroclawi. SHP soubor je ke stažení zde.

Cvičení

Spusťte FME Workbench
Pokud již není otevřený, spusťte FME Workspace a vytvořte nový workspace.

poligony_fme (1)Nastavte formát Reader
Nastavte formát Reader (čtečky) na Esri Shapefile.

poligony_fme (2)

Přidejte AreaBuilder

Do skriptu přidejte funkci AreaBuilder a otevřete nastavení parametrů. Zrušte zaškrtnutí políčka Create Donuts, aby se zabránilo vytváření polygonů s dírami. Attributes Accumulation je defaultně nastaveno na Use Attributes From One Feature, takže při vytváření získá polygon atribut pouze od jedné křivky. Cyklotrasy mají atributy tři – délku, směr a typ cesty. Délka bude muset být spočítána znovu a směr ani typ cesty nebudeme potřeba. Proto nastavte Drop Incoming Attributes – nechceme zachovat atributy.

Místo toho zaškrtněte Generate List a název nastavte na “dlugosc” (délka). Vyberte přidat do seznamu pouze Selected Attributes a vyberte atribut SHAPE_LEN. To způsobí, že každý vytvořený prvek bude mít seznam s délkami řádků, ze kterých se skládá polygon. Toho využijeme pro počítání obvodu každého vytvořeného polygonu.

poligony_fme (3)

Vytvoření identifikátoru pro polygony
Přidejte Counter za AreaBuilder a otevřete nastavení parametrů. Změňte název vytvořeného atributu na PolygonID. Bude to jedinečný, numerický identifikátor pro dříve vytvořené polygony. Ostatní parametry ponechte v defaultním nastavení.

poligony_fme (4)

Vypočtěte obvod polygonu
Za Counter přidejte ListSummer a otevřete jeho nastavení. Jako Source List vyberte dlugosc{}.SHAPE_LEN a zavolejte součtový atribut “circuit” (obvod). Counter shrne prvky ze seznamu (délky linií) pro každý polygon a vytvoří jeden atribut, který bude obsahovat délku obvodu každého polygonu.

poligony_fme (5)

Zachovejte některé atributy
Přidejte AttributeKeeper a otevřete nastavení. Vyberte atributy “obwod” (obvod) a PolygonID, abyste je uchovali.

Nastavte formát Writer
Nastavte formát Writer (zapisovač) na Esri Shapefile a změňte definici souboru na automatickou, bude možné vybrat název souboru a Attribute Definition bude také automatická. To způsobí, že Workbench automaticky definuje seznam atributů. Seznam atributů funkce Writer se bude aktualizovat automaticky vždy, když se ve Workspace změní atributy (tj. přejmenování, odstranění atd.).

Spusťte script

poligony_fme (6)

Po spuštění skriptu lze výsledky zobrazit kliknutím na nastavení ukládání a ikonu lupy. Jak vidíte, byli jsme schopni vytvořit polygony a spočítat obvod každého z nich. Tyto polygony mohou být dále použity k analýze dostupnosti cest, například prostřednictvím vytvoření obalové zóny buffer.

Vstup

poligony_fme (7)Výstup

poligony_fme (8)

Použité transformátory:

  • AreaBuilder – Vezme množinu topologicky spojených linií a vytvoří topologicky správné polygonové prvky, kde linie formují uzavřené tvary.
  • Counter – Přidá k prvku číselný atribut a přiřadí hodnotu. Každý následný prvek procházející transformátorem obdrží přírůstkovou hodnotu – jinými slovy, Counter počítá prvky.
  • ListSummer – Vypočte součet všech prvků v seznamu.
  • AttributeKeeper – Odstraní všechny atributy a seznam atributů, kromě specifických, které chcete zachovat.