Using transformers to modify data.
Recently active
Hi, I need help I have this table ID Année Logements 20 2024 120 20 2025 210 20 2026 340 I would like to obtain this : ID Année_2024 Année_2025 Année_2026 20 120 210 340 Thank you so much for your help!
On 2023.1.0.0 i’m getting the following python error when uploading a local folder of dwg’s to projectwise. The files are uploaded, but i’d be keen to understand why this error is happening - i thought maybe it was a python version but based on this discussion, it might not be? Projectwise transformers gets 'NoneType' object has no attribute 'encode' error on upload | Community (safe.com) 2024-07-24 14:10:57| 5.9| 0.1|ERROR |Python Exception <TypeError>: WebserviceConnectorFactory.set_feature_attributes() missing 1 required positional argument: 'attr_dict'2024-07-24 14:10:57| 5.9| 0.0|ERROR |Traceback (most recent call last):2024-07-24 14:10:57| | |ERROR | File "fme-webfs/src/webserviceconnectorfactory\webserviceconnectorfactory.py", line 253, in input2024-07-24 14:10:57| | |ERROR | File "fme-webfs/src/webserviceconnectorfactory\webserviceconnectorfactory.py", line 1249, in _handleException2024-07-24 14:10:57| | |ERROR | File "fme-webfs/src/web
Hello,I need to generate data by year (whereas I only have periods)To do this, I'll need to generate numbers between two values (typically years) to make a join with my existing data.I thought of using counter but I need input data, I just want to generate all the numbers between two values (for ex 1791 to 2024)thanks in advance for your help
I have a client who is requesting a feature in a workbench that I am unsure how to implement for them.They have asked for an ability to select which data to run after it has been read into the workbench, preferably with a drop-down menu or a tick box. The data coming in would be a multi-site .IFC file, and they are wanting to be able to choose only a specific site and run only that data. I know that to enable that, all data would need to be read, but how do I make it so that they can then easily choose which data to run without having to modify something like a dynamic filter each time?
My workspace is using ChangeDetector with two data sets original and revised. It appears that if the revised records contain two records with the same key and selected attribute and this key does not already exist in the original table then ChangeDetector will want to insert both records in the original table. This happens when the key is not already in the original table before the run. On subsequent runs, ChangeDetector finds the key and selected attribute in the original table, and it behaves as expected and does not insert a record. It treats it as an update or unchanged. How should I account for this? Attached is an image of my workspace. Thank you.
I am trying to re-write an IFC file including its Type Objects. The IFC reader can either output them as single IfcTypeObject feature type or as separate feature types (IfcWallType, IfcDoorType, etc). Reading the Type Objects works fine for me. After manipulating the data, I would like to write them back into their relevant feature types, e.g. IfcDoor together with IfcDoorType, related through the ifc_type_object_id and ifc_unique_id attributes (I'm unsure how the unique IDs should be created but I simply used the UUIDGenerator where required) I also tried reading and re-writing the IfcTypeObject features. However, the Type Objects seem to be missing from the outputs, giving me warnings like the below. If anyone could help out here? IFC: Unable to write objects of type 'IfcWallType'IFC: Unable to write objects of type 'IfcDoorType'IFC: Unable to write objects of type 'IfcBeamType'IFC: Unable to write objects of type 'IfcSpaceType'IFC: Unable to write
I have a workflow that includes transformers and a Python caller. The output of the Python caller generates CSV, GeoJSON, and SHP writers. The workflow has a user parameter called OUTFIELDS, which specifies the fields that should be written. How can I achieve this? I tried using AttributeExploder, but I couldn't dynamically generate the list of fields.
Hello dear Community,Despite having a Sorter, DulicateFilter and Tester right out of the gate in my model, I still seem to be experiencing this issue on the ID field of my model - OGCGEOPACKAGE writer: failed to execute insert : UNIQUE constraint failed If I run it one at a time, it seems to work, but I'm trying to write to make different Geopackages, with 4 tables in each (with spatial data). I've been racking my brain about this for some time, changing writers from manual to automatic, deleting any output data after each test run to ensure it's not conflicting, making sure there's no duplicates in the ID field that would trip up the writers, but to no avail - and wondered if anyone here may have a lifeline to throw me.Thank you
Hi All,I have successfully created a workflow that populates an empty template GDB with a relationship class (1 to 1) pre-created in ArcPro. The workflow works fine but I’m thinking to publish the same data onto our Portal for GIS platform to avoid the manual process of publishing the GDB through ArcPro.As far as I’m aware, FME will not create the relationship class and I was thinking to upload an empty template GDB (with 1 to 1 relationship class already created) to Portal for GIS and then point my FME to the feature hosted layer and fill the layer with the data,I have done some basics tests but can’t see that the relation class 1:1 works fine in Portal for GIS (even the empty template has set up correctly the relation)Does anyone have some experience publishing data onto Portal for GIS (or AGOL) with relationships?Any ideas more than welcome,
I would like to convert surface data (like mesh or LandXML) to IFC (using for example the ifcTriangulatedFaceSet class). I think, it has to be quite easy but I have no idea how to write those IFC data.I attache an input example-file (LandXML).Thank you very much for any suggestions.Franco
FME Desktop 2022.2Objective: I want to terminate my workbench if the FeatureJoiner spits out any UnjoinedRight records. So this means, even if there are any Joined records, I want these to also terminate in the flow because there are UnjoinedRight records being caught. Workflow and Logic:I have the following set up but it is not working. Notice in the screenshot below, I added a counter to the UnjoinedRight port, and a Tester. If the Tester conditions are met, they Pass and I want the Joined record to move along. If the Tester conditions are not met, then they Fail and I don’t want the Joined records to continue and would like the workbench to Terminate. Why is the Joined record still continuing, if the Tester conditions were not met (Failed). The value of the _count_unjoined is 1, thus, as per the conditions, they are not met, so then it sends it to Failed and to the Terminator, BUT the Joined record keeps going, which I don’t want. I thought the Tester logic would stop this. Eventu
Hello,I have a workbench 2022.2 that writes out data from a join of another feature service to an SDE feature class out to an existing service. I am using an attribute manager, see below, before a date formatter and reprojector. However, when I run the workbench, the writer always gives me a mismatch on attribute sizes error in manual and automatic modes. I have tried to update the attributes to the values listed in the error but it always seems to revert back. I know I am missing something simple but for the life of me I cannot see what.Thank you for your time. Scott
My question is about the following: I want to create Geopackages from about 20 Oracle spatial datasets. Each dataset must be stored in a separate geopackage.For Example: Oracle dataset 1 must become Geopackage 1, Oracle dataset 2 must become Geopackage 2. The names from the Oracle dataset must also be copied into the Geopackage.In addition, each Geopackage must be zipped.Is there a way to automate this in FME? I was already thinking about the AttributeExposer, but I can't get it to work.Thank you in advance.
When writing my data to an Excel spreadsheet, then I thought to get the attribute names in the first row of the spreadsheet.According the the documentation, the parameter ‘Output Field Names’ only has an effect ‘[...] only if the sheet or named range is being created or has been dropped or truncated prior to insertion. Otherwise, attribute names will not be added to existing worksheets or named ranges.’So, I drop and truncate what ever I can… 😂 However, while ‘Overwrite Existing File’ can be set to yes or no, and it sticks to the writers settings, the in the documentation mentioned parameters can be set to yes, but the next time you open the writers parameters dialog, your setting is back to no.The problem is most likely related toand I tried to set the row height to 0, where the name s are written.
Hi, few days ago I open a post :Best answers it was ok when I try with just one watercourse, but with 2 or more it’s not working. I tryed many days but without success, I don’t know how to set the accumulative lenght custom transformer to work with many watercourses. All segments that are part of a watercourse share an identifier (gwlnr) In attached there is a gpkg and .fmw. with the project in FME thanks in advance Custom transformer accumulative lenght
Hi all, Is there a way of exposing the transformer name as an attribute value? I'm trying to create a generic Emailer in which all the transformer "rejected" ports feed into, allowing easy identification as to where the error occurred in the workspace. Currently I'm creating a separate Emailer and writing the transformer name in by hand for each point of failure. I'm running FME Desktop 2019.2 :)ThanksAlex
I have a scan of an old map, that I want to geo-rectify so that it sits neatly under a vector dataset of property boundaries.I am following the example at this link “Adding GCPs to a scanned topographic map”RasterGCPSetter (safe.com)I have picked three GCPsI have a JPEG Reader for the scanned mapI use a RasterGCPSetter to set the three GCPsI then use the RasterGCPApplier to apply the GCPs (I downloaded GCPApplier from the hub)At this point it all looks great. The Inspector shows that the scanned map has rotated about 10-15 degrees. I am only using three GCPs, so this is an expected result.I then use a GeoTIFF WriterBut the GeoTIFF output has no rotation :-(What am I doing wrong? How do I write out a raster that is rectified?
Hi all,I have geometries (roofs) and I will use the transformer donutbuilder for further processing. The incoming polygons are all planar. The transformer “DonutBuilder” stopped with this rejection code:INVALID_GEOMETRY_DEGENERATEI was hoping to solve the problem with the “Geometry Validator” (fix degenerate or corrupt geometries). But all geometries were ok according to the validator.How can I avoid this error?Does anyone have an idea how I can solve this?
I have a process that includes the GeometryValidator transformer with a check on for self-intersections in 2D. The validation rightly captures those overlapping or crossing segments, but it also incorrectly catches vertices that snap to another segment. These kinds of geometries can be correct, as in the case of a trail that has a T-intersection and loops back onto itself.I’ve not found a mechanism to allow these kinds of errors to be considered valid. Does anyone have a work-around?
Hi,I have a layer of hydrographic network lines. A watercourse is composed of one or more segments, which share an ID. I have two attributes, abscissa_start and abcissa_end, which correspond to the length of the segment in a sequence. For example, in the attached image, I have a watercourse, where the first segment measures 50m, so start_abscissa is 0, and end_abscissa is 50, the second segment measures 80m, so start_abscissa must be 50, and end_abscissa must be 130, and so on. I need to find a way to be able to calculate the two fields abcissa_start and abcissa_end in FME automatically.The segments are always digitised from the origin to the mouth, and the calculation must be done taking into account as the first segment the one at the mouth. They already have a lenght field. Thanks,
Hello, I want to cut a layer (buffer zone) according to another layer (urban zones), so I set up the transformers clipper but the cutting does not take place and the entities that emerge are the same as at the input (cf. attachment) :Before Clipper :After Clipper : Would you have an idea to make this cutting work so that my buffer zone does not exceed (that it must therefore be cut) according to the urban areas present in the second layer? Thanks!
Hi all,I am using Change Detection to compare 2 geodb_tablesAt the delete ports, the correct number of deleted rows is 2But it is not being cleared in my writer, the result in the output table is still 11Please let me know how to fix this error.For the geodb_point and geodb_line data, the result is completely correct, only geodb_table has an error as I showed above.
Hi,This is a question that is really related to another piece of software (lastools) but it is using a product of FME.Basically in lastools you can colour a point cloud by an aerial image (the same as PointCloudOnRasterComponentSetter). I want to set up a script to do it in lastools because that is faster for this task.Anyway, lastools only accepts one raster (tif) as an input. I have multiple overlapping rasters. The overlapping parts are identical. What I want to do is merge these rasters and chop to the extents of each input point cloud.That is all easy but I’m having a little trouble getting it to work. It seems that lastools doesn’t like the RasterMosaicker transformer. The input (pre merged) rasters work fine, and even the clipped rasters (clipped but not merged). Which I’m taking to mean my writer properties are correct. I can’t see any difference in properties between ones that work and a mosaicked raster. I.e the bands/palettes are all the same because the source rasters are a
Hi,I was wondering if you could please provide me with a sample FME script that uses PythonCaller or PythonExecutor transformers.I’m trying to setup FME Form to ensure PythonCaller is working. As well, would greatly appreciate any instructions you could provide to configure FME and Python and ensure that PythonCaller would work.Thanks, Wilfredo
Hi All,Today’s million dollar question: I have created a workflow to process some polygon and table data into a template GDB. The process isn’t too complicated but I think the most consuming transformers in the process are the DataTimeConverter and the FeatureWriter. I have done some tests but assume that processing around 94M of records will takes days. Mainly, writing 94M of records into a gdb template will be a nightmare.Here is a screenshot of the workflow, I have also attached a version of it:How can I improve the performance of the workflow and process around 94M of records in a clever way?Open to suggestions :)Thanks