#!#! #! #! #!#!#!#!#! #!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#!#!#! #!#!#!#! #!#! #!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!#! #! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#! #! #! #!#! #!#!#!#!#!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#! #! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!#!#! #!#!FME_PYTHON_VERSION 27 GUI IGNORE SourceDataset_LIDAR_1,LIDAR_IN_SEARCH_ENVELOPE_MINX_LIDAR_1,LIDAR_IN_SEARCH_ENVELOPE_MINY_LIDAR_1,LIDAR_IN_SEARCH_ENVELOPE_MAXX_LIDAR_1,LIDAR_IN_SEARCH_ENVELOPE_MAXY_LIDAR_1,DestDataset_USGS_DEM_1 #!start_header#!START_WB_HEADER READER_TYPE LIDAR READER_KEYWORD LIDAR_1 READER_GEN_DIRECTIVES READ_AS_POINT_CLOUD,Yes,USE_SEARCH_ENVELOPE,NO,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXY,0,SEARCH_ENVELOPE_MAXX,0,GROUP_BY_DATASET,No,SEARCH_ENVELOPE_MINX,0,CLIP_TO_ENVELOPE,YES,SEARCH_ENVELOPE_MINY,0,_EXTRA_DATASETS, C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2365785.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2365790.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2365795.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2370785.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2370790.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2370795.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2375785.las C: 文件 设置 dbagh My 文件 My FME Workspaces Experiments LIDAR 拉斯 Lake County 俄亥俄州 N2375790.las 、LIDAR_EXPOSE_FORMAT_ATTRS WRITER_TYPE MULTI_WRITER MULTI_WRITER_DATASET_ORDER BY_ID MULTI_WRITER_FIRST_WRITER_ID 0 MULTI_WRITER_TYPE{0} USGS_DEM MULTI_WRITER_KEYWORD{0} USGS_DEM_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "LIDAR_1" #! END_WB_HEADER #! START_SOURCE_HEADER LIDAR LIDAR_1 # ======================================================================= # The following GUI line prompts for a file to be used as the source LIDAR 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: #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {{$(SourceDataset)} != ""} { \ puts {DEFAULT_MACRO SourceDataset_LIDAR_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER LIDAR LIDAR_1 DEFAULT_MACRO SourceDataset_LIDAR_1 $(FME_MF_DIR)Quick Terrain Robert\325BenchTripleFault_static.las GUI MULTIFILE SourceDataset_LIDAR_1 LAS_Files(*.las)|*.las|All_files(*.*)|*.* Source ASPRS LAS File(s): LIDAR_1_READER_META_ATTRIBUTES fme_dataset fme_basename DEFAULT_MACRO LIDAR_IN_GROUP_BY_DATASET_LIDAR_1 No LIDAR_1_GROUP_BY_DATASET "$(LIDAR_IN_GROUP_BY_DATASET_LIDAR_1)" DEFAULT_MACRO LIDAR_IN_READ_AS_POINT_CLOUD_LIDAR_1 Yes LIDAR_1_READ_AS_POINT_CLOUD "$(LIDAR_IN_READ_AS_POINT_CLOUD_LIDAR_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 LIDAR_IN_SEARCH_ENVELOPE_MINX_LIDAR_1 0 LIDAR_1_SEARCH_ENVELOPE "$(LIDAR_IN_SEARCH_ENVELOPE_MINX_LIDAR_1)" GUI OPTIONAL FLOAT LIDAR_IN_SEARCH_ENVELOPE_MINX_LIDAR_1 Minimum X: # =========================================================================== DEFAULT_MACRO LIDAR_IN_SEARCH_ENVELOPE_MINY_LIDAR_1 0 LIDAR_1_SEARCH_ENVELOPE "$(LIDAR_IN_SEARCH_ENVELOPE_MINY_LIDAR_1)" GUI OPTIONAL FLOAT LIDAR_IN_SEARCH_ENVELOPE_MINY_LIDAR_1 Minimum Y: # =========================================================================== DEFAULT_MACRO LIDAR_IN_SEARCH_ENVELOPE_MAXX_LIDAR_1 0 LIDAR_1_SEARCH_ENVELOPE "$(LIDAR_IN_SEARCH_ENVELOPE_MAXX_LIDAR_1)" GUI OPTIONAL FLOAT LIDAR_IN_SEARCH_ENVELOPE_MAXX_LIDAR_1 Maximum X: # =========================================================================== DEFAULT_MACRO LIDAR_IN_SEARCH_ENVELOPE_MAXY_LIDAR_1 0 LIDAR_1_SEARCH_ENVELOPE "$(LIDAR_IN_SEARCH_ENVELOPE_MAXY_LIDAR_1)" GUI OPTIONAL FLOAT LIDAR_IN_SEARCH_ENVELOPE_MAXY_LIDAR_1 Maximum Y: # =========================================================================== # We do not have a soft clip to fall back on like native spatial index readers # so we need to perform hard clipping or nothing. By defaulting to clip here # we allow the choice to use a search envelope determine also that we are hard # clipping too otherwise no clipping will occur. No GUI options will be presented # in the settings box or the nav tree to enable a hard clip, rather the presence # of non-zero search envelope values will trigger hard clipping. DEFAULT_MACRO LIDAR_IN_CLIP_TO_ENVELOPE_LIDAR_1 YES LIDAR_1_CLIP_TO_ENVELOPE "$(LIDAR_IN_CLIP_TO_ENVELOPE_LIDAR_1)" # GUI OPTIONAL CHECKBOX CLIP_TO_ENVELOPE YES%NO Clip to Search Envelope LIDAR_1_DATASET "$(SourceDataset_LIDAR_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "USGS_DEM_1" #! END_WB_HEADER #! START_DEST_HEADER USGS_DEM USGS_DEM_1 # ============================================================================ # The following GUI line prompts for a directory to be used as the # the destination for the USGSDEM files. #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_USGS_DEM_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER USGS_DEM USGS_DEM_1 DEFAULT_MACRO DestDataset_USGS_DEM_1 c:\temp GUI DIRNAME DestDataset_USGS_DEM_1 Destination U.S. Geological Survey DEM Directory: DEFAULT_MACRO _DEM_TAB_FILE_GENERATION_USGS_DEM_1 no USGS_DEM_1_DATASET "$(DestDataset_USGS_DEM_1)" #! END_DEST_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)Mita, LAS to DEM.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 Enhanced FME_STROKE_MAX_DEVIATION 0 MAPPING_FILE_ID LAS DEM LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_LIDAR_1 LIDAR_1 DEFAULT_MACRO DATASET_KEYWORD_USGS_DEM_1 USGS_DEM_1 # ------------------------------------------------------------------------- LIDAR_1_READER_META_ATTRIBUTES fme_basename fme_feature_type # ----------------------------------------------------------------------------------------------------------- USGS_DEM_1_COORDINATE_SYSTEM UTM83-17 MULTI_READER_CONTINUE_ON_READER_FAILURE No # ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------》(Macro Workspace_name Mita)fmedatainspector#------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- include [if {[info endistest env(fme_temp)] && [file isDirectory $ env(fme_temp)]}} {set setgvisualizertemp $ env(fme_temp)} elseif {[info end end envist(temp)] && [file isDirectory $ env(temp)]} {set set gvisualizertemp $ env(temp)} elseif {elseif {$ tcl_platform {$ tcl_platform){set gvisualizertemp“/tmp”} else {set gvisualizertemp c:};regsub -all {[,&]} {$(workspace_name)} {_} wsname;设置gvisualizertemp $ gvisualizertemp/$ {wsname} _ [clock format [clock seconds] -format%h%m%s];将“ Macro Workspace_temp_dir $ gvisualizertemp”放置;Macro Visualizer_feature_file $(workspace_temp_dir)/inspector.ffs宏可visualizer_schema_file $(workspace_temp_dir)/inspector.fsc macro vistutizer_createe_create_spatial_spatial_spatial_spatial_index是----------------------------------------------- LIDAR_1_DEF LIDAR # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD LIDAR_1 INPUT FEATURE_TYPE * ROUTE LIDAR LIDAR_1::LIDAR TO FME_GENERIC ::LIDAR ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * LIDAR_1_MERGE_DEF LIDAR_1::LIDAR EXACT LIDAR # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "LIDAR (LIDAR_1) Splitter" INPUT FEATURE_TYPE LIDAR OUTPUT FEATURE_TYPE LIDAR_LIDAR_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- FACTORY_DEF * SurfaceModelFactory FACTORY_NAME RasterDEMGenerator INPUT POINTS FEATURE_TYPE LIDAR_LIDAR_1 INPUT POINTS FEATURE_TYPE PointCloudSplitter_SPLIT_0_IeGsmHA3G7g= TOLERANCE 0.0 SAMPLE_SPACING 1 1 INTERPOLATION_TYPE AUTO OUTPUT DEM_RASTER FEATURE_TYPE RasterDEMGenerator_DEM_RASTER @SupplyAttributes(fme_basename,RasterDEMGenerator) # ------------------------------------------------------------------------- INCLUDE [ if {($(FME_BUILD_NUM) < 5669) || [FME_ComponentIsLicensed -factory RasterClippingFactory]} { puts "MACRO RASTER_CLIPPER_IN *"; } else { puts "MACRO RASTER_CLIPPER_IN NOT_THIS_TIME"; } ] FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_2_ClipperCloner INPUT FEATURE_TYPE Clipper_2_ClipperCloner_DUMMY OUTPUT FEATURE_TYPE Clipper_2___ClippersForVector___ OUTPUT FEATURE_TYPE Clipper_2___ClippersForRaster___ FACTORY_DEF * TestFactory FACTORY_NAME Clipper_2_ClippeeFilter INPUT FEATURE_TYPE RasterDEMGenerator_DEM_RASTER INPUT FEATURE_TYPE Clipper_2_ClippeeFilter_DUMMY TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Clipper_2___VectorClippees___ OUTPUT PASSED FEATURE_TYPE Clipper_2___RasterClippees___ FACTORY_DEF $(RASTER_CLIPPER_IN) RasterClippingFactory FACTORY_NAME Clipper_2_Raster INPUT CLIPPER FEATURE_TYPE Clipper_2___ClippersForRaster___ INPUT CLIPPEE FEATURE_TYPE Clipper_2___RasterClippees___ MULTICLIP NO MERGE_CLIPPER_ATTRIBUTES No PRESERVE_CLIPPEE_EXTENTS NO OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper OUTPUT CLIPPED_INSIDE FEATURE_TYPE Clipper_2_CLIPPED_INSIDE OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper_2__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper_2") FACTORY_DEF * ClippingFactory FACTORY_NAME Clipper_2_Vector INPUT CLIPPER FEATURE_TYPE Clipper_2___ClippersForVector___ INPUT CLIPPEE FEATURE_TYPE Clipper_2___VectorClippees___ INPUT CLIPPEE FEATURE_TYPE Clipper_2___RasterClippees___ MULTICLIP NO CLIPPEE_ON_BOUNDARY INSIDE MERGE_CLIPPER_ATTRIBUTES No DO_NOT_AGGREGATE NO OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper OUTPUT CLIPPED_INSIDE FEATURE_TYPE Clipper_2_CLIPPED_INSIDE OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper_2__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper_2") OUTPUT NONPOLY_CLIPPER FEATURE_TYPE Clipper_2__delete__ @Tcl2("FME_LogMessage fme_warn 917352 Clipper_2") FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_2_Nuker INPUT FEATURE_TYPE Clipper_2__delete__ @Log("Offending feature was:") FACTORY_DEF * TeeFactory FACTORY_NAME "Clipper_2 CLIPPED_INSIDE Splitter" INPUT FEATURE_TYPE Clipper_2_CLIPPED_INSIDE OUTPUT FEATURE_TYPE Clipper_2_CLIPPED_INSIDE_0_KAtAzZJU/eY= OUTPUT FEATURE_TYPE Clipper_2_CLIPPED_INSIDE_1_guMQY59E/M0= # ------------------------------------------------------------------------- # Set the directive to add all the meta-attributes to the features. # We do this so users see all possible information in the viewed # features. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename # Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr {} { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {DEM_Raster} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] # Make the temporary directory that the FFS files will live in. FACTORY_DEF * CreationFactory FACTORY_NAME DEM_Raster_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME DEM_Raster_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ # Send raster, point cloud and vector features down different paths to prepare # them for viewing FACTORY_DEF * TestFactory FACTORY_NAME DEM_Raster_FeatureDirector INPUT FEATURE_TYPE Clipper_2_CLIPPED_INSIDE_0_KAtAzZJU/eY= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE DEM_Raster___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE DEM_Raster___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME DEM_Raster___FeatureDirector1 INPUT FEATURE_TYPE DEM_Raster___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE DEM_Raster___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE DEM_Raster___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME DEM_Raster_VectorSetterUpper INPUT FEATURE_TYPE DEM_Raster___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ # Point Cloud Features Might Need to be thinned # Note that we don't call the ThinPointCloud function directly, but rather # do it through TCL. This should allow this transformer to be used with a # Desktop license, even though ThinPointCloud requires Professional. Tcl2 proc DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_thinPointCloud {} { FME_Execute ThinPointCloud NO_THINNING ;} FACTORY_DEF * TeeFactory FACTORY_NAME DEM_Raster___PointCloudThinner INPUT FEATURE_TYPE DEM_Raster___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_thinPointCloud") Tcl2 proc DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{!$ udderi} {fme_execute appliprastration biinear;};设置doresample [字符串等于{noreduction} {respample}];设置dosubset [字符串等于{Noreduction} {subset}];设置dobounds [string等于{noreduction} {boundingBoxonly}];如果{$ dobounds} {fme_execute geometrytype fme_polygon;} elseif {$ doresample ||$ dosubset} {设置注释{首先,我们需要将所有属性前缀。 This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME DEM_Raster_RasterSetterUpper INPUT FEATURE_TYPE DEM_Raster___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_prepareRaster { } { } { } { }") # Now route all the features into the recorder, changing their # feature type to the transformer name so that they view nicely # DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_VIS_FEAT_TYPE changes the feature types # of the features being visualized. DEFAULT_MACRO DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_VIS_FEAT_TYPE DEM_Raster$(CATMAC) DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(亚搏在线SAFE_FFS_NAME).ffs DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO FACTORY_DEF * RecorderFactory FACTORY_NAME DEM_Raster_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(DEM_Raster_98273606_f94e_40ac_a807_3af32fcaf6932_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)“ create_spatial_index” $(tunailizer_create_spatial_index)“ nevestor” $(tunailizer_create_spatial_index)” fsc_schema fme_basename,varchar 255 模式记录# ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC Clipper_2_CLIPPED_INSIDE_1_guMQY59E/M0= TO USGS_DEM __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0, 供应工作 编码 __wb_out_feat_type__ dem coortion_system utm83-17量学功能_type_attribute __wb_out_feat_feat_type__ __输出retuted farture_type * utpount not_routed features_type __nuke_me__ @tcl2(tcl2)----------------------------------------------------------------------------------------- factory_def * teefactory factory_name“最终输出nuker”输入feature_type __nuke_me__#---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL(“如果[文件存在{$(workspace_temp_dir)}](workspace_temp_dir)/}; append thefile [lindex $ files 0]; eval fme_execute system \ 173 \ 042 $(fme_home_unix)/fmedatainspector \ 042 -Visualizer-single-applicizer-single-application-delete-delete-delete-on-on-close-no-no-no-no-no-no-no-no-no-no-no-sirce-no-no-sirce-prompt -f ffs $ thefile&\ 175;} elseif {[llength $ files] == 0} {catch {file delete -force {$(workspace_temp_dir)}}};} else {set filesnoext {};设置LastFile {};foreach {filename} [lsort $ files] {set fileNoext [string trimright $ filename {.ffs}];如果[regexp {(。设置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 INPUT FEATURE_TYPE __NUKEME__ # ------------------------------------------------------------------------- USGS_DEM_1_DEF DEM dem_tab_file_generation no