120 likes | 233 Vues
Join Peter Laulund from the National Survey and Cadastre, Denmark, as he delves into the pivotal role of Tcl in mapping files at the FME Worldwide User Conference 2006. This presentation explores the structure of mapping files, focusing on batch processing, dynamic writing, and data manipulation. Discover how Tcl enhances FME's capabilities, allowing efficient feature processing and integration with various programs. Gain insights into best practices for structuring mapping files and leveraging Tcl for effective workflow management.
E N D
v FME Worldwide User Conference - Vancouver Sep. 21-22, 2006 Tcl and Mapping Files – Best Practices Peter Laulund, National Survey and Cadastre, Denmark
Agenda • Tcl plays a big role in my mapping files. It is used for • batch processing • dynamically writing part of the mapping file • processing the features • and pre and post processing the data. • In this presentation I will discuss different aspects of how I structure a mapping file, with special focus on TCL.
Demo Mapping File Structure PARAM.FME MAIN.FME fme.exe game.csv FmeViewer SPIL.FMI fme.exe MAIN.FME MAIN.FME INIT.FMI FLYT.FMI *.ffs
Structure of Mapping File Complex • Build by modules • Placed in a common structure • ‘Metadata’ in tables • ‘Transformation’ attributes with common prefix ex. kms_ • kms_feature_type, kms_feature_code
Different Levels of Tcl in FME fmeObjects tcl fme.exe script.tcl FME_BEGIN/END_TCL INCLUDE [ script ] Tcl2 source … Tcl2( proc )
Command Line • Syntaks - Fme.exe script.tcl • Used for batch processing and chaining together more than one process together proc spil::flyt {} { global header fil lappend cmd fme.exe MAIN.FME --Modul FLYT …….. lappend cmd --from [ FME_GetAttribute from ] lappend cmd --to [ FME_GetAttribute to ] eval exec $cmd 2> NUL: eval exec fmeview.exe /ownffs ${::gsParth2App}spil/$fil & }
INCLUDE [ .. script …] • Used to initiate the mapping file • putting in MACRO <name> <value> pairs • Lookup tables • _DEF lines • INCLUDING Factory’s or modules INCLUDE [ switch -- $(Modul) { \ SPIL { puts "MACRO SourceFormat TEXTLINE" } \ INIT { puts "MACRO DestFormat FFS" } \ FLYT { puts "MACRO SourceFormat FFS" ; \ puts "MACRO DestFormat FFS" }}]
Tcl2 and @Tcl() • Work on the feature and ‘dataset’ level • Has a global namespace Tcl2 set gsParth2App $(mf_root) ; \ set gx0 $(x0); set gy0 $(y0); set gdxy $(dxy) ; \ source $(FME_MF_DIR_UNIX)/TCL/$(Modul).TCL ; proc init::tilpasBrik {id} { variable brikPos FME_Execute Bounds xmin xmax ymin ymax FME_Execute Offset [expr $brikPos($id,x) - [FME_GetAttribute xmax] + … ] [expr $brikPos($id,y) - [FME_GetAttribute ymin] + … ] FME_UnsetAttributes xmin xmax ymin ymax skak_font fme_text_size fme_text_string }
Felter Tcl script Log file R. Piepeline W. Piepeline Writer Reader Tcl
FME_BEGIN/END_TCL • Used to pre- and post-processing the translation • creating directory’s and copying documentation to dataset • zipping the dataset • emailing • copying the data to a FTP server • logging the translation to a database or file
Conclusion • Tcl works on many levels in the mapping file • It gives a dynamic dimension to mapping files • You can manipulate both attributes and geometry • The global namespace means that Tcl is more than just a new function • It can integrate FME with other programs
Links • http://wiki.tcl.tk/ • Wiki about tcl and tk with many examples • http://jamesthornton.com/tcl/8.4.2/ • tcl and tk documentation