# !# ! # ! # ! # !# !# !# !# !# !# !# !# !# !# !# ! # !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# ! # !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# ! # ! # !# !# !# ! # ! # !# !# !# ! # !# !# ! # !

Add alpha channel

" POSITION="1693.2717975222981 1467.7457918256919" TOP_LEFT="1693.2717975222981 1467.7457918256919" BOTTOM_RIGHT="1692.2717975222981 1468.7457918256919" BOUNDING_RECT="1693.2717975222981 1467.7457918256919 -1 -1" ORDER="500000000000057" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="53">
# !

Mosaick using alpha

" POSITION="2919.7794377943783 1464.6207605753791" TOP_LEFT="2919.7794377943783 1464.6207605753791" BOTTOM_RIGHT="3349.7794377943783 1465.6207605753791" BOUNDING_RECT="2919.7794377943783 1464.6207605753791 430 -1" ORDER="500000000000059" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="9">
# !

Remove alpha channel

" POSITION="3497.9102191021911 1461.8889688896884" TOP_LEFT="3497.9102191021911 1461.8889688896884" BOTTOM_RIGHT="3496.9102191021911 1462.8889688896884" BOUNDING_RECT="3497.9102191021911 1461.8889688896884 -1 -1" ORDER="500000000000060" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="11">
# !

Because we set the alpha to the brightness, the brighter areas will have more influence over the values at the boundaries, which should lead to a cleaner transition between the adjoining images.

" POSITION="2806.2780627806287 1036.4914792825662" TOP_LEFT="2806.2780627806287 1036.4914792825662" BOTTOM_RIGHT="3740.6624066240665 806.48947926256596" BOUNDING_RECT="2806.2780627806287 1036.4914792825662 934.38434384343782 230.0020000200002" ORDER="500000000000061" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="9">
# !

Set alpha value to average brightness

