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

Dissolve by ZoneCategory

" POSITION="-810.384 -13.7482" TOP_LEFT="-810.384 -13.7482" BOTTOM_RIGHT="-811.384 -12.7482" BOUNDING_RECT="-810.384 -13.7482 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="46">
#!
#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#! #!#!#!#! #!#! #!#! #! #! #!#!#! #!

Set the input feature type

" POSITION="-2353.05 264.009" TOP_LEFT="-2353.05 264.009" BOTTOM_RIGHT="-2354.05 265.009" BOUNDING_RECT="-2353.05 264.009 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="11">
#!

Extract first feature

" POSITION="-1660.86 264.009" TOP_LEFT="-1660.86 264.009" BOTTOM_RIGHT="-1661.86 265.009" BOUNDING_RECT="-1660.86 264.009 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="6">
#!

Create temp location

" POSITION="-1065.23 264.009" TOP_LEFT="-1065.23 264.009" BOTTOM_RIGHT="-1066.23 265.009" BOUNDING_RECT="-1065.23 264.009 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="3">
#!

Store temp location in variable

" POSITION="-575.472 264.009" TOP_LEFT="-575.472 264.009" BOTTOM_RIGHT="-576.472 265.009" BOUNDING_RECT="-575.472 264.009 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="7">
#!

Read temp location from variable

" POSITION="-594.222 -244.122" TOP_LEFT="-594.222 -244.122" BOTTOM_RIGHT="-595.222 -243.122" BOUNDING_RECT="-594.222 -244.122 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="8">
#!

Create schema from first feature

" POSITION="115.72 297.257" TOP_LEFT="115.72 297.257" BOTTOM_RIGHT="114.72 298.257" BOUNDING_RECT="115.72 297.257 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="10">
#!

Write to temp gdb

" POSITION="184.471 -464.258" TOP_LEFT="184.471 -464.258" BOTTOM_RIGHT="183.471 -463.258" BOUNDING_RECT="184.471 -464.258 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="2">
#!

Fix path slashes

" POSITION="927.134 297.257" TOP_LEFT="927.134 297.257" BOTTOM_RIGHT="926.134 298.257" BOUNDING_RECT="927.134 297.257 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="9">
#!

Get group by attributes

" POSITION="911.038 -244.122" TOP_LEFT="911.038 -244.122" BOTTOM_RIGHT="910.038 -243.122" BOUNDING_RECT="911.038 -244.122 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="27">
#!

Run Arcpy Dissolve on feature class

" POSITION="1419.98 297.257" TOP_LEFT="1419.98 297.257" BOTTOM_RIGHT="1418.98 298.257" BOUNDING_RECT="1419.98 297.257 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="4">
#!

Read back output feature class

" POSITION="2180.8 297.257" TOP_LEFT="2180.8 297.257" BOTTOM_RIGHT="2179.8 298.257" BOUNDING_RECT="2180.8 297.257 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="5">
#!

import fme

import fmeobjects

import arcpy


def processFeature(feature):

# Get dissolve FC and settings from feature attributes

dataset = feature.getAttribute('_dataset')

dissolveFields = feature.getAttribute('_Group_Attrs')

arcpy.env.workspace = dataset


# Set local variables

inFeatures = "pre_dissolve"

outFeatureClass = dataset + "/dissolved"


# Execute Dissolve using group by attributes as Dissolve Fields

arcpy.Dissolve_management(inFeatures, outFeatureClass, dissolveFields, "", "MULTI_PART", "DISSOLVE_LINES")

" POSITION="911.038 -408.75" TOP_LEFT="911.038 -408.75" BOTTOM_RIGHT="910.038 -407.75" BOUNDING_RECT="911.038 -408.75 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="4">
#!

Remove temporary attributes

" POSITION="2840.65 297.257" TOP_LEFT="2840.65 297.257" BOTTOM_RIGHT="2839.65 298.257" BOUNDING_RECT="2840.65 297.257 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="42">
#!
#! #!#! #!#!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!,FILEGDB_FME_CONNECTION_GROUP,"OPTIONAL NAMEDGROUP DATASET%NAMED_CONNECTION%OVERWRITE_GEODB%DATASET_TEMPLATE",FILEGDBDatabaseConnection,FILEGDB_DATASET_TEMPLATE,"OPTIONAL SOURCE_GEODATABASE_CFG SWIZZLER:NO",FILEGDBTemplateFileGeodatabase:,FILEGDB_COORDINATE_SYSTEM_GRANULARITY,"OPTIONAL NO_EDIT TEXT",FILEGDB,FILEGDB_OVERWRITE_GEODB,"OPTIONAL ACTIVECHECK YES%NO,DATASET_TEMPLATE",FILEGDBOverwriteExistingGeodatabase:">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!SchemaAttributes,FILEGDB_FILEGDB_EXPOSE_FORMAT_ATTRS,"OPTIONAL LITERAL EXPOSED_ATTRS FILEGDB%Source",FILEGDBAdditionalAttributestoExpose:,FILEGDB_USE_SEARCH_ENVELOPE,"OPTIONAL ACTIVEDISCLOSUREGROUP SEARCH_ENVELOPE_MINX%SEARCH_ENVELOPE_MINY%SEARCH_ENVELOPE_MAXX%SEARCH_ENVELOPE_MAXY%SEARCH_ENVELOPE_COORDINATE_SYSTEM%CLIP_TO_ENVELOPE%SEARCH_METHOD%SEARCH_METHOD_FILTER%SEARCH_ORDER%SEARCH_FEATURE%DUMMY_SEARCH_ENVELOPE_PARAMETER",FILEGDBUseSearchEnvelope,FILEGDB_CLIP_TO_ENVELOPE,"OPTIONAL CHECKBOX YES%NO",FILEGDBCliptoSearchEnvelope,FILEGDB_FME_CONNECTION_GROUP,"OPTIONAL NAMEDGROUP DATASET%NAMED_CONNECTION",FILEGDBDatabaseConnection,FILEGDB_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS,"OPTIONAL NO_EDIT TEXT",FILEGDB">#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#! #! #!#! #!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!
#!This transformer adds both exposed and unexposed attributes to a feature-based schema, with appropriate data types.


For example: if a feature has the following attributes:


Attribute(boolean) : `mybool' has value `Yes'

Attribute(32 bit integer): `myint' has value `12'

Attribute(64 bit real) : `myreal' has value `12.965'


the following list attributes will be added:


Attribute(string) : `attribute{0}.fme_data_type' has value `fme_boolean'

Attribute(encoded: utf-8): `attribute{0}.name' has value `mybool'

