Skip to content

Points of Interest and Urban Flows in Fort-de-France City Centre from Open Data

A reproducible, provenance-tracked spatial warehouse that reconstructs who is in Fort-de-France city centre, where and when, from open data over 2016–2026.

Context

Fort-de-France (Martinique) has almost no local open data. The city’s own datasets were last updated in 2019, and there are no public pedestrian counters, open transit ridership figures or open road counts at city-centre scale. The project asks how far national open data and continuously archived feeds can go in describing the city centre as a system of points of interest (shops, administrations, schools, health, culture, entry gates) and flows (residents, commuters, pupils, visitors, cruise passengers, vehicles, buses) over a ten-year horizon (2016–2026).

No single source answers that question. The business register knows where establishments are but not who visits them. The census knows where people sleep but not where they spend the day. Transit feeds show the buses but not their passengers, and cruise schedules show the ships but not the people ashore. The approach is therefore to cross many heterogeneous sources on a common spatial and temporal frame, so that each one fills a blind spot of the others, and to check the result against the few measured signals that do exist.

Approach

The method comes from an earlier knowledge-base project of mine. Raw data is immutable and addressed by content. Every database is disposable and rebuilt from it. Every value keeps its provenance, and a set of invariants is checked on each rebuild.

Methods

  • Acquisition. Each download is hashed (SHA-256) and logged in a JSONL manifest, and acquisition is idempotent. National files larger than 1 GB (Sirene business register) are read as remote HTTP-range extracts filtered to the municipality. The filtering query is recorded as part of the provenance.
  • Ephemeral sources. Meta Movement Distribution keeps only 90 days online, so a scheduled task archives it every 14 days. A bus collector polls GTFS-RT vehicle positions every 60 s and predictions every 10 min, and zips each day with a SHA-256 checksum.
  • Spatial frame. Data is stored in WGS84 and computed in EPSG:5490 on the INSEE 200 m grid. Points of interest are classified by one typology (NAF codes, OSM tags, stops), with family, weight and an hourly rhythm over seven time slots.
  • Models. Hourly presence per grid cell combines residents (Filosofi 2021, distributed dasymetrically to buildings), employees, pupils and tourists. A Huff model estimates catchment. Cruise passengers onshore are modelled from ship schedules and capacities. An island-wide gravity model with BPR assignment covers visitors and through-traffic.
  • Quality. Six invariants are checked, from provenance to the absence of personal data. Unconfirmed parameters go in a decision log.

Data sources

Crossing the sources is the core of the project. Business registers (Sirene, BODACC, URSSAF) give the stock and turnover of activities, but say nothing about the people around them. The census and tax data (RP, Filosofi) place residents, their income and housing vacancy, but only at night. Commuting files and the national travel survey (MOBPRO, MOBSCO, EMP) say who travels, why and when. Transit, accident and air-quality feeds (GTFS-RT, BAAC, Madininair) are the only measured traces of movement. Cruise schedules and ship capacities bring a population that no census counts. The geographic frames (IGN, OpenStreetMap, the INSEE 200 m grid) are what make all of these comparable cell by cell.

The catalogue lists 120 sources: 51 integrated, 32 to integrate, 7 to verify, 13 available on request only, 5 paid, 1 by partnership and 11 not retained. The tables below list every integrated source and summarise the others by theme.

Businesses, jobs & amenities

SourceWhat it contributesPeriod / frequencyStatus
Sirene business register — INSEEEstablishments, activity code (NAF), creation and closure dates, headcount bandsFull history; stock rebuilt at any date 2016–2026Integrated
BODACC — DILABusiness turnover and failures (sales of goodwill, insolvency proceedings)2016–2026, dailyIntegrated
Permanent amenities database (BPE), geolocated — INSEEShops, services, health, administrations, education, sport, tourism2024 and 2025 editions, annualIntegrated
Establishments and salaried headcount by municipality × activity — URSSAF / AcossPrivate salaried employment by activity2006–2025, annualIntegrated
Education directory and pupil numbers — MENJ / DEPPSchools, location, pupils per school year, staffPupil numbers 2016–2025Integrated
FINESS — DREES / ARSHealth and social facilities, pharmaciesExtract of May 2026, bimonthlyIntegrated
Overture Maps places — Overture Maps FoundationPoints of interest with a confidence score (comparison layer)Frozen extract of release 2026-09-23, monthlyIntegrated
OpenStreetMap (Overpass) — OpenStreetMap contributorsPoints of interest, shops, streets, pedestrian pathsCurrent stateIntegrated
Historic monuments (Mérimée / POP) — Ministry of CultureHeritage attractors (cathedral, Schœlcher library, Fort Saint-Louis)CurrentIntegrated
23 more — e.g. Flores localised employment (INSEE), Foursquare Open Source Places, LOCOMVAC vacant commercial premises (DGFiP), Google PlacesCatalogued

