Creating and organizing workspaces. How to use Workbench.
Recently active
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
Is it possible to create features with a null polygon geometry and write to an ESRI file geodatabase?I have some features with known geometry which I write successfully.I would also like to write features with no geometry to the same table and update their geometry by manual editing later.I have tried modifying fme_geometry{0} and fme_geometry but nothing seems to work.I usually get an error like “can’t write features to and area feature type” I have read through similar questions but don’t seem to have a complete response. It appears it is possible to create a valid null geometry. Thanks go any help.
I am running a call to an Oracle DB based upon an input ID as a feature attribute value coming in from a CSV. There are upwards of 2000 ID’s to process. Initially, that call was running on a per-feature basis; I am now trying to make this more performant by using the IN statement e.g. WHERE ID IN (‘1’, ‘2’, ‘3’). I am doing this by aggregating incoming ID’s into one attribute value. Where this falls flat is that there appears to be a limit on items that Oracle can cope with in an ‘IN’ statement, so I figured I would chunk it up into more manageable numbers. My first thought was to create a looping transformer. My conception of this would be that a Counter would increment a Sampler to take the first 500 records (X), then the X+1 group of 500 (e.g. values 501 to 1001), X=2 and so on, until the _matched_records result coming out of SQL Executor was 0, at which point a tester in line would fail. However, Sampler doesn’t support that kind of expression building (as far as I can see). Any id
My workspace is not keeping my user parameters settings. It creates extra blank parameters when I close the User Parameter Editor window, and then my choices become useless at runtime. I’m also not able to delete these extra blank parameters. Downgrading to the stable version of FME Form but wanted to note the bug here.
When using Manual Attribute Definition in the XLSX Writer or FeatureWriter, is there a way to copy the Column Formatting between attributes? I have noticed that if I manually add a new attribute beneath one already formatted it copies the Formatting of the one above. But I was hoping there would be an easy way to set one, and then have it applied to all attributes.