Title: Sep' 2122, 2006
1v
Sep. 21-22, 2006
FME Worldwide User Conference - Vancouver
Tcl and Mapping Files Best Practices Peter
Laulund, National Survey and Cadastre, Denmark
2Agenda
- 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.Â
3Demo Mapping File Structure
4Structure 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
5Different Levels of Tcl in FME
fmeObjects tcl
fme.exe script.tcl
FME_BEGIN/END_TCL
INCLUDE script
Tcl2 source Tcl2( proc )
6Command Line
- Syntaks - Fme.exe script.tcl
- Used for batch processing and chaining together
more than one process together
proc spilflyt 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 2gt NUL eval exec fmeview.exe /ownffs
gsParth2Appspil/fil
7INCLUDE .. script
- Used to initiate the mapping file
- putting in MACRO ltnamegt ltvaluegt pairs
- Lookup tables
- _DEF lines
- INCLUDING Factorys or modules
INCLUDE switch -- (Modul)
\
SPIL puts "MACRO SourceFormat
TEXTLINE" \ INIT
puts "MACRO DestFormat FFS"
\ FLYT puts "MACRO
SourceFormat FFS"
\ puts "MACRO
DestFormat FFS"
8Tcl2 and _at_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 inittilpasBrik 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
9Tcl
10FME_BEGIN/END_TCL
- Used to pre- and post-processing the translation
- creating directorys and copying documentation to
dataset - zipping the dataset
- emailing
- copying the data to a FTP server
- logging the translation to a database or file
11Conclusion
- 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
12Links
- http//wiki.tcl.tk/
- Wiki about tcl and tk with many examples
- http//jamesthornton.com/tcl/8.4.2/
- tcl and tk documentation