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

This Model is for educational purpose

it taes some geometry features and produces a python script

the python script is designed to run as a standalone script, cause it relies on library not implemented in FME, but is part of the standard libray in a standalone python environment.

" POSITION="-900 300" TOP_LEFT="-900 300" BOTTOM_RIGHT="-150 250" BOUNDING_RECT="-900 300 750 50" ORDER="500000000000022" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="0">
#!

The python output relies on the turtle graphics library. it will try to redraw your features in turtle style.

" POSITION="3300 300" TOP_LEFT="3300 300" BOTTOM_RIGHT="4050 250" BOUNDING_RECT="3300 300 750 50" ORDER="500000000000023" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="0">
#!

we want to substract these

" POSITION="0 -750" TOP_LEFT="0 -750" BOTTOM_RIGHT="430 -749" BOUNDING_RECT="0 -750 430 -1" ORDER="500000000000032" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="11">
#!

We shift coordinate to our own local coordinat system

" POSITION="900 -600" TOP_LEFT="900 -600" BOTTOM_RIGHT="1330 -599" BOUNDING_RECT="900 -600 430 -1" ORDER="500000000000033" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="14">
#!

We only care about the new geometry

" POSITION="1380.8991976406251 -122.49887498874989" TOP_LEFT="1380.8991976406251 -122.49887498874989" BOTTOM_RIGHT="1810.8991976406251 -121.49887498874989" BOUNDING_RECT="1380.8991976406251 -122.49887498874989 430 -1" ORDER="500000000000034" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="29">
#!

To create a filter bounding box within one stddv of the start coordinate of every input feature

" POSITION="1846.453167234376 192.56799324750006" TOP_LEFT="1846.453167234376 192.56799324750006" BOTTOM_RIGHT="2412.453167234376 193.56799324750006" BOUNDING_RECT="1846.453167234376 192.56799324750006 566 -1" ORDER="500000000000035" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="43">
#!

select only features within 1 std deviation

" POSITION="2338.0046368031244 -3.4098462606247892" TOP_LEFT="2338.0046368031244 -3.4098462606247892" BOTTOM_RIGHT="2768.0046368031244 -2.4098462606247892" BOUNDING_RECT="2338.0046368031244 -3.4098462606247892 430 -1" ORDER="500000000000036" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="38">
#!

Create python script in the text_line_data attribute

" POSITION="2826 -117.42975672999967" TOP_LEFT="2826 -117.42975672999967" BOTTOM_RIGHT="3256 -116.42975672999967" BOUNDING_RECT="2826 -117.42975672999967 430 -1" ORDER="500000000000037" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="19">
#!

keep only the python script

" POSITION="3367.0812081093782 -194.12421286375019" TOP_LEFT="3367.0812081093782 -194.12421286375019" BOTTOM_RIGHT="3797.0812081093782 -193.12421286375019" BOUNDING_RECT="3367.0812081093782 -194.12421286375019 430 -1" ORDER="500000000000038" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="33">
#!

Merge:

1=1

