Using transformers to modify data.
Recently active
In a related topic I’ve asked about api’s and JWT authorization: The currently only way is to do this via python. I’ve got myself a script that I call via a systemcaller that runs the python script in a conda environment (not keen on installing extra python stuff in the FME locations). This works as I can fetch my bearer token to do api calls.However there is an expiration time on the bearer token (1hour).So now I’m wondering how to tackle this the best way:I want to do several http calls in parallel (default 25) but if I’m using the token voor 3500 seconds, I want to call my CT for getting a new bearer token. Any not processed calls (I need to make 3k+) should now use the new token. If I again come to this 3500 seconds another refers etc.So what would be a good way to achieve this kind of looping? As the http caller has a limitation that if there is a loop port, multi threading should be set to 1, beating my purpose.I also don’t want to duplicate transformers, because I don’t know ho
Working with crossborder maps that get their data from two different datasets. There are many ways to approach this, and I am toying with the idea to convert the attributes and their values from dataset A to the standard of dataset B. The benefit would be easier downstream processing. A simple example:Dataset A: attribute ‘Lakes’, value ‘yes’Dataset B: attribute ‘water’, value ‘1’Then do some FME-magic to convert everything from A to the standard of B, ie ‘lakes’ → ‘water’ and ‘yes’ → ‘1’I imagine that the only reasonably fast way to set this up would be by utilizing an external lookup table, csv or similar. How would one go about to change both the attribute and values from an external lookup table? I would like to keep it dynamic and easily editable, so preferably avoiding the AttributeValueMapper.
Hello,I was wondering if someone here could give some guidance to a problem we are experiencing.We our trying to connect FME to BigQuery but regardless if it is the reader or writer we are unable to connect using Web Connection.For the Web Connection settings we use or own accounts which have access to BigQuery. In fact when we connect directly to BigQuery we are able to see the project, datasets and tables and we are able to run queries on them.But when trying to establish the connection from FME using Web Connection we get the following error: BigQuery Connection ErrorAny help on how to solve the issue or to even find out what exactly is wrong would be appreciated.Thanks in advance.RZ.-
I have a table of data that I’m trying to map. The locations are essentially polygons with their bounding streets entered as attributes:I have street data and have been able to create polygons using AreaBuilder, but am stuck on trying to add all of the streets back as searchable/joinable attributes rather than items in a list.I’ve tried the ListExploder and gotten a stack of polygons, each one with one street’s attributes, but I aggregating isn’t quite getting me the results I’d expect. In a perfect world, I’d be able to run FeatureJoiner or something similar on every item in the list, but it only seems to allow one.Any advice is very much appreciated!
When python caller errors out.It does not show error line number. Message Type: fme::internal::_v0::py::ExceptionPython Exception <GEOSException>: LocateFailureException: Could not locate vertex.🟢06-Report (PythonFactory): PythonFactory failed to close properly
I’m looking at an area of survey points that can be divided into east and west areas by grouping with an attribute value. I have used Hull Accumulator to draw polygons around a) the whole area (light purple) and b) the two subdivisions (darker purple). The point population remains the same overall, but I get different external boundaries in places, when I was expecting the same. Alpha = 0. What would be useful is any description about how the transformer makes its drawing choices. I also end up with a donut hole. Again, am trying to understand how this occurs, as I assumed the transformer would create an external boundary only.Many thanks
Helly everyone,I am working with data that consists of abrreviations/code items that are strung together in a single field which I am trying to convert to full text. For that I am using a string pair replacer which contains thousands of mapping pairs, but I have encountered a problem which I can’t seem to solve without knowing how exactly the String Pair replacer does its thing. The problem arises when multiple codes share letters. Here`s an example: I have the following pairs somewhere in my replacement pair string**gn green**bn browng gravelF mudSo F:**bn**gn should map to Mud:browngreen but whats happening is this: M:brown**gravelr.I figured that the transformer probably checks its list from start to finish and ordered my list by string length in hopes it would transform longer strings first. The order of replacement items definetely has a big impact on the result and I was succesful of ironing out most errors in doing that but this particular translation and a few others still dont
So, in the context of pipelines we run camera inspections registering different damages and features along the pipeline. We have registered pipelines by ID in a larger gis database. I already have a script running that reads the information and returns all the registerd freatures in the camera inspections and draws it in a arcgis. The issue is that sometimes the lines have bends even with the same ID. making it hard to create new points at the specified distance. So what i need is something that creates a point at a specific length from the starting point ID, that takes into account the geometric changes of the line. in the example picture under, i want to draw a point at the POI. I have the distance(70m) from start. But there does not seem to be obvious functionality for this in FME. Any ideas?
Hi!Is it possible to create (writers etc) a Data Pump Script (DPS) file for store in Oracle in FME Form ?
Hello,I have a set of pairs of points that each have a uniqueID_start and unique_end field. I am trying to extract all of the line segments between each pair of points. The tricky thing is that the pairs can be several line segments long, and have other pairs intersecting them:There could also be several points on a single spot, but corresponding to different pair sets.It’s a mess! Any help would be wonderful!
Hello, I have a reader with a shapefile that has contour lines in it. I have connected that to the ContourLabeller transformer. I have taken the label output port of the ContourLabeller and run it to a DGN Styler where I have styled it. These parts are all working but when I write it using the DGN (V8) writer the label level is not created. What am I missing here? Thanks!
Hi there,I have severale profiles, which fly somewhere in 3D space.The elevation always follows the z axis. The direction varies, but follows one direction in XY level.I started like this:BoundsExtractor get the bounds (aka rotation axis) GeometryRefiner do some geometry refining 3DRotator rotate around the axisResult:3D view2D viewred: rotation axisgrey/black: original geometrygreen: rotated geometryI expected the green geometries to be rotated around the axis, but instead they are rotated into 3d space 😵💫 I also tried to set the axis through the geometry (z = zmax-zmin), but with no success.Can somebody help?Cheers,Maria
I’m trying to make a KML from a CSV with Geometry in WKT. I have got up to the Extract Geomery transformer but keep getting the INVALID_GEOMETRY_VERTICES error. Example i’m trying to extractLINESTRING Z (212197.02298451745 6343709.643456226 -405.22127891605567, 212199.2655298651 6343696.0119692795 -406.87294763726277, 212201.50807521114 6343682.380482333 -408.246661504635, 212203.75062055816 6343668.748995384 -409.3429700220356, 212205.99316590338 6343655.117508436 -410.1623117274895, 212208.2357112494 6343641.48602149 -410.7050143686031, 212210.47825659852 6343627.85453454 -410.9712950336693, 212212.7208019459 6343614.223047592 -410.9612602385047, 212214.96334728913 6343600.591560645 -410.674905969057, 212217.20589263522 6343586.960073698 -410.1121176798006, 212219.4484379844 6343573.328586748 -409.2726702479159, 212221.69098332908 6343559.697099801 -408.1562278832371, 212223.9335286767 6343546.065612854 -406.7623439939325, 212226.01318177005 6343533.424279183 -405.22127891605555)
Hello, I was just wondering if anyone has successfully used the AutoCAD Dimension attributes to validate angles?I have a example drawing below where the angle of the lines is added as text in AutoCAD using the DIMANGULAR function in AutoCAD. When FME reads in the features, using ‘Explode Dimensions’ set to No, I get a series of attributes against the text point with the coordinates of lines used to determine the angle in AutoCAD. What I have found is that defpt2 to deft4 aren’t always in the order to create lines and test the angle between them and was wondering if anyone else has had success in validating angles from a DWG?
I’ve been successfully utilising the Microsoft Email Service via the Emailer transformer for sometime - I noticed last week that all emails scheduled to run via FME flow stopped working, and when I opened the workspaces to reauthorise Microsoft, I was met with the following error: “Unable to retrieve access tokenRequest to update access token failed. HTTP Error: HTTP/1.1 401 Unauthorized” My IT department can see on their end that the logins have been successful via FME Emailer Enterprise Application on Azure.
I have many SQLExecutor transformers and for any reason they use to lost the geometries.The visual preview nor the data inspector show any geometry, only a “There is no geometry in this view” message.When they should save the results in the next FeatureWriter (in a postgis database) only the alphanumeric fields are correctly writed, but the geom field is fill with nulls.When I execute the same sql sentence in QGis or pgAdmin I get the geom field with the correct geometries.I'm not be able to find the fix for this issue. Any idea will be appreciated. Thanks in advance.
Hi,I have an FMW (FME Form v.2023.2) with 4 datasets, and I would like to save the results as ArcGIS Portal writers. Each dataset could change due to modifications in the underlying databases or files used in the FMW. These changes may involve the deletion or insertion of rows, updates to attribute values, or, in some cases, no changes at all.I would like to run the FMW once a month without modifying the parameters for ArcGIS Portal.How should I configure ArcGIS Portal to capture all changes for these 4 datasets?When I used Insert for Feature Option and Truncate for Feature Type Handling 3 datasets where correct updated, the 4th dataset “Alle_Adr_Adkom” got:ArcGIS Portal Feature Service Writer: 0 features successfully written to 'Alle_Adr_Adkom', but the server rejected the 48751 features in the last request due to errors. See warnings above. Ending translationARCGISPORTALFEATURES writer: An error has occurred. Check the logfile above for details”I appreciate your helpElisabeth
Hello. I am running workspaces using FME Python API and the class FMEWorkspaceRunner, where I am currently using the method runWithParameters.I would like to know how can I change the Log file name (and path) when running the workspace in this way. I saw in the documentation that runWithParametersAndDirectives have an example about change the log name, but it is not clear for me.Thanks.
Hello,I was told that I can use HTTPCaller to automate some ArcGIS Online Admin workflows, such as creating/deleting user accounts.I found this ArcGIS REST APIs authentication document to guide me, but I can’t figure out how exactly. https://developers.arcgis.com/rest/users-groups-and-items/authentication/ Any help is appreciated! Nicole
I have a block sitting on a line and a block associated with a point in a DWG file. How can I save the label positions, including the rotation and alignment of attributes like 'ID', 'Slope', and 'IL_Out', using the CAD Feature Writer in FME?
I'm using FME Workbench version 2023.2.3. I have 2 datasets, 1 dataset contains around 2,5 million polygons, the other dataset is 1 polygon (a province in this case). I want to know which polygons overlap with the province (even if the overlap is small). I use a SpatialFilter for this, with the 2,5 million polygons as candidate and the 1 polygon of the province as filter. Below are the settings: Now I noticed some issues, where some polygons who do have an overlap, still end up in the ‘failed’ port. Like the example below:I asked some colleagues and they don't know what's going on here. Everything looks alright and we have no idea why this doesn't go in the ‘passed’ port. It almost seems like a bug. I use this SpatialFilter a lot, so I'm curious what's going on here. I hope someone can help me to figure this out.
I am using FeatureJoiner to combine polygons from different source data layer. They all work fine and get combined apart from the data coming from the MapServer reader, this one gets rejected in the FeatureJoiner and gives this information:I see that data has an extra attribute: ‘arcgisonline_type: arcgisonline_polygon’, and the others from other data sources don’t have that. I am using a CsmapReprojector and converting from SPHERICAL_MERCATOR to MGA94-55 (written as “_MGA94-55_0” for all other data, and as “MGA94-55” for the data that passes through the Reprojector, the one that is being rejected, I don’t understand why they get different naming).Any suggestion if I am doing something wrong and how can I have the data not rejected please?
Not really a question, but feel free to add comments or thoughts below.We are implementing pre-commit hooks and centralized Python linters in our git workflows, and for this we need to extract all Python code from workspace files pushed to git. Since we do not want to require a full FME installation for this, we’re parsing the .fmw files as text files using Python and extracting all the code blocks within, before passing them on to the linter as if they were stand-alone Python scripts.As code blocks are encoded in a somewhat non-standard way, I’m sharing a Python function to convert FME encoded strings to regular text, without resorting to any dependencies like an FME installation, (which would allow using FMESession.decodeFromFMEParsableText) or other third-party libraries.It can decode FME encoded strings on either formatimport&lt;space&gt;fme&lt;lf&gt;import&lt;space&gt;fmeobjects&lt;lf&gt;import&lt;space&gt;json&lt;lf&gt;&lt;lf&am
Hi there,last time, this community forum was so helpful and I hope someone can help me this time around too…I’m using the Clipper to clip polygons using the Group Processing feature. Only if the values of the attribute “att_1” are the same should the clipping occur. So far so good. However, it can be that att_1 is NULL (empty) and in this case, I would like to do Group Processing using attribute “att_2”. Is there a way to configure this in the Clipper directly?With my humble knowlegde of FME, I would filter for att_1 being NULL and have two Clippers (one for Group Processing att_1 and one for Group Processing att_2) and then merge the two data streams again. But is there a more elegant way?
Hi, This is defeating me!Any pointers sincerely appreciated.See attached spreadsheet, Where I have features with attributes having multiple similar IDs as well as a name attribute.I have added the columns _num and _page, that is the desired output I manually added in.I can achieve the _num output easy enough with a counter set to Local and group by the two Attributes Name and ID. I set the Count to be _num and Group ID to be _page. This works fine until the Name group changes and the _page will continue counting, See screenshot. However, when the new Name starts with B I want the _page to restart at 1. How do I set it? Thanks. Nic