Using transformers to modify data.
Recently active
Likely known by many here, however, I can’t see it documented officially so I’m going to spell it out.If you have created a CustomTranformer or are working with one you need to be very careful how you use/reference parameters.There are many gotchas when working with CustomTransformers but this is the one that trips me up the most. If you define a parameter in a Custom Transform with an attribute value this will not always be treated as a Global Parameter inside the transformer. I.e., depending on what happens in the Transformer the value will not always be accessible.I saw a great comment by @ctredinnick in this thread from a couple of years ago: where they mention that Parameter Values defined by an attribute value will be treated in a similar way to unexposed attributes.I had always assumed that Parameter values were somehow ‘locked in’ of defined for every feature when they went in but that’s not true. Anytime the parameter is referenced inside a CustomTransformer it will just reso
Greetings all!I searched for similar questions but wasn’t able to find any pertaining to this, so apologies if I missed them. I’m using the NeighborFinder transformer to locate points along measure-aware polylines to acquire the Measure value of all lines within 5 meters and merging all attributes and generating a list when multiple candidates are found. When there are multiple candidates, it’s assigning the Measure value of the point from one of the lines at random (possible the closest?). However, when I use the ListExploder transformer to create features from all elements in the list, while all other attributes appear to be specific per feature, the Measure values are the same for all features spawning from the same feature. Hopefully this make sense. I assume I have a parameter set incorrectly or something, but how do I ensure each feature has the measure value specific to the line it was matched to?
I’m exporting LoD 3 models from FME to CityGML and the files blow up in size. FME writes every Appearance on each triangle and also makes a separate position list for each triangle, everything becomes separate XML elements, so the markup absolutely dominates the file. I think CityGML should be able to store things more compactly at the object level, but I don’t see a way to make FME do that automatically. Every triangle whould not need its own position list right? I have thome different thoughts on the matter: Can FME group or merge geometries/appearances to cut down the markup? Can ImplicitGeometry be used effectively without creating a complex monster workspace? Is CityJSON fundamentally a better route? (I’ve heard numbers around ≈ 1/6 of the file size.) Are there external tools that post-optimize a CityGML without losing semantics? Concrete tips, transformer setups, or example workspaces are very welcome.
Hi everyone,I'm working with a shapefile that contains 3D point geometries, each with several attribute fields. I would like to convert this dataset into Cesium 3D Tiles format while preserving both the 3D coordinates and the associated attributes. Has anyone successfully done this using FME? If so, could you share your workflow or recommend which transformers and settings are best suited for this task? Any tips or guidance would be greatly appreciated!
Hi,I have two OSM datasets from which I derive what has changed between them with FME. I am using the OSM writer to output two datasets (what has changed and the original data). From that I use Osmosis to create a changeset to be used to update an OSM database. The problem is that the OSM writer doesn’t preserve my node id’s. This is crucial to be able to update the correct node in the database. There is no problem with the ways, the id’s I have before the writer are preserved in the osm-file. But nodes always gets id’s starting from “-1”. Here’s an example of a node list for one of the features before writing (this is the id I want to preserve in the osm-file).Anyone else encountered this problem and have a solution? Is it by design the writer doesn’t preserve node id’s?Thanks!
Is there any fundamental differences between the CoordinateSystemSetter in FME and defining projection i ArcGIS Pro? I have attempted both separately in an IFC-file. ArcGIS Pro doesn’t automatically recognize the coordinate system of the file. Using the tool “Define Projection” in ArcGIS Pro manages to place the model in the correct area, while using CoordinateSystemSetter places the model approximately 30 km away. I have also tried to remove the coordinate system from the IFC-file before using CoordinateSystemSetter, but I still get the same results. Any workarounds or tips for troubleshooting? The IFC-file is in version 2x3.
Hello,I am hoping to get a little guidance on how to properly extract m-values from a ESRI line feature class. In ArcGIS Pro, I can confirm that my feature class is m-value enabled. I need to extract the m-value locations in FME, convert all the vertex locations (with associated m-value) to points, then use the neighbor finder transformer to join the m-value to my point data.I’m having trouble isolating and exposing the m-values from my source line data. In the Feature Information for the line data, I can see a “Measure (1)” value under Geometry > Line (screenshot below). Under Coordinates, if I click into an individual coordinate the value is displayed as: -11697066.4549, 4955884.293300003Measures:<default_measure> = 0.035799999997834675 How can use an AttributeExposer (or other transformer) to properly isolated the coordinate and associated m-value data into a list? Once it’s in the list I’ll be off and running and can also handle any unit conversion that is necessary. Any i
Hi there,I am trying to calculate a rolling average across a dynamic number of features for a certain attribute. I saw this post here explaining that you can do it using the adjacent features parameter in the attribute creator:Calculating moving average (3 rolling points) in FME. | CommunityHowever my issue is that the number of features that the rolling average needs to be calculated over is dynamic, it could change depending on the requirement of the incoming data. This number of features required is stored in an attribute called ‘consec_avg_requirement’. I therefore need to be able to set the number of prior features to use in the rolling average to be whatever the value is in that field -1. The only option shown here is to use a user parameter… but is it possible to assign an attribute to a user parameter that could vary with each run?
Occasionally the upstream service from external provider might not retuning any features, in those cases, there will be 0 features going to the “Revised” stream. How do I stop ChangeDectector instead of keep running and delete existing features.
Hi, I’ve got two polygon datasets A and B, and I’d like to identify which polygons from dataset B that touch polygons from dataset A, but only edge to edge contact count as touch. How can I get the ideal result or exclude vertex touches?
Dear all, I am trying to do something that seems very simple :I have a table that has 3 columns “id”, “category”, “value” and I would like to reshape it in wide format “id”, “category.A”, “category.B”, etc. (in R, it would be reshape(dt, direction=”wide”, idvar=”id”, timevar=”category”)I have tried the AttributePivoter with the settings : Group rows=id, group columns =category, attribute to analyze = valuebut it does not work, in the output I still get the 3 columns id, category, value with missing values everywhere in the category and value columns what am I doing wrong ? would another transformer do the job ? thanks in advance
I’m creating an automatic process to read in data in a feature reader and then output same attributes in the same order that they were read in, to an oracle spatial writer.I have set up user parameters in the FeatureReader for both the data to be read in and attributes to expose(.csv) however the order of attributes is not retained and neither is the data type. Currently, the attributes are alphabetised and they are all given the same data type of “varchar2”.Any suggestions on this would be appreciated.
I have logged a support case about my problem, but figured I might as well check to see if anyone else have encoutered this problem:I am writing a workspace to geosynchronize a Feature Service with a database. The Feature Service contains about 30 layers that need to be updated, so I have put my bet in for a dynamic workspace, since the operation is the same for every layer. This saves me a lot of transformers and makes the maintenance of the workspace much simpler.My challenge here is that both the FeatureReader and FeatureWriter requires the name of the layer to be passed in as a parameter, not the layerid, which would not be a problem. Almost all of these layers have names containing, at least, one space, and this is what is causing my trouble.On the reader side, I can enclose the layer name in double quotes, like “My Layer”, and this works without problems.On the writer side, however, things are messed up. I have so far tried three different approaches:Enter the name “as is”, like
Hello, i saw this in FME documentation :“...The ACAD format writer will look for custom hatch patterns in custom <filename>.pat files located in folder specified by the ACAD operating system environment variable, or in the related folder for any installed AutoCAD product.The REALDWG format writer will look for custom hatch patterns in custom <filename>.pat files in the <FME install folder>/plugins/realdwg/Support folder. Predefined patterns can be found in the acdb.pat file in that folder, and additional patterns can also be added to that file.” The Autodesk AutoCAD DWG/DXF Writer is fine : i get custom hatch patterns in my dwg file. (didn’t try REALDWG Writer)But when i use the Autodesk AutoCAD Map 3D Object Data Writer, i get the warning :“AutoCAD Writer: The combination of pattern type 'Custom-defined' and pattern name 'MYHATCH' was found to be invalid. Using a default predefined hatch pattern of value of 'SOLID'” How are custom hatch patterns managed in this case
I am trying to set up a process that downloads new zip files containing shapefiles from a Google Bucket. The bucket contains four folders at the top level and in each of those folders are folders for individual project areas. In those project folders there are mp4s, pdfs and zip files with the shape files. I would like to just download those zip files, and keep them grouped by project, and none of the others every time the flow is triggered. So far I have figured out out how to list the files and filter out everything else not a zip file. The list is great but I want to download them and not just list them. This is my first time working with Google Cloud Storage buckets.
I have a workspace in 2023.2.1 that is writing to ArcGIS Portal. What I am finding that in some cases the original layer that is in portal had spaces in the layer name i.e. Layer Name. When it is written to Portal either FME or Portal replaces the spaces and with underscores i.e. Layer_Name and when I try to update it, FME can’t find the layer as it is looking for the original name with the spaces. The only attribute that is available is fme_feature_type or my user parameters. Is there a way to create a parameter prior to both of these writers that replaces the spaces with underscores and is then available to the FeatureWriter layer name attribute?
Has anyone resolved the workspace log Warning for coordinate system when working with Snowflake Spatial Reader? Coordinate system of reader identified by keyword `SNOWFLAKE_SPATIAL_1' has changed from `LL-WGS84' to `' If you set the coordinate system on the Snowflake Spatial reader to LL-WGS84 the warning changes to. NOT changing coordinate system of reader identified by keyword `SNOWFLAKE_SPATIAL_1' from `LL-WGS84' to `' -- mapping file setting of `LL-WGS84' overrides coordinate system `' read from file. If you set the coordinate system on the Snowflake Spatial reader to EPSG:4326 the warning changes to. NOT changing coordinate system of reader identified by keyword `SNOWFLAKE_SPATIAL_1' from `EPSG:4326' to `LL-WGS84' -- mapping file setting of `EPSG:4326' overrides coordinate system `LL-WGS84' read from file. Ultimately the Warning has no impact on the workbench or translation, the data is definitely LL-WGS84 and a CoordinateSystemE
I have a road network (lines) that i need to convert into points for labeling reasons.I have managed to do this using DistanceMarker but I want to be able to save the orientation angle of the line as an attribute in each point. So that when i use the points for labels, I can tilt them correspondingly. Since the lines are rarely straight, I want the orientation in the specific point.Any advice for how to apporach this?
Hi all and Safe.I just revisited some INSPIRE docs, that specifies the projections used for data here.In Denmark we often use UTM 32N, but there are two basically identical EPSG-definitions: 25832 and 3044. We normally use the former, while INSPIRE only uses the latter.The only difference is that 25832 is given as Easting,Northing, while 3044 is given as Northing,Easting.I tried a simple reprojection workspace, entering a 25832 point, reprojecting it to 3044, and extracting its WKT. And it was still Easting,Northing !Doesn’t FME handle such coordinate value swaps when reprojecting, or is my setup flawed ?Cheers.
Working with FME Form 2023.2.2.Comparing features using a ChangeDetector transformer I see a weird behaviour. It does not always happen though but can’t see a pattern.I see features correctly output though Updated and Inserted ports but all of them have value ‘INSERT’ in fme_db_operation attribute. Has anyone experienced something like this?
I have a list and with ListSearcher i found that element with id {_list_index} needs to be removed completely from the list. How can i achieve this.
I am trying to intersect 3D Polylines and Solid Cubes to determine which cubes are touching the polylines.So far I tried Clipper, intersector, SpatialRelator and SurfaceOnSurfaceOverlay. All the features are ending in the rejected port as invalid geometry.What is the right way to accomplish this task?
Hi all,I’m exploring a workaround to split a polygon based on a 70/30 area ratio:70% area → Type A 30% area → Type BSome visual explanation is included below.The geometry of the split doesn’t need to follow a specific direction — any orientation is fine as long as the 70/30 ratio is maintained.Has anyone come across a method or workaround to achieve this?Thanks! 😊
I have a problem. First my FME: It is partly in Dutch, but it doesn't matter here. It is about spatial data with some features. There are two feature readers: the first one to select features which fall within a pre-defined contour, the second to select features. The attribute manager to add some attributes. The featurewriter to write the data in gdb format. In the FeatureReader you can see attributes for “pand_v” and for “scheiding_v”. The attributes of “scheiding_v” are standard, hence the same for other features, except for “pand_v”. The difference is that in “pand_v” BGTPlusType is replaced by “identificatieBAGPND”. The features are of several geometric types: lines, polygons and points.In the output of FeatureWriter all the attributes as given in the AttributeManager are shown. I'd like to see that for “pand_v” no BGTPlusType is given (there is no value here) and that for all other features no “identificatieBAGPND” is shown. And that some other attributes like fme_…, attribute{}…,
Hi everyone!I have some "from-to" path features (FROMTO.shp) that I need to use to calculate the shortest path across a network (NW.shp).However, it doesn't seem to work for all 4 features (just one), does anyone know why?I've attached the files for reference.Thanks in advance!