Using transformers to modify data.
Recently active
I’m building a value for the Longitude of a point feature. The field type I have defined is number (20,6) I create the value using this in the text editor: @Format(%.5f,@XValue())So I want 5 decimal places. eg. 15436225.30510However, what I see in my result table viewer is 15436225.3051 (no trailing zero)But when I double click on that value, it displays the value “with” the zero. 15436225.30510 The value that gets written to the writer (to AGOL) is the one without trailing zero.Works fine until I use a change detector, then it decides that the trailing zero is causing a difference and wants to update the value to have the trailing zero.So my question is, can I enforce the trailing zero in the table result? Then I will rewrite my destination records one time again and hopefully my change detector will realise they are the same from that point on. My original format statement again is : @Format(%.5f,@XValue())
I have been able to successfully connect to Asana by using two resources (attached at the bottom) and extract a list of task names and custom field names, but I have been unsuccessful in using the JSONFormatter, JSONFlattener, and the JSONExtractor tools to create a list of tasks and their corresponding custom field values for a specific Asana project. If anyone is experienced in working with the Asana API to collect this kind of data from a particular Asana project, I’d be really appreciative of any helpful tips to create a final output of a project’s tasks and their custom fields. Thank you so much!https://hub.safe.com/publishers/safe-sandbox/web-connections/asana)
HiI am doing a comparison of multiple AGOL feature services and am using a workspace runner to iterated through the feature services. I have created a published user parameter for the feature service name, which is populated by the workbench with the workspace runner. This appears to work fine but the problem is I cannot seem to make the layer name a parameter so it keeps reading the layer name from the feature service that the agol reader was set up with originally.Does anyone know a way round this please? Or perhaps it is resolved in a newer version of FME desktop (Im currently using 2023.1)?
Hello all,is it possible to use one AttributeRounder to round different attributes to different accuracies?Let’s assume i have two attributes, A and B. I want to round A to 2 decimal places, whereas i want to round B to three decimal places. Is this possible with one AttributeRounder or do I need to use the AttributeManager.Cheers!
I have a parent WS that runs a load of WorkSpaceRunners. I want to pass on some User Parameters from the parent to the “kids”, see settings below. The child workspace is already setup with these User Parameters and run fine with them when run on their own. I have not been able to find any documentation on this, so the settings below are my best guesstimate. My steps are User Parameters in parent -› User Parameters in workspacerunner settings -› User Parameters set up in child workspace settings -› use them in child workspace.So, how do I fix this?Does the child WS need to be set up in a special way in order to pick up the incoming parameters? Is there a misstake in the syntax? Anything else I can look into?
HiWe are migrating from one AGOL portal to another (with regional hosting). I have used the AGOL connector to list all service definitions of hosted feature services, download/upload the .sd files and publish the service on the new portal. This appears to have been successful.However, I am now trying to compare the feature services in each AGOL account and am struggling. I want to iterate through each feature service and compare it with the the one on the other account using the Change Detector. I have used the AGOL connector to list all the feature services and fed that into a feature reader. Unfortunately, all the features just come out the generic port without any schema so it seems impossible to compare the feature services. Does anyone know a way this could be done please?Also, I need it to finish with one feature service before it moves on to the next one. Is this possible?Many thanks
Hi all. I am just trying to do something very basic but keep getting a “1019 error. The specified feature could not be updated or does not exist” when using the update feature writer.This only happens with polygons and lines/polylines but works fine with points.The workbench below is taking a polygon boundary dataset from portal, taking a polygon from AGOL putting it through a change detector - whose unique identifier is a name in both features- then updating/inserting/deleting when necessary to essentially make the AGOL layer the same as the portal layer….Or in theory this is what i want it to do. Any help would be much appreciated.
When ‘Remove Output Attribute’ is selected for ‘If Input Attribute is Missing’ The missing attributes (the attributes with no data) are still present in the output. Any clues?
Hi there, I got a weird error when I attempted to use featurewriter transformer to write feature into SDE dynamically (see the error screenshot below). Could someone please explain what is the error is talking about? Is there any solution?Thanks in advance for your answerAlan
I’m using an FME FeatureReader to read a content of an Excel file containing various values, including decimal numbers, some of them small with more then 5 decimal zeroes.The FME, apparently, handles these small numbers using scientific e notation.After processing the data, I write it into a CSV file using a FeatureWriter. The problem is, that the small numbers are written in their scientific notation form, and not as real decimal numbers. This is causing an issue further down the line.I tried various things to force the FME to write the numbers as decimals:forcing datatype of the affected attributes in the FeatureWriter to Decimal or Real using AttributeManager to change the datatype of the affected attributes to Real, Decimal and even String forcing the datatype of the affected attributes in the FeatureWriter to String changing the datatype of the affected cells in the Excel file to TextNothing helped.I tried to find a String or Math function that would achieve that, but I’m not sure
Hello,unfortunately I do not know how to solve the following problem. I have many points and lines and would like to create a connection to the line layer for the points. The lines should not be drawn directly to the starting lines as in the second case, but an iteration should take place. Here is the process as I would describe it:1. a point is taken and the closest point to the line layer is determined and this line is also created2. the new line is added to the existing line layer3. the next point is taken and the closest point to the line layer is determined. The new line layer may result in a shorter route than the original layer.4. the new line is added back to the original data set, etc.So far I have tried various workflows with a loop, but unfortunately I have not gotten very far. I would be very grateful for any ideas and suggestions.
How to apply geoid when converting ifc to cesium 3d tilesHello, I am converting ifc to cesium 3d tiles. The photos below are the photos that were converted. If I do not apply geoid, the conversion is done well, but if I apply geoid, the following error occurs. In the Vertical option, Geoid Height Grid, .gdc, .gtx, etc., the same error occurs no matter what file I put in. Is there any solution? The operating system is mac, and the corresponding fme version is 2023.2.
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