Population, income & housing

SourceWhat it contributesPeriod / frequencyStatus
Census, IRIS-level files (RP) — INSEEResidents, age, occupations, dwellings (vacancy, car ownership), workforceRP 2016 → RP 2022, annualIntegrated
Filosofi by IRIS — INSEEDisposable and declared income, poverty2016–2021, annualIntegrated
Filosofi 200 m grid files — INSEETax households, individuals, poverty, social housing and age per 200 m cell2015, 2017, 2019, 2021Integrated
Filosofi 200 m grid, Géoplateforme WFS layer — INSEEGrid cell geometries2015 layerIntegrated
IRCOM income tax by municipality — DGFiPTax households, declared income2016–2024, annualIntegrated
Cafdata — CNAFRecipients of minimum income, housing and family benefits2020–2024 (2022 missing), annualIntegrated
Priority neighbourhoods (QPV) — ANCT / INSEEPriority urban policy areas, which include the city centre2024 boundariesIntegrated
LOVAC — Cerema / DGALNShort-term and structural (≥ 2 years) vacancy of private housing2020–2026 editions, annualIntegrated
RPLS social housing — SDESSocial dwellings (address, surface, rent, vacancy)2023 and 2025Integrated
Sitadel building permits — SDESDwellings and premises authorised, started, demolished2013–2026, monthlyIntegrated
Geolocated DVF — DGFiP / EtalabProperty transactions (price, surface, commercial premises)2021–2025, rolling 5 yearsIntegrated
8 more — e.g. census detail files and legal populations (INSEE), DV3F and land files (Cerema / DGFiP), WorldPop / GHSL gridded populationCatalogued

Mobility & transport

SourceWhat it contributesPeriod / frequencyStatus
Commuting flows (MOBPRO) — INSEEHome → work flows between municipalities2016–2022, annualIntegrated
School commuting (MOBSCO) — INSEEHome → study flows between municipalities2016–2022, annualIntegrated
National travel survey 2018–2019 (EMP) — SDESTrip purposes, departure and return times, activity durations, distances2018–2019Integrated
GTFS, urban network Centre zone (Mozaïk, BRT lines) — Martinique TransportScheduled transit supplyArchives since June 2023Integrated
GTFS-RT, continuous collection — Martinique TransportObserved bus speeds, buses in service, declared occupancySince 7 October 2026; 60 s (positions), 10 min (predictions)Integrated
GTFS, ferry shuttles — Martinique TransportShuttles landing on the waterfrontVersions since August 2024Integrated
Road injury accidents (BAAC) — ONISRGeolocated accidents (pedestrians, vehicles), with time2016–2024 loadedIntegrated
Movement Distribution — Meta Data for Good / HDXShare of users at home, within 10 km, 10–100 km, beyond 100 kmDaily; 90-day window, archived every 14 daysIntegrated
Movement Range Maps — Meta Data for Good / HDXChange in movement, share of users staying putMarch 2020 → May 2022, daily (discontinued)Integrated
BD TOPO main road network — IGNIsland road graph for traffic assignmentCurrentIntegrated
BD TOPO road sections — IGNCarriageway width, lanes and direction, used to measure kerbside parkingCurrentIntegrated
OpenStreetMap car parks — OpenStreetMap contributorsCar parks, type, declared capacityCurrentIntegrated
18 more — e.g. ridership and ticket validations (Martinique Transport, on request), road counts (on request), Orange Flux Vision mobile data (paid), Waze for Cities / Strava Metro (partnership), a pedestrian counting campaign (to be created)Catalogued

Tourism & cruise

SourceWhat it contributesPeriod / frequencyStatus
Cruise call schedule, port of Fort-de-France — CruiseMapperShip-by-ship calls with arrival and departure timesMarch 2026 → March 2029; archived monthly, as past months disappearIntegrated
Ship pages — CruiseMapperPassenger capacity, crew, tonnage of ships in portCurrentIntegrated
Cruise season reviews — Martinique Tourism Authority (CMT), via the pressPassengers and calls per season, cruise terminalsSeasons 2024–25 and 2025–26Integrated
PortWatch — IMF / HDXDaily port calls from AIS2019–2026, dailyIntegrated
Monthly commercial air traffic — DGACArrivals at Martinique Aimé Césaire airport (tourist seasonality)1990–2025, monthlyIntegrated
Classified tourist accommodation — Atout FranceClassified hotels and residences, rooms and capacityCurrent stockIntegrated
Tourist accommodation capacity — INSEEHotels by rating, campsites, residences, holiday villages2015–2026, annualIntegrated
7 more — e.g. DATAtourisme (ADN Tourisme), INSEE hotel occupancy survey, Inside Airbnb / AirDNA, port authority call dataCatalogued

Context: weather, air, calendar, safety

