gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:2669回复:2

[转帖] FME语义映射文件语法

楼主#
更多 发布于:2007-11-26 12:02
<FONT color=#333333>FME语义映射文件语法(一) <BR>一、概述 <BR>1、映射文件包含自由格式的ASCII文本,按行组织 <BR>2、可以包含行注释或块注释(可以嵌套),可以包含文本扩展宏,可以包含其他映射文件 <BR>3、每个非注释行都以关键字开头 <BR><BR>二、续行 <BR>1、长的映射文件行可以用(\) 作为最后一个字符,逻辑地与下一行连接起来,例如: <BR>IGDS 45 igds_color 8 \ <BR>igds_style 3 <BR>等同于: <BR>IGDS 45 igds_color 8 igds_style 3 <BR>2、续行行数无限制。 <BR><BR>三、引号与文本 <BR>1、参数或文本中如果包含空格或tab,必须用引号括起来。FME处理时会去掉引号并将其中的内容作一个整体看待。 <BR>2、下例给一个SAIF的属性text.textString赋值Hello There: <BR>SAIF Text::TRIM text.textString "Hello there" <BR>3、如果文本中本身包含引号,可以在前面加一个反斜杠,如下例: <BR>SAIF Text::TRIM text.textString "Some \" label" <BR><BR>四、逗号 <BR>函数参数如果包含逗号,则必须以反斜杠开头,否则会被视为参数的分隔符,例如下例是将字符串 “Hi, There”给函数@Log作为输出信息 <BR>@Log("Hi\, there") <BR><BR>五、单行注释 <BR>1、映射文件就是FME解释执行的小程序。注释是良好的编程习惯。 <BR>2所有以 #开头的行都将被FME忽略。空行也将被忽略。例如: <BR># This line is a comment <BR>3、注意:#必须是第一个字符,因此不能在有效行里放注释,例如: <BR>IGDS 45 igds_color 8 # This is a road and would be reported by the IGDS module as invalid. <BR><BR>六、块注释 <BR>以/*开头,以*/结束。如下例: <BR>/* This is a one-line block comment */ <BR>/* <BR>This is a multi-line comment. <BR>Any text in here will be ignored <BR>/* This is a nested comment */ <BR>*/ </FONT>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2007-11-26 12:03
<FONT color=#555555>七、宏 <BR>1、可以将重复引用的内容定义为宏。或者将一些数字定义为命名的宏。映射文件提供简单的宏替换机制。 <BR>2、关键字MACRO开头(必须是大写),然后是宏的名字,然后该行后面是需要替换的内容。引用宏时利用$( )把宏的名字括起来,例如: <BR>MACRO blue 8 <BR>IGDS 32 igds_color $(blue) igds_style 3 <BR>会被替换为: <BR>IGDS 32 igds_color 8 igds_style 3 <BR>3、宏可以被重定义。宏定义中允许续行。但不可以直接或间接地引用自己。任何未定义的宏将导致转换中断。 <BR><BR>下例将一段常用代码定义为宏。 <BR>MACRO IGDSTextSpec \ <BR>igds_color $(blue) \ <BR>igds_type igds_text \ <BR>igds_style 0 igds_class 0 igds_weight 1 \ <BR>igds_text_size %size \ <BR>igds_text %string \ <BR>igds_font %font \ <BR>igds_rotation %orientation <BR>MACRO SAIFTextSpec \ <BR>textOrSymbol.characterHeight %size \ <BR>textOrSymbol.text %string \ <BR>textOrSymbol.fontName %font \ <BR>textOrSymbol.orientation @SAIFAngle(%orientation) <BR>#----------------------------------------------------- <BR># Feature KB14250000 -- Text (Hydrographic) <BR>IGDS 44 igds_color 2 $(IGDSTextSpec) <BR>SAIF OtherText::TRIM \ <BR>textType hydrographic $(SAIFTextSpec) <BR><BR>八、预定义的宏 <BR>很多映射文件要引用输入数据集、输出数据集,或者其他映射文件(例如mapinfoMacros.fmi),还可以包含Tcl脚本。此时可能用到FME预先定义的一些宏。 <BR>FME_MF_DIR:映射文件本身所在的目录。 UNIX上用 左斜杠(/), Windows上用右斜杠 (\)。两个平台下都会用斜杠结尾。 <BR>FME_MF_DIR_UNIX:按UNIX规定提供映射文件本身所在的目录。结尾不含斜杠。 <BR>FME_MF_DIR_DOS:按DOS规定提供映射文件本身所在的目录。结尾不含斜杠。 <BR>FME_HOME:FME执行文件所在目录。 <BR>FME_HOME_UNIX: <BR>FME_HOME_DOS: <BR>FME_MF_NAME:映射文件的名字,包括后缀,不包含目录。 <BR>DEFAULT_MACRO SourceDataset "$(FME_MF_DIR)/../maps/082e.dgn" <BR>INCLUDE "$(FME_HOME)/metafile/mapinfoMacros.fmi" <BR>INCLUDE [source {$(FME_MF_DIR)/gen.tcl}; genLines {$(FME_MF_DIR)} ] <BR><BR>九、DEFAULT_MACRO <BR>仅当宏未定义时起作用。 <BR>DEFAULT_MACRO CELL_LIB “DEFAULT.LIB” <BR><BR>十、INCLUDE <BR>INCLUDE colors.fmi <BR>包含外部文件(fmi和fme一样的文件) <BR><BR>十一、动态生成映射文件 <BR>利用INCLUDE的两个扩展语法实现。 <BR>INCLUDE目标以 (|)符号开头时,FME认为它是程序 ,其标准输出被包含进来。 <BR>INCLUDE目标以([])符号开头时,FME认为它是TCL脚本 ,其输出被包含进来。 <BR><BR>十二、动态生成例一 <BR>Awk脚本 <BR>{print “DWG_DEF”,$1,“autocad_color”,$2,“autocad_linetype”,$3} <BR><BR>ROADS 13 CONTINUOUS <BR>RIVERS 4 DASHED <BR>RAILWAYS 7 CONTINUOUS <BR>INCLUDE行 <BR>INCLUDE |awk -f create.awk < layers.lst <BR>生成: <BR>DWG_DEF ROADS autocad_color 13 autocad_linetype CONTINUOUS <BR>DWG_DEF RIVERS autocad_color 4 autocad_linetype DASHED <BR>DWG_DEF RAILWAYS autocad_color 7 autocad_linetype CONTINUOUS <BR><BR>十三、动态生成例二 <BR>Tcl程序: <BR>proc makeDefs {filename} { <BR>set file [open $filename r] <BR>while {[gets $file line] >= 0} { <BR>set layer [lindex $line 0] <BR>set col [lindex $line 1] <BR>set lt [lindex $line 1] <BR>puts "DWG_DEF $layer autocad_color $col <BR>autocad_linetype $lt" <BR>} <BR>close $file <BR>} <BR><BR>ROADS 13 CONTINUOUS <BR>RIVERS 4 DASHED <BR>RAILWAYS 7 CONTINUOUS <BR>INCLUDE行: <BR>INCLUDE [source create.tcl ; makeDefs layers.lst] <BR>生成: <BR>DWG_DEF ROADS autocad_color 13 autocad_linetype CONTINUOUS <BR>DWG_DEF RIVERS autocad_color 4 autocad_linetype DASHED <BR>DWG_DEF RAILWAYS autocad_color 7 autocad_linetype CONTINUOUS </FONT>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2007-11-26 12:03
<FONT color=#333333>十四、环境变量 <BR>INCLUDE ${FME_CONTROL_DIR}/mappings.fme <BR>扩展为: <BR>INCLUDE /usr/control_files/mappings.fme <BR><BR>十五、静态函数执行 <BR>SHAPE road creationTime $[@TimeStamp(“^Y^m^d^H^M^S”)] <BR><BR>SHAPE road creationTime @TimeStamp(“^Y^m^d^H^M^S”) <BR><BR>十六、Reader and Writer 的选择 <BR>READER_TYPE <readerType> <BR>WRITER_TYPE <writerType> <BR>例如: <BR>READER_TYPE SAIF <BR>WRITER_TYPE SHAPE <BR>命令行: <BR>fme roadgen.fme READER_TYPE IGDS WRITER_TYPE SAIF <BR><BR>十七、Reader and Writer 关键字 <BR>引擎参数 <BR><ReaderKeyword>_<ReaderOption> <parameter value> <BR><WriterKeyword>_<WriterOption> <parameter value> <BR>默认 <BR>READER_TYPE SAIF <BR>WRITER_TYPE SHAPE <BR>指定 <BR>READER_KEYWORD <newReaderKeyword> <BR>WRITER_KEYWORD <newWriterKeyword> <BR><BR>READER_TYPE IGDS <BR>WRITER_TYPE IGDS <BR>WRITER_KEYWORD I_OUT <BR># Name the input IGDS file. Note that since no <BR># <ReaderKeyword> was specified, the default of IGDS <BR># is used <BR>IGDS_DATASET original.dgn <BR># Provide the name for the output IGDS file <BR>I_OUT_DATASET newone.dgn <BR># Identify the seed file for the output IGDS file <BR>I_OUT_SEED_FILE seed.dgn <BR># Now write a transFORMation specification. The <BR># source line will be labeled with the <BR># <ReaderKeyword> (IGDS), and the destination line <BR># will be labeled with the <WriterKeyword> (I_OUT) <BR>IGDS 40 igds_color 3 igds_style %s <BR>I_OUT 40 igds_color 4 igds_style %s\ <BR>@Generalize(Douglas,10) <BR><BR>十八、日志文件配置(Log File Configuration) <BR>LOG_FILENAME /tmp/fme.log <BR>LOG_STANDARDOUT YES <BR>LOG_MAX_FEATURES 50 </FONT>
<TABLE cellSpacing=0 cellPadding=0 width="100%">

<TR>
<TD><BR></TD></TR></TABLE>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部