#!#!
#!
#!
#!#!#!
#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!
#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!
#!#!#!#!
#!#!#!#!#!#!#!#!#!#!
#!#!
#!#!
#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!
#!#!#!#!#!#!#!#!#!#!#!
#!#!
#!#!
#!#!
#!#!#!GUI IGNORE SourceDataset_TEXTLINE_1,TEXTLINE_IN_ENCODING_TEXTLINE_1,DestDataset_XLSXW_1,XLSXW_OUT_OVERWRITE_FILE_XLSXW_1,XLSXW_OUT_TEMPLATEFILE_XLSXW_1 DEFAULT_MACRO SRC_MDB GUI FILENAME SRC_MDB Geodatabase_MDB | * .MDB源数据库:(*。XLSX; * XLSM; * .xls)的DEFAULT_MACRO DestDataset_XLSXW GUI FILENAME DestDataset_XLSXW Excel_Files | *的.xlsx; *。。XLSM; * XLS | All_files(*。*)| *。*目的地Microsoft Excel文件:包括TCL PROC __FME_ExpandMacros {{正文100 maxlevels}} {如果{$ maxlevels <= 0} {$返回文本;}设置模式[加入{{\ $} {\([^()$] * \)}} {}]索引集[正则表达式-inline - 所有-indices $模式$文本]如果[llength $指数] {的foreach对[lreverse $指数] {L将$一对始端组替换{}组替换$ :: FME_MacroValues([字符串范围$文本[EXPR $开始+ 2] [EXPR $端 - 1]])组文本[字符串替换$文本$开始$端$替换]}返回[__FME_ExpandMacros $文本[EXPR $ maxlevels - 1]]}返回$文本} PROC __FME_ExpandEnvVars {文本{maxlevels 100}} {如果{$ maxlevels <= 0} {返回$文本;}设置模式[加入{{\ $} {\ {[^ \ {\} $] * \}}} {}]索引集[正则表达式-inline - 所有-indices $模式$文本]如果[llength $指数]{的foreach对[lreverse $指数] {L将$一对始端组替换{}组替换$ :: ENV([字符串范围$文本[EXPR $开始+ 2] [EXPR $端 - 1]])组文本[串替换$文字$开始$结束的$替换]}返回[__FME_ExpandEnvVars $文本[EXPR $ maxlevels - 1]} $返回文本} PROC __FME_EvalAndEncodeMacro {宏名称} {设置macroVal {}赶上{设置macroVal [__FME_ExpandMacros $ :: FME_MacroValues($宏名)]} {捕获设置macroVal [__FME_ExpandEnvVars $ macroVal]}如果{[串等于-length 15 {FME_CONDITIONAL} $ macroVal] == 0} {返回[FME_EncodeText $ macroVal];}返回$ macroVal;} END_INCLUDE INCLUDE [看跌期权 “MACRO SRC_MDB__FMEENCODED__ [__FME_EvalAndEncodeMacro SRC_MDB]”; ] INCLUDE [ puts "MACRO DestDataset_XLSXW__FMEENCODED__ [__FME_EvalAndEncodeMacro DestDataset_XLSXW]" ; ] INCLUDE [ if {{$(SRC_MDB)} == {}} { puts_real {Parameter 'SRC_MDB' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(DestDataset_XLSXW)} == {}} { puts_real {Parameter 'DestDataset_XLSXW' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE TEXTLINE READER_KEYWORD TEXTLINE_1 WRITER_TYPE MULTI_WRITER MULTI_WRITER_DATASET_ORDER BY_ID MULTI_WRITER_FIRST_WRITER_ID 0 MULTI_WRITER_TYPE{0} XLSXW MULTI_WRITER_KEYWORD{0} XLSXW_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "TEXTLINE_1" #! END_WB_HEADER #! START_SOURCE_HEADER TEXTLINE TEXTLINE_1 # ===================================================================== # The following GUI line prompts for a file to be used as the source # TextLine file. The user input is stored in a macro, which is then # used to define the dataset to be read. # The dataset this mapping file was generated from was: GUI FILENAME SourceDataset_TEXTLINE_1 Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*.*)|*.* Source Text File: # ===================================================================== # Allows to force the encoding of source text file DEFAULT_MACRO TEXTLINE_IN_ENCODING_TEXTLINE_1 GUI OPTIONAL STRING_OR_CHOICE TEXTLINE_IN_ENCODING_TEXTLINE_1 UTF-8%UTF-16LE%UTF-16BE%ANSI%BIG5%SJIS%CP437%CP708%CP720%CP737%CP775%CP850%CP852%CP855%CP857%CP860%CP861%CP862%CP863%CP864%CP865%CP866%CP869%CP932%CP936%CP950%CP1250%CP1251%CP1252%CP1253%CP1254%CP1255%CP1256%CP1257%CP1258%ISO8859-1%ISO8859-2%ISO8859-3%ISO8859-4%ISO8859-5%ISO8859-6%ISO8859-7%ISO8859-8%ISO8859-9%ISO8859-13%ISO8859-15 Character Encoding: TEXTLINE_1_ENCODING $(TEXTLINE_IN_ENCODING_TEXTLINE_1) #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {{$(SourceDataset)} != ""} { \ puts {DEFAULT_MACRO SourceDataset_TEXTLINE_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER TEXTLINE TEXTLINE_1 DEFAULT_MACRO SourceDataset_TEXTLINE_1 ${TEMP}\temp.fme TEXTLINE_1_DATASET "$(SourceDataset_TEXTLINE_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "XLSXW_1" #! END_WB_HEADER #! START_DEST_HEADER XLSXW XLSXW_1 # ============================================================================ # First get the dataset for the database. For Excel, it's the file name. # For now we'll use whatever they had when they generated this mapping file, # and not reprompt #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_XLSXW_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER XLSXW XLSXW_1 DEFAULT_MACRO DestDataset_XLSXW_1 $(DestDataset_XLSXW) GUI FILENAME DestDataset_XLSXW_1 Excel_Files(*.xlsx;*.xlsm;*.xls)|*.xlsx;*.xlsm;*.xls|All_files(*.*)|*.* Destination Microsoft Excel File: # ============================================================================ # Whether or not to overwrite the file DEFAULT_MACRO XLSXW_OUT_OVERWRITE_FILE_XLSXW_1 Yes XLSXW_1_OVERWRITE_FILE "$(XLSXW_OUT_OVERWRITE_FILE_XLSXW_1)" GUI CHOICE XLSXW_OUT_OVERWRITE_FILE_XLSXW_1 Yes%No Overwrite Existing File: # Template file option DEFAULT_MACRO XLSXW_OUT_TEMPLATEFILE_XLSXW_1 XLSXW_1_TEMPLATEFILE "$(XLSXW_OUT_TEMPLATEFILE_XLSXW_1)" GUI OPTIONAL FILENAME_MUSTEXIST XLSXW_OUT_TEMPLATEFILE_XLSXW_1 Excel_Files(*.xlsx;*.xlsm;*.xls)|*.xlsx;*.xlsm;*.xls|Excel_Workbook_2007(*.xlsx)|*.xlsx|Excel_Macro_Workbook(*.xlsm)|*.xlsm|Excel_Workbook_Pre_2007(*.xls)|*.xls|All_files(*.*)|*.* Template File: # ============================================================================ # Parameters whose values will be percolated to the feature types, but will not # remain as writer level settings # Drop feature type first DEFAULT_MACRO XLSXW_OUT_DROP_TABLE_XLSXW_1 No XLSXW_1_DROP_TABLE "$(XLSXW_OUT_DROP_TABLE_XLSXW_1)" # Truncate feature type first (removeallcelldata,retainformatting/headers,etc.) DEFAULT_MACRO XLSXW_OUT_TRUNCATE_TABLE_XLSXW_1 No XLSXW_1_TRUNCATE_TABLE "$(XLSXW_OUT_TRUNCATE_TABLE_XLSXW_1)" # Whether to write out the field names (orjustthedata) DEFAULT_MACRO XLSXW_OUT_FIELD_NAMES_OUT_XLSXW_1 Yes XLSXW_1_FIELD_NAMES_OUT "$(XLSXW_OUT_FIELD_NAMES_OUT_XLSXW_1)" # Default writer mode DEFAULT_MACRO XLSXW_OUT_WRITER_MODE_XLSXW_1 Insert_New_Rows XLSXW_1_WRITER_MODE "$(XLSXW_OUT_WRITER_MODE_XLSXW_1)" XLSXW_1_DATASET "$(DestDataset_XLSXW_1)" #! END_DEST_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)Extract_domains_from_geodatabase_mdb.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE Datum FME_GEOMETRY_HANDLING Classic FME_STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_TEXTLINE_1 TEXTLINE_1 DEFAULT_MACRO DATASET_KEYWORD_XLSXW_1 XLSXW_1 # ------------------------------------------------------------------------- TEXTLINE_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No FME_BEGIN_TCL FME_Decode lappend
sysString
FME_MacroValues
FME_HOME_UNIX
fme
lappend
sysString
生成
lappend
sysString
GEODATABASE_MDB
lappend
sysString
零
lappend
sysString
FME_MacroValues
SRC_MDB
lappend
sysString
env
临时
temp.fme
lappend
sysString
——RESOLVE_DOMAINS
lappend
sysString
是的
lappend
sysString
2
1
eval
执行
sysString
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -宏WORKSPACE_NAME Extract_domains_from_geodatabase_mdb宏观FME_VIEWER_APP fmedatainspector # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -包括(如果{[信息存在env (FME_TEMP) & &(文件isdirectory $ env (FME_TEMP)]}{设置gVisualizerTemp $ env (FME_TEMP)} elseif{[信息存在env(临时)& &(文件isdirectory $ env(临时)]}{设置gVisualizerTemp $ env(临时)}elseif {$ tcl_platform(平台)= ={set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:};regsub - {[,]} {$ (WORKSPACE_NAME)} {_} wsname;设置gVisualizerTemp $gVisualizerTemp/${wsname}_[时钟格式[时钟秒]-格式%H%M%S];输入“MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp”;宏VISUALIZER_FEATURE_FILE $ (WORKSPACE_TEMP_DIR) /检查员。宏VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector。fsc宏观VISUALIZER_CREATE_SPATIAL_INDEX是的# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -查找___KnownFeatureTypes___ text_line是的”“不# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF * TestFactory FACTORY_NAME“意外输入剂”输入FEATURE_TYPE *测试@Lookup (___KnownFeatureTypes___, @FeatureType()) = =是的输出通过FEATURE_TYPE * # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(TEXTLINE,FME_GENERIC,PRESERVE_GEOMETRY) DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc StringSearcher_c2f54a33_341a_48b2_82e7_d0e090d2101d0_doGrep { regExp } { set results [regexp -inline $(casemac) [FME_DecodeText $regExp] [FME_GetAttribute {"text_line_data"}]]; set attrName {_matched_characters}; set index 0; foreach part $results { FME_SetAttribute $attrName $part; set attrName "_matched_parts{$index}"; incr index; }; if {$index > 0} { FME_UnsetAttributes $attrName; }; return $index; } FACTORY_DEF * TestFactory FACTORY_NAME StringSearcher INPUT FEATURE_TYPE text_line TEST @Tcl2("StringSearcher_c2f54a33_341a_48b2_82e7_d0e090d2101d0_doGrep {coded_domain} ") > 0 OUTPUT PASSED FEATURE_TYPE StringSearcher_MATCHED # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller INPUT FEATURE_TYPE StringSearcher_MATCHED SYMBOL_NAME parseDomains SOURCE_CODE def
parseDomains
功能
:
startIndex
=
0
quotesOn
=
0
代码
=
值
=
tempList
=
textLine
=
feature.getStringAttribute
text_line_data
#
片
的
列表
之间的
括号
开始
=
textLine.index
+
1
结束
=
textLine.index
textLine
=
textLine
开始,结束
#
解码
的
思想你
编码
使用
一个
TCL
调用
:
tclFunc
=
Tcl2
FME_DecodeText
+
textLine
+
textLine
=
feature.performFunction
tclFunc
#
蛮
力
解析
成
tempList
为
我
在
范围
len
textLine
:
如果
textLine
我
.count
:
! = 0
和
quotesOn
= =
0:
tempList.append
textLine
startIndex:我
startIndex
=
我
+
1
elif
textLine
我
.count
! = 0
和
quotesOn
= =
0:
quotesOn
=
1
elif
textLine