Thank you Hans, I am going to give this a try, hopefully in the next 
week or so.

Lyndon 

--- In [email protected], Hans van der Maarel <[EMAIL PROTECTED]> wrote:
>
> Lyndon,
> 
> > You're right, I did. It should have read that the polygons are not
> > necessarily rectangular.
> 
> Gotcha.
> 
> This makes it a bit more difficult though... See the attached 
workbench 
> (note: it uses a Creator, so you'll need a FME 2007 beta in order 
to 
> view it).
> 
> I used the set of coordinates you mentioned, which brings up an 
> interesting problem. If you define the "NE corner of a polygon" as 
the 
> "point which is closest to the NE corner of the bounding box of 
said 
> polygon", there's actually 2 points (3,0 and 2,1) with a distance 
of 1 
> to the NE corner of the bounding box (3,1).
> 
> Anyway, I find the NE corner of the bounding box and bring the 
original 
> polygon back to it's individual points (save the original 
geometry). 
> Then a NeighborFinder to find the original polygon point which lies 
the 
> closest to the NE corner of the bounding box. Restore the original 
> geometry, clean up the attributes and we're done.
> 
> If there's more than one point with the same distance, FME picks 
one 
> arbitrarily. In this case, it seems to prefer the easternmost 
point. 
> You'll need to work with the Close Candidate List if you want to 
> influence this decision. Check the max distance setting in the 
> NeighborFinder and make sure it works for your dataset.
> 
> Hope this helps :)
> -- 
> Hans van der Maarel
> Red Geographics
> 
> Zevenbergsepoort 44b            www.redgeographics.com
> 4791 AE  Klundert               [EMAIL PROTECTED]
> The Netherlands                 phone: +31-168-401035
> 
> 
> 
> #! <?xml version="1.0" encoding="iso-8859-1" ?>
> #! <WORKSPACE
> #    
> #    
> #    Commandline to run this workspace:
> #    
> #    
> #    fme.exe find_NE_point.fmw
> #    
> #    
> #! MAX_LOG_FEATURES="200"
> #! SOURCE="NONE"
> #! END_TCL=""
> #! DESTINATION="NONE"
> #! SHOW_BOOKMARKS="true"
> #! GRID_VISIBLE="false"
> #! GRID_HEIGHT="50"
> #! SHOW_INFO_NODES="true"
> #! BEGIN_PYTHON=""
> #! BEGIN_TCL=""
> #! VIEW_POSITION="1659 0"
> #! ZOOM_SCALE="100"
> #! PASSWORD=""
> #! VIEW_PAGE_BREAKS="false"
> #! FME_CACHED_OBJECTS_HINT="250000"
> #! SHOW_ANNOTATIONS="true"
> #! LOG_MAX_RECORDED_FEATURES="200"
> #! END_PYTHON=""
> #! FME_REPROJECTION_ENGINE="FME"
> #! FME_BUILD_NUM="4236"
> #! GRID_SNAPTO="false"
> #! GRID_WIDTH="50"
> #! SOURCE_ROUTING_DIR=""
> #! LOG_FILE=""
> #! DESTINATION_ROUTING_DIR=""
> #! WORKSPACE_VERSION="1"
> #! TITLE=""
> #! IGNORE_READER_FAILURE="No"
> #! ATTR_TYPE_ENCODING="SDF"
> #! >
> #! <DATASETS>
> #! </DATASETS>
> #! <DATA_TYPES>
> #! </DATA_TYPES>
> #! <GEOM_TYPES>
> #! </GEOM_TYPES>
> #! <FEATURE_TYPES>
> #! </FEATURE_TYPES>
> #! <GLOBAL_PARAMETERS>
> #! </GLOBAL_PARAMETERS>
> #! <COMMENTS>
> #! </COMMENTS>
> #! <CONSTANTS>
> #! </CONSTANTS>
> #! <BOOKMARKS>
> #! </BOOKMARKS>
> #! <TRANSFORMERS>
> #! <TRANSFORMER
> #! IDENTIFIER="0"
> #! TYPE="Creator"
> #! VERSION="2"
> #! POSITION="387 -631"
> #! ORDER="10"
> #! 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="GEOM" PARM_VALUE="&lt;lt&gt;?
xml&lt;space&gt;version=&lt;quote&gt;1.0&lt;quote&gt;&lt;space&gt;enco
ding=&lt;quote&gt;US_ASCII&lt;quote&gt;&lt;space&gt;standalone=&lt;quo
te&gt;no&lt;quote&gt;&lt;space&gt;?
&lt;gt&gt;&lt;lt&gt;geometry&lt;space&gt;dimension=&lt;quote&gt;2&lt;q
uote&gt;&lt;gt&gt;&lt;lt&gt;polygon&lt;gt&gt;&lt;lt&gt;line&lt;gt&gt;&
lt;lt&gt;coord&lt;space&gt;x=&lt;quote&gt;0&lt;quote&gt;&lt;space&gt;y
=&lt;quote&gt;0&lt;quote&gt;&lt;solidus&gt;&lt;gt&gt;&lt;lt&gt;coord&l
t;space&gt;x=&lt;quote&gt;3&lt;quote&gt;&lt;space&gt;y=&lt;quote&gt;0&
lt;quote&gt;&lt;solidus&gt;&lt;gt&gt;&lt;lt&gt;coord&lt;space&gt;x=&lt
;quote&gt;2&lt;quote&gt;&lt;space&gt;y=&lt;quote&gt;1&lt;quote&gt;&lt;
solidus&gt;&lt;gt&gt;&lt;lt&gt;coord&lt;space&gt;x=&lt;quote&gt;1&lt;q
uote&gt;&lt;space&gt;y=&lt;quote&gt;1&lt;quote&gt;&lt;solidus&gt;&lt;g
t&gt;&lt;lt&gt;coord&lt;space&gt;x=&lt;quote&gt;0&lt;quote&gt;&lt;spac
e&gt;y=&lt;quote&gt;0&lt;quote&gt;&lt;solidus&gt;&lt;gt&gt;&lt;lt&gt;&
lt;solidus&gt;line&lt;gt&gt;&lt;lt&gt;&lt;solidus&gt;polygon&lt;gt&gt;
&lt;lt&gt;&lt;solidus&gt;geometry&lt;gt&gt;"/>
> #! <XFORM_PARM PARM_NAME="ATEND" PARM_VALUE="no"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="CREATOR"/>
> #! <XFORM_PARM PARM_NAME="NUM" PARM_VALUE="1"/>
> #! <XFORM_PARM PARM_NAME="CRE_ATTR" 
PARM_VALUE="_creation_instance"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="1"
> #! TYPE="BoundsExtractor"
> #! VERSION="1"
> #! POSITION="1181 -624"
> #! ORDER="11"
> #! PARMS_EDITED="false"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="OUTPUT"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_PARM PARM_NAME="XMIN" PARM_VALUE="_xmin"/>
> #! <XFORM_PARM PARM_NAME="XMAX" PARM_VALUE="_xmax"/>
> #! <XFORM_PARM PARM_NAME="YMIN" PARM_VALUE="_ymin"/>
> #! <XFORM_PARM PARM_NAME="ZMIN" PARM_VALUE="_zmin"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="BOUNDSEXTRACTOR"/>
> #! <XFORM_PARM PARM_NAME="ZMAX" PARM_VALUE="_zmax"/>
> #! <XFORM_PARM PARM_NAME="YMAX" PARM_VALUE="_ymax"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="2"
> #! TYPE="2DPointReplacer"
> #! VERSION="1"
> #! POSITION="1731 -336"
> #! ORDER="12"
> #! PARMS_EDITED="true"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="POINT"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_PARM PARM_NAME="YVALATTR" PARM_VALUE="@Value(_ymax)"/>
> #! <XFORM_PARM PARM_NAME="XVALATTR" PARM_VALUE="@Value(_xmax)"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="2DPOINTREPLACER"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="3"
> #! TYPE="NeighborFinder"
> #! VERSION="5"
> #! POSITION="2941 -768"
> #! ORDER="13"
> #! PARMS_EDITED="true"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="MATCHED"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_distance" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_angle" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_candidate_angle" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_candidate_label_angle" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_candidate_x" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_candidate_y" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_base_x" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_base_y" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <OUTPUT_FEAT NAME="UNMATCHED_BASE"/>
> #! <FEAT_COLLAPSED COLLAPSED="1"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="1"/>
> #! <OUTPUT_FEAT NAME="UNMATCHED_CANDIDATE"/>
> #! <FEAT_COLLAPSED COLLAPSED="2"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="2"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="2"/>
> #! <XFORM_PARM PARM_NAME="TEST_LIST_NAME" PARM_VALUE=""/>
> #! <XFORM_PARM PARM_NAME="CLOSE_LIST_NAME" PARM_VALUE=""/>
> #! <XFORM_PARM PARM_NAME="GROUP_BY" 
PARM_VALUE="_creation_instance"/>
> #! <XFORM_PARM PARM_NAME="MAX" PARM_VALUE="2"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="NEIGHBORFINDER"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="4"
> #! TYPE="OGCGeometryExtractor"
> #! VERSION="1"
> #! POSITION="1834 -1033"
> #! ORDER="14"
> #! PARMS_EDITED="false"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="OUTPUT"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_PARM PARM_NAME="ATTR" PARM_VALUE="_ogcwkt"/>
> #! <XFORM_PARM PARM_NAME="KIND_LONG" PARM_VALUE="Well Known Text"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="OGCGEOMETRYEXTRACTOR"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="5"
> #! TYPE="Chopper"
> #! VERSION="0"
> #! POSITION="2429 -1092"
> #! ORDER="15"
> #! PARMS_EDITED="true"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="CHOPPED"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <OUTPUT_FEAT NAME="UNTOUCHED"/>
> #! <FEAT_COLLAPSED COLLAPSED="1"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="1"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="1"/>
> #! <XFORM_PARM PARM_NAME="MAX" PARM_VALUE="1"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="CHOPPER"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="15"
> #! TYPE="OGCGeometryReplacer"
> #! VERSION="1"
> #! POSITION="3519 -886"
> #! ORDER="16"
> #! PARMS_EDITED="true"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="OUTPUT"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_distance" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_angle" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_candidate_angle" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_candidate_label_angle" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_candidate_x" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_candidate_y" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_base_x" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_base_y" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_PARM PARM_NAME="ATTR" PARM_VALUE="_ogcwkt"/>
> #! <XFORM_PARM PARM_NAME="KIND_LONG" PARM_VALUE="Well Known Text"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="OGCGEOMETRYREPLACER"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="18"
> #! TYPE="AttributeRenamer"
> #! VERSION="0"
> #! POSITION="4059 -946"
> #! ORDER="17"
> #! PARMS_EDITED="true"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="OUTPUT"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_distance" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_angle" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_candidate_angle" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_candidate_label_angle" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_base_x" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_closest_base_y" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_xmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ymax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmin" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_zmax" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="_ogcwkt" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="NE_x" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="NE_y" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_PARM PARM_NAME="ATTR_LIST" 
PARM_VALUE="NE_x,_closest_candidate_x,NE_y,_closest_candidate_y"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="ATTRIBUTERENAMER"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="17"
> #! TYPE="AttributeKeeper"
> #! VERSION="0"
> #! POSITION="4581 -1005"
> #! ORDER="18"
> #! PARMS_EDITED="true"
> #! ENABLED="true"
> #! >
> #! <OUTPUT_FEAT NAME="OUTPUT"/>
> #! <FEAT_COLLAPSED COLLAPSED="0"/>
> #! <XFORM_ATTR ATTR_NAME="_creation_instance" 
IS_USER_CREATED="false" FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="NE_x" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_ATTR ATTR_NAME="NE_y" IS_USER_CREATED="false" 
FEAT_INDEX="0"/>
> #! <XFORM_PARM PARM_NAME="KEEP_ATTRS" 
PARM_VALUE="_creation_instance,NE_x,NE_y"/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="ATTRIBUTEKEEPER"/>
> #! </TRANSFORMER>
> #! <TRANSFORMER
> #! IDENTIFIER="21"
> #! TYPE="Visualizer"
> #! VERSION="1"
> #! POSITION="5124 -1045"
> #! ORDER="19"
> #! PARMS_EDITED="false"
> #! ENABLED="true"
> #! >
> #! <XFORM_PARM PARM_NAME="TACKATTRS" PARM_VALUE=""/>
> #! <XFORM_PARM PARM_NAME="AREA_COLOR" PARM_VALUE=""/>
> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" 
PARM_VALUE="ATTRIBUTEKEEPER_OUTPUT"/>
> #! <XFORM_PARM PARM_NAME="PEN_COLOR" PARM_VALUE=""/>
> #! </TRANSFORMER>
> #! </TRANSFORMERS>
> #! <FEAT_LINKS>
> #! <FEAT_LINK
> #! IDENTIFIER="9"
> #! SOURCE_NODE="0"
> #! TARGET_NODE="1"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="10"
> #! SOURCE_NODE="1"
> #! TARGET_NODE="2"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="11"
> #! SOURCE_NODE="1"
> #! TARGET_NODE="4"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="12"
> #! SOURCE_NODE="4"
> #! TARGET_NODE="5"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="13"
> #! SOURCE_NODE="5"
> #! TARGET_NODE="3"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 1"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="14"
> #! SOURCE_NODE="2"
> #! TARGET_NODE="3"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="16"
> #! SOURCE_NODE="3"
> #! TARGET_NODE="15"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="19"
> #! SOURCE_NODE="15"
> #! TARGET_NODE="18"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="20"
> #! SOURCE_NODE="18"
> #! TARGET_NODE="17"
> #! SOURCE_PORT_DESC="fo 0"
> #! TARGET_PORT_DESC="fi 0"
> #! EXTRA_POINTS=""
> #! />
> #! <FEAT_LINK
> #! IDENTIFIER="22"
> #! SOURCE_NODE="17"
> #! TARGET_NODE="21"
> #! 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
> 
> LOG_FILENAME "$(FME_MF_DIR)find_NE_point.log"
> LOG_APPEND NO
> LOG_MAX_FEATURES 200
> LOG_MAX_RECORDED_FEATURES 200
> FME_CACHED_OBJECTS_HINT 250000
> FME_REPROJECTION_ENGINE FME
> # ------------------------------------------------------------------
-------
> 
> MULTI_READER_CONTINUE_ON_READER_FAILURE No
> 
> # ------------------------------------------------------------------
-------
> 
> MACRO WORKSPACE_NAME find_NE_point
> DEFAULT_MACRO WB_CURRENT_CONTEXT
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * CreationFactory    FACTORY_NAME CREATOR    
CREATE_AT_END no    NUMBER_TO_CREATE 1    OUTPUT FEATURE_TYPE 
CREATOR_CREATED        @SupplyAttributes(fme_type,fme_no_geom)        
@SupplyAttributes(?,creation_instance,0)        @RenameAttributes
(_creation_instance,creation_instance)        @Geometry
(FROM_ENCODED_STRING,<lt>?
xml<space>version=<quote>1.0<quote><space>encoding=<quote>US_ASCII<quo
te><space>standalone=<quote>no<quote><space>?
<gt><lt>geometry<space>dimension=<quote>2<quote><gt><lt>polygon<gt><lt
>line<gt><lt>coord<space>x=<quote>0<quote><space>y=<quote>0<quote><sol
idus><gt><lt>coord<space>x=<quote>3<quote><space>y=<quote>0<quote><sol
idus><gt><lt>coord<space>x=<quote>2<quote><space>y=<quote>1<quote><sol
idus><gt><lt>coord<space>x=<quote>1<quote><space>y=<quote>1<quote><sol
idus><gt><lt>coord<space>x=<quote>0<quote><space>y=<quote>0<quote><sol
idus><gt><lt><solidus>line<gt><lt><solidus>polygon<gt><lt><solidus>geo
metry<gt>)
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TeeFactory    FACTORY_NAME BOUNDSEXTRACTOR    INPUT  
FEATURE_TYPE CREATOR_CREATED    OUTPUT FEATURE_TYPE 
BOUNDSEXTRACTOR_OUTPUT         @Bounds
(_xmin,_xmax,_ymin,_ymax,_zmin,_zmax,GEOMETRIC)
> 
> FACTORY_DEF * TeeFactory   FACTORY_NAME "BOUNDSEXTRACTOR OUTPUT 
Splitter"   INPUT FEATURE_TYPE BOUNDSEXTRACTOR_OUTPUT   OUTPUT 
FEATURE_TYPE BOUNDSEXTRACTOR_OUTPUT_0   OUTPUT FEATURE_TYPE 
BOUNDSEXTRACTOR_OUTPUT_1
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TeeFactory    FACTORY_NAME OGCGEOMETRYEXTRACTOR    
INPUT  FEATURE_TYPE BOUNDSEXTRACTOR_OUTPUT_1    OUTPUT FEATURE_TYPE 
OGCGEOMETRYEXTRACTOR_OUTPUT         @OGCGeometry
(to_attribute,wkt,_ogcwkt)
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TeeFactory    FACTORY_NAME CHOPPER_Splitter    INPUT  
FEATURE_TYPE OGCGEOMETRYEXTRACTOR_OUTPUT    OUTPUT FEATURE_TYPE 
___TOCHOP___
> FACTORY_DEF * ChoppingFactory    FACTORY_NAME CHOPPER_Areas    
INPUT FEATURE_TYPE ___TOCHOP___ fme_type fme_area    MAX_VERTICES 
1    CHOP_POLYGONS    OUTPUT CHOPPED FEATURE_TYPE CHOPPER_CHOPPED
> FACTORY_DEF * ChoppingFactory    FACTORY_NAME CHOPPER_Lines    
INPUT FEATURE_TYPE ___TOCHOP___ fme_type fme_line    MAX_VERTICES 
1    OUTPUT CHOPPED FEATURE_TYPE CHOPPER_CHOPPED
> FACTORY_DEF * TeeFactory    FACTORY_NAME CHOPPER_EverythingElse    
INPUT FEATURE_TYPE ___TOCHOP___
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TestFactory    FACTORY_NAME 2DPOINTREPLACER    INPUT  
FEATURE_TYPE BOUNDSEXTRACTOR_OUTPUT_0    TEST &fme_type = fme_text    
OUTPUT PASSED FEATURE_TYPE 2DPOINTREPLACER_POINT         @XValue
("@Value(_xmax)",RESET)         @YValue("@Value(_ymax)")         
@Dimension(2)    OUTPUT FAILED FEATURE_TYPE 
2DPOINTREPLACER_POINT         @XValue("@Value(_xmax)",RESET)         
@YValue("@Value(_ymax)")         @Dimension(2)         @GeometryType
(fme_point)         @SupplyAttributes(fme_type,fme_point)
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * ProximityFactory    FACTORY_NAME NEIGHBORFINDER    
INPUT BASE FEATURE_TYPE 2DPOINTREPLACER_POINT    INPUT CANDIDATE 
FEATURE_TYPE CHOPPER_CHOPPED    GROUP_BY _creation_instance    
SPATIAL_MATCH CLOSEST 2    DISTANCE_ATTR _distance    OUTPUT MATCHED 
FEATURE_TYPE NEIGHBORFINDER_MATCHED        @RenameAttributes
(_angle,angle,_candidate_angle,candidate_angle,_candidate_label_angle,
candidate_label_angle,_closest_candidate_x,closest_candidate_x,_closes
t_candidate_y,closest_candidate_y,_closest_base_x,closest_base_x,_clos
est_base_y,closest_base_y)
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TeeFactory    FACTORY_NAME OGCGEOMETRYREPLACER    
INPUT  FEATURE_TYPE NEIGHBORFINDER_MATCHED    OUTPUT FEATURE_TYPE 
OGCGEOMETRYREPLACER_OUTPUT         @OGCGeometry
(from_attribute,wkt,_ogcwkt)
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TeeFactory    FACTORY_NAME ATTRIBUTERENAMER    INPUT  
FEATURE_TYPE OGCGEOMETRYREPLACER_OUTPUT    OUTPUT FEATURE_TYPE 
ATTRIBUTERENAMER_OUTPUT         @RenameAttributes
(NE_x,_closest_candidate_x,NE_y,_closest_candidate_y)
> 
> # ------------------------------------------------------------------
-------
> 
> FACTORY_DEF * TeeFactory    FACTORY_NAME ATTRIBUTEKEEPER    INPUT  
FEATURE_TYPE ATTRIBUTERENAMER_OUTPUT    OUTPUT FEATURE_TYPE 
ATTRIBUTEKEEPER_OUTPUT        @KeepAttributes
(_creation_instance,NE_x,NE_y,fme_regexp_match,^fme_)
> 
> # ------------------------------------------------------------------
-------
> 
> # 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 
{[^a-zA-Z0-9]} {ATTRIBUTEKEEPER_OUTPUT} _]_[expr round(rand() * 
1000000)]_[clock clicks]";         puts "MACRO SAFE_FFS_NAME 
$safeName";         ]
> # Make the temporary directory that the FFS files will live in.
> FACTORY_DEF * CreationFactory      FACTORY_NAME 
ATTRIBUTEKEEPER_OUTPUT_DirCreator      OUTPUT FEATURE_TYPE 
__nukeme__          @Tcl2("catch {file mkdir 
{$(WORKSPACE_TEMP_DIR)}}")
> FACTORY_DEF * TeeFactory    FACTORY_NAME 
ATTRIBUTEKEEPER_OUTPUT_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 
ATTRIBUTEKEEPER_OUTPUT_SetterUpper    INPUT  FEATURE_TYPE 
ATTRIBUTEKEEPER_OUTPUT    OUTPUT FEATURE_TYPE __viewme__
> FACTORY_DEF * RecorderFactory    FACTORY_NAME 
ATTRIBUTEKEEPER_OUTPUT_Recorder    INPUT FEATURE_TYPE __viewme__ 
@FeatureType(ATTRIBUTEKEEPER_OUTPUT$(CATMAC))    
FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs"    MODE 
RECORD_PASS_THROUGH
> FACTORY_DEF * CreationFactory      FACTORY_NAME 
ATTRIBUTEKEEPER_OUTPUT_Trigger      CREATE_AT_END      OUTPUT 
FEATURE_TYPE __nukeme__          @TCL("lappend gVisualizerFilesToView 
$(SAFE_FFS_NAME)")
> FACTORY_DEF * TeeFactory    FACTORY_NAME 
ATTRIBUTEKEEPER_OUTPUT_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__))
> # ------------------------------------------------------------------
-------
> 
> DEFAULT_MACRO WORKSPACE_TEMP_DIR
> INCLUDE [ if {{$(WORKSPACE_TEMP_DIR)} == {}} { puts {MACRO 
__WB_ENABLE_VISUALIZER__ no} } else { puts {MACRO 
__WB_ENABLE_VISUALIZER__ *} } ]
> FACTORY_DEF $(__WB_ENABLE_VISUALIZER__) CreationFactory   
CREATE_AT_END   OUTPUT FEATURE_TYPE __NUKEME__   @TCL("eval 
FME_Execute System \173fmeview /ownffs {$(WORKSPACE_TEMP_DIR)} 
$gVisualizerFilesToView & }")
> FACTORY_DEF * TeeFactory   INPUT FEATURE_TYPE __NUKEME__
>




For insights into what's up at Safe Software and what's on the development 
horizon, visit Safe's blog at spatial-etl.blogspot.com.

Safe Software has also made slides available that outline enhancements planned 
for FME 2007. The slides are from the "Road Ahead" presentation given on Day 2 
of the FME Worldwide Users Conference. To view these slides, visit 
www.safe.com/2006uc.

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/fme/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/fme/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[EMAIL PROTECTED] 
    mailto:[EMAIL PROTECTED]

<*> 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/
 

Reply via email to