Attribute(string) : `attribute{1}.fme_data_type' has value `fme_int32'

Attribute(encoded: utf-8): `attribute{1}.name' has value `myint'

Attribute(string) : `attribute{2}.fme_data_type' has value `fme_real64'

Attribute(encoded: utf-8): `attribute{2}.name' has value `myreal'


The transformer also gives users the option to exclude certain attributes based on name or prefix, and automatically excludes all "fme_" attributes.

" fme_process_count="NO_PARALLELISM" fme_process_group_by="" usage="

Input Ports


Features containing attributes for which a schema definition is required.


Output Ports


All features are output. Attributes which have been selected to be excluded are removed from the feature. The list containing the schema of the feature is added to each feature.


Parameters


Attributes to Exclude


A selected set of attributes that will be excluded from the generated schema list and removed from the feature.


Prefixes to Exclude


A comma-delimited list of prefixes for attributes that are to be excluded from the generated schema list and removed from the feature. Regular expressions are not supported. For example: "date" will exclude any attributes that start with the letters "date" e.g. date_created, dateupdated


Sort Attributes


(Ascending, Descending, None) Set this parameter to alphabetically sort output attributes.


Usage Notes


The feature based schema can be passed to any writer that it set to Dynamic Mode and used with the "Schema from First Feature" setting.


Please see https://knowledge.safe.com/articles/1051/dynamic-workflow-tutorial-destination-schema-is-de-2.html for more information on feature-based schema using list attributes.

" last_save_date="2017-02-16T16:20:40" fme_process_groups_ordered="No" doc_top_left="-108.875 -291" zoom_scale="100" markdown_description="" suppress_upgrade="false" history="2013-08-23,IrisGutowski,Created,2014-09-18,DeWetvanNiekerk,Updatedwithnewdatatypesandgeometryfix,2016-05-19,RobynRennie,UpdatedDescriptionandUsage,2016-07-06,DeWetvanNiekerk,UpdatedforPython23compatibility,2016-07-22,RylanMaschak,ImplementedoptiontosortattributesC107680,2017-01-24,RylanMaschak,CompatibilityupdateforFME2017.0RC,2017-02-16,RylanMaschak,SetPythonCompatibilityto2.7or3.4+" python_compatibility="2or3" doc_dynamic_input_attrs="0" is_visible="true" use_markdown="NO" fme_document_priorguid="" fme_document_guid="d80d1d70-3eb1-4078-ba0d-4838a454bcac" doc_extents="1822.38 147" markdown_usage=""> #! #!#!#!#!#! #!

Retrieve Parameters

" POSITION="493 -159" TOP_LEFT="493 -159" BOTTOM_RIGHT="493 -159" BOUNDING_RECT="493 -159 0 0" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="2">
#!

See Comment in Code

