#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! GUI IGNORE SourceDataset_JPEG2000_1,DestDataset_GEOTIFF_1,_WRITE_OFFSETS_IN_CS_UNITS_GEOTIFF_1 DEFAULT_MACRO DestDataset_GEOTIFF $(FME_MF_DIR)Out GUI DIRNAME DestDataset_GEOTIFF Destination GeoTIFF Directory: DEFAULT_MACRO SourceDataset_JPEG2000_2 $(FME_MF_DIR)NEA3_resampled.jp2 GUI MULTIFILE SourceDataset_JPEG2000_2 JPEG2000_Files(*.jp2,*.j2k)|*.jp2;*.j2k|All_Files(*.*)|*.* Original JPEG2000 Dataset: INCLUDE [ if {{$(DestDataset_GEOTIFF)} == {}} { puts_real {Parameter 'DestDataset_GEOTIFF' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(SourceDataset_JPEG2000_2)} == {}} { puts_real {Parameter 'SourceDataset_JPEG2000_2' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE JPEG2000 READER_KEYWORD JPEG2000_1 WRITER_TYPE GEOTIFF WRITER_KEYWORD GEOTIFF_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "JPEG2000_1" #! END_WB_HEADER #! START_SOURCE_HEADER JPEG2000 JPEG2000_1 DEFAULT_MACRO GROUP_BY_DATASET_JPEG2000_1 No JPEG2000_1_GROUP_BY_DATASET "$(GROUP_BY_DATASET_JPEG2000_1)" # ======================================================================= # The following GUI line prompts for a file to be used as the source JPEG2000 file. # The user input is stored in a macro, which is then used to define # the dataset to be read. # The dataset this mapping file was generated from was: GUI FILENAME SourceDataset_JPEG2000_1 JPEG2000_Files(*.jp2,*.j2k)|*.jp2;*.j2k|All_Files(*.*)|*.* Original JPEG2000 Dataset: JPEG2000_1_READER_META_ATTRIBUTES fme_dataset fme_basename #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {"$(SourceDataset)" != ""} { \ puts {DEFAULT_MACRO SourceDataset_JPEG2000_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER JPEG2000 JPEG2000_1 DEFAULT_MACRO SourceDataset_JPEG2000_1 $(SourceDataset_JPEG2000_2) JPEG2000_1_DATASET "$(SourceDataset_JPEG2000_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "GEOTIFF_1" #! END_WB_HEADER #! START_DEST_HEADER GEOTIFF GEOTIFF_1 # The following GUI lines prompt for a GEOTIFF file to be used as the # the destination of the data. # 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_GEOTIFF_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER GEOTIFF GEOTIFF_1 DEFAULT_MACRO DestDataset_GEOTIFF_1 $(DestDataset_GEOTIFF) GUI DIRNAME DestDataset_GEOTIFF_1 Destination GeoTIFF Directory: # Select the data type of pixels in the output file. # Define the background value used where no data is available. For some # output formats this will be marked as in the output file as a special # transparent, or nodata value. For these cases it may be important that # the NODATA value not duplicate a meaningful output value. # Interleaving can be BAND or PIXEL. Pixel is most compatibility with other # packages. # Uses raw name=value pair # Do we want to generate a world file? # Uses raw name=value pair DEFAULT_MACRO _WRITE_OFFSETS_IN_CS_UNITS_GEOTIFF_1 No GUI CHOICE _WRITE_OFFSETS_IN_CS_UNITS_GEOTIFF_1 Yes%No Offsets in Coordinate System Units: GEOTIFF_1_WRITE_OFFSETS_IN_CS_UNITS $(_WRITE_OFFSETS_IN_CS_UNITS_GEOTIFF_1) DEFAULT_MACRO _GEOTIFF_WRITER_WORLD_FILE_GENERATION_GEOTIFF_1 no DEFAULT_MACRO _GEOTIFF_WRITER_CREATE_TILED_FILES_GEOTIFF_1 no DEFAULT_MACRO _GEOTIFF_WRITER_COMPRESSION_METHOD_GEOTIFF_1 none DEFAULT_MACRO _GEOTIFF_WRITER_JPEG_COMPRESSION_LEVEL_GEOTIFF_1 25 DEFAULT_MACRO _GEOTIFF_WRITER_TAB_FILE_GENERATION_GEOTIFF_1 yes GEOTIFF_1_DATASET "$(DestDataset_GEOTIFF_1)" #! END_DEST_HEADER #! END_HEADER WRITER_TYPE NULL WRITER_KEYWORD WBROUTER_OUT WBROUTER_OUT_DATASET null LOG_END_BANNER LOG_END_BANNER *** All destination data has been redirected to the Visualizer *** LOG_END_BANNER LOG_FILENAME "$(FME_MF_DIR)AustinPolygonClippingNew.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_CACHED_OBJECTS_HINT 7500 FME_REPROJECTION_ENGINE FME FME_USE_RICH_GEOMETRY yes DEFAULT_MACRO DATASET_KEYWORD_JPEG2000_1 JPEG2000_1 DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_1 GEOTIFF_1 # ------------------------------------------------------------------------- JPEG2000_1_READER_META_ATTRIBUTES fme_basename fme_feature_type # ------------------------------------------------------------------------- JPEG2000_1_COORDINATE_SYSTEM TX83-CF GEOTIFF_1_COORDINATE_SYSTEM TX83-CF MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME AustinPolygonClippingNew # ------------------------------------------------------------------------- JPEG2000_1_DEF JPEG2000 # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ JPEG2000 yes "" no # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Unexpected Input Remover" INPUT FEATURE_TYPE * TEST @Lookup(___KnownFeatureTypes___,@FeatureType()) == yes OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(JPEG2000,FME_GENERIC,ALIAS_GEOMETRY) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "JPEG2000 (JPEG2000_1) Splitter" INPUT FEATURE_TYPE JPEG2000 OUTPUT FEATURE_TYPE JPEG2000_0 OUTPUT FEATURE_TYPE JPEG2000_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- Tcl2 proc set_geom_and_type {} { if {[FME_Coordinates numCoords] > 0} { FME_Execute RemoveGeometry; set minX [FME_GetAttribute ___MINX]; set minY [FME_GetAttribute ___MINY]; set maxX [FME_GetAttribute ___MAXX]; set maxY [FME_GetAttribute ___MAXY]; if { [string is double $minX] && [string is double $maxX] } { set xSame [expr $minX == $maxX] } else { set xSame [string equal $minX $maxX] }; if { [string is double $minY] && [string is double $maxY] } { set ySame [expr $minY == $maxY] } else { set ySame [string equal $minY $maxY] }; FME_Coordinates addCoord $minX $minY; if {$xSame && $ySame} { FME_Execute GeometryType fme_point; FME_SetAttribute fme_type fme_point } elseif {$xSame || $ySame} { FME_Coordinates addCoord $maxX $maxY; FME_Execute GeometryType fme_line; FME_SetAttribute fme_type fme_line } else { FME_Coordinates addCoord $minX $maxY; FME_Coordinates addCoord $maxX $maxY; FME_Coordinates addCoord $maxX $minY; FME_Coordinates addCoord $minX $minY; FME_Execute GeometryType fme_polygon; FME_SetAttribute fme_type fme_area } } } FACTORY_DEF * TeeFactory FACTORY_NAME BoundingBoxReplacer INPUT FEATURE_TYPE JPEG2000_1 OUTPUT FEATURE_TYPE BoundingBoxReplacer_BOX @Force2D() @Bounds(___MINX,___MAXX,___MINY,___MAXY,___MINZ,___MAXZ,GEOMETRIC) @Tcl2(set_geom_and_type) @RemoveAttributes(___MINX,___MAXX,___MINY,___MAXY,___MINZ,___MAXZ) # ------------------------------------------------------------------------- MACRO CREATOR_XML NOT_ACTIVATED MACRO CREATOR_CLASSIC NOT_ACTIVATED MACRO CREATOR_2D3D 2D_GEOMETRY MACRO CREATOR_COORDS INCLUDE [ if { {XML Geometry} == {XML Geometry} } { puts {MACRO CREATOR_XML *} } ] INCLUDE [ if { {XML Geometry} == {2D Coordinate List} } { puts {MACRO CREATOR_2D3D 2D_GEOMETRY}; puts {MACRO CREATOR_CLASSIC *} } ] INCLUDE [ if { {XML Geometry} == {3D Coordinate List} } { puts {MACRO CREATOR_2D3D 3D_GEOMETRY}; puts {MACRO CREATOR_CLASSIC *} } ] INCLUDE [ if { {XML Geometry} == {2D Min/Max Box} } { set comment { We need to turn the COORDS which are minX minY maxX maxY into a full polygon list of coordinates }; set splitCoords [split [string trim {}]]; if { [llength $splitCoords] != 4 } { error {CREATOR: Coordinate List MUST have four numbers - `' is invalid}; }; set minX [lindex $splitCoords 0]; set minY [lindex $splitCoords 1]; set maxX [lindex $splitCoords 2]; set maxY [lindex $splitCoords 3]; puts "MACRO CREATOR_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY"; puts {MACRO CREATOR_2D3D 2D_GEOMETRY}; puts {MACRO CREATOR_CLASSIC *} } ] FACTORY_DEF $(CREATOR_XML) CreationFactory FACTORY_NAME CREATOR_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING,?xmlversion=1.0encoding=US_ASCIIstandalone=no?geometrypolygonlinecoordx=3133300y=10103540coordx=3134475y=10102975coordx=3133770y=10101730coordx=3132690y=10102415coordx=3133300y=10103540linepolygongeometry) FACTORY_DEF $(CREATOR_CLASSIC) CreationFactory FACTORY_NAME CREATOR_CLASSIC_Creator $(CREATOR_2D3D) $(CREATOR_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME CREATOR_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE _creation_instance OUTPUT FEATURE_TYPE CREATOR_CREATED # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME DonutBuilder_agTester INPUT FEATURE_TYPE CREATOR_CREATED INPUT FEATURE_TYPE BoundingBoxReplacer_BOX TEST &fme_geometry = fme_aggregate OUTPUT PASSED FEATURE_TYPE __toDeag__ OUTPUT FAILED FEATURE_TYPE __toDonutBuilder__ FACTORY_DEF * DeaggregateFactory FACTORY_NAME DonutBuilder_deagger INPUT FEATURE_TYPE __toDeag__ RECURSIVE Yes SET_FME_TYPE Yes OUTPUT DONUT FEATURE_TYPE __toDonutBuilder__ OUTPUT POLYGON FEATURE_TYPE __toDonutBuilder__ FACTORY_DEF * TeeFactory FACTORY_NAME DonutBuilder_geomFilter INPUT FEATURE_TYPE __toDonutBuilder__ fme_type fme_point INPUT FEATURE_TYPE __toDonutBuilder__ fme_type fme_line INPUT FEATURE_TYPE __toDonutBuilder__ fme_type fme_null INPUT FEATURE_TYPE __toDonutBuilder__ fme_type fme_text INPUT FEATURE_TYPE __toDonutBuilder__ fme_type fme_arc FACTORY_DEF * TestFactory FACTORY_NAME DonutBuilder_ellipseHandler INPUT FEATURE_TYPE __toDonutBuilder__ fme_type fme_ellipse TEST @GlobalVariable(fme_get_mapping_file_flag_keyword_FME_USE_RICH_GEOMETRY) == yes OUTPUT PASSED FEATURE_TYPE __toDonutBuilder__ FACTORY_DEF * DonutFactory FACTORY_NAME DonutBuilder INPUT FEATURE_TYPE __toDonutBuilder__ DROP_HOLES yes TAG_HOLES yes ALLOW_CYCLES No OUTPUT DONUT FEATURE_TYPE DonutBuilder_AREA @RenameAttributes(_hole_flag,tagged_hole) OUTPUT POLYGON FEATURE_TYPE DonutBuilder_AREA @RenameAttributes(_hole_flag,tagged_hole) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PenColorSetter_Remover INPUT FEATURE_TYPE DonutBuilder_AREA OUTPUT FEATURE_TYPE __TO_COLOR_SETTER__ FACTORY_DEF * TeeFactory FACTORY_NAME PenColorSetter_Setter INPUT FEATURE_TYPE __TO_COLOR_SETTER__ OUTPUT FEATURE_TYPE PenColorSetter_COLORED fme_color "1,1,1" # ------------------------------------------------------------------------- INCLUDE [ if {[string equal {No} {Yes}]} { puts {MACRO TOLERANCE_VALUE}; } elseif {[string equal {No} {No}]} { puts {MACRO TOLERANCE_VALUE TOLERANCE 0.5}; } ] FACTORY_DEF * VectorToRasterFactory FACTORY_NAME VectorOnRasterOverlayer INPUT VECTOR FEATURE_TYPE PenColorSetter_COLORED INPUT RASTER FEATURE_TYPE JPEG2000_0 ANTI_ALIASING No $(TOLERANCE_VALUE) OUTPUT RASTER FEATURE_TYPE VectorOnRasterOverlayer_RASTER @SupplyAttributes(fme_basename,VectorOnRasterOverlayer) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "VectorOnRasterOverlayer_RASTER -> AustinClippedNew Correlator" INPUT FEATURE_TYPE VectorOnRasterOverlayer_RASTER OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ @Reproject("TX83-CF","TX83-CF") @Transform(FME_GENERIC,GEOTIFF) @SupplyAttributes(__wb_out_feat_type__,AustinClippedNew) # ------------------------------------------------------------------------- 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 * TeeFactory FACTORY_NAME "Route to Viewer Reprojector" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Reproject(TX83-CF,TX83-CF) # 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 _@Concatenate($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {AustinClippedNew} _]_[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 AustinClippedNew_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME AustinClippedNew_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 AustinClippedNew_SetterUpper INPUT FEATURE_TYPE AustinClippedNew OUTPUT FEATURE_TYPE __viewme__ FACTORY_DEF * RecorderFactory FACTORY_NAME AustinClippedNew_Recorder INPUT FEATURE_TYPE __viewme__ @FeatureType(AustinClippedNew$(CATMAC)) FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs" MODE RECORD_PASS_THROUGH FACTORY_DEF * CreationFactory FACTORY_NAME AustinClippedNew_Trigger CREATE_AT_END OUTPUT FEATURE_TYPE __nukeme__ @TCL("lappend gVisualizerFilesToView $(SAFE_FFS_NAME)") FACTORY_DEF * TeeFactory FACTORY_NAME AustinClippedNew_CleanerUpper INPUT FEATURE_TYPE __nukeme__ FACTORY_DEF * TeeFactory FACTORY_NAME "AustinClippedNew Output Nuker" INPUT FEATURE_TYPE AustinClippedNew # ------------------------------------------------------------------------- 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__ # ------------------------------------------------------------------------- GEOTIFF_1_DEF AustinClippedNew geotiff_world_file_generation no geotiff_create_tiled_files no geotiff_compression_method lzw geotiff_jpeg_compression_level 75 geotiff_tab_file_generation yes WBROUTER_OUT_DEF AustinClippedNew