Mapping ALPR Flock Cameras with OpenStreetMap and Tableau

What is a Flock Camera?
A Flock camera is an automated license plate reader (ALPR) made by Flock Safety, an Atlanta company founded in 2017. The cameras are typically mounted on poles, are often solar-powered, and photograph passing vehicles when motion triggers them.
Computer vision reads each plate and also logs vehicle details such as make, model, and color, along with when and where the vehicle was seen. That data goes into searchable cloud software used by police departments, schools, businesses, and homeowner associations. Flock states its cameras don’t use facial recognition and focus only on vehicles.
The cameras have spread quickly across Texas, and so has the public debate over data retention, sharing, and oversight.
This dashboard maps where they are: 16,750 ALPR cameras across the state, roughly 90% of them made by Flock.
How I got the data: OpenStreetMap API
OpenStreetMap (OSM) is a free, crowdsourced map of the world. Volunteers walk, bike, and drive their neighborhoods, photograph ALPR cameras, and log each one in OSM as a point. Every camera is tagged with the same standard set of tags:
- man_made=surveillance
- marks it as a surveillance device
- surveillance:type=ALPR
- marks it as a license plate reader
- manufacturer=Flock Safety
- You can specifically filter for Flock Safety as a vendor; but for this dashboard I left it open to visualize distribution across manufacturers
The Overpass API is OSM’s query engine. I queried it for every point inside the Texas state boundary carrying the ALPR tag, which returned each camera’s latitude, longitude, and tags. I flattened the results into a table with one row per camera, giving 16,750 records.
Using some Claude code-vibing; I also leverage the coordinates returned to get the associated county and city for each of the near 17k records of cameras.
Why this data is a great fit for Tableau maps
Every row is a precise point with a latitude and longitude, so the data can be mapped several ways, each answering a different question. A Map Type parameter lets viewers switch between three views, and a text box beside the map explains how to read whichever is active.
Density map: where are cameras concentrated?
Tableau’s density mark type turns overlapping points into a heat surface. Thousands of cameras in Houston and DFW build into red hot spots, while sparse West Texas stays dark. With 16,750 points, individual dots would just overlap; density shows the concentration that individual points hide.
Shape map: where is each camera?
Swapping the mark type to Shape with a custom camera icon plots every device individually. This view works best zoomed in, where a viewer can see the cameras along specific roads and intersections in their own city.
Dual-layer map: cameras and cities together.
Tableau’s map layers let one map carry two mark types. The first layer plots each camera as a shape; the second layer adds a circle for each city, sized by its camera count. Viewers see the exact locations and the city-level totals at once, without switching views.
Step by Step: How I created the Texas doughnut chart

A standard doughnut chart stacks a small blank circle on top of a pie. I replaced that circle with a black Texas silhouette, so the state becomes the hole and the total sits inside it.
Here’s the build:
- Add the Texas icon shape to your ‘My Tableau Repository’; once placed you can reload your shapes to view it in your session
- Create two placeholder axes using MIN(0) on the rows shelf.
- Build the pie chart on the first marks card.
- Set mark to Pie
- Drag manufacturer to Color and the camera count to angle
- Increase the pie chart until it fills the view
- Adjust manufacturer color to your discretion; Flock Safety is the main vendor (i chose red for that one)
- Add the Texas icon shape on the second marks card
- Set mark to shape
- Set the color to black and size smaller than the pie chart
- Layer the two; right click the second MIN(0) pill; choose Dual Axis and then synchronize axis; the Texas icon now sits atop the pie chart while still showing the distinct pieces of the pie represented by manufacturers
- Label the center of the Texas icon with the total count of cameras; this will give immediate reference to your camera universe while still being able to see each pie piece distribution by count and % of total
- Flock Safety is the overwhelming leader of ALPR cameras, so I chose to show labels of the pie chart while only selecting the max label; this will show the majority share controlled by Flock Safety
Remaining Tableau Tips
Info Pane
The red “i” icon in the bottom-left corner holds the data source, methodology, and caveats on hover. Tableau tooltips can’t attach to image objects, so the icon is its own one-mark sheet: MIN(1) on the Marks card with an info-circle custom shape, and the methodology text in that sheet’s tooltip. The detail is there for anyone who wants it, without crowding the layout.
URL action on the header image
Clicking my header image in the top-right corner opens my blog. The image itself can’t trigger a dashboard action, so I floated a transparent layer over it:
- Create a one-mark sheet, set the mark to transparent, and set the worksheet background to None
- Edit its tooltip to read ‘Check Out My Blog’ so viewers know the image is clickable
- Float it in a transparent container sized to cover the header image exactly
- Create a dashboard action for the one-mark sheet where clicking on the sheet will open a new browser tab to a URL
Filter Actions without the Highlight
By default, clicking a mark selects it and fades everything else, which can leave a dashboard looking broken. A True/False filter action clears the selection instantly:
- Create two calculated fields: I created TRUE and FALSE; containing values True and False (respectively) without quotes (i don’t want strings)
- Drag both to detail
- Create a dashboard action (Filter)
- Set the source and target to that same sheet and run on Select
- Under Target Filters: choose selected fields and map the source field TRUE to the target field FALSE. Set clearing selection to Show All Values
- NOTE: True can never equal False, so Tableau drops the selection the moment it’s executed. The highlight disappears, while the dashboard’s other filter actions still fire.
Final Thoughts
This project started with a simple question:
Where are the cameras?
It then morphed into a showcase of what open data in OSM and Tableau can do together. Volunteer-mapped OSM points became close to 17K rows of rich geographic data. Density, shape, and layered maps turned those rows into patterns, along with one really cool Texas-sized doughnut visual. As Flock cameras continue to blend into the concrete jungle we all live in, mapping these points makes this “invisible” network visible, and those are the insights Tableau was able to reveal.
Check out the dashboard here
