Creating and organizing workspaces. How to use Workbench.
Recently active
We have FME Flow (Windows 2024.0.1) installed in an EC2 instance in a VPC. The DynamoDB reader uses the public endpoint: dynamodb.<region>.amazonaws.com.Can this be modified to use a VPC endpoint?For example: vpce-0a06cf963f9d04a28-3wilx6xm.dynamodb.us-west-2.vpce.amazonaws.com We need to do this for all AWS endpoints, S3 and SQS.Thank you,Kathy
I am currently working on updating and maintaining a workbench from a previous colleague and am having a little trouble with adapting to a certain aspect of the output schema that we need to follow. The shapefile that we are reading from has multiple very close together lines representing the different vertices of a kerb feature, anywhere from 2-5 lines. Without manually removing the excess lines, is there any way to only keep the lines that would represent the back-of-kerb, or rearmost line.
Hi FME'ers,I wanted to write up a brief guide to connecting transformers (and other objects) on the FME canvas, and rather than making a full blog post out of it as I've done before, I thought I'd experiment by posting it in the forums here.So here's a quick guide to the shortcuts for connecting transformers. I'm hoping that it covers any techniques you might not be aware of. Guide to Connecting TransformersMethod 1: Drag and ReleaseI'm sure you all know this method, but here it is anyway:You drag a connection from one port and drop it at a second port.Method 2: Quick Add with InsertHere we have a connection between a reader and writer feature type. The workspace author wishes to place a transformer between them. Rather than place and then connect the transformer in a number of steps, the author can do it in one by pre-selecting the connection:In other words, whatever is selected when you use Quick Add, that's where the transformer is placed.Method 3: Drag-a
The Swedish DOT offers extensive road data as Open Data. It is packaged in an ESRI Personal Database (mdb) with 120+ tables. I want to dynamically load all of the data into Postgis for local storage.However, quite many fields, scattered in the database structure, are of the type CHAR with a width of 2147483647 (sic!). Of course, no post contains that many characters, and FME tries to convert these fields to VARCHAR with the same width. This breaks the translation with the message that the type VARCHAR cannot exceed 10485760 characters.So in short, I need a way to filter and catch all tables with fields of the type CHAR, with a width of 2147483647 and alter the width to either the actual content of the field, or a static value that does not truncate what's in there.Regards, Mats.E
Hi, I have a JSON return form a HTTPCaller with schema info. An example of the return looks like this:{ "name": "Administration", "properties" : { "Id" : { "type" : "number", "required" : true, "description" : "The given Id for the object" }, "GeoType" : { "type" : "string", "required" : true, "description" : "The type of object" },The json continues here with more schema info.I want to turn the information into a table like this: I have 82 other JSON returns with the same layout but other “name” values and exposing them all takes to much time. I have tried to use JSON transfromers but so far no succes.Is there a more dynamic solution to transforming the return to my desired solution?Thanks in advance,Sander
Hi, I’m working on a script that takes building footprints and outputs different lines inside them (crosses, diagonals, centerlines) depending on the type of building. I have achieved good results for square buildings and buildings that only require a centerline. See picture below.But when it comes to buildings with more complicated shapes it doesn’t work as well. Some buildings turn out acceptable, like these ones below:But some shapes turn out pretty bad, like the ones below: I’d rather that they would look something like this:I guess I would have to make the buildings into separate polygons to achieve these results, if it’s even achieveable. Does anyone have any ideas? I’ll attach a copy of my script
We have a polygon dataset with roads and we need to find the roads than are less than 13 meters turning radius. We kan also create centerline dataset with the polygon. We imagine that someone out there has done this before. We need this datasett to find which roads the fire trucks will have problems to drive.
Hi! I am transforming data from different sources. The data travels at different speeds through their own workflows and end up at my Excel Writer at different points in time. This in itself is not the problem. It’s because I have specified a Fanout function in the name of the file all the data/features are being written to that the problem appears. The Fanout contains hours and minutes, the name of the file begins with:“@Timestamp(^Y).@Timestamp(^m).@Timestamp(^d)_kl.@Timestamp(^H).@Timestamp(^M)...“ Since the data gets to the Writer roughly a minute a part I end up with two written files with only part of the results in them. The two files get different names with only a digit’s difference. For example:File 1: “2024.05.30_kl.12:55...”File 2: “2024.05.30_kl.12:56...” I can obviously solve the problem by removing the hour and minutes from the Fanout in the file’s name. But I would really prefer to keep it. I have been looking for something to pause and sync the data before putting it t
I have a flow based around a main SQLExecutor that runs of different levels of aggregation depending on the input parameters, and the most conveinient and efficient way of doing that is to add or remove parts from my SQL query based on said parameters. While the problem looks simple on its face, I have not been able to find a good solution for that.As evidenced by the following thread, FME doesn’t have a function for this kind of conditional string substitution. The best it has is the ternary operator.However, said ternary operator is only supported in the Math Editor, not the Text Editor that SQLExecutor uses. The next best thing I have found is to use the @Evaluate function to give me access to Tcl’s ternary operator, provided I can express these sections of my query in a way that is valid in TCL.select @Evaluate("$(WHOLE_DAY)==YES ? {date_trunc('day', period_start_time, 'America/Toronto') as period_start_day,} : {}") @Evaluate("$(COMPUTE_HOURLY)==YES ? {date_trunc('hour', peri
We have a SQL .bak file which serves as a template for a database schema. Normally this .bak is restored manually via MSSQL, where the name of the database is specified.The goal is to be able to dynamically create a database on a known server, where the name of the database is derived from processing within the FME workspace.Is there a script that can be run from a SQLExecutor in FME to make this possible?
Can I ask a quick imagery / coordinate conversion question?I have lots of historic imagery files, the imagery are all flat tif files, not georeferenced whatsoever. I also have the corresponding .IF files (never heard of IF files) as shown below which contain georeferencing information. If I convert the tifs to geotiffs using the extent information below they all end up in Southern Ireland instead of Nottinghamshire UK. Any ideas what this Cassini projection is, or how to fix this….??I need to get these files into 27700 British National Grid# Extent information...extent minx = 28967.7430000000 miny = 267567.5460000000 maxx = 31381.6970000000 maxy = 269176.9600000000end# Cassini Projection...projection number = 33 zone = 32767 units = 2 ellipsoid = 9 parameter 0 = 6377563.3959999997 parameter 1 = 0.0066705398 parameter 2 = 1.0000000000 parameter 3 = 0.0000000000 parameter 4 = -1.1972600222 parameter 5 = 50.61770629
Hello Forum, We will have a polygon dataset of construction sites. The dataset will be managed within QGIS collaboratively by several planning officers. When the officer adds a new polygon object they will add a end date. This is the end date of the individual construction site project. Once that end date is reached the record needs to be deleted. I could ask them to manually delete it in QGIS when the date is due. However I’d like to take that overhead off them and replace it with an automated way of deleting records. Is it possible to build in a process to consider the end date value and then filter records accordingly? One port would go to all records where the end date has not yet been breached (this will be my published layer). The second port would filter all records where the end date has been reached (this will become a ‘historics’ layer). I’m assuming the end date value would need to be in a particular format (datestamp, perhaps). Thanks,Stuart
Is this possible?I would like to create a self service map generator. There will be basically 2 paths that the user can go, interior or exterior maps, and features (door points, fire alarms, bike racks, etc) can be chosen to be turned on and shown in each map. This data all lives in an ever evolving SDE. And my idea is that all the parameters the user picks will be building an ArcPy script that is manipulating an ArcPro project.I’m laying out the base plan now, and would like to gather some ideas/input before starting off.Here’s an example of what I want this service to do, and my initial thoughts of going about it:Basically the user selections from the parameters will build an ArcPy scriptI will have 2 ArcPro Map projects, one for Interior, one for Exterior The user will select if they’d like to see the interior/exterior. If it’s interior; the interior ArcPro project has a map series created from every floor of every building from the “floor” layer (field called bldgFlr). Therefore w
Hi,I have a workspace to translate a Shapefile to DGN. The shp file has a attribute wich I can filter data to output in three different levels. In this levels, two of them, only have contour style, but the other one is full. When I write DGN file, the level with full style is on the top, so the other levels are hidden under this one. I've tried to put the level number in an attribute called idgs_level, but it doesn't work. I've also tried to put the level number in the writer parameteres, but doesn't work. The issue is, how can i control the order of the levels?Thanks
I am trying to run my workspace on the command line, using a command file.fme COMMAND_FILE C:\Projects\330004063_Test\cmd_file.txtIt takes a bit, not as long as I would have expected, considering the test run of the workspace in the workbench, but then I get the following three lines, and everything is over.Reading...Emptying factory pipelineTranslation was SUCCESSFUL with 2 warning(s) (0 feature(s) output)The content of the command file looks like this:C:\Projects\330004063_Test\fme\figuring_things_out.fmw --DestDataset_OGCGEOPACKAGE "C:\Projects\330004063_Test\output\roads_test1.gpkg" --SourceDataset_SHAPEFILE_4 "C:\Projects\330004063_Test\input\KTM_Baseline2019Roads_EW50.shp" When I run the workspace in the workbench it takes 7.5 seconds to run through the data and is producing the expected geopackage, containing 11.433 features.The command line run does not seem to process anything. At least there is no verbose handling of the processing. It also does not produce the expected test1
Ok soooo, for the longest time I’ve been a bit annoyed at the Terminator for it’s seemingly inconsistent behaviour about when it chooses to report it’s error message in the status result of an FME Server job and when we get the generic - “An error has occurred. Check the logfile above for details”.Anyway it has gotten to the point that I’d like to actually figure this out and I’ve at least found a couple of workarounds which are working for me. Looking at the solutions it is kind of obvious and I’m not sure why I didn't think of it sooner. Anyway I thought I’d share my findings - probably other know about it but I couldn’t find anything clear on the community or in the documentation.1. Use a FeautreHolder, then into the Terminator,2. User a sampler set to sample last 1 feature and feed that into the Terminator (probably better for memory).The workarounds aren’t great because they don’t halt the translation as soon as possible - but at least the status message is there. Anyway, just wa
What exactly does those FEATUREs stand for in a FME Form concurrent license file (safe.lic)? Where do I find a description / explanation?FEATURE FME ...FEATURE FME_GUI ...FEATURE national ...FEATURE basic_raster ...FEATURE segy_reading ...FEATURE segy_writing ...FEATURE smallworld ...FEATURE fmeobjects_reproject ...FEATURE ssis_extension ...FEATURE spatialbiz … Thanks.
Hello there,I got 3 tables. There is one table with polygones (A) and two with lines (B and C).The lines in table B are going through my polygones. With the LineOnAreaOverlayer I cut the polyonges (A) in two. Now I need to know which part of the cuttet polyone is further away from my lines out of table C (in a max distance around the lines in C from ± 10 meters).For each cuttet polygone couple I need the furthes away one from the lines out of C.So along my C Lines are a lot of cutted polygone pairs. For each pair I need just the polygone which is further away.Any ideas?I tried the NeighborFinder alrdy, but dont geht my result. Thanks a lot!!!
I’ve been trying to write a DWG that includes a thumbnail preview.Selecting Write Thumbnail Image hasn’t made any difference to the files in windows explorer.Is there a tick to making this feature work?I’ve also looked at other options to generate thumbnail images using tools like the image rasteriser or MapnikRasteriser, but they’ve struggled to generate a good representation of the DWG vector content.Any ideas on an easy workflow to generate thumbnails for DWG content?I’d love to just pull an image from the 2D graphics preview within FME...
I have a workspace that sends data to a url through the HTTP Caller transformer. I want to terminate the workspace if a NULL value exists in a field that is in a table on a SQL database before the data is sent. What is the best way to do this? Do I still need the Creator transformer if I use a Tester?
I have a table where I have emergency meeting points. Each building has a meeting point, some buildings have many points, here is an example:Building Meet_Points 123 11,12,13 124 16 I would like the table to look like this:Building Meet_Points 123 11 123 12 123 13 124 16 How would I separate those meet points, and make numerous rows of the same building that has each meet point and all the other attributes carry over to the newly made rows and are the same?
Hello forum, This is probably a very silly question, but where do custom transformers (ones downloaded from the Hub) get installed? I ask this because I have downloaded the What3WordsEncoder and What3WordsDencoder transformers from https://hub.safe.com/publishers/safe-lab/transformers/what3wordsencoder and https://hub.safe.com/publishers/safe-lab/transformers/what3wordsdecoder.I’ve transferred the files to the server hosting FME Form, I’ve gone to the folder they’re stored in within in File Explorer, right-clicked and selected Install. A message appeared saying it installed. But now if I search in the Transformer Gallery in FME Form they are not found. So, can I instead browse to them? If so, where do they get installed? Thanks,Stuart
Hello, I have the following JSON file (sample) where by te attributes names are under “Channels” while the data values are under records. This JSON come to me as a API call and have no way of modifying the source. Using FME 2019 { "deviceID": 12345, "channels": [ "RecordTime", "Status", "Current Total Average Main", "Current Total Average Load1", "Voltage Total Average Total", "PhaseAngle Total Average Main", "PhaseAngle Total Average Load1", "Voltage Total Instantaneous Total", "Current Total Instantaneous Main", "Current Total Instantaneous Load1", "PhaseAngle Total Instantaneous Main", "PhaseAngle Total Instantaneous Load1", "ModemSignalStrength Total Average Total" ], "records": [ { "recordingTime": "2002-03-03T00:00:00", "status": "None", "values": [ 2.781, 0, 237.95, 37.4, 0, 238.27, 2.804, 0, 37.66, 0, 14.82 ] }, { "recordingTi
I read two obj models, but one of them has a texture displayed as a blend with the other model
I’m trying to create a new value based on the first letter of each word in a string. I tested the regex ‘\b(\w)’ and the returned value is correct, but when I used that regex in the @SubstringRegularExpression(), it only returned the first letter of the first word.@SubstringRegularExpression(@Value(ID),\b(\w)) where ID is “MARKHAM RD/ORANGE BLVD, SANDFORD”. You can see in the regex editor, it is correct. This is the result of the substring