" POSITION="371.88321883218805 -122.49887498874989" TOP_LEFT="371.88321883218805 -122.49887498874989" BOTTOM_RIGHT="801.88321883218805 -121.49887498874989" BOUNDING_RECT="371.88321883218805 -122.49887498874989 430 -1" ORDER="500000000000039" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="15">
#!
#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#! #! #! #!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!XValue y SET_TO YValue">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#!#!#!#!#! #!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!#!#! #!#!
FME_PYTHON_VERSION 36 GUI IGNORE SourceDataset_SPATIALITE_1,SPATIALITE_IN_FME_CONNECTION_GROUP_SPATIALITE_1,SPATIALITE_IN_NETWORK_AUTHENTICATION_SPATIALITE_1,DestDataset_TEXTLINE_1,TEXTLINE_OUT_FME_GROUP_NAMED1_TEXTLINE_1,TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1,TEXTLINE_OUT_FME_GROUP_NAMED2_TEXTLINE_1,TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1,TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_1,TEXTLINE_OUT_ENCODING_TEXTLINE_1,TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_1,TEXTLINE_OUT_FME_GROUP_NAMED3_TEXTLINE_1,TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1 DEFAULT_MACRO DestDataset_TEXTLINE $(FME_MF_DIR)turtle_script.py GUI FILENAME DestDataset_TEXTLINE文本/ Compressed_Text_Files(* TXT; *。.txt.gz)| * .txt; *。txt.gz | text_files(*。txt)| * .txt | commetting_text_files(*。txt.gz)| * .txt.gz | all_files(*)| *目的地文本文件:default_macro sourceatataset_spatialite $(fme_mf_dir)geometries.db gui multifile sourceatataset_spatialite spatialite_database_files(*。sqlite; *。db; *。sl3)| * .sqlite; *。db; *。sl3 | spatialite_database_files(*。sqlite)| *。sqlite.| spatialite_database_files(*。db)| * .db | spatialite_database_files(*。sl3)| * .sl3 | all_files(*)| * spatialite数据库包括[if {{$(destdataset_textline)} == {} {puts_real {参数必须给出“destdataset_textline”值。};退出1;};]包括[如果{{$(sourceataSet_spatialite)} == {}} {puts_real {参数'sourceatataset_spatialite'必须给出一个值。};退出1;};]#! START_HEADER #! START_WB_HEADER READER_TYPE MULTI_READER MULTI_READER_TYPE{0} SPATIALITE MULTI_READER_KEYWORD{0} SPATIALITE_1 MULTI_READER_GEN_DIRECTIVES{0} EXPOSE_ATTRS_GROUP,,SPATIALITE_EXPOSE_FORMAT_ATTRS,,_MERGE_SCHEMAS,YES,TABLELIST,,READ_ROW_ID,Yes,READ_NULLS,YES,ENCODE_FEATURE_TYPE_AND_ATTR_NAMES,YES,READ_BOOLEANS_AS_YES_NO,YES,QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS,Yes WRITER_TYPE MULTI_WRITER MULTI_WRITER_DATASET_ORDER BY_ID MULTI_WRITER_FIRST_WRITER_ID 0 MULTI_WRITER_TYPE{0} TEXTLINE MULTI_WRITER_KEYWORD{0} TEXTLINE_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "SPATIALITE_1" #! END_WB_HEADER #! START_SOURCE_HEADER SPATIALITE SPATIALITE_1 # ============================================================================ # The following GUI line prompts for a file or connection to be used as the # source of the SpatiaLite databases. # 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_SPATIALITE_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER SPATIALITE SPATIALITE_1 DEFAULT_MACRO SourceDataset_SPATIALITE_1 $(SourceDataset_SPATIALITE) GUI MULTIFILE SourceDataset_SPATIALITE_1 SpatiaLite_Database_Files(*.sqlite;*.db;*.sl3)|*.sqlite;*.db;*.sl3|SpatiaLite_Database_Files(*.sqlite)|*.sqlite|SpatiaLite_Database_Files(*.db)|*.db|SpatiaLite_Database_Files(*.sl3)|*.sl3|All_files(*)|* SpatiaLite Database DEFAULT_MACRO SPATIALITE_IN_FME_CONNECTION_GROUP_SPATIALITE_1 GUI OPTIONAL DISCLOSUREGROUP SPATIALITE_IN_FME_CONNECTION_GROUP_SPATIALITE_1 SPATIALITE_IN_NAMED_CONNECTION Database Connection DEFAULT_MACRO SPATIALITE_IN_READ_ROW_ID_SPATIALITE_1 Yes SPATIALITE_1_READ_ROW_ID "$(SPATIALITE_IN_READ_ROW_ID_SPATIALITE_1)" DEFAULT_MACRO SPATIALITE_IN_EXPOSE_ATTRS_GROUP_SPATIALITE_1 SPATIALITE_1_EXPOSE_ATTRS_GROUP "$(SPATIALITE_IN_EXPOSE_ATTRS_GROUP_SPATIALITE_1)" DEFAULT_MACRO SPATIALITE_IN_READ_BOOLEANS_AS_YES_NO_SPATIALITE_1 YES SPATIALITE_1_READ_BOOLEANS_AS_YES_NO "$(SPATIALITE_IN_READ_BOOLEANS_AS_YES_NO_SPATIALITE_1)" DEFAULT_MACRO SPATIALITE_IN_READ_NULLS_SPATIALITE_1 YES SPATIALITE_1_READ_NULLS "$(SPATIALITE_IN_READ_NULLS_SPATIALITE_1)" DEFAULT_MACRO SPATIALITE_IN_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS_SPATIALITE_1 Yes SPATIALITE_1_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS "$(SPATIALITE_IN_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS_SPATIALITE_1)" DEFAULT_MACRO SPATIALITE_IN_ENCODE_FEATURE_TYPE_AND_ATTR_NAMES_SPATIALITE_1 YES SPATIALITE_1_ENCODE_FEATURE_TYPE_AND_ATTR_NAMES "$(SPATIALITE_IN_ENCODE_FEATURE_TYPE_AND_ATTR_NAMES_SPATIALITE_1)" # =========================================================================== DEFAULT_MACRO SPATIALITE_IN_NETWORK_AUTHENTICATION_SPATIALITE_1 SPATIALITE_1_NETWORK_AUTHENTICATION "$(SPATIALITE_IN_NETWORK_AUTHENTICATION_SPATIALITE_1)" GUI OPTIONAL AUTHENTICATOR SPATIALITE_IN_NETWORK_AUTHENTICATION_SPATIALITE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # ============================================================================ DEFAULT_MACRO SPATIALITE_IN_ATTRIBUTE_READING_SPATIALITE_1 DEFLINE SPATIALITE_1_ATTRIBUTE_READING "$(SPATIALITE_IN_ATTRIBUTE_READING_SPATIALITE_1)" # ============================================================================ SPATIALITE_1_GENERATE_FME_BUILD_NUM 18552 SPATIALITE_1_DATASET "$(SourceDataset_SPATIALITE_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "TEXTLINE_1" #! END_WB_HEADER #! START_DEST_HEADER TEXTLINE TEXTLINE_1 # ===================================================================== # The following GUI line prompts for a folder to be used as the # the destination for the TextLine files. The user input is stored in # a macro, which is then used to define the dataset to be written. #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_TEXTLINE_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER TEXTLINE TEXTLINE_1 DEFAULT_MACRO DestDataset_TEXTLINE_1 $(DestDataset_TEXTLINE) GUI FILENAME DestDataset_TEXTLINE_1 Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*)|* Destination Text File: DEFAULT_MACRO TEXTLINE_OUT_FME_GROUP_NAMED1_TEXTLINE_1 GUI OPTIONAL DISCLOSUREGROUP TEXTLINE_OUT_FME_GROUP_NAMED1_TEXTLINE_1 TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1 Writer Parameters # ===================================================================== # The following GUI line prompts for the overwrite flag. The default is # YES. Possible values are YES or NO. Any value other than NO or # no is interpreted as YES. DEFAULT_MACRO TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1 YES TEXTLINE_1_OVERWRITE_FILE "$(TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1)" GUI CHOICE TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1 YES%NO Overwrite Existing File: DEFAULT_MACRO TEXTLINE_OUT_FME_GROUP_NAMED2_TEXTLINE_1 GUI OPTIONAL DISCLOSUREGROUP TEXTLINE_OUT_FME_GROUP_NAMED2_TEXTLINE_1 TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1%TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_1%TEXTLINE_OUT_ENCODING_TEXTLINE_1%TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_1 File Contents # ===================================================================== # Set the type of encoding for the output file # ===================================================================== # Set line termination character DEFAULT_MACRO TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1 System TEXTLINE_1_END_OF_LINE "$(TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1)" GUI CHOICE TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1 System%Windows%Unix%Macintosh%Source%None Line Termination: # ===================================================================== # Set whether to write the last line termination character DEFAULT_MACRO TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_1 YES TEXTLINE_1_WRITE_LAST_EOL "$(TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_1)" GUI CHOICE TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_1 YES%NO Write Last Line Terminator: DEFAULT_MACRO TEXTLINE_OUT_ENCODING_TEXTLINE_1 SYSTEM TEXTLINE_1_ENCODING "$(TEXTLINE_OUT_ENCODING_TEXTLINE_1)" GUI STRING_OR_ENCODING TEXTLINE_OUT_ENCODING_TEXTLINE_1 SYSTEM%* Character Encoding: # ===================================================================== # The following GUI line prompts for the overwrite flag. The default is # YES. Possible values are YES or NO. Any value other than NO or # no is interpreted as YES. DEFAULT_MACRO TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_1 YES TEXTLINE_1_WRITE_UTF8_BOM "$(TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_1)" GUI CHOICE TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_1 YES%NO Write UTF Byte Order Mark DEFAULT_MACRO TEXTLINE_OUT_FME_GROUP_NAMED3_TEXTLINE_1 GUI OPTIONAL DISCLOSUREGROUP TEXTLINE_OUT_FME_GROUP_NAMED3_TEXTLINE_1 TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1 FME Server Parameters # ===================================================================== # Set the mime type. Note -- it is actually only used inside of workspaces # as a FORMAT_PARAMETER which even then is parsed only by the FME Server # Repository Manager DEFAULT_MACRO TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1 text/plain TEXTLINE_1_MIME_TYPE "$(TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1)" GUI STRING_OR_CHOICE TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1 application/json%application/octet-stream%application/xml%application/x-www-form-urlencoded%image/gif%image/jpeg%image/png%image/tiff%multipart/mixed%multipart/alternative%multipart/related%text/html%text/plain%text/xml MIME Type: # ============================================================================ # Opt in for destination dataset type vs format type validation DEFAULT_MACRO TEXTLINE_OUT_DESTINATION_DATASETTYPE_VALIDATION_TEXTLINE_1 Yes TEXTLINE_1_DESTINATION_DATASETTYPE_VALIDATION "$(TEXTLINE_OUT_DESTINATION_DATASETTYPE_VALIDATION_TEXTLINE_1)" DEFAULT_MACRO TEXTLINE_OUT_COORDINATE_SYSTEM_GRANULARITY_TEXTLINE_1 FEATURE TEXTLINE_1_COORDINATE_SYSTEM_GRANULARITY "$(TEXTLINE_OUT_COORDINATE_SYSTEM_GRANULARITY_TEXTLINE_1)" # ============================================================================ TEXTLINE_1_GENERATE_FME_BUILD_NUM 18552 TEXTLINE_1_DATASET "$(DestDataset_TEXTLINE_1)" #! END_DEST_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)geometries_2_pyturtle.log" LOG_APPEND NO LOG_TIMINGS YES 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 MAPPING_FILE_ID geodatabase_2_pyscript DEFAULT_MACRO DATASET_KEYWORD_SPATIALITE_1 SPATIALITE_1 DEFAULT_MACRO DATASET_KEYWORD_TEXTLINE_1 TEXTLINE_1 # ------------------------------------------------------------------------- SPATIALITE_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME geometries_2_pyturtle MACRO FME_VIEWER_APP fmedatainspector # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD $(DATASET_KEYWORD_SPATIALITE_1) INPUT FEATURE_TYPE * ROUTE SPATIALITE SPATIALITE_1::features multi_reader_keyword,$(DATASET_KEYWORD_SPATIALITE_1) TO FME_GENERIC ::features ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * SPATIALITE_1_MERGE_DEF SPATIALITE_1::features EXACT features DEFLINE spatialite_type,wkb_none,fme_attribute_reading,defined,_geometry,string 200 #---------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "features (SPATIALITE_1) Splitter" INPUT FEATURE_TYPE features OUTPUT FEATURE_TYPE features_SPATIALITE_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- # First determine which function we are going to be using -- we can do # this statically at parse time for efficiency sake MACRO GeometryReplacer_SetTempAttr MACRO GeometryReplacer_Function MACRO GeometryReplacer_RemoveTempAttr MACRO GeometryReplacer_RemoveSourceAttr INCLUDE [ set sourceText {@EvaluateExpression(FDIV,STRING_ENCODED, 价值 _geometry ,GeometryReplacer)};集decodedText [FME_DecodeText “$ sourceText”];如果![正则表达式{@EvaluateExpression \([^)] * STRING_ENCODED,@值\(([^()] *)\)[^()] * \)} “$ decodedText” 虚拟geomSrcAttr] {看跌期权“MACRO GeometryReplacer_SetTempAttr @SupplyAttributes(编码,__ __ GeometryReplacerTemp,\ “$ sourceText \”)“;放 “MACRO GeometryReplacer_RemoveTempAttr @RemoveAttributes(__ GeometryReplacerTemp__)”;设置geomSrcAttr __GeometryReplacerTemp__;} ELSEIF {{}无== {是}} {放 “MACRO GeometryReplacer_RemoveSourceAttr @RemoveAttributes(\” $ geomSrcAttr \ “)”;};如果{{} WKT == {fmebinary}} {放 “MACRO GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_BINARY,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {fmehex}} {看跌期权 “MACRO GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_BINARY_HEX,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {fmexml}} {看跌期权 “MACRO GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE,\” $ geomSrcAttr \ “)”; } elseif {{wkt} == {fmexmlencoded} } { puts "MACRO GeometryReplacer_Function @Geometry(FROM_ENCODED_STRING,&\"$geomSrcAttr\")"; } elseif {{wkt} == {polyline} } { puts "MACRO GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_POLYLINE,\"$geomSrcAttr\")"; } elseif {{wkt} == {wkt} } { puts "MACRO GeometryReplacer_Function @OGCGeometry(from_attribute,wkt,\"$geomSrcAttr\",FLOAT_64)"; } elseif {{wkt} == {wkb} || {wkt} == {wkbhex} } { puts "MACRO GeometryReplacer_Function @OGCGeometry(from_attribute,wkt,\"$geomSrcAttr\")"; } elseif {{wkt} == {GEOJSON} || {wkt} == {ESRIJSON} } { puts "MACRO GeometryReplacer_Function @JSONGeometry(FROM_ATTRIBUTE,wkt,\"$geomSrcAttr\")"; } elseif {{wkt} == {GEORSS} } { puts "MACRO GeometryReplacer_Function @GeoRSSGeometry(FROM_ATTRIBUTE,\"$geomSrcAttr\")"; } elseif {{wkt} == {KML} } { puts "MACRO GeometryReplacer_Function @KMLGeometry(FROM_ATTRIBUTE,\"$geomSrcAttr\")"; } elseif {{wkt} == {GML} } { puts "MACRO GeometryReplacer_Function @GMLGeometry(FROM_ATTRIBUTE,\"$geomSrcAttr\", )”;} elseif {{wkt} == {geohash}} {puts "MACRO GeometryReplacer_Function @GeoHash(FROM_ATTRIBUTE,\"$geomSrcAttr\", )“;} elseif的{{WKT} == {} ogeosms || {WKT} == {} geosms || {WKT} == {地理}} {看跌期权 ”MACRO GeometryReplacer_Function @OGCGeometry(from_attribute,WKT,\“ $geomSrcAttr \ “)”;} elseif的{{WKT} == {MGRS}} {看跌期权“MACRO GeometryReplacer_Function @MGRS(FROM_MGRS, , \“@EvaluateExpression (FDIV STRING_ENCODED, 价值 _geometry ,GeometryReplacer)\ “)”} ELSEIF {{} WKT == {MSSQL}} {放 “MACRO GeometryReplacer_Function @SerializeGeometry(from_attribute,WKT,\” $ geomSrcAttr \”, )”;} elseif {{wkt} == {iso6709}} {puts "MACRO GeometryReplacer_Function @地理点(FROM_ATTRIBUTE,\"$geomSrcAttr\")";} elseif {{wkt} == {qlikmaps}} {puts "MACRO GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_QLIKMAPS_POLYLINE,\"$geomSrcAttr\")";};] FACTORY_DEF * TeeFactory FACTORY_NAME GeometryReplacer输入FEATURE_TYPE features_SPATIALITE_1输出FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes (FME_STRICT、___fme_rejection_code___ fme_rejection_code) (GeometryReplacer_SetTempAttr) (GeometryReplacer_Function)美元美元(GeometryReplacer_RemoveTempAttr) FACTORY_DEF * TestFactory FACTORY_NAMEGeometryReplacer_Rejector输入FEATURE_TYPE ___TOREJECTOR___测试@ value (fme_rejection_code) ! = "输出失败FEATURE_TYPE GeometryReplacer_OUTPUT @RenameAttributes (FME_STRICT、fme_rejection_code ___fme_rejection_code___) (GeometryReplacer_RemoveSourceAttr美元 ) # ------------------------------------------------------------------------- 包括(如果{ {NO} == {YES} } { puts {MACRO DO_TOPFER TOPFER_INDEX _topferIndex 1 1}; } else { puts {MACRO DO_TOPFER }; } ] FACTORY_DEF {*} BoundingBoxFactory FACTORY_NAME BoundingBoxAccumulator INPUT FEATURE_TYPE GeometryReplacer_OUTPUT BOUNDING_BOX_TYPE GEOMETRIC ACCUMULATE_ATTRIBUTES One LIST_ATTRS_TO_INCLUDE { } LIST_ATTRS_TO_INCLUDE_MODE SELECTED $(DO_TOPFER) OUTPUT BOUNDING_BOX FEATURE_TYPE BoundingBoxAccumulator_BOUNDING_BOX OUTPUT ORIGINAL FEATURE_TYPE BoundingBoxAccumulator_ORIGINAL # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME BoundsExtractor INPUT FEATURE_TYPE .BoundingBoxAccumulator_BOUNDING_BOX输出FEATURE_TYPE BoundsExtractor_OUTPUT @Bounds (fme_encoded _xmin, _ymin…几何 ) # ------------------------------------------------------------------------- 包括(如果{{属性}= ={属性}}{所说的“宏观FeatureMerger_REFERENCE_INFO属性”;} elsef {{attributes} == {geom_build} && { } == {polygons}} {puts“macro featuremerger_reference_info geom_build_polys”;} elsef {{attributes} == {geom_build} && { } == {聚合}} {puts“macro featuremerger_reference_info geom_build_aggregates”;} elsef {{attributes} == {geom_build} && { } == {lineSfromopointss}} {puts“macro featuremerger_reference_info geom_build_lines_from_points”;} elsef {{attributes} == {geom_and_attrs} && { } == {polygons}} {puts“macro featuremerger_reference_info geom_and_attr_build_polys”;} elsef {{attributes} == {geom_and_attrs} && { } == {聚合}} {puts“macro featuremerger_reference_info geom_and_attr_build_aggregates”;} elsef {{attributes} == {geom_and_attrs} && { } == {lineSfromopoints}} {puts“宏efturemerger_reference_info geom_and_attr_build_lines_from_points”;} elsef {{attributes} == {geom_build}} {puts“macro featuremerger_reference_info geom_build_aggregates”;} elsef {{attributes} == {geom_and_attrs}} {puts“macro featuremerger_reference_info geom_and_attr_build_aggregates”;} 别的 {};] FACTORY_DEF {*} ReferenceFactory FACTORY_NAME FeatureMerger输入参考进行FEATURE_TYPE BoundingBoxAccumulator_ORIGINAL INPUT REFERENCEE FEATURE_TYPE BoundsExtractor_OUTPUT REFERENCE_INFO $(FeatureMerger_REFERENCE_INFO)REFERENCE_TABLE 1 AUTO ATTR_ACCUM_MODE “HANDLE_CONFLICT” ATTR_CONFLICT_RES “REQUESTOR_IF_CONFLICT” IGNORE_NULLS “否” HANDLE_NULL_MISSING_KEYS_LIKE_FME2013没有LIST_ATTRS_TO_INCLUDE { list_attrs_to_include_mode. MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES NO REFERENCEES_FIRST NO REJECT_INVALID_GEOM Yes CLEANING_TOLERANCE 输出完整FEATURE_TYPE FeatureMerger_MERGED # ------------------------------------------------------------------------- 包括(如果{{笛卡尔}= ={笛卡尔}}{把{宏Offsetter_OFFSET @Offset(拒绝的,“@EvaluateExpression (FDIV、浮点数、- 价值 _xmin. 抵消)”、“@EvaluateExpression (FDIV、浮点数、- 价值 _ymin. ,offsetter)“,”0“)};} elsef {{cartesian} == {polar}} {puts {宏offsetter_offset @offset(拒绝,”笛卡尔“,” ”、“ “)};} elsef {{cartesian} == {spherical}} {puts {宏offsetter_offset @offset(拒绝,”笛卡尔“,” ”、“ ”、“ “)};}其他{{放MACRO Offsetter_OFFSET @Offset(抛弃,” @ EvaluateExpression(FDIV,FLOAT, - 价值 _xmin. 抵消)”、“@EvaluateExpression (FDIV、浮点数、- 价值 _ymin. ,Offsetter)”, “0”)};}] FACTORY_DEF * TeeFactory FACTORY_NAME Offsetter_OffsetterInput INPUT FEATURE_TYPE FeatureMerger_MERGED OUTPUT FEATURE_TYPE ___TOOFFSETTER___ FACTORY_DEF * TeeFactory FACTORY_NAME Offsetter_Offsetter INPUT FEATURE_TYPE ___TOOFFSETTER___ @RenameAttributes(FME_STRICT,___ fme_rejection_code ___,fme_rejection_code)OUTPUT FEATURE_TYPE ___TOREJECTOR___ $(Offsetter_OFFSET)FACTORY_DEF *TestFactory中FACTORY_NAME Offsetter_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code)!= “” 输出失败FEATURE_TYPE Offsetter_Offset @RenameAttributes(FME_STRICT,fme_rejection_code,___ fme_rejection_code___)FACTORY_DEF * TestFactory中FACTORY_NAME Offsetter_PointCloudOffsetter INPUT FEATURE_TYPE Offsetter_Offset测试与fme_type == “fme_point_cloud” TEST “”!=““Boolean_operator和输出传递Feature_type offsetter_offset @transformpointCloud(偏移量,)输出失败Feature_type Offsetter_offset#----------------------------------------------------------------------------- INCLUDE [ set macroLine "MACRO AttributeKeeper_2_2af9c4f8_8a7b_44ba_a595_b75d467fcc4414_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] FACTORY_DEF {*} TeeFactory FACTORY_NAME AttributeKeeper_2 INPUT FEATURE_TYPE Offsetter_OFFSET OUTPUT { FEATURE_TYPE AttributeKeeper_2_OUTPUT @KeepAttributes(fme_encoded,,fme_pcre_match,"^fme_$(AttributeKeeper_2_2af9c4f8_8a7b_44ba_a595_b75d467fcc4414_LIST_EXP)") } FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeKeeper_2 OUTPUT Splitter" INPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT OUTPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT_0_muAz4GqwTdk= OUTPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT_1_eKOY+pR0mH0= # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "1StandardDeviationSelector Input Input Collector" INPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT_0_muAz4GqwTdk= OUTPUT FEATURE_TYPE 1StandardDeviationSelector_Input MACRO 1StandardDeviationSelector_WORKSPACE_NAME 1StandardDeviationSelector MACRO $(1StandardDeviationSelector_WORKSPACE_NAME)_XFORMER_NAME 1StandardDeviationSelector MACRO $(1StandardDeviationSelector_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(1StandardDeviationSelector_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(1StandardDeviationSelector_WORKSPACE_NAME)_SUB_DOC_NAME 1StandardDeviationSelector DEFAULT_MACRO 1StandardDeviationSelector_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(1StandardDeviationSelector_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(1StandardDeviationSelector_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(1StandardDeviationSelector_WORKSPACE_NAME)_Input1544981819 Input Splitter" INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_Input" # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_AttributeCreator COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_Input" MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION { "" "x" "SET_TO" " XValue } ATTR_ACTION {"" "y" "SET_TO" "} yvalue. “}输出输出FEATURE_TYPE ”$(1StandardDeviationSelector_WORKSPACE_NAME)_AttributeCreator_OUTPUT“ #---------------------------------------------------------------------FACTORY_DEF * TeeFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_GeometryRemover INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_AttributeCreator_OUTPUT" OUTPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_GeometryRemover_OUTPUT" @RemoveGeometry() # ------------------------------------------------------------------------- DEFAULT_MACRO __$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_e75c9cb9_b966_44a1_b8a9_5eef0f4badc922_GROUP_BY DYNAMIC_FUNCTION_CONFIGURATION Python FMEOBJECTS DYNAMIC_FUNCTION_CONFIGURATION Python import StatisticsCalculator DYNAMIC_FUNCTION_CONFIGURATION Python "StatisticsCalculator.connectTransformer( '$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator',{ 'GROUP_BY_MACRO':'__$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_e75c9cb9_b966_44a1_b8a9_5eef0f4badc922_GROUP_BY', 'STATS_ATTRS':'x', 'MIN_ATTR':'_minx', 'MAX_ATTR':'_maxx', 'COUNT_ATTR':'_countx', 'MEAN_ATTR':'_meanx', 'MEDIAN_ATTR':'_medianx', 'STDEV_ATTR':'_stdevx', 'STDEVP_ATTR':'_stdevpx', 'COMPUTE_HISTOGRAM':'NO', 'HISTO_ATTR':' ', 'PREPEND_ATTR_NAME':'No', 'encoded_result_attrs':True, None:None})"FACTORY_DEF * TeeFactory FACTORY_NAME美元(1 standarddeviationselector_workspace_name) _StatisticsCalculator_InputProcessor输入FEATURE_TYPE " $ (1 standarddeviationselector_workspace_name) _GeometryRemover_OUTPUT "输出FEATURE_TYPE __ORIGINAL__ @Python (StatisticsCalculator.recordFeature, (1 standarddeviationselector_workspace_name) _StatisticsCalculator美元)FACTORY_DEF * TeeFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_UnneededInputNuker INPUT FEATURE_TYPE __ORIGINAL__ OUTPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE" FACTORY_DEF * SortFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_CompleteOutputter INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE" OUTPUT SORTED FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE" @Python(StatisticsCalculator.summarizeStatistics,$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator,__ORIGINAL__) FACTORY_DEF * CreationFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_SummaryCreator CREATE_AT_END NUMBER_TO_CREATE 1 FACTORY_DEF * ElementFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_SummaryExploder LIST_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_stats{} MODE LEAN_AND_MEAN CLONE_GEOMETRY no INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ # ------------------------------------------------------------------------- DEFAULT_MACRO __$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2_4a042a14_cb20_4285_965b_956a831fb68522_GROUP_BY DYNAMIC_FUNCTION_CONFIGURATION Python FMEOBJECTS DYNAMIC_FUNCTION_CONFIGURATION Python import StatisticsCalculator DYNAMIC_FUNCTION_CONFIGURATION Python "StatisticsCalculator.connectTransformer( '$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2',{ 'GROUP_BY_MACRO':'__$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2_4a042a14_cb20_4285_965b_956a831fb68522_GROUP_BY', 'STATS_ATTRS':'y', 'MIN_ATTR':'_miny', 'MAX_ATTR':'_maxy', 'COUNT_ATTR':'_county', 'MEAN_ATTR':'_meany', 'MEDIAN_ATTR':'_mediany', 'STDEV_ATTR':'_stdevy', 'STDEVP_ATTR':'_stdevpy', 'COMPUTE_HISTOGRAM':'NO', 'HISTO_ATTR':' ', 'PREPEND_ATTR_NAME':'No', 'encoded_result_attrs':True, None:None})"FACTORY_DEF * TeeFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2_InputProcessor INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE" OUTPUT FEATURE_TYPE __ORIGINAL__ .@Python(StatisticsCalculator.recordFeature,$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2) FACTORY_DEF * TeeFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME) _statisticscalculator_2_unneeddinputnuker INPUT FEATURE_TYPE __ORIGINAL__ OUTPUT FEATURE_TYPE$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2_COMPLETE" FACTORY_DEF * SortFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2_CompleteOutputter INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ INPUT FEATURE_TYPE“$ (1 standarddeviationselector_workspace_name) _StatisticsCalculator_2_COMPLETE“输出排序FEATURE_TYPE " $ (1 standarddeviationselector_workspace_name) _StatisticsCalculator_2_COMPLETE " @Python (StatisticsCalculator.summarizeStatistics, $ (1 standarddeviationselector_workspace_name) _StatisticsCalculator_2, __ORIGINAL__) FACTORY_DEF * CreationFactoryFACTORY_NAME美元(1 standarddeviationselector_workspace_name) _StatisticsCalculator_2_SummaryCreator CREATE_AT_END NUMBER_TO_CREATE 1 FACTORY_DEF * ElementFactory FACTORY_NAME美元(1 standarddeviationselector_workspace_name) _StatisticsCalculator_2_SummaryExploder LIST_NAME美元(1 standarddeviationselector_workspace_name) _StatisticsCalculator_2_stats{}模式LEAN_AND_MEAN CLONE_GEOMETRY没有输入FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING __ # ------------------------------------------------------------------------- # 如果我们做最后N特性,那么乘数为0。如果我们先做N,乘数是-1。# For RANDOM, we need to treat LAST N as if it is first N (i.e. have a -1) #这是什么?:在比率乘数。 INCLUDE [ if { {-1} == {0} && {ORIGINAL} == {ORIGINAL} } { puts "MACRO REAL_MODE LAST"; puts "MACRO REAL_RATE 1"; } else { puts "MACRO REAL_MODE ORIGINAL"; puts "MACRO REAL_RATE [expr 1 * ( -1 ? -1 : -1 ) ]"; } ] FACTORY_DEF {*} SamplingFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_Sampler COMMAND_PARM_EVALUATION SINGLE_PASS SAMPLE_RATE $(REAL_RATE) SAMPLE_ORDER $(REAL_MODE) INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_StatisticsCalculator_2_COMPLETE" OUTPUT SAMPLED FEATURE_TYPE ___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 $(1StandardDeviationSelector_WORKSPACE_NAME)_Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___ OUTPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_Sampler_SAMPLED" # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory COMMAND_PARM_EVALUATION SINGLE_PASS FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_AttributeManager INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_Sampler_SAMPLED" MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ACTION_COLUMN 3 DEF_VAL_COLUMN 2 ATTR_ACTION { "x" "x" "" "REMOVE" } ATTR_ACTION { "y" "y" "" "REMOVE" } ATTR_ACTION { "_minx" "_minx" "" "REMOVE" } ATTR_ACTION { "_maxx" "_maxx" "" "REMOVE" } ATTR_ACTION { "_medianx" "_medianx" "" "REMOVE" } ATTR_ACTION { "_countx" "_countx" "" "REMOVE" } ATTR_ACTION { "_stdevx" "_stdevx" "" "REMOVE" } ATTR_ACTION { "_miny" "_miny" "" "REMOVE" } ATTR_ACTION { "_maxy" "_maxy" "" "REMOVE" } ATTR_ACTION { "_mediany" "_mediany" "" "REMOVE" } ATTR_ACTION { "_county" "_county" "" "REMOVE" } ATTR_ACTION { "_stdevy" "_stdevy" "" "REMOVE" } ATTR_ACTION { "" "xmin" " 评估 价值 _meanx - 价值 _stdevpx. “”set_to“} attr_action {”“”xmax“” 评估 价值 _meanx + 价值 _stdevpx. “”set_to“} attr_action {”“”ymin“” 评估 价值 _meany - 价值 _stdevpy. “”set_to“} attr_action {”“”ymax“” 评估 价值 _meany + 价值 _stdevpy. “ ”SET_TO“}输出输出FEATURE_TYPE ”$(1StandardDeviationSelector_WORKSPACE_NAME)_AttributeManager_OUTPUT“ #---------------------------------------------------------------------FACTORY_DEF * VertexCreatorFactory FACTORY_NAME $(1StandardDeviationSelector_WORKSPACE_NAME)_VertexCreator INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_AttributeManager_OUTPUT" MODE REPLACE INDEX " “continue_on_error是xval”@evaluateExpression(FDIV,Float, 价值 xmin ,$(1stressarddeviationsElector_workspace_name)_vertexcreator)“YVAL”@EvaluateExpression(FDIV,Float, 价值 ymin (1美元standarddeviationselector_workspace_name) _VertexCreator)”输出输出FEATURE_TYPE”(1 standarddeviationselector_workspace_name) _VertexCreator_OUTPUT美元 " # ------------------------------------------------------------------------- (1美元FACTORY_DEF * VertexCreatorFactory FACTORY_NAME standarddeviationselector_workspace_name) FEATURE_TYPE _VertexCreator_2输入"$(1StandardDeviationSelector_WORKSPACE_NAME)_VertexCreator_OUTPUT" MODE ADD INDEX " “continue_on_error是xval”@evaluateExpression(FDIV,Float, 价值 Xmax. ,$(1standarddeviationsElector_workspace_name)_vertexcreator_2)“yval”@evaluateExpression(FDIV,Float, 价值 ymax. ,$(1standarddeviationselector_workspace_name)_vertexcreator_2)“输出输出effect_type”$(1standarddeviationsElector_workspace_name)_vertexcreator_2_output“#---------------------------------------------------------------------检查我们是否必须做最小边界框计算包括[如果{{bb} == {minbb}} {puts {宏$(1standarddeviationselctor_bbfunce @ force2d()@bounds(min_bounding,)};} elsef {{bb} == {bb}} {{放宏$(1StandardDeviationSelector_WORKSPACE_NAME)_BoundingBoxReplacer_BBFunc @ Force2D()@Bounds(BOUNDING_BOX_AXIS_ALIGNED ,,)};}其他{{放宏$(1StandardDeviationSelector_WORKSPACE_NAME)_BoundingBoxReplacer_BBFunc @Bounds(BOUNDING_CUBE ,,)};}] FACTORY_DEF * TeeFactory FACTORY_NAME $(1standarddeviationsElector_workspace_name)_boundingboxreplacer输入feature_type“$(1standarddeviationselector_workspace_name)_vertexcreator_2_output”Output Feature_type“$(1standardDeviationsElector_workspace_name)_bound在gBoxReplacer_BOX" $($(1StandardDeviationSelector_WORKSPACE_NAME)_BoundingBoxReplacer_BBFunc) FACTORY_DEF * TeeFactory FACTORY_NAME "$(1StandardDeviationSelector_WORKSPACE_NAME)_Output1544981819 Output Collector" INPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_BoundingBoxReplacer_BOX" OUTPUT FEATURE_TYPE "$(1StandardDeviationSelector_WORKSPACE_NAME)_Output" @RemoveAttributes(_meanx,_stdevpx,_meany,_stdevpy) INCLUDE [puts {MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT_$(1StandardDeviationSelector_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME "1StandardDeviationSelector Output Output Renamer/Nuker" INPUT FEATURE_TYPE 1StandardDeviationSelector_Output OUTPUT FEATURE_TYPE 1StandardDeviationSelector_Output # ------------------------------------------------------------------------- FACTORY_DEF {*} SpatialFilterFactory FACTORY_NAME SpatialFilter INPUT BASE FEATURE_TYPE 1StandardDeviationSelector_Output INPUT CANDIDATE FEATURE_TYPE AttributeKeeper_2_OUTPUT_1_eKOY+pR0mH0= PREDICATE "INTERSECTS" USE_BOUNDING_BOX NO MULTIPLE_BASES YES MERGE_BASE_ATTR YES ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "CANDIDATE_IF_CONFLICT" BASE_ATTR_PREFIX " “predicate_attr”_predicate“boolean_operator或reake_invalid_geom yes jection_invalid_predicates是neject_ribers no allow_nulls是custom_multi_handling是维度2 curve_boundary_rule endpoints_mod2输出传递的feature_type spatialfilter_passed#---a----------------------------------------------------------- FME_PYTHON_PATH.“$(fme_mf_dir)”factory_def * pythonfactory factory_name pythoncaller输入feature_type spatialfilter_passed symbol_name featureprocessor python_namespace fmeobjects source_code导入 FME 进口 fmeobjects 进口 随机的 制作 经过 s。 Pedersen. 电子邮件: paalped gmail.com feature processor. 目的 def __init__ 自己 self.turtle_def = 进口 随机的 进口 SYS. 进口 版本 = sys.version_info. 0. 如果 版本 2: hexify. = λ X: X .to_bytes. 字节顺序= 长度= 1 .hex. 其他: hexify. = λ X: :0 2 .format 十六进制 X 。分裂 X 1 def randomColor RGB. = 为了 _ 范围 3. RGB. + = hexify. random.randint 0. 255. 返回 RGB. def worldShape 伙计 turtle.up 开始 = coords.pop. 0. Turtle.goto. *开始 turtle.down 为了 _next 坐标: Turtle.goto. * _next Turtle.goto. *开始 自我 = 如果 __name__ ==. __main__ 界限 = 界限 屏幕 = Turtle.Screen. screen.setworldcoordinates. *界限 为了 伙计 特征 Turtle.Pencolor. randomColor worldShape 伙计 Turtle.exitonclick. self.features. = 自行检查 = 真的 def 输入 自己 特征 伙计 = feature.getAllCoordinates self.features.append. 伙计 如果 自行检查: self.bounds = feature.getAttribute. xmin feature.getAttribute. ymin feature.getAttribute. Xmax. feature.getAttribute. ymax. 自行检查 = 避免 重写 相同的 变量 nfeature 时代 # self.pyoutput 特征 def 关闭 自己 newFeature = fmeobjects.fmeature. turtle_script = self.turtle_def + self.main.format 边界= self.bounds 特点= self.features newfeature.setattribute. turtle_script turtle_script newfeature.setattribute. text_line_data. turtle_script self.pyoutpul. newFeature 输出PYOUTPUT FEATURE_TYPE PythonCaller_OUTPUT # ------------------------------------------------------------------------- 包括[macroLine“宏观AttributeKeeper_3_e7037beb_ec86_4efc_9dc1_eb1c2344d5cc14_LIST_EXP”;foreach attr [split ""]{设置attr [FME_DecodeText $attr];设置attr [regsub "{}$" $attr "{}.*"];设置attr (regsub——“{}”美元attr”\ \ {\ [0 - 9 \]+ \ \}");附加macroLine”^ attr美元”;};把macroLine美元;FACTORY_DEF {*} tefactory FACTORY_NAME AttributeKeeper_3 INPUT FEATURE_TYPE PythonCaller_OUTPUT OUTPUT {FEATURE_TYPE AttributeKeeper_3_OUTPUT @KeepAttributes(fme_encoded,text_line_data,fme_pcre_match,"^fme_$(AttributeKeeper_3_e7037beb_ec86_4efc_9dc1_eb1c2344d5cc14_LIST_EXP)")} #------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME“目的地功能类型路由相关器”COMMAND_PARM_EVALUATION SINGLE_PASS输入FEATURE_TYPE *路线FME_GENERIC AttributeKeeper_3_OUTPUT, TEXTLINE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id, 0, 供应 编码 __wb_out_feat_type__ text_line 几何Feature_Type_attribute __WB_OUT_FEAT_TYPE__输出路由FEATURE_TYPE *输出NOT_ROUTED FEATURE_TYPE __NUKE_ME__ @ TCL2(“FME_STATMESSAGE 818059 [FME_GETATATRIBUTE FME_TEMPLACE_FEATURE_TYPE)818060 818061 FME_WARN”)# - - -----------------------------------------------------------------factory_def * teefactory factory_name“最终输出nuker”输入feature_type __nuke_me__