" POSITION="1107.62 -144" TOP_LEFT="1107.62 -144" BOTTOM_RIGHT="1107.62 -144" BOUNDING_RECT="1107.62 -144 0 0" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="3">
#!
#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#! #!#!#! #!#!#!#!#! #!#! #!#!
#!
#! #!#!
FME_PYTHON_VERSION ArcGISDesktop GUI忽略SourceDataset_MITAB_1,MITAB_IN_FME_TABLE_PASSWORD_MITAB_1,MITAB_IN_ENCODING_MITAB_1,MITAB_IN_EXPOSE_ATTRS_GROUP_MITAB_1,MITAB_IN_SEARCH_ENVELOPE_MINX_MITAB_1,MITAB_IN_SEARCH_ENVELOPE_MINY_MITAB_1,MITAB_IN_SEARCH_ENVELOPE_MAXX_MITAB_1,MITAB_IN_SEARCH_ENVELOPE_MAXY_MITAB_1,MITAB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_MITAB_1,MITAB_IN_CLIP_TO_ENVELOPE_MITAB_1,MITAB_IN_NETWORK_AUTHENTICATION_MITAB_1 DEFAULT_MACRO SourceDataset_MITAB $(FME_MF_DIR)数据\ Zones.tab GUI的多文件SourceDataset_MITAB TAB_Files(*选项卡。)| * .TAB |all_files(*)| * source mapinfo选项卡(Mitab)文件:包括[if {{$(sourceatataSet_mitab)} == {}} {puts_real {参数'sourceatataset_mitab'必须给出一个值。};退出1;};]#!start_header#!START_WB_HEADER READER_TYPE MITAB READER_KEYWORD MITAB_1 READER_GEN_DIRECTIVES SEARCH_ENVELOPE_MAXY,0,FME_TABLE_PASSWORD ,, _ MITAB_FULL_ENHANCED_GEOMETRY,YES,USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MINY,0,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_COORDINATE_SYSTEM ,, MITAB_EXPOSE_FORMAT_ATTRS ,, ENCODING ,, EXPOSE_ATTRS_GROUP ,, _ MERGE_SCHEMAS,是writer_type null writer_keyword null_dest null_dest_dataset null#!end_wb_header#!start_wb_header宏wb_keyword“mitab_1”#!end_wb_header#!start_source_header mitab mitab_1#================================================.============================ # BUG47627: MITAB rich compatibility flag MITAB_1_MITAB_FULL_ENHANCED_GEOMETRY YES # ============================================================================ # The following GUI line prompts for a folder to be used as the # source of the Mapinfo TAB files. # 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_MITAB_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER MITAB MITAB_1 DEFAULT_MACRO SourceDataset_MITAB_1 $(SourceDataset_MITAB) GUI MULTIFILE SourceDataset_MITAB_1 TAB_Files(*.tab)|*.tab|All_Files(*)|* Source MapInfo TAB (MITAB) File(s): # ============================================================================ # [REG 20070109] We want to allow the user to choose heterogeneous collections # by choosing not to break collections in workbench or other applications. # However, we don't want to create classic geometry heterogenous collections, # so the best way to set that they want heterogenous collections is to specify # that they want to FME_USE_RICH_GEOMETRY. # The following asks whether MIF/Mapinfo collections should be broken down into # their component parts when reading. By default we break down collections, but # if you are writing to the same format, you may want to preserve collections. #__ #DEFAULT_MACRO _BREAK_COLLECTION yes #__ #GUI CHOICE _BREAK_COLLECTION yes%no Break Collections: #__ #MITAB_BREAK_COLLECTION "$(_BREAK_COLLECTION_MITAB_1)" #__ # ===================================================================== # Provide some control over what attributes have the user-selected # encoding applied. Normally all attributes are updated after being # read, but the following lines exclude from this treatment all # attributes whose names start with fme_ or _,除了# for _text_string,这总是需要的编码。MITAB_1_ENCODED_ATTRS mapinfo_text_string MITAB_1_UNENCODED_ATTR_PREFIX fme_ mapinfo_ DEFAULT_MACRO MITAB_IN_FME_TABLE_PASSWORD_MITAB_1 MITAB_1_FME_TABLE_PASSWORD “$(MITAB_IN_FME_TABLE_PASSWORD_MITAB_1)” GUI可选PASSWORD_ENCODED MITAB_IN_FME_TABLE_PASSWORD_MITAB_1密码FME表:DEFAULT_MACRO MITAB_IN__MITAB_FULL_ENHANCED_GEOMETRY_MITAB_1是MITAB_1__MITAB_FULL_ENHANCED_GEOMETRY “$(MITAB_IN__MITAB_FULL_ENHANCED_GEOMETRY_MITAB_1)” DEFAULT_MACRO MITAB_IN_ENCODING_MITAB_1 MITAB_1_ENCODING “$(MITAB_IN_ENCODING_MITAB_1)” GUI可选STRING_OR_ENCODING MITAB_IN_ENCODING_MITAB_1 SJIS%CP437%CP850%CP852%CP855%CP857%CP860%CP861%CP863%CP864%CP865%CP869%CP874%CP932 CP936%%CP950%CP1250%CP1251%CP1252%CP1253%CP1254%CP1255%CP1256%ISO8859-1%ISO8859-2%是O8859-3%ISO8859-4%ISO8859-5%ISO8859-6%ISO8859-7%ISO8859-8%ISO8859-9 Character Encoding: DEFAULT_MACRO MITAB_IN_EXPOSE_ATTRS_GROUP_MITAB_1 MITAB_1_EXPOSE_ATTRS_GROUP "$(MITAB_IN_EXPOSE_ATTRS_GROUP_MITAB_1)" GUI DISCLOSUREGROUP MITAB_IN_EXPOSE_ATTRS_GROUP_MITAB_1 MITAB_EXPOSE_FORMAT_ATTRS Schema Attributes # 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 MITAB_IN_SEARCH_ENVELOPE_MINX_MITAB_1 0 MITAB_1_SEARCH_ENVELOPE "$(MITAB_IN_SEARCH_ENVELOPE_MINX_MITAB_1)" GUI OPTIONAL FLOAT MITAB_IN_SEARCH_ENVELOPE_MINX_MITAB_1 Minimum X: # =========================================================================== DEFAULT_MACRO MITAB_IN_SEARCH_ENVELOPE_MINY_MITAB_1 0 MITAB_1_SEARCH_ENVELOPE "$(MITAB_IN_SEARCH_ENVELOPE_MINY_MITAB_1)" GUI OPTIONAL FLOAT MITAB_IN_SEARCH_ENVELOPE_MINY_MITAB_1 Minimum Y: # =========================================================================== DEFAULT_MACRO MITAB_IN_SEARCH_ENVELOPE_MAXX_MITAB_1 0 MITAB_1_SEARCH_ENVELOPE "$(MITAB_IN_SEARCH_ENVELOPE_MAXX_MITAB_1)" GUI OPTIONAL FLOAT MITAB_IN_SEARCH_ENVELOPE_MAXX_MITAB_1 Maximum X: # =========================================================================== DEFAULT_MACRO MITAB_IN_SEARCH_ENVELOPE_MAXY_MITAB_1 0 MITAB_1_SEARCH_ENVELOPE "$(MITAB_IN_SEARCH_ENVELOPE_MAXY_MITAB_1)" GUI OPTIONAL FLOAT MITAB_IN_SEARCH_ENVELOPE_MAXY_MITAB_1 Maximum Y: # =========================================================================== DEFAULT_MACRO MITAB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_MITAB_1 MITAB_1_SEARCH_ENVELOPE "$(MITAB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_MITAB_1)" GUI OPTIONAL COORDSYS MITAB_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_MITAB_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 DEFAULT_MACRO MITAB_IN_CLIP_TO_ENVELOPE_MITAB_1 NO MITAB_1_CLIP_TO_ENVELOPE "$(MITAB_IN_CLIP_TO_ENVELOPE_MITAB_1)" GUI OPTIONAL CHECKBOX MITAB_IN_CLIP_TO_ENVELOPE_MITAB_1 YES%NO Clip to Search Envelope # =========================================================================== DEFAULT_MACRO MITAB_IN_NETWORK_AUTHENTICATION_MITAB_1 MITAB_1_NETWORK_AUTHENTICATION "$(MITAB_IN_NETWORK_AUTHENTICATION_MITAB_1)" GUI OPTIONAL AUTHENTICATOR MITAB_IN_NETWORK_AUTHENTICATION_MITAB_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # =========================================================================== DEFAULT_MACRO MITAB_IN_ATTRIBUTE_READING_MITAB_1 ALL MITAB_1_ATTRIBUTE_READING "$(MITAB_IN_ATTRIBUTE_READING_MITAB_1)" MITAB_1_DATASET "$(SourceDataset_MITAB_1)" #! END_SOURCE_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)9169-arcpy-example.log" LOG_APPEND NO 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 LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_MITAB_1 MITAB_1 # ------------------------------------------------------------------------- MITAB_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME 9169-arcpy-example 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 # ------------------------------------------------------------------------- MITAB_1_DEF Zones ZoneName char(30) ZoneCategory char(30) # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD MITAB_1 INPUT FEATURE_TYPE * ROUTE MITAB MITAB_1::Zones TO FME_GENERIC ::Zones ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * MITAB_1_MERGE_DEF MITAB_1::Zones EXACT Zones # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Zones (MITAB_1) Splitter" INPUT FEATURE_TYPE Zones OUTPUT FEATURE_TYPE Zones_MITAB_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ArcGISDissolver Input Input Collector" INPUT FEATURE_TYPE Zones_MITAB_1 OUTPUT FEATURE_TYPE ArcGISDissolver_Input MACRO ArcGISDissolver_WORKSPACE_NAME ArcGISDissolver MACRO $(ArcGISDissolver_WORKSPACE_NAME)_XFORMER_NAME ArcGISDissolver MACRO $(ArcGISDissolver_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(ArcGISDissolver_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(ArcGISDissolver_WORKSPACE_NAME)_SUB_DOC_NAME ArcGISDissolver MACRO $(ArcGISDissolver_WORKSPACE_NAME)_Group_Attrs ZoneCategory DEFAULT_MACRO ArcGISDissolver_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(ArcGISDissolver_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(ArcGISDissolver_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(ArcGISDissolver_WORKSPACE_NAME)_Input1502398478 Input Splitter" INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Input" # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_AttributeCreator INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Input" MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION "" "fme_feature_type" "SET_TO" "pre_dissolve" OUTPUT OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_AttributeCreator_OUTPUT" # ------------------------------------------------------------------------- INCLUDE [ puts "MACRO REAL_RATE [expr 1 * -1 ]" ] FACTORY_DEF * SamplingFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_Sampler SAMPLE_RATE $(REAL_RATE) SAMPLE_ORDER ORIGINAL INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_AttributeCreator_OUTPUT" OUTPUT SAMPLED FEATURE_TYPE ___SAMPLED___ OUTPUT NOT_SAMPLED FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Sampler_NOT_SAMPLED" # This TeeFactory is needed because Sampler will still output features if it has no OUTPUT clauses specified. # This way we behave nicely even if there are no output connections on the transformer. See PR#28886. FACTORY_DEF * TeeFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___ OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Sampler_SAMPLED" # ------------------------------------------------------------------------- DEFAULT_MACRO WB_CURRENT_CONTEXT MACRO $(ArcGISDissolver_WORKSPACE_NAME)_VariableRetriever_VAR temp_path INCLUDE [if {{Local} == {Local}} { puts {MACRO $(ArcGISDissolver_WORKSPACE_NAME)_VariableRetriever_VAR $(WB_CURRENT_CONTEXT)_temp_path}; }; FACTORY_DEF * TeeFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_VariableRetriever INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Sampler_NOT_SAMPLED" OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_VariableRetriever_OUTPUT" @GlobalVariable(fme_encoded,$($(ArcGISDissolver_WORKSPACE_NAME)_VariableRetriever_VAR),fme_result_attribute,_pathname) # ------------------------------------------------------------------------- # On translation startup, prep the temporary directory that this instance of the # xformer will populate with its temporary files. We'll do this by asking for a # temporary filename, and then instead of using it as a file, we'll add our UUID to # it to make a super unique name, which will become the directory we'll use for all # the temp files we hand out. # And we'll set up to have the END_TCL delete that entire directory when we shut down. # To do that, we'll use the "environment" to hold our master subidirectory, keyed by # our UUID as the environment variable name. That is the only way to pass information # from @Tcl2 to FME_END_TCL (via the "env" variable, because they use different Tcl # interpretters) Tcl2 set sampleTempFile [FME_TempFilename]; set ourTempDir {}; append ourTempDir $sampleTempFile {$(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060}; file mkdir $ourTempDir; set env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_dir) $ourTempDir; set env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_file) $sampleTempFile; set gNumTempFilesHandedOut 0; # Cleanup time. Remove the directory this transformer was using for its temp files, as well as the # original temp file that was created as our "seed" to get us a unique starting point. FME_END_TCL file delete -force $env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_dir) $env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_file) ; unset env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_dir); unset env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_file); # Actually create and return a well formed filename that is guaranteed not to be there. # We know we're working inside a directory unique to our instance of the transformer. # So we can just increment serially within there to be sure we're not making a previously existing file # We need to also provide a default for the filename base if they didn't give us one (we'll # use the XFORMER_NAME), and take care to handle a no-extension-desired situation as well as # a situation where the extension started with a . Tcl2 proc $(ArcGISDissolver_WORKSPACE_NAME)_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 {$(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator}; }; set curClock [clock clicks]; set last7ClockDigits [string range $curClock end-6 end]; append aGoodTempFile $env($(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_1d785150_0285_426a_80bf_90e99385d2060_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 $(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_Sampler_SAMPLED" OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_OUTPUT" @Tcl2("$(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_makeTemp {} {}") # ------------------------------------------------------------------------- DEFAULT_MACRO WB_CURRENT_CONTEXT MACRO $(ArcGISDissolver_WORKSPACE_NAME)_VariableSetter_VAR temp_path INCLUDE [ if {{Local} == {Local}} { puts {MACRO $(ArcGISDissolver_WORKSPACE_NAME)_VariableSetter_VAR $(WB_CURRENT_CONTEXT)_temp_path}; } ] FACTORY_DEF * TeeFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_VariableSetter INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_TempPathnameCreator_OUTPUT" OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_VariableSetter_OUTPUT" @GlobalVariable(fme_encoded,$($(ArcGISDissolver_WORKSPACE_NAME)_VariableSetter_VAR),"@EvaluateExpression(FDIV,STRING_ENCODED, 价值 _PATPNAME. ,$(arcgisdissolver_workspace_name)_variablesetter)“)#----------------------------------------------------------------------FACTORY_DEF * TeeFactory FACTORY_NAME "$(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter Input Input Collector" INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_VariableSetter_OUTPUT" OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter_Input" MACRO SchemaSetter_WORKSPACE_NAME $(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter MACRO $(SchemaSetter_WORKSPACE_NAME)_XFORMER_NAME $(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter MACRO $(SchemaSetter_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(SchemaSetter_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(SchemaSetter_WORKSPACE_NAME)_SUB_DOC_NAME SchemaSetter MACRO $(SchemaSetter_WORKSPACE_NAME)_AttributesToExclude MACRO $(SchemaSetter_WORKSPACE_NAME)_PrefixesToExclude MACRO $(SchemaSetter_WORKSPACE_NAME)_SORT None DEFAULT_MACRO SchemaSetter_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(SchemaSetter_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(SchemaSetter_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(SchemaSetter_WORKSPACE_NAME)_Input1502398479 Input Splitter" INPUT FEATURE_TYPE "$(SchemaSetter_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(SchemaSetter_WORKSPACE_NAME)_Input" # ------------------------------------------------------------------------- Tcl2 proc $(SchemaSetter_WORKSPACE_NAME)_ParameterFetcher_doFetch {} { foreach {name val} {"_AttributesToExclude {$($(SchemaSetter_WORKSPACE_NAME)_AttributesToExclude$encode)} _PrefixesToExclude {$($(SchemaSetter_WORKSPACE_NAME)_PrefixesToExclude$encode)} _sort {$($(SchemaSetter_WORKSPACE_NAME)_SORT$encode)}"} { if { [string match {* $val == 1} {set val [FME_Execute EvaluateExpression {STRING} $val {$(SchemaSetter_WORKSPACE_NAME)_ParameterFetcher}];} else {[string match {*FME_CONDITIONAL*} $val] == 1} {set val [FME_Execute EvaluateExpression {string} $val {$(SchemaSetter_WORKSPACE_NAME)_ParameterFetcher}];} else {set val [fme_decodet勒索attr $val];};FME_SetAttribute [FME_DecodeText $ name] $ val}} FACTORY_DEF * TeeFactory FACTORY_NAME美元(SchemaSetter_WORKSPACE_NAME) _ParameterFetcher输入FEATURE_TYPE " $ (SchemaSetter_WORKSPACE_NAME) _Input“输出FEATURE_TYPE " $ (SchemaSetter_WORKSPACE_NAME) _ParameterFetcher_OUTPUT“@Tcl2 ($ (SchemaSetter_WORKSPACE_NAME) _ParameterFetcher_doFetch) #------------------------------------------------------------------------- FME_PYTHON_PATH " $ (FME_MF_DIR) "FACTORY_DEF * PythonFactory FACTORY_NAME $(SchemaSetter_WORKSPACE_NAME)_PythonCaller INPUT FEATURE_TYPE "$(SchemaSetter_WORKSPACE_NAME)_ParameterFetcher_OUTPUT" SYMBOL_NAME FeatureProcessor PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE __future__ 进口 absolute_import 部门 print_function. unicode_literal. 进口 fmeobjects 进口 六个 #检查 如果 一个 列表 条目 开始 一个 肯定 字符串 def StringLikeList 列表 字符串 测试= False 元素 列表: 如果 string.startswith 元素 测试= True 返回 测试 检查 如果 一个 列表 包含 一个 元素 平等的 一个 肯定 字符串 def stryinlist. 列表 字符串 测试= False 元素 列表: 如果 字符串= =元素: 测试= True 返回 测试 模板 接口: FeatureProcessor 对象 typesMapping fmeobjects.fme_attr_undefined. 没有任何 fmeobjects。FME_ATTR_BOOLEAN fme_boolean fmeobjects.FME_ATTR_INT8 fme_int8 fmeobjects。FME_ATTR_UINT8 fme_uint8 fmeobjects。FME_ATTR_INT16 FME_INT16 fmeobjects.fme_attr_uint16 fme_uint16 fmeobjects。FME_ATTR_INT32 fme_int32 fmeobjects.fme_attr_uint32. fme_uint32 fmeobjects。FME_ATTR_REAL32 fme_real32 fmeobjects。FME_ATTR_REAL64 fme_real64 fmeobjects。FME_ATTR_REAL80 fme_real80 fmeobjects.fme_attr_string. fme_char 255. fmeobjects。FME_ATTR_ENCODED_STRING fme_varchar 255. fmeobjects。FME_ATTR_INT64 fme_int64 fmeobjects。FME_ATTR_UINT64 fme_uint64 def __在里面__ 自己 通过 def 输入 自己 特征 #创建 一个 特征 nfeature = fmeobjects.fmeature. #获取 列表 所有 属性 特征 attlist = feature.getAllAttributeNames #环形 通过 所有 属性 添加 模式 如果 他们 失败 排除 标准 我= 0 ExcludedAttributes = str feature.getAttribute _AttributesToExclude .split ExcludedPrefixes = str feature.getAttribute _prefixestoExclude. .split 删除 所有 fme_ 属性 列表 - t 包括 这些 动态 模式 ExcludedPrefixes fme_ 如果 ExcludedPrefixes ==. 其他的 ExcludedPrefixes + fme_ 排序 属性 如果 feature.getAttribute _sort ==. 提升 feature.getAttribute _sort ==. 下降 attlist.sort 如果 feature.getAttribute _sort ==. 下降 attlist.reverse.reverse. 丙氨酸 attlist: 如果 stryinlist. ExcludedAttributes 丙氨酸 StringLikeList ExcludedPrefixes 丙氨酸 ATT == _AttributesToExclude ATT == _prefixestoExclude. ATT == _sort 类型= feature.getAttributeType 丙氨酸 #检查 数据类型 模式 类型 self.typesMapping 类型 如果 类型 没有任何: feature.removeAttribute 丙氨酸 别的: #添加 模式 属性 特征 nfeature.setAttribute 属性 + str. + .fme_data_type. 类型 nfeature.setAttribute 属性 + str. + . name six.text_type. 丙氨酸 nfeature.setAttribute 丙氨酸 feature.getAttribute 丙氨酸 I + = 1 #副本 原来的 几何学 特征 nfeature.setGeometry feature.getGeometry nfeature.setcoordsys. feature.getCoordSys nfeature.setFeatureType feature.getFeatureType nfeature.setAttribute fme_geometry 0 feature.getAttribute fme_type nfeature.setAttribute fme_feature_type feature.getAttribute fme_feature_type self.pyoutpul. nfeature def 关闭 自己 通过输出PYOUTPUT FEATURE_TYPE “$(SchemaSetter_WORKSPACE_NAME)_PythonCaller_OUTPUT” FACTORY_DEF * TeeFactory FACTORY_NAME “$(SchemaSetter_WORKSPACE_NAME)_Output1502398479输出集电极” INPUT FEATURE_TYPE “$(SchemaSetter_WORKSPACE_NAME)_PythonCaller_OUTPUT” 输出FEATURE_TYPE “$(SchemaSetter_WORKSPACE_NAME)_output” @RemoveAttributes(_AttributesToExclude,_PrefixesToExclude,_sort)INCLUDE [看跌{MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT _ $(SchemaSetter_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME “$(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter输出输出更名/ Nuker” INPUT FEATURE_TYPE “$(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter_Output” OUTPUT FEATURE_TYPE“$(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter_Output“#------------------------------------------------------------------ FACTORY_DEF * WriterFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_FeatureWriter WRITER_TYPE FILEGDB WRITER_DATASET @EvaluateExpression(FDIV,STRING_ENCODED, 价值 _PATPNAME. temp.gdb, $ (ArcGISDissolver_WORKSPACE_NAME) _FeatureWriter) WRITER_SETTINGS RUNTIME_MACROS, FME_CONNECTION_GROUP overwrite_geodb. 是的 DATASET_TEMPLATE DESTINATION_DATASETTYPE_VALIDATION 是的 COORDINATE_SYSTEM_GRANULARITY 图元文件,FEATURE_TYPE FILEGDB WRITER_METAFILE ATTRIBUTE_CASE、ANY_FIRST_NONNUMERIC ATTRIBUTE_INVALID_CHARS, ?* | %# +- ^。 , 64岁的ATTRIBUTE_LENGTH ATTR_TYPE_MAP、文本 宽度 fme_varchar 宽度 文本 宽度 fme_char 宽度 文本 2048 fme_buffer 文本 2048 fme_xml 文本 2048 fme_json 斑点 fme_binarybuffer. 斑点 fme_varbinary 宽度 斑点 fme_binary 宽度 日期 fme_datetime 日期 fme_date 日期 fme_time. 单身的 fme_real32 fme_real64 fme_decimal 宽度 小数 fme_int32 fme_uint32 文本 20. fme_int64 文本 20. fme_uint64 small FME_INT16 fme_uint16 small fme_int8 small fme_uint8 small fme_boolean objectid fme_int32 guid fme_buffer globalid fme_buffer、DEST_ILLEGAL_ATTR_LIST FME_DB_OPERATION FME_DB_TRANSACTION FME_FEATURE_OPERATION FME_TABLE_HANDLING FILEGDB_M_TOLERANCE FME_SELECTION_METHOD FME_MATCH_COLUMNS 选择 fme_where_builder_clause. 更新 fme_match_id_attribute. FME_MATCH_REVISION_ATTRIBUTE FME_UPDATE_GEOMETRY filegdb_drop_table. FILEGDB_TRUNCATE_TABLE FILEGDB_OBJECT_ID_FIELD 之间的 FILEGDB_OBJECT_ID_ALIAS FILEGDB_SHAPE_FIELD 价值 filegdb_shape_alias. FILEGDB_CONFIG_KEYWORD FILEGDB_XY_TOLERANCE 进入 FILEGDB_Z_TOLERANCE FILEGDB_TYPE 通过 添加 改变,更改 作为 ASC. 创建 删除 去世 下降 存在 团体 插入 喜欢 命令 表格 其中,feature_type_case,any_first_nonnumeric,feature_type_invalid_chars, ?* | %# +- ^。 FEATURE_TYPE_LENGTH 0 FEATURE_TYPE_LENGTH_INCLUDES_PREFIX、假FEATURE_TYPE_RESERVED_WORDS, FORMAT_NAME, FILEGDB, GEOM_MAP geodb_point FME_POINT. geodb_polygon. fme_polygon geodb_polygon. fme_rounded_rectangle geodb_polyline fme_line geodb_multipoint FME_POINT. geodb_polygon. fme_rectangle geodb_point. fme_text geodb_polyline fme_arc geodb_polygon. fme_ellipse. geodb_no_geom. fme_no_geom geodb_polygon. fme_raster geodb_polyline fme_surface. geodb_polyline fme_solid. geodb_polygon. fme_point_cloud geodb_no_geom. fme_feature_table geodb_no_geom. fme_collection READER_ATTR_INDEX_TYPES,索引,来源,不,SUPPORTS_FEAT_TYPE_FANOUT,是的,不,WORKBENCH_CANNED_SCHEMA, SUPPORTS_MULTI_GEOM,作家,FILEGDB, WRITER_ATTR_INDEX_TYPES,索引,WRITER_DEFLINE_PARMS, GUI 名为Group. fme_configuration_group fme_configuration_common_group%fme_spatial_group%fme_advanced_group%oracle_advanced_group 桌子 GUI 名为Group. fme_configuration_common_group fme_feature_operation % fme_table_handling % oracle_model % fme_update_geometry % fme_selection_group % fme_table_creation_group 一般 GUI ACTIVECHOICE_LOOKUP fme_feature_operation 插入 插入 fme_update_geometry fme_selection_group%更新 更新 + + fme_table_handling + USE_EXISTING + + + FME_DISCLOSURE_OPEN % fme_selection_group删除 删除 + + fme_table_handling + USE_EXISTING fme_update_geometry ++ fme_selection_group + FME_DISCLOSURE_OPEN fme_spatial_group. fme_advanced_group oracle_sequenced_cols % 价值 openparen fme_db_operation closeparen + + fme_table_handling + USE_EXISTING ++ fme_selection_group + FME_DISCLOSURE_OPEN 功能 手术 插入 GUI ACTIVECHOICE_LOOKUP fme_table_handling 使用 空间 现有的 USE_EXISTING fme_table_creation_group %创建 空间 如果 空间 需要 CREATE_IF_MISSING %下降 空间 空间 创建 DROP_CREATE %截断 空间 现有的 TRUNCATE_EXISTING fme_table_creation_group 桌子 处理 CREATE_IF_MISSING GUI WHOLE_LINE LOOKUP_CHOICE fme_update_geometry 是的 YES%无 没有 更新 空间 柱子 年代 是的 GUI DISCLOSUREGROUP fme_selection_group fme_selection_method 选择 GUI WHOLE_LINE RADIOPARAMETERGROUP fme_selection_method fme_match_columns MATCH_COLUMNS % fme_where_builder_clause 建造者 选择 方法 MATCH_COLUMNS GUI WHOLE_LINE ATTRLIST_COMMAS fme_match_columns 匹配 GUI WHOLE_LINE TEXT_EDIT_SQL_CFG_OR_ATTR fme_where_builder_clause. 模式 在哪里 在哪里 条款 GUI DISCLOSUREGROUP fme_table_creation_group filegdb_object_id_field%filegdb_object_id_alias%filegb_shape_fiel%filegdb_shape_alias%filegdb_config_keyword%filegdb_xy_tolerance%filegdb_z_tolerance%filegdb_m_tolerance 桌子 创建 参数 GUI 文本 filegdb_object_id_field 对象 ID OBJECTID GUI 文本 filegdb_object_id_alias 对象 ID 别名 OBJECTID GUI 文本 filegdb_shape_field 形状 形状 GUI 文本 filegdb_shape_alias 形状 别名 形状 GUI 文本 filegdb_config_keyword. 配置 关键词 默认值 GUI 可选的 浮动 filegdb_xy_tolerance XY 宽容 GUI 浮动 filegdb_z_tolerance. Z 宽容 0.001 GUI 浮动 filegdb_m_tolerance. 宽容 0.001、WRITER_DEF_LINE_TEMPLATE FME_GEN_GROUP_NAME filegdb_type fme_gen_geometry. filegdb_drop_table. filegdb_truncate_table fme_feature_operation 插入 fme_table_handling CREATE_IF_MISSING fme_selection_method MATCH_COLUMNS fme_match_columns fme_where_builder_clause. fme_update_geometry 是的 filegdb_object_id_field OBJECTID filegdb_object_id_alias OBJECTID filegdb_shape_field 形状 filegdb_shape_alias 形状 filegdb_config_keyword. 默认值 filegdb_xy_tolerance filegdb_z_tolerance. 0.001 filegdb_m_tolerance. 0.001、WRITER_FORMAT_PARAMETER DATASET_NAME 广东发展银行 文件 feature_type_name. 功能 桌子 feature_type_default_name. FeatureClass1 READER_DATASET_HINT 选择 文件 Geodatabase 文件夹 WRITER_DATASET_HINT 指定 文件 Geodatabase 文件夹 ,writer_has_defline_attrs,是writer_feature_types 价值 fme_feature_type :输出,ftp_feature_type_name_exp, 价值 fme_feature_type ,ftp_writer,FILEGDB,ftp_geometry,geodb_polygon,ftp_dynamic_schema,是的,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_FIXED,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,SCHEMA_FROM_FIRST_FEATURE,ftp_attribute_source,2,ftp_user_attributes,ORG_LONG 文本 openparen 30. closeparen _PATPNAME. 文本 openparen 200 closeparen ,ftp_user_attribute_values, ,ftp_format_parameters,fme_configuration_group fme_configuration_common_group fme_feature_operation 插入 fme_table_handling CREATE_IF_MISSING fme_update_geometry lt 未使用的 gt fme_selection_group fme_selection_method lt 未使用的 gt fme_match_columns lt 未使用的 gt fme_where_builder_clause. lt 未使用的 gt fme_table_creation_group filegdb_object_id_field OBJECTID filegdb_object_id_alias OBJECTID filegdb_shape_field 形状 filegdb_shape_alias 形状 filegdb_config_keyword. 默认值 filegdb_xy_tolerance filegdb_z_tolerance. 0.001 filegdb_m_tolerance. 0.001 WRITER_PARAMS DESTINATION_DATASETTYPE_VALIDATION,是的,COORDINATE_SYSTEM_GRANULARITY,FEATURE_TYPE,OVERWRITE_GEODB,YES DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written输入输出FEATURE_TYPE “$(ArcGISDissolver_WORKSPACE_NAME)_VariableRetriever_OUTPUT” @FeatureType(编码@ EvaluateExpression(FDIV,STRING_ENCODED, 价值 fme_feature_type $(ArcGISDissolver_WORKSPACE_NAME)_FeatureWriter) @SupplyAttributes(ENCODED,fme_template_feature_type,Output) INPUT Output FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_SchemaSetter_Output" @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED, 价值 fme_feature_type 美元(ArcGISDissolver_WORKSPACE_NAME) _FeatureWriter) @SupplyAttributes(编码、fme_template_feature_type、输出)输出总结FEATURE_TYPE”(ArcGISDissolver_WORKSPACE_NAME) _FeatureWriter_SUMMARY美元 " # ------------------------------------------------------------------------- 宏casemac包括(如果{{没有}= ={没有}}{把{宏casemac查看nocase}})Tcl2 proc $(ArcGISDissolver_WORKSPACE_NAME)_StringReplacer_d10d883c_1650_4fc8_b6b0_e7a687c5587b0_replacer { findText replaceText invalidValue} { set attrs [split \"_dataset\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [FME_ReplaceRegex $(casemac) $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_StringReplacer INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_FeatureWriter_SUMMARY" OUTPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_StringReplacer_OUTPUT" @Tcl2("$(ArcGISDissolver_WORKSPACE_NAME)_StringReplacer_d10d883c_1650_4fc8_b6b0_e7a687c5587b0_replacer { } { } {_fme_no_op_}“)#------------------------------------------------------------------ Tcl2 proc $(ArcGISDissolver_WORKSPACE_NAME)_ParameterFetcher_doFetch {} { foreach {name val} {"_Group_Attrs {$($(ArcGISDissolver_WORKSPACE_NAME)_Group_Attrs$encode)}"} { if { [string match {* $ val] == 1} {set val [fme_execute评估表{string} $ val {$(arcgisdissolver_workspace_name)_parameterfetcher}];elsef {[string匹配{* fme_conditional *} $ val] == 1} {set val [fme_execute evaluateExpression {string} $ val {$(arcgisdissolver_workspace_name)_parameterfetcher}];} else {set val [fme_decodet勒索attr $val];};FME_SetAttribute [FME_DecodeText $名称] $ VAL}} FACTORY_DEF * TeeFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_ParameterFetcher INPUT FEATURE_TYPE “$(ArcGISDissolver_WORKSPACE_NAME)_StringReplacer_OUTPUT” 输出FEATURE_TYPE “$(ArcGISDissolver_WORKSPACE_NAME)_ParameterFetcher_OUTPUT” @ TCL2($(ArcGISDissolver_WORKSPACE_NAME)_ParameterFetcher_doFetch)#--------------------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME $(ArcGISDissolver_WORKSPACE_NAME)_PythonCaller INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME)_ParameterFetcher_OUTPUT" SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE import fme 进口 fmeobjects 进口 archpy. def processFeature 特征 得到 溶解 足球俱乐部 设置 特征 属性 数据集 feature.getAttribute _dataset 灾难菲尔德 feature.getAttribute _Group_Attrs .split arcpy.env.workspace 数据集 当地的 变量 食物 pre_dissolve outFeatureClass 数据集 + 溶解 执行 溶解 使用 团体 通过 属性 作为 溶解 领域 arcpy。Dissolve_management 食物 outFeatureClass 灾难菲尔德 multi_part. DISSOLVE_LINES 输出PYOUTPUT FEATURE_TYPE”(ArcGISDissolver_WORKSPACE_NAME) _PythonCaller_OUTPUT美元 " # ------------------------------------------------------------------------- 宏(ArcGISDissolver_WORKSPACE_NAME) _FeatureReader_OUTPUT_PORTS_ENCODED宏(ArcGISDissolver_WORKSPACE_NAME)美元_FeatureReader_DIRECTIVESUSE_SEARCH_ENVELOPE,NO,CLIP_TO_ENVELOPE,NO,QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS,Yes #始终提供一个交互,否则工厂默认为envele_intersects INCLUDE [if {({NONE} == {)] })||({($ interact_options)} == {})} {puts {宏fctquery_interaction_line fctquery_interaction无};} else {puts {宏fctquery_interaction_line fctquery_interaction“none”};#将属性合并选项合并到出厂期望default_macro $(arcgisdissolver_workspace_name)_featurereader_combine_attrs包括[if {{merge} == {merge} {puts“宏$(arcgisdissolver_workspace_name)_featurereader_combine_attrs prefer_result”;} else {puts“宏$(arcgisdissolver_workspace_name)_featurereader_combine_attrs merge”;};] factory_def * queryfactory factory_name $(arcgisdissolver_workspace_nype)_featurereader输入feature_type“$(arcgisdissolver_workspace_name)_pythoncaller_output”$(fctquery_interaction_line)combine_attributes $($(arcgisdissolver_workspace_name)_featurereader_combine_attrs)queryfct_attribute_prefix COMBINE_GEOMETRY RESULT_ONLY ENABLE_CACHE NO QUERYFCT_TABLE_SEPARATOR SPACE READER_TYPE FILEGDB READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED, 价值 _dataset ,$(ArcGISDISSOLVER_WARDSPACE_NAME)_FEATUREREADER)“queryfct_ids”解散“reader_directives meta_macros,sourcequery_feature_types_for_merge_filters 是的 sourcefme_connection_group. SourceEXPOSE_ATTRS_GROUP SourceFILEGDB_EXPOSE_FORMAT_ATTRS SourceUSE_SEARCH_ENVELOPE 没有 SourceSEARCH_ENVELOPE_MINX 0 SourceSEARCH_ENVELOPE_MINY 0 sourcearch_envelope_maxx. 0 sourcearch_envelope_maxy. 0 SourceSEARCH_ENVELOPE_COORDINATE_SYSTEM SourceCLIP_TO_ENVELOPE 图元文件,FILEGDB QUERYFCT_OUTPUT“BASED_ON_CONNECTIONS”CONTINUE_ON_READER_ERROR是的QUERYFCT_RESULT_TAGS美元($ (ArcGISDissolver_WORKSPACE_NAME) _FeatureReader_OUTPUT_PORTS_ENCODED) QUERYFCT_SET_FME_FEATURE_TYPE是的READER_PARAMS_WWJD美元($ (ArcGISDissolver_WORKSPACE_NAME) _FeatureReader_DIRECTIVES) FEATURE_TYPE输出结果“$ (ArcGISDissolver_WORKSPACE_NAME) _FeatureReader_ " # ------------------------------------------------------------------------- 包括[macroLine“宏(ArcGISDissolver_WORKSPACE_NAME) _AttributeRemover_LIST_EXP美元”;Foreach attr [split "_feature_type "] {set attr [FME_DecodeText $attr];设置attr [regsub "{}$" $attr "{}.*"];设置attr (regsub——“{}”美元attr”\ \ {\ [0 - 9 \]+ \ \}");附加macroLine”^ attr美元”;};把macroLine美元;$(ArcGISDissolver_WORKSPACE_NAME)_AttributeRemover INPUT FEATURE_TYPE "$(ArcGISDissolver_WORKSPACE_NAME) _feataturereader_ . “输出FEATURE_TYPE ”$(ArcGISDissolver_WORKSPACE_NAME)_AttributeRemover_OUTPUT“ @RemoveAttributes(fme_encoded,_total_features_written,_Group_Attrs,_dataset)@RemoveAttributes(fme_pcre_match” $($(ArcGISDissolver_WORKSPACE_NAME)_AttributeRemover_LIST_EXP)“)FACTORY_DEF * TeeFactory FACTORY_NAME ”$(ArcGISDissolver_WORKSPACE_NAME)_Area1502398478输出集电极“ INPUTFEATURE_TYPE “$(ArcGISDissolver_WORKSPACE_NAME)_AttributeRemover_OUTPUT” OUTPUT FEATURE_TYPE “$(ArcGISDissolver_WORKSPACE_NAME)_Area” INCLUDE [看跌{MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT _ $(ArcGISDissolver_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME “ArcGISDissolver区输出更名/ Nuker” INPUT FEATURE_TYPE ArcGISDissolver_Area OUTPUT FEATURE_TYPEArcGISDissolver_Area#------------------------------------------------------------------------- # Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { 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]} {FeatureReader__Generic_} _]_[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 FeatureReader__Generic__DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader__Generic__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 FeatureReader__Generic__FeatureDirector INPUT FEATURE_TYPE ArcGISDissolver_Area TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE FeatureReader__Generic____NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE FeatureReader__Generic____RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME FeatureReader__Generic____FeatureDirector1 INPUT FEATURE_TYPE FeatureReader__Generic____NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE FeatureReader__Generic____VectorFeatures___ OUTPUT PASSED FEATURE_TYPE FeatureReader__Generic____PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader__Generic__VectorSetterUpper INPUT FEATURE_TYPE FeatureReader__Generic____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 FeatureReader__Generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elseif {[string equal {no_thin} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud no_thin "\" \ ";} elseif {[string equal {no_thin} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud no_thin "\" \ ";} elseif {[string equal {no_thin} {LASTNPOINTS}]} {FME_Execute ThinPointCloud no_thin "\" \ ";};} FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader__Generic____PointCloudThinner INPUT FEATURE_TYPE FeatureReader__Generic____PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @ TCL2( “FeatureReader__Generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_thinPointCloud”)TCL2 PROC FeatureReader__Generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {集useDI [字符串等于-nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{!$ implusi} {fme_execute properyraster协议bilinear;};设置Doreample [String等于{nooreduction} {重组}];设置dosubset [string等于{nooreduction} {subset}];设置dobounds [string等于{noorduction} {buddingboxonly}];如果{$ dobounds} {fme_execute geometrytype fme_polygon;elsef {$ doreample || $doSubset} { set comment { First, we need to prefix all the attributes. 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 FeatureReader__Generic__RasterSetterUpper INPUT FEATURE_TYPE FeatureReader__Generic____RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("FeatureReader__Generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_prepareRaster { } { } { } { }") #现在将所有特性路由到记录器中,将它们的# feature类型更改为转换器名称,这样它们就可以很好地查看# feataturereader__generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_vis_feat_type更改正在可视化的特性的特性类型#。DEFAULT_MACRO featureereader__generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_vis_feat_type featureereader__generic_ $(CATMAC) DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)亚搏在线/$(SAFE_FFS_NAME)。数据检查器将限制它在WIN32上读取的最大特性数量,因此我们将相应地限制使用MAX_FEATURES_TO_RECORD指令记录的#特性数量。FACTORY_DEF * RecorderFactory FACTORY_NAME featureereader__generic__recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(featureereader__generic__e4033b58_b3d0_4321_baeb_068706ae2dc70_vis_feature_type) FEATURE_FILE" $ (VISUALIZER_FEATURE_FILE) "CREATE_SPATIAL_INDEX " $ (VISUALIZER_CREATE_SPATIAL_INDEX) "检查员" $ (VISUALIZER_CREATE_SPATIAL_INDEX) "FSC_SCHEMA MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing correlation " COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * . FSC_SCHEMA MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 # -------------------------------------------------------------------------FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__输出路由FEATURE_TYPE *输出NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2(“FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type) 818060 818061 fme_warn ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME“最终输出核武器”在PUT FEATURE_TYPE __nuke_me__ # ------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [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 INPUT FEATURE_TYPE __NUKEME__