Robert,
I did a similar thing last year, but this had a
new twist to it so...
The attached does it, but arbitrary intersection
angles of your real linework will determine what
parameters you want in the bufferer. I decided
to make square-ended "sausages" from the linework.
Playing with the buffer width also produced some
weird stuff eventually, but that would be because
FME needs some basis on which to declare when the
sausage ends overlap. Too big a buffer width and
they don't overlap very nicely.
Thanks for the diversion...
Mark
Get the maximum benefit from your FME, FME Objects, or SpatialDirect via our
Professional Services team. Visit www.safe.com/services for details.
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/fme/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
#! <?xml version="1.0" encoding="iso-8859-1" ?>
#! <WORKSPACE
#
#
# Commandline to run this workspace:
#
# fme.exe homers_delight.fmw
#
#
#! GRID_VISIBLE="false"
#! ZOOM_SCALE="100"
#! FME_BUILD_NUM="1630"
#! FFS_ROUTING_DIR=""
#! FFS_ROUTING_DIR_SRC=""
#! ROUTE_FROM_FFS="false"
#! GRID_HEIGHT="50"
#! ROUTE_TO_VIEWER="false"
#! TITLE="Untitled"
#! SHOW_INFO_NODES="true"
#! SHOW_BOOKMARKS="true"
#! VIEW_POSITION="9 0"
#! VIEW_PAGE_BREAKS="false"
#! WORKSPACE_VERSION="1"
#! ROUTE_TO_NULL="false"
#! LOG_FILE=""
#! ROUTE_TO_FFS="false"
#! SHOW_ANNOTATIONS="true"
#! GRID_WIDTH="50"
#! GRID_SNAPTO="false"
#! >
#! <DATASETS>
#! </DATASETS>
#! <DATA_TYPES>
#! </DATA_TYPES>
#! <GEOM_TYPES>
#! </GEOM_TYPES>
#! <FEATURE_TYPES>
#! </FEATURE_TYPES>
#! <COMMENTS>
#! <COMMENT
#! IDENTIFIER="27"
#! COMMENT_VALUE="A bunch of lines|"
#! POSITION="594 -53"
#! ORDER="28"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="0"
#! />
#! <COMMENT
#! IDENTIFIER="28"
#! COMMENT_VALUE="Just a "funnel" to |converge them all|"
#! POSITION="690 -245"
#! ORDER="29"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="8"
#! />
#! <COMMENT
#! IDENTIFIER="29"
#! COMMENT_VALUE="If there is dirty linework...|"
#! POSITION="594 -1042"
#! ORDER="30"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="9"
#! />
#! <COMMENT
#! IDENTIFIER="30"
#! COMMENT_VALUE="Original linework|"
#! POSITION="1558 -32"
#! ORDER="31"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="1"
#! />
#! <COMMENT
#! IDENTIFIER="31"
#! COMMENT_VALUE="Intersected linework|"
#! POSITION="1500 -1413"
#! ORDER="32"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="10"
#! />
#! <COMMENT
#! IDENTIFIER="32"
#! COMMENT_VALUE="Sausages from lines|"
#! POSITION="2029 -510"
#! ORDER="33"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="11"
#! />
#! <COMMENT
#! IDENTIFIER="33"
#! COMMENT_VALUE="Four donuts from sausages|Doh! And a poly|"
#! POSITION="1942 -1038"
#! ORDER="34"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="13"
#! />
#! <COMMENT
#! IDENTIFIER="34"
#! COMMENT_VALUE="Buffer width is significant. Play with it|and watch the wild results in VIS-4||See FME doc'n for |Interpolation Angle and|Buffer Style.|"
#! POSITION="1589 -175"
#! ORDER="35"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="7"
#! />
#! <COMMENT
#! IDENTIFIER="35"
#! COMMENT_VALUE="The "sausages" overlap of course|"
#! POSITION="1247 -1111"
#! ORDER="36"
#! FOLLOW_ANCHOR="true"
#! INFO_NODE="false"
#! ANCHORED_NODE="12"
#! />
#! </COMMENTS>
#! <CONSTANTS>
#! </CONSTANTS>
#! <BOOKMARKS>
#! </BOOKMARKS>
#! <TRANSFORMERS>
#! <TRANSFORMER
#! IDENTIFIER="0"
#! TYPE="2DCreator"
#! VERSION="1"
#! POSITION="38 -116"
#! ORDER="14"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="CREATED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DCREATOR" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="CRE_ATTR" PARM_VALUE="_creation_instance" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="COORDS" PARM_VALUE="0 0 1 1" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="1"
#! TYPE="Visualizer"
#! VERSION="1"
#! POSITION="1286 -47"
#! ORDER="15"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="VISUALIZER" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="TACKATTRS" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="PEN_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="AREA_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="2"
#! TYPE="2DCreator"
#! VERSION="1"
#! POSITION="38 -275"
#! ORDER="16"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="CREATED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DCREATOR_2" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="CRE_ATTR" PARM_VALUE="_creation_instance" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="COORDS" PARM_VALUE="0 0 1 0" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="3"
#! TYPE="2DCreator"
#! VERSION="1"
#! POSITION="38 -425"
#! ORDER="17"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="CREATED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DCREATOR_3" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="CRE_ATTR" PARM_VALUE="_creation_instance" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="COORDS" PARM_VALUE="1 0 1 1" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="4"
#! TYPE="2DCreator"
#! VERSION="1"
#! POSITION="38 -582"
#! ORDER="18"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="CREATED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DCREATOR_4" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="CRE_ATTR" PARM_VALUE="_creation_instance" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="COORDS" PARM_VALUE="1 1 0 1" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="5"
#! TYPE="2DCreator"
#! VERSION="1"
#! POSITION="38 -782"
#! ORDER="19"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="CREATED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DCREATOR_5" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="CRE_ATTR" PARM_VALUE="_creation_instance" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="COORDS" PARM_VALUE="0 1 0 0" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="6"
#! TYPE="2DCreator"
#! VERSION="1"
#! POSITION="38 -981"
#! ORDER="20"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="CREATED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DCREATOR_6" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="CRE_ATTR" PARM_VALUE="_creation_instance" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="COORDS" PARM_VALUE="1 0 0 1" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="7"
#! TYPE="Bufferer"
#! VERSION="2"
#! POSITION="1202 -535"
#! ORDER="21"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="BUFFERED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_overlaps" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_segments" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="ANGLE" PARM_VALUE="0" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="BUFFSTYLE" PARM_VALUE="CAP_PROJECTING" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="GROUP_BY" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="WIDTH" PARM_VALUE="0.01" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="BUFFERER" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="8"
#! TYPE="Scaler"
#! VERSION="0"
#! POSITION="653 -471"
#! ORDER="22"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="SCALED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_PARM PARM_NAME="ZSCALE" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="TEXT_LOC_ONLY" PARM_VALUE="Location and Size" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="SCALER" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="YSCALE" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XSCALE" PARM_VALUE="1" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="9"
#! TYPE="Intersector"
#! VERSION="1"
#! POSITION="657 -686"
#! ORDER="23"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="INTERSECTED"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_overlaps" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_segments" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <OUTPUT_FEAT NAME="NODE"/>
#! <FEAT_COLLAPSED COLLAPSED="1"/>
#! <XFORM_ATTR ATTR_NAME="_node_number" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <XFORM_ATTR ATTR_NAME="_overlaps" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <XFORM_ATTR ATTR_NAME="_segments" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <XFORM_PARM PARM_NAME="LIST_NAME" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="OV_ATTR" PARM_VALUE="_overlaps" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="INTERSECTOR" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="SEG_ATTR" PARM_VALUE="_segments" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="DUPLICATE_Z_NODES" PARM_VALUE="No" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="GRP_BY" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="10"
#! TYPE="Visualizer"
#! VERSION="1"
#! POSITION="1200 -1211"
#! ORDER="24"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="VISUALIZER_2" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="TACKATTRS" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="PEN_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="AREA_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="11"
#! TYPE="Visualizer"
#! VERSION="1"
#! POSITION="1767 -498"
#! ORDER="25"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="VISUALIZER_3" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="TACKATTRS" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="PEN_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="AREA_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="12"
#! TYPE="Dissolver"
#! VERSION="2"
#! POSITION="1212 -757"
#! ORDER="26"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <OUTPUT_FEAT NAME="AREA"/>
#! <FEAT_COLLAPSED COLLAPSED="0"/>
#! <XFORM_ATTR ATTR_NAME="_num_dissolved" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_overlaps" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_segments" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="0"/>
#! <OUTPUT_FEAT NAME="INTERIOR_LINE"/>
#! <FEAT_COLLAPSED COLLAPSED="1"/>
#! <XFORM_ATTR ATTR_NAME="_num_dissolved" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <XFORM_ATTR ATTR_NAME="_overlaps" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <XFORM_ATTR ATTR_NAME="_segments" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="1"/>
#! <OUTPUT_FEAT NAME="NON_POLYGON"/>
#! <FEAT_COLLAPSED COLLAPSED="2"/>
#! <XFORM_ATTR ATTR_NAME="_num_dissolved" IS_USER_CREATED="false" FEAT_INDEX="2"/>
#! <XFORM_ATTR ATTR_NAME="_overlaps" IS_USER_CREATED="false" FEAT_INDEX="2"/>
#! <XFORM_ATTR ATTR_NAME="_segments" IS_USER_CREATED="false" FEAT_INDEX="2"/>
#! <XFORM_ATTR ATTR_NAME="_creation_instance" IS_USER_CREATED="false" FEAT_INDEX="2"/>
#! <XFORM_PARM PARM_NAME="LIST_NAME" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="AV" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="GROUP_BY" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="NO_OVRLP" PARM_VALUE="No" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="DISSOLVER" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="SUM" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="DIS_ATTR" PARM_VALUE="_num_dissolved" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="WEIGHT" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! <TRANSFORMER
#! IDENTIFIER="13"
#! TYPE="Visualizer"
#! VERSION="1"
#! POSITION="1771 -785"
#! ORDER="27"
#! PARMS_EDITED="true"
#! ENABLED="true"
#! >
#! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="VISUALIZER_4" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="TACKATTRS" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="PEN_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! <XFORM_PARM PARM_NAME="AREA_COLOR" PARM_VALUE="" ALWAYS_PROMPT_PARM="false"/>
#! </TRANSFORMER>
#! </TRANSFORMERS>
#! <FEAT_LINKS>
#! <FEAT_LINK
#! IDENTIFIER="14"
#! SOURCE_NODE="0"
#! TARGET_NODE="8"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="15"
#! SOURCE_NODE="2"
#! TARGET_NODE="8"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="16"
#! SOURCE_NODE="3"
#! TARGET_NODE="8"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="17"
#! SOURCE_NODE="4"
#! TARGET_NODE="8"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="18"
#! SOURCE_NODE="5"
#! TARGET_NODE="8"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="19"
#! SOURCE_NODE="6"
#! TARGET_NODE="8"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="20"
#! SOURCE_NODE="8"
#! TARGET_NODE="9"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="21"
#! SOURCE_NODE="9"
#! TARGET_NODE="7"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="22"
#! SOURCE_NODE="8"
#! TARGET_NODE="1"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="23"
#! SOURCE_NODE="9"
#! TARGET_NODE="10"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="24"
#! SOURCE_NODE="7"
#! TARGET_NODE="11"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="25"
#! SOURCE_NODE="7"
#! TARGET_NODE="12"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! <FEAT_LINK
#! IDENTIFIER="26"
#! SOURCE_NODE="12"
#! TARGET_NODE="13"
#! SOURCE_PORT_DESC="fo 0"
#! TARGET_PORT_DESC="fi 0"
#! EXTRA_POINTS=""
#! />
#! </FEAT_LINKS>
#! <ATTR_LINKS>
#! </ATTR_LINKS>
#! <SUBDOCUMENTS>
#! </SUBDOCUMENTS>
#! <LOOKUP_TABLES>
#! </LOOKUP_TABLES>
#! </WORKSPACE>
#!
#! START_HEADER
#! START_WB_HEADER
READER_TYPE NULL
READER_KEYWORD NULL_SOURCE
NULL_SOURCE_DATASET null
WRITER_TYPE NULL
WRITER_KEYWORD NULL_DEST
NULL_DEST_DATASET null
#! END_WB_HEADER
#! END_HEADER
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
MACRO WORKSPACE_NAME homers_delight
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory FACTORY_NAME 2DCREATOR 2D_GEOMETRY 0 0 1 1 CREATE_AT_END no NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE 2DCREATOR_CREATED @SupplyAttributes(?,creation_instance,0) @RenameAttributes(_creation_instance,creation_instance)
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory FACTORY_NAME 2DCREATOR_2 2D_GEOMETRY 0 0 1 0 CREATE_AT_END no NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE 2DCREATOR_2_CREATED @SupplyAttributes(?,creation_instance,0) @RenameAttributes(_creation_instance,creation_instance)
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory FACTORY_NAME 2DCREATOR_3 2D_GEOMETRY 1 0 1 1 CREATE_AT_END no NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE 2DCREATOR_3_CREATED @SupplyAttributes(?,creation_instance,0) @RenameAttributes(_creation_instance,creation_instance)
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory FACTORY_NAME 2DCREATOR_4 2D_GEOMETRY 1 1 0 1 CREATE_AT_END no NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE 2DCREATOR_4_CREATED @SupplyAttributes(?,creation_instance,0) @RenameAttributes(_creation_instance,creation_instance)
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory FACTORY_NAME 2DCREATOR_5 2D_GEOMETRY 0 1 0 0 CREATE_AT_END no NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE 2DCREATOR_5_CREATED @SupplyAttributes(?,creation_instance,0) @RenameAttributes(_creation_instance,creation_instance)
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory FACTORY_NAME 2DCREATOR_6 2D_GEOMETRY 1 0 0 1 CREATE_AT_END no NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE 2DCREATOR_6_CREATED @SupplyAttributes(?,creation_instance,0) @RenameAttributes(_creation_instance,creation_instance)
# -------------------------------------------------------------------------
FACTORY_DEF * TeeFactory FACTORY_NAME SCALER INPUT FEATURE_TYPE 2DCREATOR_CREATED INPUT FEATURE_TYPE 2DCREATOR_2_CREATED INPUT FEATURE_TYPE 2DCREATOR_3_CREATED INPUT FEATURE_TYPE 2DCREATOR_4_CREATED INPUT FEATURE_TYPE 2DCREATOR_5_CREATED INPUT FEATURE_TYPE 2DCREATOR_6_CREATED OUTPUT FEATURE_TYPE SCALER_SCALED @Scale(1,1,1)
FACTORY_DEF * TeeFactory FACTORY_NAME "SCALER_SCALED Splitter" INPUT FEATURE_TYPE SCALER_SCALED OUTPUT FEATURE_TYPE SCALER_SCALED_0 OUTPUT FEATURE_TYPE SCALER_SCALED_1
# -------------------------------------------------------------------------
FACTORY_DEF * TeeFactory FACTORY_NAME INTERSECTOR_Splitter INPUT FEATURE_TYPE SCALER_SCALED_0 OUTPUT FEATURE_TYPE ___TOINTER___
FACTORY_DEF * IntersectionFactory FACTORY_NAME INTERSECTOR_Self INPUT FEATURE_TYPE ___TOINTER___ fme_type fme_line INPUT FEATURE_TYPE ___TOINTER___ fme_type fme_area IGNORE_NODE_HEIGHTS YES SELF_INTERSECTION_ONLY OUTPUT SEGMENT FEATURE_TYPE ___TOINTER___
FACTORY_DEF * TeeFactory FACTORY_NAME INTERSECTOR_ArcStroker INPUT FEATURE_TYPE ___TOINTER___ fme_type fme_arc OUTPUT FEATURE_TYPE * @Arc(&fme_primary_axis,&fme_secondary_axis,20,&fme_rotation,&fme_start_angle,&fme_sweep_angle) @SupplyAttributes(fme_type,fme_line)
FACTORY_DEF * TeeFactory FACTORY_NAME INTERSECTOR_EllipseStroker INPUT FEATURE_TYPE ___TOINTER___ fme_type fme_ellipse OUTPUT FEATURE_TYPE * @Arc(&fme_primary_axis,&fme_secondary_axis,20,&fme_rotation) @SupplyAttributes(fme_type,fme_area)
FACTORY_DEF * IntersectionFactory FACTORY_NAME INTERSECTOR_ALL INPUT FEATURE_TYPE ___TOINTER___ OVERLAP_COUNT_ATTRIBUTE _overlaps SEGMENT_COUNT_ATTRIBUTE _segments NODE_NUMBER_ATTR _node_number IGNORE_NODE_HEIGHTS YES OUTPUT SEGMENT FEATURE_TYPE INTERSECTOR_INTERSECTED fme_type fme_line
FACTORY_DEF * TeeFactory FACTORY_NAME "INTERSECTOR_INTERSECTED Splitter" INPUT FEATURE_TYPE INTERSECTOR_INTERSECTED OUTPUT FEATURE_TYPE INTERSECTOR_INTERSECTED_0 OUTPUT FEATURE_TYPE INTERSECTOR_INTERSECTED_1
# -------------------------------------------------------------------------
INCLUDE [if { ("CAP_PROJECTING" == "SIDES_ONLY") || ("CAP_PROJECTING" == "LEFT_SIDE_ONLY") || ("CAP_PROJECTING" == "RIGHT_SIDE_ONLY") } { puts "MACRO BUFFER_GEOM_TYPE fme_line" } else { puts "MACRO BUFFER_GEOM_TYPE fme_area" } ]
DEFAULT_MACRO BUFFERER_nonnullgroupby
FACTORY_DEF * TestFactory FACTORY_NAME BUFFERER_group_by_tester INPUT FEATURE_TYPE INTERSECTOR_INTERSECTED_0 TEST "$(BUFFERER_nonnullgroupby)" != "" TEST @GeometryType() == "fme_line" BOOLEAN_OPERATOR AND OUTPUT PASSED FEATURE_TYPE __to_line_join__ OUTPUT FAILED FEATURE_TYPE __do_buffer__
FACTORY_DEF * ArcFactory FACTORY_NAME BUFFERER_line_joiner INPUT FEATURE_TYPE __to_line_join__ END_NODED CLOSE_LOOPS NO OUTPUT LINE FEATURE_TYPE __do_buffer__
FACTORY_DEF * TeeFactory FACTORY_NAME BUFFERER_bufferer INPUT FEATURE_TYPE __do_buffer__ OUTPUT FEATURE_TYPE __consider__ @Buffer2(0.01,0,CAP_PROJECTING)
FACTORY_DEF * TestFactory FACTORY_NAME BUFFERER_buffer_width_0_bypass INPUT FEATURE_TYPE __consider__ TEST "0.01" = 0 OUTPUT PASSED FEATURE_TYPE __done_buffer__ OUTPUT FAILED FEATURE_TYPE __consider__
FACTORY_DEF * TestFactory FACTORY_NAME BUFFERER_router2 INPUT FEATURE_TYPE __consider__ TEST "$(BUFFERER_nonnullgroupby)" == "" TEST "$(BUFFER_GEOM_TYPE)" == "fme_line" BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE __done_buffer__ OUTPUT FAILED FEATURE_TYPE __to_dissolve__
FACTORY_DEF * OverlayFactory FACTORY_NAME BUFFERER_cutter INPUT POLYGON FEATURE_TYPE __to_dissolve__ OUTPUT POLYGON FEATURE_TYPE __to_dissolve__
FACTORY_DEF * PolygonDissolveFactory FACTORY_NAME BUFFERER_dissolver INPUT FEATURE_TYPE __to_dissolve__ DISSOLVE_COUNT_ATTRIBUTE __force_attribute_accumulation__ OUTPUT POLYGON FEATURE_TYPE __done_buffer__ @RemoveAttributes(__force_attribute_accumulation__)
FACTORY_DEF * TeeFactory FACTORY_NAME BUFFERER_outputter INPUT FEATURE_TYPE __done_buffer__ OUTPUT FEATURE_TYPE BUFFERER_BUFFERED
FACTORY_DEF * TeeFactory FACTORY_NAME "BUFFERER_BUFFERED Splitter" INPUT FEATURE_TYPE BUFFERER_BUFFERED OUTPUT FEATURE_TYPE BUFFERER_BUFFERED_0 OUTPUT FEATURE_TYPE BUFFERER_BUFFERED_1
# -------------------------------------------------------------------------
# Set the directive to add all the meta-attributes to the features.
# We do this so users see all possible information in the viewed
# features.
READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename
# First, set up the temporary directory that will be used for
# the recordings we will be viewing (these three lines do this)
# They assume that the WORKSPACE_NAME macro has already been set
DEFAULT_MACRO WORKSPACE_TEMP_DIR
INCLUDE [ if {[string length {$(WORKSPACE_TEMP_DIR)}] < 2} { if {[info exists env(TEMP)]} {set gVisualizerTemp $env(TEMP)} 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"; } ; if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr "" { set catter "$catter$comma&$attr" ; set comma ",_," ; } ; puts "MACRO CATMAC [EMAIL PROTECTED]($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName [regsub -all {[\\/\*\?\|\>\<:\$\;]} {VISUALIZER_3} _]; puts "MACRO SAFE_FFS_NAME $safeName"; ]
# Make the temporary directory that the FFS files will live in.
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_3_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_3_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__
# Now route all the features into the recorder, changing their
# feature type to the transformer name so that they view nicely
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_3_SetterUpper INPUT FEATURE_TYPE BUFFERER_BUFFERED_0 OUTPUT FEATURE_TYPE __viewme__
FACTORY_DEF * RecorderFactory FACTORY_NAME VISUALIZER_3_Recorder INPUT FEATURE_TYPE __viewme__ @FeatureType(VISUALIZER_3$(CATMAC)) FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs" MODE RECORD_PASS_THROUGH
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_3_Trigger CREATE_AT_END OUTPUT FEATURE_TYPE __nukeme__ @TCL("lappend gVisualizerFilesToView $(SAFE_FFS_NAME)")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_3_CleanerUpper INPUT FEATURE_TYPE __nukeme__
# -------------------------------------------------------------------------
FACTORY_DEF * PolygonDissolveFactory FACTORY_NAME DISSOLVER INPUT FEATURE_TYPE BUFFERER_BUFFERED_1 DISSOLVE_COUNT_ATTRIBUTE _num_dissolved AVERAGE_FIELDS WEIGHTED_AVERAGE_FIELDS SUM_FIELDS NON_OVERLAPPING_INPUT No OUTPUT POLYGON FEATURE_TYPE DISSOLVER_AREA fme_type fme_area
# -------------------------------------------------------------------------
# Set the directive to add all the meta-attributes to the features.
# We do this so users see all possible information in the viewed
# features.
READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename
# First, set up the temporary directory that will be used for
# the recordings we will be viewing (these three lines do this)
# They assume that the WORKSPACE_NAME macro has already been set
DEFAULT_MACRO WORKSPACE_TEMP_DIR
INCLUDE [ if {[string length {$(WORKSPACE_TEMP_DIR)}] < 2} { if {[info exists env(TEMP)]} {set gVisualizerTemp $env(TEMP)} 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"; } ; if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr "" { set catter "$catter$comma&$attr" ; set comma ",_," ; } ; puts "MACRO CATMAC [EMAIL PROTECTED]($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName [regsub -all {[\\/\*\?\|\>\<:\$\;]} {VISUALIZER_4} _]; puts "MACRO SAFE_FFS_NAME $safeName"; ]
# Make the temporary directory that the FFS files will live in.
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_4_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_4_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__
# Now route all the features into the recorder, changing their
# feature type to the transformer name so that they view nicely
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_4_SetterUpper INPUT FEATURE_TYPE DISSOLVER_AREA OUTPUT FEATURE_TYPE __viewme__
FACTORY_DEF * RecorderFactory FACTORY_NAME VISUALIZER_4_Recorder INPUT FEATURE_TYPE __viewme__ @FeatureType(VISUALIZER_4$(CATMAC)) FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs" MODE RECORD_PASS_THROUGH
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_4_Trigger CREATE_AT_END OUTPUT FEATURE_TYPE __nukeme__ @TCL("lappend gVisualizerFilesToView $(SAFE_FFS_NAME)")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_4_CleanerUpper INPUT FEATURE_TYPE __nukeme__
# -------------------------------------------------------------------------
# Set the directive to add all the meta-attributes to the features.
# We do this so users see all possible information in the viewed
# features.
READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename
# First, set up the temporary directory that will be used for
# the recordings we will be viewing (these three lines do this)
# They assume that the WORKSPACE_NAME macro has already been set
DEFAULT_MACRO WORKSPACE_TEMP_DIR
INCLUDE [ if {[string length {$(WORKSPACE_TEMP_DIR)}] < 2} { if {[info exists env(TEMP)]} {set gVisualizerTemp $env(TEMP)} 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"; } ; if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr "" { set catter "$catter$comma&$attr" ; set comma ",_," ; } ; puts "MACRO CATMAC [EMAIL PROTECTED]($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName [regsub -all {[\\/\*\?\|\>\<:\$\;]} {VISUALIZER_2} _]; puts "MACRO SAFE_FFS_NAME $safeName"; ]
# Make the temporary directory that the FFS files will live in.
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_2_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_2_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__
# Now route all the features into the recorder, changing their
# feature type to the transformer name so that they view nicely
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_2_SetterUpper INPUT FEATURE_TYPE INTERSECTOR_INTERSECTED_1 OUTPUT FEATURE_TYPE __viewme__
FACTORY_DEF * RecorderFactory FACTORY_NAME VISUALIZER_2_Recorder INPUT FEATURE_TYPE __viewme__ @FeatureType(VISUALIZER_2$(CATMAC)) FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs" MODE RECORD_PASS_THROUGH
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_2_Trigger CREATE_AT_END OUTPUT FEATURE_TYPE __nukeme__ @TCL("lappend gVisualizerFilesToView $(SAFE_FFS_NAME)")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_2_CleanerUpper INPUT FEATURE_TYPE __nukeme__
# -------------------------------------------------------------------------
# Set the directive to add all the meta-attributes to the features.
# We do this so users see all possible information in the viewed
# features.
READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename
# First, set up the temporary directory that will be used for
# the recordings we will be viewing (these three lines do this)
# They assume that the WORKSPACE_NAME macro has already been set
DEFAULT_MACRO WORKSPACE_TEMP_DIR
INCLUDE [ if {[string length {$(WORKSPACE_TEMP_DIR)}] < 2} { if {[info exists env(TEMP)]} {set gVisualizerTemp $env(TEMP)} 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"; } ; if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr "" { set catter "$catter$comma&$attr" ; set comma ",_," ; } ; puts "MACRO CATMAC [EMAIL PROTECTED]($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName [regsub -all {[\\/\*\?\|\>\<:\$\;]} {VISUALIZER} _]; puts "MACRO SAFE_FFS_NAME $safeName"; ]
# Make the temporary directory that the FFS files will live in.
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__
# Now route all the features into the recorder, changing their
# feature type to the transformer name so that they view nicely
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_SetterUpper INPUT FEATURE_TYPE SCALER_SCALED_1 OUTPUT FEATURE_TYPE __viewme__
FACTORY_DEF * RecorderFactory FACTORY_NAME VISUALIZER_Recorder INPUT FEATURE_TYPE __viewme__ @FeatureType(VISUALIZER$(CATMAC)) FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs" MODE RECORD_PASS_THROUGH
FACTORY_DEF * CreationFactory FACTORY_NAME VISUALIZER_Trigger CREATE_AT_END OUTPUT FEATURE_TYPE __nukeme__ @TCL("lappend gVisualizerFilesToView $(SAFE_FFS_NAME)")
FACTORY_DEF * TeeFactory FACTORY_NAME VISUALIZER_CleanerUpper INPUT FEATURE_TYPE __nukeme__
# -------------------------------------------------------------------------
FACTORY_DEF * TestFactory FACTORY_NAME "Final Output Feature Type Router" INPUT FEATURE_TYPE * TEST @Value(__wb_out_feat_type__) != "" OUTPUT PASSED FEATURE_TYPE * @FeatureType(@Value(__wb_out_feat_type__))
# -------------------------------------------------------------------------
FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("eval exec fmeview /ownffs {{$(WORKSPACE_TEMP_DIR)}} $gVisualizerFilesToView &")
FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__
# -------------------------------------------------------------------------
NULL_SOURCE *
NULL_DEST *