D3 · Networks

How the archipelago is stitched together

Comparing domestic flight routes and Pelni ferry circuits, on a map and grouped by island.

I’ve mapped two networks connecting Indonesia’s islands: domestic flights in the 2014 OpenFlights data and the listed circuits of 26 Pelni passenger ships. They cover 54 airports and 74 ports respectively.

Red arcs show flights, weighted by airline count. Teal lines connect consecutive stops on ferry circuits, weighted by ship count. Hover a place to see its connections, or a ferry leg to follow the ships using it. These are route records rather than current schedules.

Fig. 01 · Domestic flights and Pelni passenger ships (OpenFlights 2014, Pelni)
Show
  • Flight route
  • Pelni ferry leg

Flights and ferries

In the flight data, Jakarta connects directly to 31 other airports. Fourteen airports have only one route, five of them to Jakarta. Most airports are within two flights of the capital, often via Makassar or Surabaya.

Pelni routes involve more stops. Surabaya and Makassar are each visited by fifteen ships. From Jakarta, the median port is four legs away and Merauke is eight. KM Leuser’s Surabaya–Merauke circuit calls at fifteen ports.

Ten ships do not call at Java. Their circuits connect places across Sulawesi, Nusa Tenggara, Maluku and Papua. Twenty-seven cities appear in both datasets; the other 47 Pelni ports have no airport represented in this flight data.

Routes grouped by island

The diagram below places each city or port on a ring, grouped by island and ordered west to east within its group. Routes between the same island groups are bundled together, making connections easier to compare where they overlap on the map.

Fig. 02 · The same routes with the geography taken out: places in a ring, grouped by island
Network

In the flight network, 65 of 126 routes begin or end in Java. Jakarta and Surabaya have connections to every other island group. Routes elsewhere include links within Sulawesi, from Jayapura to the Papuan highlands, and from Denpasar to Nusa Tenggara.

Switch to ferries to see the greater number of connections among Maluku, Papua and Nusa Tenggara.

Data limits

The flight table dates from 2014. Wings Air is missing, excluding many short eastern routes. Medan also has no domestic routes in the file following its airport move. Those omissions matter when comparing how well places are connected.

Pelni circuits were transcribed from Wikipedia’s fleet list. Routes change and ships go into dock. Lines connect port coordinates directly and sometimes cross land; they do not trace the actual sailing path.

Line width counts airlines or ships. It does not measure departure frequency, capacity or passenger numbers.

How it is drawn

The map uses d3.geoMercator. Ferry legs follow geodesics; flight routes use curved paths to help separate overlapping connections. Hovering changes CSS classes on the relevant nodes and links.

The ring uses a country → island group → place hierarchy, laid out with d3.cluster. d3.lineRadial and d3.curveBundle draw routes through that hierarchy. Extra spacing separates island groups. Both figures calculate the fewest legs from Jakarta for their tooltips.

Data

FileSourceNotes
network.jsonOpenFlights routes.dat, airports.dat, airlines.dat (ODbL)126 domestic city pairs, codeshares removed, from the June 2014 snapshot
—Pelni fleet list, English Wikipedia26 ships, 74 ports, coordinates entered by hand and cross-checked against Nominatim
land.jsonNatural Earth 1:50m via world-atlasshared with the earthquake post