Creating and organizing workspaces. How to use Workbench.
Recently active
Hi there,I tried to write some data to a ArcGIS Portal feature service using the new writer. It skipped my feature as globalid was NULL, missing or empty:So i fell back to the old writer and this writes features fine. It sees that globalids are read-only and ignores them, along with the other ArcGIS server managed fields:I imported the same layer from the feature service using the writer - import layer approach, and fed the same data into both of them in the same workspace. One works, one doesn’t.Am I missing something?Thanks,Marc
2024.2 (24820) I am building a self serve workspace app for flow. the user will drag and drop a dwg onto the app.The workspace will convert the mapped drive to UNC and use that for a featurereader.prior to the featurereader the path will go through the filenamepartextractor. The output is NOT exactly the same location as input, and changes certain parts depending on the file dragged and dropped by the user. I use the source name in the filenamepartextractor and then build the output folder (which may or may not exist in full or in part). Then there are 3 types of files to output to that folder.I currently have the output dwg name built by hardwiring the filename and extension. The form workbench runs successfully with no output in the destdataset which is set as the output attribute for the filename. there is however a file in the workspace folder named @Value(DestDataset) with no extension. Tested by renaming this file and adding dwg extension (which opened correctly in autocad). Why
I’m attempting to configure a workspace to use a database connection that is published as a deployment parameter. However when I try to set a feature reader to the deployment parameter I getWorker 12476 > An error occurred while attempting to retrieve the connection parameters from the connection file 'SWS_GIS_DB'Worker 12476 > Failed to obtain any schemas from reader 'GEODATABASE_SDE' from 1 datasets. This may be due to invalid datasets or format accessibility issues due to licensing, dependencies, or module loading. See logfile for more informationWorker 12476 > Failed to read schema features from dataset 'SWS_GIS_DB' using the 'GEODATABASE_SDE' readerI published the database connection myself and created the deployment parameter so I’m not sure why form cannot use it. I would like to use the deployment parameter as opposed to having the user have to select the connection themselves.
Goal: Use the KLIC Transformer output to produce a FileGDB. I have used Esri Geodatabase (File Geodb Open API) as the writer. What the workspace does: Reads raw KLIC output, Builds dynamic layer name, GeometryValidator → GeometryCoercer, AttributeKeeper keeps only required attributes, (Latest attempt) GeometryFilter to keep only Line geometry to avoid mixed-geometry, FileGDB FeatureWriter with Feature Class or Table Name = dynamic layer name, Dynamic Schema Definition = OFF, Table Handling = Create If Needed (sometimes Overwrite If Exists while testing), No dynamic schema port connected. What happens: Translation reports success, In the output GDB, I get only one feature class (the first encountered). For all other values in the dynamic layer name field, the writer logs warnings and doesn’t create those classes.What I’ve tried: Narrowed the schema with AttributeKeeper. Verified in an Inspector that dynamic layer name field has many correct, distinct values (not just one). Deleted the o
I am trying to automate the conversation of a large series of CAD drawings to save the data to be used in ArcGIS Floor Aware apps.One of the criteria is to have levels / floors in a building sorted in vertical order, with the ground floor as 0 and increasing by one for each floor above the ground and decrease by one for each floor below the ground.Unfortunately my data has inconsistent naming for floors. With some having a Lower Ground (LG) and or basement (B). There are also some that have a messanine (M) between Ground (G) and Level 1 (L1). To top it off there is a Roof (R) in some.So my problem is that I need to sort the list of floors in such a way that I can get the vertical order, both positive and negative, centred around Ground as 0 where it exists. Does anyone have suggestions on how to tackle this?Here are a couple of examples and the vertical order needed. B, G, M, L1, L2, R => -1, 0, 1, 2, 3, 4B, LG, G, L1, L2, L3 => -2, -1, 0, 1, 2, 3LG, L1, L2, R => -1, 0, 1,
Hello yet again.This time I am experimenting with a complex Microsoft Excel document, its basically a calculation file that contains quite a lot of sheets, macros, references and formulas. Idea is that instead of sharing the excel document with the people that need to use it that I would just host it on our Flow, people would then have an option to fill out some published parameters in a flow app and then get a single excel sheet returned with their results (cutting out all the underlying datasheets and formulas and macros etc).Or to sum it up: I have a complex excel with formulas, read that excel in FME, change values in cells in FME, write out an excel from FME that would then recalibrate/recalculate based on those changed values.So I have figured out how to single out cells in the excel table where (basically using counter, and tester for that single number, link to attribute manager where the new value can be inserted to replace the old one, back to a FeatureMerger to put the new v
I believe there is the possibility to configure user parameters in a way that they take a local path for in/output and when they are going to be published the provided alternative for the FME Flow resources path is used.I cannot find my bookmark on how to do this and did not come to anything useful when searching the net.Does somebody have a tutorial on how to configure the user parameter that it uses the local resources when run in FME Form and the FME Flow resources when run in Flow?
Hi all.I’ve encountered a strange issue, when I made a small workspace to help me encode and decode strings on the fly.Apparently you can’t a TextEncoder and a TextDecoder in the same workspace at the same time !??What kind of dark magic is yielding this error ?I even made each of the two transformer into separate custom transformers, but the error was the same.In 2025.2 beta
Hi there,We have a plethora of web connections in FME Flow from various people publishing workspaces. now that we can use FME Flow as the web connection repo, I would like to tidy these up and ensure a better naming convention/structure.What would be the best way to do this?I think we have to:download every workspace, open them and audit the connections, build a table to show where all the connections are used, create new ones that adhere to our standards, update all workspaces and republish to Flow, ensure any workspace apps have permissions on the new connections delete old connectionsDoes this sound right? Thanks,marc
Hello. Fairly new to FME, so might be a bit over my head.I’m trying to create a validation workflow that compares 50+ files against 3 main ones. They all have the same structure, except the geography field name that is to be used for the comparison.The 50+ files are all named with a similar structure > final_DOMAIN_GEOG_Distance or final_DOMAIN_GEOG_Driving. Pretty much the files are divided by domain and 3 geographies.The 3 main files are a compilation of all domains and GEOG. My thought process was to have 2 csv readers (1 for distance and 1 for driving) and a few parameters that would read the user choice for domain and geography and read the csv accordingly. I have two issues:the parameters for file path seem to work but the csv schema remains the same (eg, it’s reading the original reader before adding the parameters), so it doesn’t update the field name with the geography, when it’s different form the original one is it possible to create parameters that can be used in the tra
Hello Forum, I am reading in two .csv files into FME Form... csv 1Candidate_UPRNs.csvThis has just one column: candidate_UPRN. It contains 100 records. Each record contains a UPRN value in the candidate_UPRN attribute.Note for those outside UK: the UPRN is the unique property reference number (UPRN) from the Local Land and Property Gazetteer (LLPG). As the name suggests, the UPRN is unique and can not be repeated. UPRNs are managed in the LLPG. csv 2LLPG_PAs.csvThis is an extract our entire LLPG with around 169,000 records. It contains multiple columns including UPRN. I want to filter LLPG_PAs.csv down so that I am only using the records that match (using the UPRN value) with the records in candidate_UPRN.csv (i.e.: the 100 records). Before I take the workspace on further from that point I need to establish the filter first. I’ve looked at SpatialFilter, but not sure that’s ideal. Any advice would be welcome. Thanks,
Hi, I am getting this error:An error occurred while attempting to insert a row into the table ‘ABC’ using a cursor. The error number from ArcObjects is: '-2147217323'. The error message from ArcObjects is: {The cursor has been invalidated by an edit operation.} I am experiencing an issue when trying to insert features into a feature class stored in an enterprise geodatabase. Specifically, I am both reading from and writing to the same dataset. I haven't encountered this problem before, but it began after I set the Feature Operations to "Upsert" while updating existing records and inserting new records that are not yet present in the database. I suspect that performing inserts and updates simultaneously may be causing a disruption with the cursor. I also attempted to use the Feature holder, but I received the same error. This disruption is affecting the automated process. Does anyone know what might be causing this error or how to fix it? I would greatly appreciate any assistance!Thank
Hi, I am looking into renewing my FME certification in the coming months. It is the first time I will do it proctored. Does anyone have negative experiences with Talview where you couldn’t use FME Form, FME Flow as described here: https://www.reddit.com/r/fme/comments/1dl0647/has_anyone_completed_fme_certified_professional/I understand you are supposed to be able to use the applications and help documentation during the exam. Thanks,Annette
Hello! I’m working on building a scalable FME workspace that can update multiple databases using a configuration CSV file. The CSV includes: Database connections, Table names, Field names (used to map different attribute names across databases)Since each database may use different field names for the same data, I added a “Field Name” column to the CSV to facilitate attribute mapping.What I am trying to do is loop through each row in the CSV, and for each row: Read the database connection and table name, Use the field names from the CSV to map attributes dynamically, Join the data with another source using a Feature Merger. Perform updates based on the joined data.To do this, I’ve:Read the CSV into a list. Set up a counter and a list element extractor to go through one row at a time. Used a Tester to check each row and feed the correct connection and table name into a FeatureReader. After the FeatureReader, I merge it with another dataset and apply logic to update the database.The Roadb
The Documentation for the @DateTimeFormat Function clearly states that parsing ISO 8601 format is supported:“Formats FME or ISO date, time, and datetime strings into a custom format [...] Arguments: <datetime> [...] Date, time, or datetime string in Standard FME Date/Time Format or ISO 8601 date and time format.”, so using PT1H as datetime Argument should be valid.But the Parsing of ISO 8601 date and time format fails:AttributeManager: Failed to parse 'PT1H' as a datetime value. For FME datetime syntax, please see http://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Workbench/!Transformer_Parameters/standard_fme_date_time_format.htm . For ISO datetime syntax, please see http://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Workbench/!Transformer_Parameters/standard_fme_date_time_format.htm#ISO-8601-Duration-FormatFailed to evaluate expression '@DateTimeFormat(PT1H,%H)'. Result is set to null FME Form 2025.1.2.0 (20250829 - Build 25630)
I’m trying to use conditionnal parameters in one of my FME workbenches, and I’m running into a problem where I can’t seem to be able to handle the the <Unused> value that results in trying to read a disabled parameter.Here I have a workbench with 2 parameters, one checkbox that determines whether to verify that values have been reported for the date where the flow is running, and a conditionnal field where one timestamp can be entered (as I normally use FME Flow’s “Event Timestamp” as input for this field).Within FME Form, if FME_LAUNCH_TIME is disabled, it will have the value “<Unused>” (it’s a text string, reported as such by PythonCaller and ParameterFetcher). This is… inconveinient because “<Unused>” (I can’t even type it in the community forums, the system thinks it’s an HTML tag) is not considered null/missing/empty/not-a-value by conditional operators, but it is also a reserved value, meaning you’re often forbidden from even writing it.I am literally unable to write that f
Hi everyone,on my local machine, I have installed multiple FME versions (2023.2.6, 2024.2.4 & 2025.0). In our company we work extensively with git and i use the Workbench Git integration from the command line. However, if I want to diff Workspaces that were modified with the newer versions (only tested for 2025.0) the command “git diff” launches FME 2023.2.6. This is not useful, because if there are e.g. Transformers that have a newer version, i guess one that is not supported in the older versions, the “Compare Workspace” Tool (2023.2.6 version) cannot display them.Is there a way to specify which version of FME should be used when executing the git diff command? Thanks for your helpCheers!
I have been trying to set up a Package dev environment on a Mac (Sonoma 14.7.7) and it crashes every time I get to the ‘import fmeobjects’ test in the venv. Just getting that far was a huge hassle. It appears that the SDK instructions and fme-packager library are geared for Windows. I had to modify the fme_env.pth file to only show the FME Home path and get rid of the rest, for instance. The issue seems to be that the native FME python 3.13.5 library does not like the Python.org 3.13.5 library, but can’t say for sure. Are Macs even supported for this? I currently don’t have access to v2025 on Windows.If anyone has had success making packages using MacOS, any insight is appreciated. Bonus points if you have a good ICP reference! Thanks,-Loren
Hi.I’ve been tasked with projecting data from a local coordinate system to an official one.The local coordinate system transformation can be handled with PROJ, but is not necessarily part of the standard PROJ deployment.Q1: If I add these files to the Reproject/ProjData folder, will FME/PROJReprojector then automatically use them for the transformation ?Q2: Will FME automatically download any necessary (standard) files from PROJ if they’re not found locally ?Q3: And am I correct in understanding that FME 2025.1 and 2025.2 (beta) embeds PROJ 9.5.0 ?Cheers.
Hello everyoneHow can I restart a row counter in FME at the beginning of each year?I have a dataset with a year attribute (e.g., 2025, 2026). I want to generate a rowid that starts at 1 for each new year and increments sequentially.Example: For 2025 → rowid should be 1, 2, 3 … For 2026 → rowid should reset back to 1, 2, 3 … I then want to concatenate the last two digits of the year with the padded rowid to create a WorkOrderID like: 250001, 250002 … 260001, 260002 … Which FME transformers or workflow should I use to reset the counter per year?
Hello everyone,I need to transform a 2D road graph into 3D. Each vertex of the lines should receive the correct Z value from a DTM.I found this solution, which works very well: The problem with this workflow is that it is very slow. My region is very large: the graph has about 150,000 elements, and the vertex extractor generates more than 2,000,000 vertices, which slows down the script. Any suggestions?
We would like to migrate IOT sensors event data, which is exist in MySQL to Hono-Ditto system.Can you please help us with the process? Thank you.
Hello all! I am using a CSV file as a configuration source, which contains a list of database connections and corresponding table names. This CSV connects to a Feature Reader, where:The database connection is set using a parameter (dbConnection) read from the CSV. The feature types are dynamically set using the table names from the CSV.The Feature Reader successfully reads data from all specified tables and outputs them through a generic port. I’ve exposed both the feature attributes and the fme_feature_type.Now, I need to join the database data with client data, but since all table outputs are merged through a single port, it's difficult to manage and distinguish between them.What I’m looking for is a way to automatically separate the data by fme_feature_type (i.e., table name) and route each to a different port or stream without manually updating filters or Testers every time a new table is added to the CSV. This is essential because users will be updating the configuration file with
Hello Forum, I have read in 45 tif files into a single FeatureReader via Select Multiple Folders/Files> Add Files. But when I click three dots next to Feature Types to Read, in order to ensure that all 45 files are listed separately, I can only see one listed. And that doesn't appear to be a input file, but instead it just states ‘TIFF’... What I am doing wrong here? I use this function quite often and it usually lists all selected input files, but on this occasion it is not. How do I get Select Feature Types To Read to list all the selected input files? Thanks,
Hi.Is it possible to execute dynamic SQL in the InlineQuerier ?I tried something like: SELECT * FROM Merged WHERE @Value(“sql_where”)but it doesn’t seem to work.Are there not substitution done in the “SQL Query” window in InlineQuerier ?Yes, I know it has to be SQLite syntax, and it is.Cheers.