" POSITION="2331.2733127331267 1505.2461668294418" TOP_LEFT="2331.2733127331267 1505.2461668294418" BOTTOM_RIGHT="2761.2733127331267 1506.2461668294418" BOUNDING_RECT="2331.2733127331267 1505.2461668294418 430 -1" ORDER="500000000000058" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="17">
# !
# ! # !# ! # !# ! # ! # !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# ! # !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# ! # !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# ! # !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# !# ! # !# !# !# !# !# !# !# !# !# !0;A1;A2;int8A0+A1+A23""># !# !# !# !# !# !# ! # !# !# !# !# !# !# ! # !# ! # !# ! # !# ! # !# !
FME_PYTHON_VERSION 27 GUI忽略SourceDataset_JPEG2000_1、JPEG2000_IN_USE_SEARCH_ENVELOPE_JPEG2000_1 JPEG2000_IN_SEARCH_ENVELOPE_MINX_JPEG2000_1、JPEG2000_IN_SEARCH_ENVELOPE_MINY_JPEG2000_1 JPEG2000_IN_SEARCH_ENVELOPE_MAXX_JPEG2000_1, JPEG2000_IN_SEARCH_ENVELOPE_MAXY_JPEG2000_1, JPEG2000_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_JPEG2000_1, JPEG2000_IN_CLIP_TO_ENVELOPE_JPEG2000_1, JPEG2000_IN_JPEG2000_RDR_ADV_PARM_GROUP_JPEG2000_1, JPEG2000_IN_PREFER_FILE_CS_UNITS_JPEG2000_1, JPEG2000_IN_READ_OFFSETS_IN_CS_UNITS_JPEG2000_1 JPEG2000_IN_NETWORK_AUTHENTICATION_JPEG2000_1 DEFAULT_MACRO SourceDataset_JPEG2000_2 GUI多文件SourceDataset_JPEG2000_2 JPEG2000_Files (* .jp2; * .j2k; * .jpf; * .jpx; * .jpm; * .jp2000; * .jp2k; * .jpp) | * .jp2; * .j2k; * .jpf; * .jpx; * .jpm; * .jp2000; * .jp2k; * .jpp | All_Files(*) | *源JPEG 2000文件:包括(如果{{$ (SourceDataset_JPEG2000_2)} = = {}} {puts_real{参数“SourceDataset_JPEG2000_2”必须有一个值。};退出1;};)# !START_HEADER # !MULTI_READER_KEYWORD{0} JPEG2000_1 multi_reader_gen_{0} SEARCH_ENVELOPE_MAXX,0,GROUP_BY_DATASET,No, jpeg2000_e_format_attrs,USE_SEARCH_ENVELOPE, No, _EXTRA_DATASETS,C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_2_3_0001.jp2 C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_2_4_0001.jp2 C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_2_5_0001.jp2 C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_79_2_0001_2.jp2 C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_79_3_0001.jp2 C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_79_4_0001.jp2 C: 用户 j_gibert 下载 光栅 2 FRAD045_3P_292_9_0001.jp2 SEARCH_ENVELOPE_MINX 0, EXPOSE_ATTRS_GROUP CLIP_TO_ENVELOPE,不,READ_OFFSETS_IN_CS_UNITS,不,JPEG2000_RDR_ADV_PARM_GROUP, SEARCH_ENVELOPE_MAXY, 0 SEARCH_ENVELOPE_COORDINATE_SYSTEM, _MERGE_SCHEMAS,是的,SEARCH_ENVELOPE_MINY, 0, PREFER_FILE_CS_UNITS,是的,READER_META_ATTRIBUTES fme_dataset WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET NULL #!END_WB_HEADER # !宏WB_KEYWORD“JPEG2000_1”#!END_WB_HEADER # !START_SOURCE_HEADER如JPEG2000 JPEG2000_1 # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = #以下GUI行提示输入一个文件作为源如JPEG2000文件。用户输入存储在宏中,然后宏用于定义要读取的数据集#。生成这个映射文件的数据集是:#!END_SOURCE_HEADER # !START_WB_HEADER DEFAULT_MACRO SourceDataset包含[if {{$(SourceDataset)} != ""}{\放{DEFAULT_MACRO SourceDataset_JPEG2000_1 $(SourceDataset)} \} #!END_WB_HEADER # ! START_SOURCE_HEADER JPEG2000 JPEG2000_1 DEFAULT_MACRO SourceDataset_JPEG2000_1 $(SourceDataset_JPEG2000_2) GUI MULTIFILE SourceDataset_JPEG2000_1 JPEG2000_Files(*.jp2;*.j2k;*.jpf;*.jpx;*.jpm;*.jp2000;*.jp2k;*.jpp)|*.jp2;*.j2k;*.jpf;*.jpx;*.jpm;*.jp2000;*.jp2k;*.jpp|All_Files(*)|* Source JPEG 2000 File(s): DEFAULT_MACRO JPEG2000_IN_READER_META_ATTRIBUTES_JPEG2000_1 fme_dataset fme_basename JPEG2000_1_READER_META_ATTRIBUTES "$(JPEG2000_IN_READER_META_ATTRIBUTES_JPEG2000_1)" DEFAULT_MACRO JPEG2000_IN_GROUP_BY_DATASET_JPEG2000_1 No JPEG2000_1_GROUP_BY_DATASET "$(JPEG2000_IN_GROUP_BY_DATASET_JPEG2000_1)" DEFAULT_MACRO JPEG2000_IN_EXPOSE_ATTRS_GROUP_JPEG2000_1 JPEG2000_1_EXPOSE_ATTRS_GROUP "$(JPEG2000_IN_EXPOSE_ATTRS_GROUP_JPEG2000_1)" # Include this file in source setting section to add external search envelope processing # Zero as a default means we don't do any search -- this makes workbench happier DEFAULT_MACRO JPEG2000_IN_USE_SEARCH_ENVELOPE_JPEG2000_1 NO JPEG2000_1_USE_SEARCH_ENVELOPE "$(JPEG2000_IN_USE_SEARCH_ENVELOPE_JPEG2000_1)" GUI ACTIVEDISCLOSUREGROUP JPEG2000_IN_USE_SEARCH_ENVELOPE_JPEG2000_1 JPEG2000_IN_SEARCH_ENVELOPE_MINX_JPEG2000_1%JPEG2000_IN_SEARCH_ENVELOPE_MINY_JPEG2000_1%JPEG2000_IN_SEARCH_ENVELOPE_MAXX_JPEG2000_1%JPEG2000_IN_SEARCH_ENVELOPE_MAXY_JPEG2000_1%JPEG2000_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_JPEG2000_1%JPEG2000_IN_CLIP_TO_ENVELOPE_JPEG2000_1%JPEG2000_IN_SEARCH_METHOD%JPEG2000_IN_SEARCH_METHOD_FILTER%JPEG2000_IN_SEARCH_ORDER%JPEG2000_IN_SEARCH_FEATURE%JPEG2000_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope # =========================================================================== GUI LOOKUP JPEG2000_IN_SEARCH_ENVELOPE_MINX_JPEG2000_1 0 JPEG2000_1_SEARCH_ENVELOPE "$(JPEG2000_IN_SEARCH_ENVELOPE_MINX_JPEG2000_1)"GUI OPTIONAL FLOAT JPEG2000_IN_SEARCH_ENVELOPE_MINX_JPEG2000_1 Minimum X: # =========================================================================== GUI LOOKUP JPEG2000_IN_SEARCH_ENVELOPE_MINY_JPEG2000_1 0 JPEG2000_1_SEARCH_ENVELOPE "$(JPEG2000_IN_SEARCH_ENVELOPE_MINY_JPEG2000_1)"GUI OPTIONAL FLOAT JPEG2000_IN_SEARCH_ENVELOPE_MINY_JPEG2000_1 Minimum Y: # =========================================================================== GUI LOOKUP JPEG2000_IN_SEARCH_ENVELOPE_MAXX_JPEG2000_1 0 JPEG2000_1_SEARCH_ENVELOPE "$(JPEG2000_IN_SEARCH_ENVELOPE_MAXX_JPEG2000_1)"GUI OPTIONAL FLOAT JPEG2000_IN_SEARCH_ENVELOPE_MAXX_JPEG2000_1 Maximum X: # =========================================================================== GUI LOOKUP JPEG2000_IN_SEARCH_ENVELOPE_MAXY_JPEG2000_1 0 JPEG2000_1_SEARCH_ENVELOPE "$(JPEG2000_IN_SEARCH_ENVELOPE_MAXY_JPEG2000_1)"GUI OPTIONAL FLOAT JPEG2000_IN_SEARCH_ENVELOPE_MAXY_JPEG2000_1 Maximum Y: # =========================================================================== GUI LOOKUP JPEG2000_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_JPEG2000_1 , DEFAULT_MACRO jpeg2000_in_search_coordinope_coordinate_jpeg2000_1 JPEG2000_1_SEARCH_ENVELOPE "$(JPEG2000_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_JPEG2000_1)"GUI OPTIONAL COORDSYS JPEG2000_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_JPEG2000_1 Search Envelope Coordinate System: # =========================================================================== # BUG18999: We now have a soft clip to fall back on like native spatial index # thus we are reintroducing the clip to envelop as an option for users. # Defualt to soft clip as per the existing database readers we are emulating GUI LOOKUP JPEG2000_IN_CLIP_TO_ENVELOPE_JPEG2000_1 NO JPEG2000_1_CLIP_TO_ENVELOPE "$(JPEG2000_IN_CLIP_TO_ENVELOPE_JPEG2000_1)"GUI OPTIONAL CHECKBOX JPEG2000_IN_CLIP_TO_ENVELOPE_JPEG2000_1 YES%NO Clip to Search Envelope DEFAULT_MACRO JPEG2000_IN_JPEG2000_RDR_ADV_PARM_GROUP_JPEG2000_1 GUI OPTIONAL DISCLOSUREGROUP JPEG2000_IN_JPEG2000_RDR_ADV_PARM_GROUP_JPEG2000_1 JPEG2000_IN_PREFER_FILE_CS_UNITS_JPEG2000_1%JPEG2000_IN_READ_OFFSETS_IN_CS_UNITS_JPEG2000_1 Advanced DEFAULT_MACRO JPEG2000_IN_PREFER_FILE_CS_UNITS_JPEG2000_1 Yes JPEG2000_1_PREFER_FILE_CS_UNITS "$(JPEG2000_IN_PREFER_FILE_CS_UNITS_JPEG2000_1)" GUI CHOICE JPEG2000_IN_PREFER_FILE_CS_UNITS_JPEG2000_1 Yes%No Prefer File Coordinate System Units: DEFAULT_MACRO JPEG2000_IN_READ_OFFSETS_IN_CS_UNITS_JPEG2000_1 No JPEG2000_1_READ_OFFSETS_IN_CS_UNITS "$(JPEG2000_IN_READ_OFFSETS_IN_CS_UNITS_JPEG2000_1)" GUI CHOICE JPEG2000_IN_READ_OFFSETS_IN_CS_UNITS_JPEG2000_1 Yes%No Offsets in Coordinate System Units: # =========================================================================== DEFAULT_MACRO JPEG2000_IN_NETWORK_AUTHENTICATION_JPEG2000_1 JPEG2000_1_NETWORK_AUTHENTICATION "$(JPEG2000_IN_NETWORK_AUTHENTICATION_JPEG2000_1)" GUI OPTIONAL AUTHENTICATOR JPEG2000_IN_NETWORK_AUTHENTICATION_JPEG2000_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # ============================================================================ DEFAULT_MACRO JPEG2000_IN_ATTRIBUTE_READING_JPEG2000_1 ALL JPEG2000_1_ATTRIBUTE_READING "$(JPEG2000_IN_ATTRIBUTE_READING_JPEG2000_1)" # ============================================================================ JPEG2000_1_GENERATE_FME_BUILD_NUM 18528 JPEG2000_1_DATASET "$(SourceDataset_JPEG2000_1)" #! END_SOURCE_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)FuzzyMosaic.log" LOG_APPEND NO LOG_FILTER_MASK -1 LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto FME_GEOMETRY_HANDLING Enhanced FME_STROKE_MAX_DEVIATION 0 DEFAULT_MACRO DATASET_KEYWORD_JPEG2000_1 JPEG2000_1 # ------------------------------------------------------------------------- JPEG2000_1_READER_META_ATTRIBUTES fme_feature_type fme_basename # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME FuzzyMosaic MACRO FME_VIEWER_APP fmedatainspector # ------------------------------------------------------------------------- INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES # ------------------------------------------------------------------------- JPEG2000_1_DEF JPEG2000 # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD $(DATASET_KEYWORD_JPEG2000_1) INPUT FEATURE_TYPE * ROUTE JPEG2000 JPEG2000_1::JPEG2000 multi_reader_keyword,$(DATASET_KEYWORD_JPEG2000_1) TO FME_GENERIC ::JPEG2000 ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * JPEG2000_1_MERGE_DEF JPEG2000_1::JPEG2000 EXACT JPEG2000 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "JPEG2000 (JPEG2000_1) Splitter" INPUT FEATURE_TYPE JPEG2000 OUTPUT FEATURE_TYPE JPEG2000_JPEG2000_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- INCLUDE [ if {[string equal { }{ {}}{放置{宏RGBA_TO_RGB_ARG DROPALPHA}} else{放置{宏RGBA_TO_RGB_ARG }};如果{[string = {CREATEOPAQUEALPHA}} }}{放置{宏RGB_TO_RGBA_ARG CREATEOPAQUEALPHA}}其他{放置{宏RGB_TO_RGBA_ARG CREATEOPAQUEALPHA}};如果{[string = {TYPESCALE}} {}}{放置{MACRO COLOR_TO_COLOR_ARG TYPESCALE}}其他{放置{宏COLOR_TO_COLOR_ARG TYPESCALE}};如果{[string = {DATASCALE} { {}}{放置{MACRO NUMERIC_TO_COLOR_ARG DATASCALE}}其他{放置{MACRO NUMERIC_TO_COLOR_ARG DATASCALE};如果{[string = {] }{ {}}{放置{宏COLOR_TO_NUMERIC_ARG BOUNDED_CAST}}其他{放置{宏COLOR_TO_NUMERIC_ARG }};如果{[string = {] }{ {}}{放置{MACRO NUMERIC_TO_NUMERIC_ARG BOUNDED_CAST}}其他{放置{MACRO NUMERIC_TO_NUMERIC_ARG }};如果{[string = {ROUND} { {}} {put {MACRO FLOAT_TO_INTEGER_ARG ROUND}}其他{put {MACRO FLOAT_TO_INTEGER_ARG ROUND}};放置{MACRO MANY_TO_ONE_ARG AVERAGE};]FACTORY_DEF * TeeFactory FACTORY_NAME RasterInterpretationCoercer_2输入FEATURE_TYPE JPEG2000_JPEG2000_1输出FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes (FME_STRICT、___fme_rejection_code___ fme_rejection_code) @ReinterpretRaster(拒绝的、光栅、RGBA32 (MANY_TO_ONE_ARG)美元,美元(RGBA_TO_RGB_ARG),美元(COLOR_TO_COLOR_ARG), (COLOR_TO_NUMERIC_ARG)美元,美元(NUMERIC_TO_COLOR_ARG), (NUMERIC_TO_NUMERIC_ARG)美元,美元(FLOAT_TO_INTEGER_ARG),$ (RGB_TO_RGBA_ARG)) FACTORY_DEF * TestFactory FACTORY_NAME RasterInterpretationCoercer_2_Rejector输入FEATURE_TYPE ___TOREJECTOR___测试@ value (fme_rejection_code) ! = "输出失败FEATURE_TYPE RasterInterpretationCoercer_2_OUTPUT @RenameAttributes (FME_STRICT, fme_rejection_code ___fme_rejection_code___) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF {*} RasterEvaluationFactory FACTORY_NAME RasterExpressionEvaluator FEATURE_TYPE输入保留;PRESERVE;PRESERVE;ALPHA8“EXPRESSION_LIST”A 0 ; 1 ; 2 ;int8 一个 0 +一个 1 +一个 2 3. “FORCE_FLOAT_DIVISION是的REJECT_INVALID_FEATURES是的输出结果FEATURE_TYPE RasterExpressionEvaluator_RESULT # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF {*} RasterMosaicFactory FACTORY_NAME RasterMosaicker输入FEATURE_TYPE RasterExpressionEvaluator_RESULT ACCUMULATE_ATTRIBUTES LIST_ATTRS_TO_INCLUDE{之一 }LIST_ATTRS_TO_INCLUDE_MODE OVERLAPPING_VALUES composite_using_alpha INTERPOLATION_TYPE_NAME NearestNeighbor SNAPPING_TYPE重新取样MERGE_PALETTES是的REJECT_INVALID_FEATURES是的输出扫描线FEATURE_TYPE RasterMosaicker_OUTPUT # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -包括(如果= {DROPALPHA}{{[字符串 {}}{放置{宏RGBA_TO_RGB_ARG DROPALPHA}} else{放置{宏RGBA_TO_RGB_ARG DROPALPHA}};如果{[string = {] }{ }}{放置{宏RGB_TO_RGBA_ARG CREATEOPAQUEALPHA}}其他{放置{宏RGB_TO_RGBA_ARG }};如果{[string = {TYPESCALE}} {}}{放置{MACRO COLOR_TO_COLOR_ARG TYPESCALE}}其他{放置{宏COLOR_TO_COLOR_ARG TYPESCALE}};如果{[string = {DATASCALE} { {}}{放置{MACRO NUMERIC_TO_COLOR_ARG DATASCALE}}其他{放置{MACRO NUMERIC_TO_COLOR_ARG DATASCALE};如果{[string = {] }{ {}}{放置{宏COLOR_TO_NUMERIC_ARG BOUNDED_CAST}}其他{放置{宏COLOR_TO_NUMERIC_ARG }};如果{[string = {] }{ {}}{放置{MACRO NUMERIC_TO_NUMERIC_ARG BOUNDED_CAST}}其他{放置{MACRO NUMERIC_TO_NUMERIC_ARG }};如果{[string = {ROUND} { {}} {put {MACRO FLOAT_TO_INTEGER_ARG ROUND}}其他{put {MACRO FLOAT_TO_INTEGER_ARG ROUND}};放置{MACRO MANY_TO_ONE_ARG AVERAGE};]FACTORY_DEF * TeeFactory FACTORY_NAME RasterInterpretationCoercer输入FEATURE_TYPE RasterMosaicker_OUTPUT输出FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes (FME_STRICT、___fme_rejection_code___ fme_rejection_code) @ReinterpretRaster(拒绝的、光栅、RGB24 (MANY_TO_ONE_ARG)美元,美元(RGBA_TO_RGB_ARG),美元(COLOR_TO_COLOR_ARG), (COLOR_TO_NUMERIC_ARG)美元,美元(NUMERIC_TO_COLOR_ARG), (NUMERIC_TO_NUMERIC_ARG)美元,美元(FLOAT_TO_INTEGER_ARG),$ (RGB_TO_RGBA_ARG)) FACTORY_DEF * TestFactory FACTORY_NAME RasterInterpretationCoercer_Rejector输入FEATURE_TYPE ___TOREJECTOR___测试@ value (fme_rejection_code) ! = "输出失败FEATURE_TYPE RasterInterpretationCoercer_OUTPUT @RenameAttributes (FME_STRICT, fme_rejection_code ___fme_rejection_code___) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #假设是工作区临时dir已经设置和创建。参见ControlDefs .cpp::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR包含[set safeName "[regsub -all 亚搏在线{[^a-zA-Z0-9]} {raster解释tationcocer_2_output} _]_[expr round(rand() * 1000000)]_[时钟点击-毫秒]";输入“宏SAFE_FFS亚搏在线_NAME $safeName”;]FACTORY_DEF {*} InspectorFactory FACTORY_NAME RasterInterpretationCoercer_2_Output_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS输入FEATURE_TYPE RasterInterpretationCoercer_OUTPUT GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY {} GROUP_ATTRIBUTE_PREFIX {RasterInterpretationCoercer_2_Output} RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING输出结果FEATURE_TYPE __viewme__ #现在路线的所有特性到录音机,将它们的# feature类型更改为transformer名称,这样它们就可以很好地查看DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME)。亚搏在线数据检查器将限制它在WIN32上读取的特性的最大数量,因此我们将相应地限制这里使用MAX_FEATURES_TO_RECORD指令记录的特性的数量。FACTORY_DEF * RecorderFactory FACTORY_NAME RasterInterpretationCoercer_2_Output_Recorder COMMAND_PARM_EVALUATION SINGLE_PASS输入FEATURE_TYPE __viewme__ _wb_termination_feature是的@FeatureType (TERMINATOR_@Value (_wb_termination_xformer))输入FEATURE_TYPE __viewme__ @FeatureType (@ value (__inspector_feature_type_attr__)) @RemoveAttributes (__inspector_feature_type_attr__) FEATURE_FILE " $ (VISUALIZER_FEATURE_FILE) " STORE_SCANNED_SCHEMA YES CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA fme_basename,varchar 255 模式记录STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK是的MAX_FEATURES_TO_RECORD WIN32 2000000 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF * RoutingFactory FACTORY_NAME“目的地功能类型路由相关器”COMMAND_PARM_EVALUATION SINGLE_PASS输入FEATURE_TYPE * FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__输出路由FEATURE_TYPE *输出NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2 (“FME_StatMessage 818059 [FME_GetAttributefme_template_feature_type] 818060 818061 fme_warn”) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF * TeeFactory FACTORY_NAME”最终输出核武器”输入FEATURE_TYPE __nuke_me__ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF * CreationFactory FACTORY_NAME VisualizerProcessor CREATE_AT_END输出FEATURE_TYPE __NUKEME__ @TCL(“如果[文件存在{$ (WORKSPACE_TEMP_DIR)}]{设置文件[水珠-nocomplain目录{$ (WORKSPACE_TEMP_DIR)}反面* .ffs];如果{[llength $files] == 1}{设置文件{$(WORKSPACE_TEMP_DIR)/};追加文件[lindex $files 0];eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042—visualizer—单一应用程序—delete-on-close—no-source-prompt—f FFS \042$theFile\042 & \175;} elseif {[llength $files] == 0} {catch {file delete -force {$(WORKSPACE_TEMP_DIR)}};} else {set filesNoExt {};设置lastfile {};设置文件名ext [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") FACTORY_DEF * TeeFactory FACTORY_NAME VisualizerCleaner INPUT FEATURE_TYPE __NUKEME__