The FeatureWriter creates SQLite (Non-Spatial) database and saves (row index, column index) of all alive cells in the first generation into a table.
Each time the SQLExecutor receives a feature, it updates the table for the new generation and then reads the records. i.e. (r, c) of alive cells in the new generation.
The SQLite file will be created in a temporary folder under the FME_TEMP and removed automatically when the translation has completed.
Microsoft Access can also be used instead of SQLite and it may be more efficient.
" POSITION="-221.833 -273.753" TOP_LEFT="-221.833 -273.753" BOTTOM_RIGHT="2888.31 -553.756" BOUNDING_RECT="-221.833 -273.753 3110.14 280.003" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="0">1.0编码= US_ASCII独立的= 没有? 几何 尺寸= 2零 几何 ) FACTORY_DEF $(Creator_2_CLASSIC) CreationFactory FACTORY_NAME Creator_2_CLASSIC_Creator $(Creator_2_2D3D) $(Creator_2_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_2_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 OUTPUT FEATURE_TYPE Creator_2_CREATED . txt@Tcl2(Creator_2_CoordSysRemover) @CoordSys() fme_feature_type Creator_2 FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_2_CREATED Brancher -1 45" INPUT FEATURE_TYPE Creator_2_CREATED TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" OUTPUT PASSED FEATURE_TYPE * @RemoveAttributes("Creator_2_CREATED Brancher -145“.BranchingFactory.Count ) # ------------------------------------------------------------------------- Tcl2 proc Creator_CoordSysRemover{}{全球FME_CoordSys;设置FME_CoordSys {};} MACRO Creator_XML NOT_ACTIVATED MACRO Creator_CLASSIC NOT_ACTIVATED MACRO Creator_2D3D 2D_GEOMETRY MACRO Creator_COORDS . 包括[if{{Geometry Object}==={Geometry Object}}{puts{MACRO Creator_XML*}}]包括[if{Geometry Object}=={2D坐标列表}{puts{MACRO Creator_2D3D 2D_Geometry};puts{MACRO Creator_CLASSIC*}]包括[if{{{Geometry Object}==={3D坐标列表}{puts{Creator MACRO_2D3D_3D_Geometry};puts}{MACRO Creator_CLASSIC*}]包括[if{{Geometry Object}={2D Min/Max Box}{set comment{我们需要将minX minY maxX maxY坐标转换为完整的多边形坐标列表};设置splitCoords[split[string trim]{ }]];if{[llength$splitCoords]>4}{set trimmedCoords{};foreach item$splitCoords{if{$item!={}}{lappend trimmedCoords$item};set splitCoords$trimmedCoords;};if{[llength$splitCoords]!=4}{错误{创建者:坐标列表应该是一个由四个数字组成的空格分隔列表,如“minx miny maxx maxy”-` '无效};};set minX[lindex$splitCoords 0];set minY[lindex$splitCoords 1];set maxX[lindex$splitCoords 2];set maxY[lindex$splitCoords 3];put“宏创建者”\u COORDS$minX$minY$minX$maxY$maxY$maxX$minY$minX$minY”;put{MACRO Creator 2D3D 2D\u几何体};put{MACRO Creator u CLASSIC*}]工厂$(创建者XML)CreationFactory工厂\u名称创建者\u XML\u创建者在\u结束时创建\u无输出特征\u类型\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu创建\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu, xml ? 版本= 1.0编码= US_ASCII独立的= 没有? 几何 尺寸= 2零 几何 )工厂定义$(Creator\u CLASSIC)创建工厂工厂名称创建者\u CLASSIC\u Creator$(Creator\u 2D3D)$(Creator\u COORDS)创建\u结尾无输出功能\u类型\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu输出功能\u TYPE Creator\u CREATED@Tcl2(Creator\u CoordSysRemover)@CoordSys()fme\u FEATURE\u TYPE Creator FACTORY\u DEF*BranchingFactory\u NAME“Creator\u CREATED Brancher-1 5”输入功能\u TYPE Creator\u CREATED TARGET\u FACTORY“$(WB\u当前上下文)\u Creator\u BRANCH\u TARGET”输出传递的功能\u TYPE*@RemoveAttributes(“Creator\u CREATED Brancher-1 5”。BranchingFactory.Count)#----------------------------------------------------------------工厂定义*工厂名称“$(WB\u当前上下文)\u Creator\u BRANCH\u目标“输入功能_TYPE*输出功能_TYPE*#--------------------------------------------------------------------------------------工厂_DEF*测试工厂_NAME Cloner_CheckCopies输入功能_TYPE Creator_创建的测试”@EvaluateExpression(FDIV,FLOAT,$(NUMCOLS$encode),Cloner)”键入INT编码输出传递功能\u TYPE\uuuu toOutput\uuuu FACTORY\u DEF*TeeFactory\u NAME Cloner\u Cloner输入功能\u TYPE\uuuu toOutput\uuu数量\u拷贝数“@EvaluateExpression(FDIV,FLOAT,$(NUMCOLS$encode),Cloner)”复制\编号\属性c输出功能\类型克隆器\复制\----------------------------------------------------------------包括[puts“宏实际\速率[expr$(INI \ NUM)*-1]”]工厂\定义*采样工厂\名称采样器采样\速率$(实际\速率)样本\u顺序随机输入特征\u类型克隆器\u复制输出采样特征\u类型\uuuuuuuuuuuuuuuuuuuuuu35;此工厂是必需的,因为如果没有指定输出子句,采样器仍将输出特征。#这样,即使变压器上没有输出连接,我们也能表现良好。见PR#28886。工厂定义*TeeFactory工厂名称采样器\采样输入特征\类型\采样\输出特征\类型采样器\采样“@EvaluateExpression(ATTR\u CREATE\u EXPR\u PROPAGATE\u MISSING\u FDIV,generation,0,FEATURE\u TYPE)”工厂定义*TeeFactory工厂名称“采样器采样拆分器”输入功能\u TYPE Sampler\u SAMPLED输出功能\u TYPE Sampler\u SAMPLED\u 0\u qKSqHZTJ/+c=输出功能\u TYPE Sampler\u SAMPLED\u 1\u F3CResnX36E=#-----------------------------------------------------------------------------------------在翻译启动时,准备此#xformer实例将填充其临时文件的临时目录。为此,我们将请求一个临时文件名,然后将UUID添加到临时文件名中,以生成一个超级唯一的名称,该名称将成为我们分发的所有临时文件的目录我们将设置为在关闭时让END_TCL删除整个目录为此,我们将使用“环境”保存主子目录,并将#我们的UUID作为环境变量名。这是将信息#从@Tcl2传递到FME#u END#TCL的唯一方法(通过“env”变量,因为它们使用不同的TCL解释器)Tcl2 set sampleTempFile[FME#u TempFilename];设置ourTempDir{};附加ourTempDir$sampleTempFile{TempPathnameCreator_c972b3c2_1860_4630_b326_66a28f34174f17};文件mkdir$ourTempDir;设置环境(TempPathnameCreator_c972b3c2_1860_4630_b326_66a28f34174f17_目录)$ourTempDir;设置环境(TempPathnameCreator_c972b3c2_1860_4630_b326_66a28f34174f17_文件)$sampleTempFile;将gnumTempFileHandedOut设置为0;#清理时间。删除此转换器用于其临时文件的目录,以及作为“种子”创建的#原始临时文件,以获得唯一的起点。FME_END_TCL文件删除-强制$env(TempPathnameCreator_c972b3c2_1860_4630_b326_66a28f34174f17_dir)$env(TempPathnameCreator_c972b3c2_1860_4630_b326_66a28f34174f17_文件);未设置环境(临时路径名创建者目录c972b3c2 1860 4630 b326 66a28f34174f17);取消设置环境(临时路径名创建者_c972b3c2_1860_4630_b326_66a28f34174f17_文件);#实际上,创建并返回一个格式良好的文件名,该文件名保证不存在我们知道,我们在一个特定于transformer实例的目录中工作因此,我们可以在其中连续递增,以确保我们没有创建以前存在的文件。如果文件名库没有提供默认值,我们还需要为文件名库提供一个默认值(我们将使用XFORMER#u名称),并注意处理不需要扩展名的情况以及扩展名以扩展名开头的情况。Tcl2 proc TempPathnameCreator_makeTemp{baseName extension}{global env;global gNumTempFilesHandedOut;if{[string length$extension]==0}{set extensionSep{};}elseif{[string index$extension 0]={.}{set extensionSep{.};}else{set extensionSep{.};}if{$baseName={set baseName{tempNameCreator};};设置curClock[时钟点击];设置last7ClockDigits[字符串范围$curClock end-6 end];追加aGoodTempFile$env(TempPathnameCreator_c972b3c2_1860_4630_b326_66a28f34174f17_dir) [file separator] [FME_DecodeText $baseName] {_} $last7ClockDigits {_} $gNumTempFilesHandedOut $extensionSep [FME_DecodeText $extension]; incr gNumTempFilesHandedOut; FME_SetAttribute [FME_DecodeText _pathname] $aGoodTempFile; } FACTORY_DEF * TeeFactory FACTORY_NAME TempPathnameCreator INPUT FEATURE_TYPE Creator_2_CREATED OUTPUT FEATURE_TYPE TempPathnameCreator_OUTPUT @Tcl2("TempPathnameCreator_makeTemp {} {}") # ------------------------------------------------------------------------- INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && { } == {polygon}} {puts "MACRO FeatureMerger_REFERENCE_INFO geom_build_polyys ";} elseif {{ATTRIBUTES} == {GEOM_BUILD} && { } == {aggregate}} {puts "MACRO FeatureMerger_REFERENCE_INFO geom_build_aggregate ";} elseif {{ATTRIBUTES} == {GEOM_BUILD} && { } == {LINESFROMPOINTS}} {puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS";} elseif {{ATTRIBUTES} == {GEOM_AND_ATTRS} && { } == {polygon}} {puts "MACRO FeatureMerger_REFERENCE_INFO geom_and_attr_build_polyys ";} elseif {{ATTRIBUTES} == {GEOM_AND_ATTRS} && { } == {aggregate}} {puts "MACRO FeatureMerger_REFERENCE_INFO geom_and_attr_build_aggregate ";} elseif {{ATTRIBUTES} == {GEOM_AND_ATTRS} && { } == {LINESFROMPOINTS}} {puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS";} elseif {{ATTRIBUTES} == {GEOM_BUILD}} {puts "MACRO FeatureMerger_REFERENCE_INFO geom_build_aggregate ";} elseif {{ATTRIBUTES} == {GEOM_AND_ATTRS}} {puts "MACRO FeatureMerger_REFERENCE_INFO geom_and_attr_build_aggregate ";其他}{};] FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger输入参考FEATURE_TYPE Sampler_SAMPLED_1_F3CResnX36E =输入REFERENCEE FEATURE_TYPE TempPathnameCreator_OUTPUT REFERENCE_INFO (FeatureMerger_REFERENCE_INFO) REFERENCE_TABLE 1美元1汽车ATTR_ACCUM_MODE“HANDLE_CONFLICT ATTR_CONFLICT_RES IGNORE_NULLS“REQUESTOR_IF_CONFLICT”“不”HANDLE_NULL_MISSING_KEYS_LIKE_FME2013没有MERGE_ATTRIBUTES是的MANAGE_FME_TYPE是的模式完成PROCESS_DUPLICATE_REFERENCEES REFERENCEES_FIRST是的输出完整FEATURE_TYPE FeatureMerger_MERGED # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter WRITER_TYPESQLITE3 WRITER_DATASET @EvaluateExpression (FDIV STRING_ENCODED, 价值 _pathname FeatureWriter) WRITER_SETTINGS RUNTIME_MACROS DESTINATION_DATASETTYPE_VALIDATION 是的 OVERWRITE_FILE 图元文件,SQLITE3 WRITER_FEATURE_TYPES WRITER_METAFILE_INFO ATTRIBUTE_CASE,任何ATTRIBUTE_INVALID_CHARS, ,属性长度,255,属性类型映射,整数fme_int32 整数 fme_uint32 整数 fme_int64 整数 fme_int16 整数 fme_uint16 整数 fme_boolean 整数 fme_int8 整数 fme_uint8 文本 fme_buffer 文本 fme_xml 文本 fme_json 团 fme_binarybuffer 团 fme_varbinary 宽度 团 fme_binary 宽度 文本 fme_datetime 文本 fme_日期 文本 fme_time 浮动 fme_real64 浮动 fme_real32 varchar 宽度 fme_varchar 宽度 varchar 宽度 fme_char 宽度 varchar 20. fme_uint64 真正的宽度 小数 fme_decimal宽度 小数 、DEST_ILLEGAL_ATTR_LIST DB_TYPESQLITE3_DROP_TABLE SQLITE3_表_写入器_模式 SQLITE3_UPDATE_KEY_COLUMNS SQLITE3\u TRUNCATE\u表,特征类型\u大小写,任意,特征类型\u无效\u字符, :?*| % # +- FEATURE_TYPE_LENGTH_INCLUDES_PREFIX FEATURE_TYPE_LENGTH, 255年,假,FEATURE_TYPE_RESERVED_WORDS, FORMAT_NAME, SQLITE3, GEOM_MAP db_none fme_no_geom db_none fme_点 db_none fme_line db_none fme_polygon db_none fme_文本 db_none fme_ellipse db_none fme_arc db_none fme_矩形 db_none fme_rounded_rectangle db_none fme_collection db_none fme_raster db_none fme_surface db_none fme_solid db_none fme_point_cloud db_none fme_feature_table READER_ATTR_INDEX_TYPES,索引 独特的来源,不,SUPPORTS_FEAT_TYPE_FANOUT,是的,是的,WORKBENCH_CANNED_SCHEMA, SUPPORTS_MULTI_GEOM,作家,SQLITE3, WRITER_ATTR_INDEX_TYPES,索引 独特,WRITER_DEFLINE_PARMS, 桂NAMEDGROUP sqlite3_层_组 sqlite3_general_group 表格 设置 桂NAMEDGROUP sqlite3_general_group sqlite3_table_writer_mode % sqlite3_drop_table % sqlite3_truncate_table % sqlite3_row_selection_group 一般 桂DISCLOSUREGROUP sqlite3_row_selection_group FME_DISCLOSURE_OPEN % sqlite3_update_key_columns 行 选择 桂选择 sqlite3_drop_table 没有%是的 滴 表格 没有 桂选择 sqlite3_truncate_table 没有%是的 截断 表格 没有 桂选择 sqlite3_table_writer_mode INHERIT_FROM_WRITER % % %插入更新删除 作家 模式 INHERIT_FROM_WRITER 桂可选 ATTRLIST_COMMAS sqlite3_update_key_columns 更新 删除 关键 列 WRITER_DEF_LINE_TEMPLATE, FME_GEN_GROUP_NAME sqlite3_update_key_columns