SourceWhat it contributesPeriod / frequencyStatus
Climatological data — Météo-FranceRain, temperature, wind (Fort-de-France Desaix and Le Lamentin stations)2010–2026, hourly / dailyIntegrated
Air quality — MadininairNO₂ as a traffic proxy, plus PM10, PM2.5, O₃ and H₂S from sargassumHourly; monthly NO₂ 2016–2026Integrated
Recorded crime by municipality — SSMSIRecorded offences2016–2025, annualIntegrated
Public holidays in Martinique — DINUMCalendar, including 22 May2006–2031Integrated
School calendar — MENJSchool holidays, including Carnival2017–18 → 2026–27Integrated
Pageviews — Wikimedia FoundationOnline interest in Fort-de-France, Carnival and heritage2016–2026, monthlyIntegrated
4 more — e.g. NASA Black Marble night lights, Google Trends / GDELT, an events agenda (to be compiled)Catalogued

Geography & base maps

SourceWhat it contributesPeriod / frequencyStatus
Study perimeters — projectCity centre and extended centre (provisional, see D1)Version 0.1Integrated
Administrative boundaries API (geo.api.gouv.fr) — DINUM / IGN / INSEEMunicipal boundary and legal populationCurrentIntegrated
IRIS boundaries — IGN / INSEESub-municipal census unitsCurrent layerIntegrated
BD TOPO — IGNBuildings (height, use), roads, facilitiesQuarterly editionsIntegrated
BD TOPO residential buildings, extended centre — IGNUse, height and footprint used to place households in buildingsCurrent editionIntegrated
OpenStreetMap vector base map — OpenStreetMap contributorsStreets, water, parks, coastline drawn in the applicationCurrentIntegrated
9 more — e.g. Etalab cadastre, National Address Base, BD ORTHO aerial imagery (IGN), local urban plan (Géoportail de l’Urbanisme), natural risk maps (Géorisques)Catalogued

Results

The project started in October 2026 and is at an early, uncalibrated stage (application v0.6.0). All city-centre figures depend on a provisional perimeter (see below). Each result below states which sources it crosses: none of them could be produced from a single dataset.

  • Catalogue. 120 sources are catalogued, of which 51 are integrated.
  • Warehouse (first build). 117,161 entities, about 25,000 measures and 1,278 indicators, with all 6 invariants passing.
  • Retail decline vs residents (measured, registers × census × tax data). Active personal-goods establishments (Sirene) fell from 498 (2016) to 363 (2026), a drop of 27 %, and the city centre’s share of the municipality in this sector fell from 75.5 % to 64.7 %. Over the same period, population in the city-centre IRIS (census) fell from 13,444 (2016) to 12,898 (2022), and housing vacancy rose from 24.9 % to 27.6 %. 47 % of city-centre households are below the poverty line, against 30 % for the municipality (Filosofi 2021). Read together, the three sources show a centre losing shops, residents and purchasing power at the same time.
  • Day/night rhythm (modelled, six sources crossed). About 3,700 people are present at night and 11,200 in the morning, a ratio of 3.0. Night-time residents come from the Filosofi 200 m grid placed in BD TOPO buildings; daytime workers from Sirene headcount bands; pupils from the education directory; tourists from classified accommodation capacity. The morning slot is adjusted on the hourly NO₂ profile of traffic stations.
  • Observed bus speed vs model (GTFS-RT × road graph × travel surveys). Over one full day, buses ran at 12.7 km/h at 05:00, falling to 7–8 km/h during the day and 10.6 km/h at 19:00. The assignment model, built from BD TOPO roads, MOBPRO commuting, EMP trip profiles and BPE amenities, predicts a 20 % slowdown at peak hours, whereas the buses show 45 %. The measured feed exposes what the model misses.
  • Cruise check (schedules × ship capacities × reported counts). Onshore passengers are modelled from the CruiseMapper call schedule and ship capacities. On the one documented cruise day (24 April 2026), the estimates came within about 1–2 % of the passenger counts reported in the press (3,075 vs 3,112, and 1,995 vs 1,969). The fill rate used in the model was set on that same day, so this is a consistency check, not an independent validation.

Limitations & next steps

  • D1: the city-centre perimeter is provisional. It is a rectangle around the historic core plus a 1 km extended zone, used until an official perimeter is provided. Every city-centre figure depends on it.
  • No pedestrian, ridership or road-count data is open. Hourly rhythms, attractiveness weights and parking assumptions are still uncalibrated. The measured controls so far are hourly NO₂ at traffic stations and observed bus speeds.
  • The 2016–2026 business stock is rebuilt from creation and closure dates only.
  • Next steps: build up several months of GTFS-RT data for measured congestion, request survey and counting data, and calibrate presence on field counts.

Stack

Python · DuckDB (spatial, httpfs) · Parquet · SQL · GTFS / GTFS-RT · pytest · ruff · Electron · React · TypeScript · ECharts · Leaflet · GitHub Actions