Creating fme/place with FME

Kailin Opaleychuk
Kailin Opaleychuk
  • Updated

FME Version

  • FME 2023.0


r/place was a collaborative social experiment conducted on Reddit in 2017 and 2022. The idea was that a user visiting the subreddit ‘r/place’ would be able to edit the canvas by changing the color of a single pixel. The user would then be locked from performing this action again for a random period of time. The results from 2017 and 2022 can be seen here(2017) and here(2022)

What is fme/place?

We decided to see if we could recreate that project in a spatial way using FME as a project for the FMEUC 2022 Hackathon. fme/place was released to the FME Community in March 2023. Here is a snippet of the progress made since the release to September 2023. 


This article will outline the steps required to replicate this type of project using only the FME platform. 


Step-by-step Instructions

Part 1: Creating the Workspace

1. Create Points
Start a new workspace in FME Workbench. To start the workflow, first we must assign the point from the geometry parameter with a GeometryReplacer. Transformers used:

  • Creator
  • GeometryReplacer (geometry user parameter)
  • CoordinateSystemSetter

2. Create Pixel Boxes
Creating the image base is also important so that we can match the point to a pixel and create the image for the output. Transformers used:

  • Creator (box)
  • Tiler (100 x 100)
  • CoordinateSystemSetter
  • FeatureColorSetter (set to white)
  • ImageRasterizer (1000 x 1000)


3. Get Pixel and Write to Database
Next we compared the input point with the tiled polygons to assign them to pixels, assigned the color from the color picker parameter, and wrote this colored pixel to the database. Transformers used:

  • SpatialRelator (points to supplier port, polygons to requestor port)
  • Tester (only related suppliers)
  • FeatureColorSetter (color picker user parameter)
  • AttributeManager / AttributeRemover / AttributeKepper
  • FeatureWriter (SQLite Database)


4. Create and Display Image from Database
Reading in the database with the pixels that were previously written, we can combine them with the rasterized white pixels created earlier and display the image with HTML. Transformers used:

  • FeatureReader (SQLite Database)
  • FeatureColorSetter
  • VectorOnRasterOverlayer (pixels from database to vector port, tiled raster to raster port)
  • FeatureWriter (PNG)
  • HTMLReportGenerator (using the PNG)
  • HTML Writer



Part 2: Creating the Flow App

1. Publish Workspace
Publish the workspace to your FME Flow instance and make sure to select Job Submitter and Data Streaming services. 

2. Create the Flow App
In your instance of FME Flow, under Flow Apps select Build Workspace App. Customize the app with a name, title, and description. Make sure to select the correct workspace and Data Streaming as the service. You will need to specify the resource folders that the SQLite database and the PNG image will be written to, and where you may read them in later. Configure the parameters so that only the Geometry Parameter and Color Picker are visible to the user under the Show in App checkmark. 

3. Share the Flow App
Make sure everyone you want to be able to run the app has the permissions to do so, as well as sharing the URL to the newly created app.


Data Attribution

Data used in this tutorial originates from data made at Safe Software.

Was this article helpful?



Please sign in to leave a comment.