哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! -B “”/“>” 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀!gui忽略源数据集_jpeg2000 _1,jpeg2000 _在_exp暴露于_attrs_组_jpeg2000 _1,jpeg2000 _在搜索_搜索_搜索_搜索_信封_miny _minx _jpeg2000 _1,jpeg2000 _在搜索_搜索_信封_maxx _jpeg2000 _1,jpeg2000 _在_搜索\\u搜索\_搜索\_搜索\\_搜索_信封\U minx _envelope_jpeg2000_1,jpeg2000_in_jpeg2000_rdr_adv_parm_group_jpeg2000_1,jpeg2000 _in _prefer_file_cs_单位_jpeg2000_1,jpeg2000 _in _read _读取u cs_单位_jpeg2000_1,jpeg2000 _网络_认证_jpeg2000 _1,搜索_信封_坐标系统_jpeg2000 _1,源数据集_getiff _1,getiff u应用_gcp _getiff _1,getiff \\\\_gecp \\u插值\\_1,geotiff_in_exposure_attrs_group_geotiff_1,geotiff_in_search_envelope_mINX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_Geotiff_1,getiff_in_网络_身份验证_getiff_1,搜索_信封_系统坐标_getiff _1默认_宏源数据集_jpeg2000 z:\temp\mytiff _uncomp.jp2gui多文件源数据集_jpeg2000 jpeg2000 _文件(*.jp2;*.jjjjjjjj2;*.jjjjjjjjjjj2;*.jjjjjjjjjjjjjjjjjjp 1,搜索u信封u系统_getiff \u 1默认_宏源数据集u jpeg2000 z文件(*)*源jpeg 2000 file(s):默认_宏源数据集_geotiff z:\temp\mytiff.tifgui多文件源数据集_getiff getiff getiffu文件(*.tif;*.tif;*.titiff;*.tiff;*.tititiff;*.tiff;*.ovr;所有\124;*源getiff文件:包括[if;$(源数据集_jpe2000);=\125 \\ \123;;参数‘源数据集_jpe2000’必须给定一个参数‘源数据集_jpe2000’必须给定一价值。退出1;};]include[if$(sourceDataset _geotiff)=puts real参数'sourceDataset _geotiff'必须给定值。退出1;};“啊!启动头报文!开始_wb_headerreader_type multi_reader multi_reader _type 0 jpeg2000 multi_reader U关键字0 jpeg2000 _1 multi_reader _gen_指令0 jpeg2000 _公开_格式_属性,首选_文件_cs _单元,是,jpeg2000 _rdr _adv _parm _群组,群组_by _数据集,否,剪辑_至\\\信封\最小,0,搜索\信封\最大,0,搜索\信封\最小,0,搜索\信封\最大,0,_合并图式,是,使用搜索信封,否,暴露属性组,读取偏移,读取偏移,读取单元,读读写器类型1 getiffmu读读读读写器关键字1;getiff读写器多读写器通用指令;1;首选文件单元,是,忽略光栅类型,读写器偏移,读取偏移,读取单元,读读写器偏移,读写器单元,应用,应用gcps,否,剪辑到信封,否,功能类型名称,格式名称,搜索信封,最小值,0,SEarch_envelope_maxx,0,search_envelope_miny,0,search_envelope_maxy,0,_merge_schemas,yes,geotiff_expose_format_attrs,,gcp_interpolation_method, 未使用的 ,使用_search_envelope,no,expose_attrs_group,,read_offsets_in_cs_units,nowriter_type nullwriter_keyword null_dest null_dest_dataset null!Enth-WbHead头!启动“wb_headermacro wb_keyword”jpeg2000_1!Enth-WbHead头!start_source_header jpeg2000 jpeg2000_1然后用于定义要读取的数据集。生成此映射文件的数据集是:!结束_source_header!启动$(sourcedataset)!=“”\输入默认宏源数据集_jpeg2000 _1$(源数据集)\]!Enth-WbHead头!启动\u source_header jpeg2000 jpeg2000 _1default_宏源数据集_jpeg2000 U 1$(sourc数据集_jpeg2000)GUI多文件源数据集_jpeg2000 U 1 jpeg2000 U 1 jpeg2000 U 1 jpeg2000 U文件(*.jp2.jjjjjk.jjjjbf.jjpf.jpf.jpf.jpf.jpf.jpf.jpf.jpx.jpm.jjjp2000.jp2000.jp2000.jp2000 _1def默认值\u宏源数据集_jpeg2000 U 1$(sourc数据集属性fme_数据集fu group中的macro jpeg2000_group_by_dataset_jpeg2000_1 nojpeg2000_1_group_group_by_dataset“$(jpeg2000_group中的jpeg2000_group_by_dataset_jpeg2000_1)“默认”macmacmacmacjpeg2000_in_exp露_attrs_group _jpeg2000_1 jpeg2000_1_exp露_attrs_group”$(jpeg2000_exp露_attrs_group_jpeg2000_group _jpeg2000_1)”gui-disdisdisdisdisdisdisdisdisdisdisdisdisdis将jpeg2000_重新组合到expose_attrs_group_jpeg2000_1 jpeg2000_expose_格式属性将此文件包含在源设置部分,以添加外部搜索信封处理默认为零意味着我们不进行任何搜索--这使工作台更快乐ch_envelope“$(jpeg2000_in_search_envelope_minx_jpeg2000_1)”gui可选float jpeg2000_search_envelope_minx_jpeg2000_1 minimum x:(???????????????????????????????????????????????????????????????????????????????????????????????????????????????可选浮动jpeg2000_搜索_信封_miny_jpeg2000_1最小Y:=========================================================默认_宏jpeg2000_搜索_信封_maxx_jpeg2000_1 0jpeg2000_1_搜索_信封”$(jpeg2000_搜索_信封_maxx_jpeg2000_1)“gui可选浮动jpeg2000_搜索_信封_maxx_jpeg2000_1最大x:==========================================默认值搜索信封===bug18999:我们现在有一个软剪辑可以像原生空间索引一样重新使用,因此我们重新引入剪辑进行封装,作为用户的一个选项。默认为软剪辑,根据现有的数据库读卡器,我们将仿真默认的\u macro jpeg2000_in \u clip \u to \u envelope \u jpeg2000_1 \u clip \u to \u envelope”$(jpeg2000_in \u clip \u to \u envelope_jpeg2000_1)”gui可选复选框jpeg2000_in_clip_to_en信封_jpeg2000_1 Yes%No clip to搜索en信封故障_宏jpeg2000_宏jpeg2000_in_jpeg2000_rdr_advu parm_group _jpeg2000_1 gui disdisdisclogroup jpeg2000_in_jpeg2000_rdr_adv_parm_group _jpeg2000_jpeg2000_1 gui disclogroup jpeg2000_in_jpeg2000 \\_adv\_macro jpeg2000_in_prefer_file_cs_units_jpeg2000_1 yes jpeg2000_1_1_1_1_1_1_1_1_1_1_1 prefer_file_cs_unit_jpeg2000_1_1_prefer_file_cs_unit_jpeg2000_1 yes jpeg2000_1_1_prefer_u文件\u cs_单位_jpeg2000_1_1_1_1_1_2_1_1_1_1_1_1_prefer_文件\u cs_单位_单位_单位_jpeg2000_1_1_1_1 eg2000_in_read_补偿_in_cs_units_jpeg2000_1)“gui choIce JPEG2000_in_read_offsets_in_cs_units_JPEG2000_1 Yes%No offsets in coordinate system units:==========================================默认_macro JPEG2000_in_network_authentication_JPEG2000_1_network_authentication“$(JPEG2000_in_network_authentication_JPEG2000_1)”GUI可选验证器JPEG2000_in_network_authentication_jpeg2000_1 container%group%container_title%网络身份验证“%prompt_type%网络网络身份验证pr:31021将此文件包含在工作台源序言部分,以便能够指定搜索信封处理的坐标系=============默认的_宏搜索_信封_坐标系_jpeg2000_1 gui可选坐标系搜索_信封_坐标系_jpeg2000_1搜索信封坐标系:jpeg2000_1搜索_信封_坐标系“$(搜索_信封_坐标系_jpeg2000_1)”\Peg2000_1_数据集“$(sourceDataset_jpeg2000_1)”!结束_source_header!启动“wb_headermacro wb_”关键字“geotiff_1”!Enth-WbHead头!启动_source_header geotiff geotiff_1然后用于定义要读取的数据集。生成此映射文件的数据集是:!结束_source_header!启动$(sourcedataset)!=“”\放置默认宏源数据集_geotiff_1$(源数据集)\]!Enth-WbHead头!开始_source_header getiff getiff getiff_1d默认_宏源数据集_getiff_1美元(sourc数据集_getiff)gui多文件源数据集_getiff _1 getiff _文件(*.tif;*.tiff;*.tititiff;*.tiff;*.ovr);.tif;*.tiff;*.tiff;*.ovr;所有_文件();*源getiff文件:getiff _1 _read器_meta _元_属性fm _数据集fm _base名称默认_macgetiff _macgetiff _macgetiff类型名称FF U 1格式U名称地理TIFF U 1 U 1U 1\U 1U 1U 1U特征U类型U名称U地理TIFF U 1 U 1格式U名称地理TIFF U 1 U 1 U 1 U应用U GCPS U地理TIFF U 1 NogeTIFF U 1 U应用U GCPS”美元(地理TIFF U应用U GCPS U地理TIFF U 1)”GUI Activecececec克地理TIFF U在U应用U GCPS U地理TIFF U地理TIFF U 1是%否1是%否,地理TIFF U在U 1是%否,地理_gcp_插值_方法在_gcp_插值_方法_geotif中应用gcp default_macro geotiff_FY1 getiff_1_gcp_插值_方法“$(getiff_in_gcp_插值_方法getiff_1)”gui radio_组getiff_in_gcp_插值_方法getiff_1 1%“最近邻居”、近近邻%双线性、双线性%双三次、双三次gcp插值方法默认_宏getiff_in_公开\u attrs_组_getiff_1_公开\u attrs_组“$(getiff _组”$(getiff)getiff暴露在外rs_group_geotiff_1)“gui disclosuregroup geotiff_expose_a t t rs_group_geotiff_1 geotiff_expose_format_a t t rs schema attributes_include this file in source setting section to add external search envelope processing_0 as a default means we don't do any search--this make workbench happer_==============默认_macro geotiff_search_envelope_minx_geotiff_1 0geotiff_search_envelope“$(geotiff_search_envelope_minx_geotiff_1)”gui可选浮动geotiff_search_envelope_minx_geotiff_1 minimum x:====================================================默认_search_envelope_miny_geotif_FF U 1 0GeoTiff U 1_搜索U 1_搜索U 1_搜索U搜索U信封U miny_getiff U 1)“GUI可选浮动GeoTiff U搜索U搜索U信封U miny U地理Tiff U 1最小Y:\\\\==========================================================默认_宏GeoTiff U搜索U信封U maxx U GeoTiff U 1 U搜索U信封”$(GeoTiff U搜索U搜索U信封U搜索U信封U maxX U maxX U GeoTiff U信封U maxX U GeoTiff U GeoTiff U信封技术信息ff_1)“gui可选float geotiff_search_envelope_maxx_geotiff_1 maximum x:譁===========================默认_search_envelope_maxy_geotiff_1 0geotiff_search_envelope”$(geotiff_search_envelope_maxy_geotiff_1)“gui可选float geotiff_search_envelope_maxy_geotiff_1 maximum嗯,Y:譁譁譁譁譁eotiff_1 no geotiff_1_clip_to_en信封“$(getiff_in_clip_to_en信封_getiff_1)”gui可选复选框getiff_in_clip_to_en信封_getiff_1 yes%no cli搜索信封故障_宏getiff_in _getiff _rdr_adv _parm _getiff _1 gui卸弃集团getiff_in _getiff u rdr \u adv\_parm \_parm\\\u group_geotiff_1 prefer_file_cs_units%read_offsets_in_cs_units%ign矿石u光栅u类型_关键高级高级高级默认_宏地理TIFF_在_首选_文件_单元_地理TIFF_1 yes地理TIFF _1 _首选_文件u CS_单元”$(地理TIFF_在_首选_文件_文件_单元_地理TIFF _1)”GUI选择地理TIFF _在_首选_文件_单元_地理TIFF _1是%否首选文件坐标系统单位:默认_宏地理TIFF u在u读取\\\_读取\\\cs_Units_geotiff_1 no geotiff_1_read_offsets_c_s_单位“$(getiff_in_read_offs_in_cs_单位_getiff_1)”gui选项getiff_in_read_offs_in_cs_单位_getiff_1是%0坐标系统单位中无补偿:默认_宏getiff_in_忽略_光栅_光栅类型_关键_getiff _1 nogetiff _1_忽略_光栅_类型_关键”$(getiff_忽略_光栅_光栅_光栅_光栅类型_类型_关键_关键_地理位置_地理位置_光栅_光栅tiff_1)“图形用户界面选择geotiff_中的忽略栅格类型的geotif_键geotiff_1是%no忽略光栅类型键:=========================组%container_身份验证中的默认宏geotiff_网络中的宏geotiff_geotiff_1网络中的geotiff_身份验证“$(geotiff_网络中的geotiff_身份验证中的geotiff_1)”gui可选身份验证程序geotiff_网络中的geotiff_身份验证中的geotiff_geotiff_1容器%group%container_tiTLE%“网络身份验证”prompt_type%network network authentication_pr:31021将此文件包含在工作台源序言部分中,以启用指定搜索信封处理坐标系的功能==================================================默认宏搜索信封坐标系otiff_1 gui可选坐标搜索_envelope_coordinate_system_geotiff_1 search envelope coordinate system:geotiff_1_search_envelope_coordinate_system“$(search_envelope_coordinate_system_geotiff_1)”譁=============================geotiff_1_dataset“$(sourcedataset_geotiff_1)”譁!结束_source_header!end-headerLog文件名“$(fme-mf-dir)comparerater.log”log“附加nolog max-features 200log-max-recorded”u-features 200log-max-precision-yesfme-reprojection\u-engine-fme fme-implicit-csmap-reprojection\u-mode-autome-geometry\u-handling-enhancedfme\u-stroke\u-max-deviation 0log-filter-mask-1default-macro-dataset\u-keyword\u jpeg2000\u 1 jpeg2000\u 1default-macro-data设置关键字“geotiff”1“geotiff”1“geotiff”1“geotiff”1“geotiff”1“geotiff”1“geotiff”1“meta”属性“fme”basename“fme”feature“u type”类型“geotiff”1“u reader”meta“u”属性“fme”basename“fme”feature“u type”---——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————$env(fme temp)设置gvisualizertemp$env(fme temp)elseif[信息存在env(temp)&&[文件是目录$env(temp)设置gvisualizertemp$env(temp)elseif$tcl平台==“Unix”设置gvisualizertemp“/tmp”其他设置gvisualizertemp C:regsub-所有[,&]$(工作区wsname;设置gvisualizertemp$gvisualizertemp/$wsname[时钟格式[时钟秒]-格式%h%m%s];放入“macro workspace_temp_dir$gvisualizertemp”;宏可视化工具_feature_file$(workspace_temp_dir)/inspector.ffsmacro可视化工具_schema_file$(workspace_temp_dir)/inspector.fscmacro可视化工具_create_spatial_index yesf_1_def geotif f-----------------------------------------------------------------工厂_def*路由工厂_name“路由器和意外的输入移除器”输入功能_type*路由jpeg2000 jpeg2000_1::jpeg2000 multi_reader_关键字,$(数据集_关键字_jpeg2000_1)到fme_generic::jpeg2000 alias _geometry路由geotif f geotiff_1::geotiff multi_reader_关键字,$(dataset_关键字_geotiff_1)to fme_generic::geotiff alias_geometry merge_input yes output routed feature_type*jpeg2000_1_merge_def jpeg2000_1::jpeg2000精确的jpeg2000 geotiff_1_merge_def geotiff_1::geotiff精确的geotiff--------------------------------------------------------factory_def*teefactory工厂名称“geotiff(geotiff_1)splitter”输入功能类型geotiff输出功能类型geotiff_0_kwjgcsij+9y=输出功能类型geotiff_1_kwjgcsij+9y=--------------------------------------------------------工厂定义*teefactory工厂名称“jpeg2000(jpeg2000_1)splitter”输入功能类型jpeg2000输出功能_type jpeg2000_0_wgappfiph6gi=输出功能_type jpeg2000_1_wgappfiph6gi=默认_macro wb_current_context----------------------------------------------------------------------工厂_def*teefactory工厂_name rasterbandnodataremover_2输入功能_type geotiff_1_kwjgcsij+9y=输出功能_type rasterbandNodataremover_2_output@rasternodata(remove)诜诜诜是否已设置并创建工作区临时目录。请参见controlDefs.cpp-controlDefs::writeVisualizerTempDirDefault_Macro Workspace_Temp_DirInclude[设置grpbyattrsif[字符串长度$grpbyattrs]>0 if[字符串优先”@evaluateexpression“$grpbyattrs]=0放置“macro catmac U$grpbyattrs”;}否则设置catter“”;设置逗号“”;foreach attr$grpbyattrs设置catter“$catter$comma@value(\”$attr\“)”;设置逗号“,};放入“macro catmac_@concatenate($catter)”;}}否则输入“macro catmac”;};设置sa亚搏在线fename“[regsub-all[^a-za-z0-9]geotiff UUU[expr round(rand()*1000000)]UU[时钟点击-毫秒]”输入“macro-saf亚搏在线e-ffs-name$safe name”;]#创建ffs文件将位于的临时目录。factory_def*creationFactory_name geotiff_dircreator output feature_type ukeme_uuuuu@tcl2(“catch file mkdir$(workspace_temp_dir)”)factory_def*teefactory factory_name geotiff_dircreator leannerupper input feature_type ukeme_uuuuuu35;发送光栅,点云和矢量特征沿着不同的路径,准备它们用于查看工厂定义测试工厂名称geotiff功能控制器输入功能ori_def*test factory factory_name geotiff_uuuu featuredirector1 input feature_type geotiff_uuuu notrasterfeatures_uuuuuuuu test&fme_type=“fme_point_cloud”输出失败的feature_type geotiff_uuuu vector features_uuuuuuuuu输出传递的feature_type geotiff_uuuuu point cloud features_uuuuuuuuuuuu_vector features只需获取其颜色即可覆盖Factory_def*tee工厂工厂名称geotiff_vectorsetter上输入功能_type geotiff_uuu vectorfeatures_uuuuuuu output feature_type_uuuviewme_uuuuuu35;点云功能可能需要细化注意,我们不直接调用thinpointcloud功能,而是通过TCL来实现。这应允许此变压器与台式机许可证一起使用,即使thinpointcloud需要专业的.tcl2 proc geotiff_9347eb9d_1101_4a10_b2d3_3151312b63969_thinpointcloud if[string equal no keepnpoint]fme_execute thinpointcloud no u thinpointcloud \” “”;}elseif[字符串等于无减薄最大值]fme执行thinpointcloud无减薄\” “”;}elseif[字符串等于无减薄第一个点]fme执行thinpointcloud无减薄\” “”;}elseif[字符串等于无减薄最后一个点]fme执行ThinPointCloud无减薄\” “”;};}工厂_def*te工厂工厂_name getiff_u\u pointcloud稀释剂输入功能_type getiff_u pointcloud功能\u\uuuuviewme_uu@tcl2(“getiff eb9d U 1101 U 4A10U B2d3 U 315151312B63969 U Thi点云”)TCL2 proc getiff U 9347eb9d U 9347eb9d U 1101 U 1101 U 4A10 U B2d3 U 315151515131212B6363969 U准备擦除器准备擦除器准备擦除器准备擦除器;subsetStartRow subsetNumRows subsetStartCol Subsetnumcols set usedi[string equal-nocase$(fme_viewer_app)fmedatainspector];如果{!$usedi fme_执行applyrasterrotation双线性;};设置doresample[字符串等于noreducation resample];set dosubset[string equal noreducation subset];设置多边界[字符串等于noreducation boundingboxonly];如果$dobounds fme _执行几何类型fme _polygon;}elseif$doresample$dosubset设置注释首先,我们需要给所有属性加前缀。这是因为我们要调用@rasterproperties,我们要确保它不会覆盖任何现有的属性。};设置kattrPrefix“.”;设置所有名称[fm_attributename];foreach oldname$allnames设置newname$kattrPrefix;追加newname$oldname;fme_renameattribute$newname$oldname;};执行光栅属性;如果$doresample设置oldnumcols[fme_getattribute _num_columns];设置oldNumRows[fm_getattribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置oldspacingy[fme_getattribute_spacing_y];设置kminnumcells 32;设置kmaxnumcells 512;设置注释只有当两个维度都大于最小num单元格时,我们才会重新采样,至少有一个大于最大值。};如果$oldNumRows>$kminNumCells&$oldNumCols>$kminNumCells&($oldNumRows>$kmaxNumCells$oldNumCols>$kmaxNumCells)设置newspacingX 1.0;将newspacingY设置为1.0;如果$oldNumRows>$oldNumCols设置注释如果行多于列,我们需要选择一个间距,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kmaxNumCells];设置newspacingx[expr 1.0*$newspacingy/$oldspacingy*$oldspacingx];设置注释现在我们需要检查这样做是否会导致列低于最小值。如果是这样,选择间距,这样我们只会下降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果$newnumcols<$kminnumcells设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];};}否则设置注释这与上述情况相同,但行和列的角色是相反的。};设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kmaxnumcells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];设置newNumRows[expr$oldNumRows*$oldSpacingy/$newSpacingy];如果$newNumRows<$kminNumCells设置newSpacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kminNumCells];设置newspacingx[expr 1.0*$newspacingy/$oldspacingy*$oldspacingx];};};fme_execute resamplegraster cell_size$newspacingx$newspacingy nearestneighbor;};}elseif$dosubset set comment获取可能是属性或常量的某些字符串的值。请注意,我们传递了正在使用的属性前缀,因为如果一个结果是一个属性,它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasternumrows[fme_getattribute_num_rows];设置rasternumcols[fm_getattribute_num_columns];设置注释仅当指定的开始位置实际在光栅内时才进行子集设置。};如果$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols设置注释现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果[expr$subsetStartRow+$subsetNumRows]>$rasterNumRows设置subsetNumRows[expr$rasterNumRows-$subsetStartRow];};如果[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};fme_execute substraster$substratstarrow$substratnumrows$substratstartcol$substratnumcols;};};设置comment删除@rasterproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_执行删除属性fme_regexp_match ^foreach oldname$allnames设置newname$kattrPrefix;追加newname$oldname;fme_renameattribute$旧名称$新名称;};};}工厂定义*teefactory工厂名称geotiff_rastersetter上输入功能_type geotiff_uuu rasterfeatures_uuuuu output feature_type_uuu viewme_uuuuuuu@tcl2(“geotiff_9347eb9d_1101_4a10_b2d3_3151312;b63969_Preparater{ {{ {{ {{ }“)现在将所有功能传送到记录器中,将其特征类型更改为变压器名称,以便他们能够很好地查看geotiff U 9347eb9d U 1101 U 4A10 U B2D3U 315151312B63969 U VIS U FEAT U类型更改要可视化的特征的特征类型。默认_宏geotiff U 9347eb9d U 1101 U 4A10 U B2d3 U 3151513112B63969 U VIS U VIU FET U类型getiff$(catmac)默认_宏可视化工具_宏可视化工具U功能\\\\\35;更改要可视化的特征的特征类型。默认_宏geotiff \U文件$(workspace_temp_dir)/$(safe_ffs_name).ffsdefault_macro visualizer_create_spatial_亚搏在线index no[pr]数据检查器将限制在win32上读取的最大功能数。因此,我们将相应地限制我们在此处记录的功能的数量,使用max_features_to_record directive.factory_def*recorderFactory_name geotiff_recorder input feature_type_uuuviewme_uuuwb_termination_feature yes@feature type(terminator_uuvalue(_wb_termination_xformer))输入功能_type_uuviewme_uuuuuuuuuuuuuuufeaturetype($(geotiff eb9d_1101_4a10_b2d3_3151312b63969_vis_feat_type)功能_file“$(可视化工具_feature_file)”创建_space_index“$(可视化工具_create_space_index)”检查器“$(可视化工具_create_space_index)”fsc_schema fme_basename,varchar 二百五十五 模式记录记录_直接_到_磁盘是最大_功能_到_记录win32 2000000t fme_basename假设工作区临时目录已经设置和创建。请参见controlDefs.cpp-controlDefs::writeVisualizerTempDirDefault_Macro Workspace_Temp_DirInclude[设置grpbyattrsif[字符串长度$grpbyattrs]>0 if[字符串优先”@evaluateexpression“$grpbyattrs]=0放置“macro catmac U$grpbyattrs”;}否则设置catter“”;设置逗号“”;foreach attr$grpbyattrs设置catter“$catter$comma@value(\”$attr\“)”;设置逗号“,};放入“macro catmac_@concatenate($catter)”;}}否则输入“macro catmac”;};设置sa亚搏在线fename“[regsub-all[^a-za-z0-9]jpeg2000 UUU[expr round(rand()*1000000)]”[时钟点击-毫秒];输入“macro-saf亚搏在线e-ffs-name$safe name”;]#创建ffs文件将位于的临时目录。factory _def*creationFactory _name jpeg2000 _dircreator output feature _type uukeme uuuuuu@tcl2(“catch file mkdir$(workspace _temp _dir)”)factory _def*teefactory factory _name jpeg2000 _dircreator leannerupper input feature _type ukeme uuuu35; send graster,点云和矢量特征沿不同路径向下,以准备它们用于查看工厂定义测试工厂名称jpeg2000特征控制器输入特征类型jpeg2000__工厂定义*测试工厂名称jpeg2000_uuuu功能目录1输入功能\类型jpeg2000_uuuuuNotrasterFeatures_uuuuuuuuuTest&fme_type==“fme_Point_Cloud”输出失败功能\类型jpeg2000_uuuuuuVectorFeatures_uuuuuuuuuuu输出传递功能\类型jpeg2000_uuuu PointCloudFeatures_uuuuuuuuuuuuuuuuuuuuuuuuuu35;矢量功能可能简单地获得其颜色覆盖工厂ef*teefactory工厂名称jpeg2000_vectorsetterupper input feature_type jpeg2000_uuu vectorfeatures_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu viewme_uuuuuuuuuuuuuuuuuuuuuuuu点云功能可能需要细化注意,我们不直接调用th而是通过TCL来实现。这应允许此变压器与台式机许可证一起使用,即使thinpointcloud需要专业的.tcl2 proc jpeg2000_4c5e2b66_8878_44f3_a5e_7d37d9fafbe79_thinpointcloud if[字符串等于no稀释keepnpoint]fme execute thinpointcloud no稀释\” “”;}elseif[字符串等于无减薄最大值]fme执行thinpointcloud无减薄\” “”;}elseif[字符串等于无减薄第一个点]fme执行thinpointcloud无减薄\” “”;}elseif[字符串等于无减薄最后一个点]fme执行ThinPointCloud无减薄\” “”;};}工厂_def*te工厂_name jpeg2000 uuuu点云稀释剂输入特性_type jpeg2000 uu点云特性uu\uuuuuuuviewme_uuu@tcl2(“jpeg2000_4c5e2b66_8878_44f3_A55e_7d37d9fafbe79_Thi点云”)TCL2 proc jpeg2000_4c5e2b66_8878_8878_44f3_A55e_7d37d37d37d9d9fafbe79_prepareraeraeraeraeraeraeraeraerapareraeraeraeraerater子集合开始行子集合开始行子集合ol subsetnumcols set usedi[string equal-nocase$(fme_viewer_app)fmedatainspector];如果{!$usedi fme_执行applyrasterrotation双线性;};设置doresample[字符串等于noreducation resample];set dosubset[string equal noreducation subset];设置多边界[字符串等于noreducation boundingboxonly];如果$dobounds fme _执行几何类型fme _polygon;}elseif$doresample$dosubset设置注释首先,我们需要给所有属性加前缀。这是因为我们要调用@rasterproperties,我们要确保它不会覆盖任何现有的属性。};设置kattrPrefix“.”;设置所有名称[fm_attributename];foreach oldname$allnames设置newname$kattrPrefix;追加newname$oldname;fme_renameattribute$newname$oldname;};执行光栅属性;如果$doresample设置oldnumcols[fme_getattribute _num_columns];设置oldNumRows[fm_getattribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置oldspacingy[fme_getattribute_spacing_y];设置kminnumcells 32;设置kmaxnumcells 512;设置注释只有当两个维度都大于最小num单元格时,我们才会重新采样,至少有一个大于最大值。};如果$oldNumRows>$kminNumCells&$oldNumCols>$kminNumCells&($oldNumRows>$kmaxNumCells$oldNumCols>$kmaxNumCells)设置newspacingX 1.0;将newspacingY设置为1.0;如果$oldNumRows>$oldNumCols设置注释如果行多于列,我们需要选择一个间距,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kmaxNumCells];设置newspacingx[expr 1.0*$newspacingy/$oldspacingy*$oldspacingx];设置注释现在我们需要检查这样做是否会导致列低于最小值。如果是这样,选择间距,这样我们只会下降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果$newnumcols<$kminnumcells设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];};}否则设置注释这与上述情况相同,但行和列的角色是相反的。};设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kmaxnumcells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];设置newNumRows[expr$oldNumRows*$oldSpacingy/$newSpacingy];如果$newNumRows<$kminNumCells设置newSpacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kminNumCells];设置newspacingx[expr 1.0*$newspacingy/$oldspacingy*$oldspacingx];};};fme_execute resamplegraster cell_size$newspacingx$newspacingy nearestneighbor;};}elseif$dosubset set comment获取可能是属性或常量的某些字符串的值。请注意,我们传递了正在使用的属性前缀,因为如果一个结果是一个属性,它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasternumrows[fme_getattribute_num_rows];设置rasternumcols[fm_getattribute_num_columns];设置注释仅当指定的开始位置实际在光栅内时才进行子集设置。};如果$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols设置注释现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果[expr$subsetStartRow+$subsetNumRows]>$rasterNumRows设置subsetNumRows[expr$rasterNumRows-$subsetStartRow];};如果[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};fme_execute substraster$substratstarrow$substratnumrows$substratstartcol$substratnumcols;};};设置comment删除@rasterproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_执行删除属性fme_regexp_match ^foreach oldname$allnames设置newname$kattrPrefix;追加newname$oldname;fme_renameattribute$旧名称$新名称;};};}工厂定义*teefactory工厂名称jpeg2000\u rastersetter上输入功能\u类型jpeg2000\uuuru rasterfeatures\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuviewme\uuuuuuuuuuuu2(“jpeg2000\u 4c5e2b66\u 8878\u 44f3\u a5e\u 7d37d9fafbe79\u Preparaterater{ {{ {{ {{ }“)现在将所有功能传送到记录器中,将其特征类型更改为变压器名称,以便它们可以很好地查看jpeg2000_4c5e2b66_8878_44f3_A55e_7d37d9fafbe79_visu feat_feat_type更改所可视化特征的特征类型。默认值_宏jpeg2000_4c5e2b66_8878_44f3_A55e_7d37d9fafbe79_visu feat_类型jpeg2000美元(catmac)默认值u宏可视化工具(Mac宏可视化工具)默认值_Mac宏可视化工具默认值_宏可视化工具_feature_file$(工作区_temp_dir)/$(safe_ffs_name).ffsdefault_macro visualizer_create_spatial_index no[pr]数据检查器将限制在win32上读取的最大功亚搏在线能数。因此,我们将相应地限制我们在此处记录的功能的数量,使用max_features_to_record directive.factory_def*recorderFactory_name JPEG2000_recorder input feature_type_uuuviewme_uuuwb_termination_feature yes@feature type(terminator_uuvalue(_wb_termination_xformer))输入功能_type_uuviewme_uuuuuuuuuuuuuuuuux($(jpeg2000_4c5e2b66_8878_44f3_a55e_7d37d9fafbe79_vis_feat_type)功能_file“$(可视化工具_feature_file)”创建_spatial_index“$(可视化工具_create_spatial_index)”检查器“$(可视化工具_create_spatial_index)”fsc_schema fme_basename,varchar 二百五十五 模式记录记录“直接”到“磁盘是最大”功能“直接”到“记录Win32 2000000”功能#———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— -B “force_float_division yes output result feature_type rasterexpressionevaluator_result诜诜诜fme_dataset fme_basename假设工作区临时目录已经设置和创建。请参见controlDefs.cpp-controlDefs::writeVisualizerTempDirDefault_Macro Workspace_Temp_DirInclude[设置grpbyattrsif[字符串长度$grpbyattrs]>0 if[字符串优先”@evaluateexpression“$grpbyattrs]=0放置“macro catmac U$grpbyattrs”;}否则设置catter“”;设置逗号“”;foreach attr$grpbyattrs设置catter“$catter$comma@value(\”$attr\“)”;设置逗号“,};放入“macro catmac_@concatenate($catter)”;}}否则输入“macro catmac”;};设置sa亚搏在线fename“[regsub-all[^a-za-z0-9]rasterexpressionevaluator uu result uuu[expr round(rand()*1000000)]u[时钟点击-毫秒]”;输入“macro-saf亚搏在线e-ffs-name$safe name”;]#创建ffs文件将位于的临时目录。factory\def*creationfactory\u name rasterexpressionevaluator\u result\u dircreator output feature\u type\u nukeme\uuuuuuu@tcl2(“catch file mkdir$(workspace\u temp\u dir)”factory\u def*teefactory factory\u name rasterexpressionevaluator\u result\u dircreator clearnupper输入功能uuuuukeme_uuuuuuuu35;发送光栅,点云和矢量功能沿不同路径向下,以准备它们用于查看工厂定义测试工厂名称RastereExpressionEvaluator结果控制器输入功能__输出通过功能型RastereExpressionEvaluator Result URasterFeatures Uu Factory Def*测试工厂Name RastereExpressionEvaluator Result Uu FeatureDirector1输入功能型RastereExpressionEvaluator Result Uu NotRasterFeatures UuUuUu测试和FME Type=“FME Point Cloud”输出失败功能型RastereExpressionEvaluator Result_uuuu矢量特征uuuuu输出传递的特征u型RasteExpressionEvaluator u结果uuuu PointCloudFeatures uuuuuuuuu矢量特征可以简单地获得它们的颜色覆盖Factory def*Teefactory Factory u名称RasteExpressionEvaluator u结果u矢量设置器上输入特征u型RasteExpressionEvaluator u结果uuu矢量特征uuuuuuu输出特征ure_u type_uuviewme_uuuuuuuu点云功能可能需要细化,请注意,我们不直接调用thinpointcloud函数,而是通过TCL来实现。这应允许此变压器与台式机许可证一起使用,即使thinpointcloud需要专业的.tcl2 proc rasterexpressionevaluator_result_ec0c0b3d_797a_4eac_bfe0_1aec9bf687438_thinpointcloud if[string equal no keepnpoint]fme_execute thinpointcloud no u thinpointcloud “”;}elseif[字符串等于无减薄最大值]fme执行thinpointcloud无减薄\” “”;}elseif[字符串等于无减薄第一个点]fme执行thinpointcloud无减薄\” “”;}elseif[字符串等于无减薄最后一个点]fme执行ThinPointCloud无减薄\” “”;};}工厂定义*teefactory工厂名称rasterexpressionevaluator\u结果点云稀释剂输入功能\u类型rasterexpressionevaluator\u结果点云功能\uuuuuuuuuuuu输出功能\u类型\uuviewme\uuuuuuu@tcl2(“rasterexpressionevaluator\u结果\u ec0cb3d\u 797a\u 4eac\u 1aec9bf687438\u thinpointcloud”)tcl2过程rasterexpressionevaluator\u恢复t_ec0c0b3d_797a_4eac_bfe0_1aec9bf687438_preparerater subsetstartrow subsetnoumrows subsetpartcol subsetnumcols set usedi[字符串等于-nocase$(fme_viewer app)fmedatainspector];如果{!$usedi fme_执行applyrasterrotation双线性;};设置doresample[字符串等于noreducation resample];set dosubset[string equal noreducation subset];设置多边界[字符串等于noreducation boundingboxonly];如果$dobounds fme _执行几何类型fme _polygon;}elseif$doresample$dosubset设置注释首先,我们需要给所有属性加前缀。这是因为我们要调用@rasterproperties,我们要确保它不会覆盖任何现有的属性。};设置kattrPrefix“.”;设置所有名称[fm_attributename];foreach oldname$allnames设置newname$kattrPrefix;追加newname$oldname;fme_renameattribute$newname$oldname;};执行光栅属性;如果$doresample设置oldnumcols[fme_getattribute _num_columns];设置oldNumRows[fm_getattribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置oldspacingy[fme_getattribute_spacing_y];设置kminnumcells 32;设置kmaxnumcells 512;设置注释只有当两个维度都大于最小num单元格时,我们才会重新采样,至少有一个大于最大值。};如果$oldNumRows>$kminNumCells&$oldNumCols>$kminNumCells&($oldNumRows>$kmaxNumCells$oldNumCols>$kmaxNumCells)设置newspacingX 1.0;将newspacingY设置为1.0;如果$oldNumRows>$oldNumCols设置注释如果行多于列,我们需要选择一个间距,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kmaxNumCells];设置newspacingx[expr 1.0*$newspacingy/$oldspacingy*$oldspacingx];设置注释现在我们需要检查这样做是否会导致列低于最小值。如果是这样,选择间距,这样我们只会下降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果$newnumcols<$kminnumcells设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];};}否则设置注释这与上述情况相同,但行和列的角色是相反的。};设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kmaxnumcells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];设置newNumRows[expr$oldNumRows*$oldSpacingy/$newSpacingy];如果$newNumRows<$kminNumCells设置newSpacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kminNumCells];设置newspacingx[expr 1.0*$newspacingy/$oldspacingy*$oldspacingx];};};fme_execute resamplegraster cell_size$newspacingx$newspacingy nearestneighbor;};}elseif$dosubset set comment获取可能是属性或常量的某些字符串的值。请注意,我们传递了正在使用的属性前缀,因为如果一个结果是一个属性,它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasternumrows[fme_getattribute_num_rows];设置rasternumcols[fm_getattribute_num_columns];设置注释仅当指定的开始位置实际在光栅内时才进行子集设置。};如果$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols设置注释现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果[expr$subsetStartRow+$subsetNumRows]>$rasterNumRows设置subsetNumRows[expr$rasterNumRows-$subsetStartRow];};如果[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};fme_execute substraster$substratstarrow$substratnumrows$substratstartcol$substratnumcols;};};设置comment删除@rasterproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_执行删除属性fme_regexp_match ^foreach oldname$allnames设置newname$kattrPrefix;追加newname$oldname;fme_renameattribute$旧名称$新名称;};};}工厂定义*Teefactory工厂名称RastereExpressionEvaluator_result_RasterSetter上输入功能_type RastereExpressionEvaluator_result_uuRasterFeatures_uuuuuuOutput功能_type_uuuviewme_uuuuuu@tcl2(“RastereExpressionEvaluator_result_EC0c0b3d_797a_4eac_bfe0_1aec9bf687438_Prepareraster{ {{ {{ {{ }“)现在将所有功能传送到记录器中,将其功能类型更改为变压器名称,以便他们能够很好地查看RasteexpressionEvaluator结果_ec0c0b3d_797a_4eac_bfe0_1aec9bf687438“U-VIS_Feat”类型更改要可视化的功能的功能类型。默认值_宏RasteexpressionEvaluator结果_ec0c0b333333a_4eac _bfe0 _1aec9bf687438“U-VIU”功能_类型RasteexpressionEvaluator特征类型RasteexpressionEvaluator特征类型更改要可视化的功能的功能类型。默认值_宏RasteexpressionEvaluator结果_结果_ec0c0c0一个_结果$(catmac)默认的_宏可视化工具_feature_file$(workspace_temp_dir)/$(safe_ffs_name).ffs default_宏可视化工具_create_spatial_i亚搏在线ndex no[pr]数据检查器将限制在win32上读取的最大功能数。因此,我们将相应地限制我们在此处记录的功能的数量,使用max_features_to_record directive.factory_def*recorderfectory factory_name rasterexpressionevaluator_result_recorder input feature_type_uuuviewme_uuwb_termination_feature yes@feature type(terminator_u@value(_wb_termination_xformer))输入功能_type_uuviewme_uuu@featureType($(RasteExpressionEvaluator_result_ec0c0b3d_797a_4eac_bfe0_1aec9bf687438_vis_feature_type))feature_file“$(Visualizer_feature_file)”create_spatial_index“$(Visualizer_create_spatial_index)”inspector“$(Visualizer_create_spatial_index)”fsc_schema fme_basename,varchar 二百五十五 模式记录直接记录到磁盘是最大功能到记录win32 2000000@删除属性(uuwb_out_feat_type_uuuuuu)输出未路由功能_type uuu nuke_me_uuuuuu@tcl2(“FME_statmessage 818059[FME_getattribute FME_template_feature_type]818060 818061 FME_warn”)输入功能_uu type uuu nuke_me_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuucTl(“如果[文件存在$(工作区temp_dir)]设置文件[glob-nocomplain-目录$(工作区temp_dir)-详细信息*.ffs];如果[长度$files]==1设置文件$(workspace_temp_dir)/附加文件[lindex$files 0];eval fme_execute system \173\042$(fme_home_unix)/fmeview \042/ownffs$thefile&\175;}elseif[长度$files]==0 catch文件删除-强制$(工作区临时目录)}else设置文件noext设置最后一个文件foreach filename[lsort$files]set filenoext[string trimright$filename.ffs];if[regexp(.*)uuu[0-9]*$$filenoext wholething filenoextbase]if$filenoextbase==$lastfile continue设置lastfile$filenoext;lappend filesnext$filenoext_eval fme_execute system \173\042$(fme_home_unix)/fmeview \042/ownffs$(workspace_temp_dir)$filesnext&\175;};};“)工厂定义*teefactory输入功能\u类型\u Nukeme__