cooriroo.ai, research
Dubai2Graph: the city as one graph
A map shows what is where. A graph records what is connected to what, and that is the form a routing engine, a neural network and an AI agent can work with. Dubai2Graph joins the city's roads, public transport, buildings, businesses and communities into one graph, then answers questions on it.
Ask the graph
Seven questions, computed from open data. Pick one and the map shows the answer.
Downtown Dubai: 547 businesses, 583 m from the nearest stop
8,332 of 57,690 businesses in urban Dubai, 14.4 percent, are more than 400 m from a stop. Ten cells of 300 m would bring 1,831 of them within reach.
How. Every business is measured to the nearest of 2,819 stops in the timetable, then counted on a 300 m grid. This is a coverage score. It does not predict how many people would ride.
1,614 stops within an hour of Terminal 3
From Jebel Ali Free Zone the same hour reaches 279 stops. The airport is served about six times better than the largest logistics zone.
How. The weekday morning timetable as a graph, plus 5,676 walking links of up to 250 m and 303 published transfers. Waiting time is half the usual gap between departures at the boarding stop, capped at 15 minutes.
Bus stops on the airport and industrial corridors
The ten stops that most journeys pass through are all bus stops, led by Max Metro Bus Stop Landside 2 and Rashidiya Bus Station Arrival. They are the points where a closure would hurt most.
How. 2,819 stops and 3,745 stop-to-stop legs, weekdays 06:00 to 10:00. Circle size is betweenness centrality weighted by travel time. Changes between bus and metro are not in this layer, so the two are counted apart.
Eight kinds of community
The four Al Quoz industrial areas come out nearly identical, with a similarity of 0.95 to 1.00. A rule that works in one is a good first guess for the others.
How. 137 communities, each described by 53 numbers on its businesses, transit and roads, linked to their neighbours by 849 edges. A graph autoencoder learns one embedding per community (link reconstruction AUC 0.98), which is then clustered (silhouette 0.38). One training run, group names are ours.
Three bodies: Deira and the Creek, Al Quoz, the Jebel Ali corridor
Between the three there is almost nothing. Delivery territories should follow those gaps, where a regular grid would cut through the dense parts.
How. 708 logistics businesses from Overture Maps (confidence 0.5 or higher). Each is linked to its four nearest neighbours; the median link is 350 m.
8 vans, 120 stops, 1,342 km
Every van carries 15 stops, yet the shortest day is 89 km and the longest 427 km. The planner sees the long sector the evening before, when it can still be changed.
How. A synthetic distributor with 120 real hotel, restaurant, cafe and grocery addresses. Territories by bearing from the depot, stop order improved with 2-opt, routes on a road graph of 13,927 junctions.
2,524 major roads, 16,241 segments
Motorways, trunk and primary roads, cut at 18,765 junctions. Every other layer is attached to this one, so a business, a stop and a delivery all share the same network.
How. OpenStreetMap, urban Dubai between Jebel Ali and Deira.
What a graph adds to a map of the city
Dubai is one of the best-mapped cities in the world, in two and three dimensions. Dubai2Graph does not redraw that map. It turns map layers into connections, so the same data can answer a different kind of question.
| A map layer tells you | The graph tells you |
|---|---|
| Where the bus stops are | Which stops the whole network depends on |
| Where the airport and the free zone are | How much of the city each can reach in an hour |
| Where the warehouses are | Which warehouses form one territory |
| Where each community's border runs | Which communities behave alike, even far apart |
| Where today's deliveries are | How to share them between vans, on the real roads |
How the graph is built
Four steps, the same for every layer. The method follows City2Graph, the open-source library for turning cities into graphs, and each step can be checked.
Collect the layers
Roads, the public transport timetable, buildings, businesses and community borders. Any layer with a shape and an identifier can be added.
Turn shapes into nodes and edges
A stop becomes a node. Two stops served one after the other become an edge, weighted by minutes. A building plot touching another, or facing a street, becomes an edge too.
Join them into one graph
Stops attach to streets, businesses to plots, plots to communities. Different kinds of node stay different, which is what "heterogeneous graph" means.
Ask, or learn
Shortest paths and centrality answer questions directly. A graph neural network learns patterns that no single layer shows.
import city2graph as c2g # the timetable as a travel-time graph gtfs = c2g.load_gtfs("rta_gtfs.zip") stops, legs = c2g.travel_summary_graph( gtfs, start_time="06:00:00", end_time="10:00:00") G = c2g.gdf_to_nx(stops, legs) # ask: reach, centrality data = c2g.gdf_to_pyg(stops, legs) # learn: PyTorch Geometric
Step 2 for public transport, shortened. The full notebook will be published with the page.
| Part of the graph | Nodes | Edges | Used for |
|---|---|---|---|
| Major roads | 13,927 junctions | road segments between them | Routes, distances between any two points |
| Public transport | 2,819 stops | 3,745 legs, 5,676 walking links, 303 transfers | Reach in minutes, critical stops |
| Urban fabric, Deira | 3,406 plots, 5,528 streets | 2,761 + 11,871 + 24,843 | Addresses to streets, last 100 metres |
| Businesses | 57,690 places | nearest stop, nearest neighbours | Coverage, territories |
| Communities | 137 communities | 849 shared borders and transit links | Which areas behave alike |
Open data today, official layers when available
Everything on this page is computed from open data, so anyone can repeat it. The pipeline is built to take official city layers in the same way, with the same four steps.
| Layer | Source | Status |
|---|---|---|
| Roads | OpenStreetMap | In the graph |
| Public transport | RTA timetable in the open GTFS format | In the graph |
| Buildings, businesses, communities | Overture Maps | In the graph |
| Addresses | Makani, Dubai's official address system, published as open data | Next |
| Official base map layers | From the data owner, under its own access terms | Ready to connect |
| An operator's own trips and stops | Cooriroo, per customer. Synthetic in every public figure | Ready to connect |
What these results do not show
Each answer above is a first result on open data. These are its limits.
Coverage is not demand
The bus stop score counts businesses near a location. It says nothing about how many people would use a stop there.
The timetable is a snapshot
Public transport figures use a published copy of the timetable valid from late August to December 2025.
One training run
The community groups come from a single run of the model without a held-out test. Group names are our reading of the result.
The delivery day is synthetic
The addresses are real businesses. The orders, the depot choice and the van size are invented for the example.
No arrival-time model yet
Predicting arrival times needs real trip records. A timetable alone would only teach the model the timetable.
Major roads only
The road graph holds motorways, trunk and primary roads. Local streets are modelled in Deira so far.
Bring a layer or a question
If you hold data about Dubai, or run an operation in it, we can add your layer to the graph and show what it answers. One working session with an engineer.
Write toinfo@cooriroo.comCooriroo Technologies L.L.C., Dubai
Method: Sato, Pietrostefani, Mahabir and Arribas-Bel (2026), City2Graph: a Python library for heterogeneous graph neural networks and spatial analysis in urban systems. Computers, Environment and Urban Systems 130.
Road network and bus stops from OpenStreetMap contributors (ODbL). Places, buildings and community borders from Overture Maps Foundation. Public transport from the RTA GTFS feed. © 2026 Cooriroo Technologies L.L.C.