{
  "sources": {
    "opp-2026": {
      "title": "© Ports de plaisance (métropole et outre-mer) — Ministère en charge de l’environnement / DGAMPA, Cerema / GéoLittoral",
      "url": "https://www.data.gouv.fr/datasets/ports-de-plaisance-metropole-et-outre-mer",
      "license": "Licence Ouverte 2.0",
      "licenseUrl": "https://www.etalab.gouv.fr/licence-ouverte-open-licence/",
      "updatedAt": "2026-01-23",
      "retrievedAt": "2026-10-23"
    },
    "mf-fort-louis-source": {
      "title": "Gestionnaire / autorité locale · données factuelles d’escale",
      "url": "https://www.marinafortlouis.com/fr/faq.html",
      "license": "Faits ponctuels publiés par le gestionnaire",
      "licenseUrl": "https://www.marinafortlouis.com/fr/faq.html",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "mf-anse-marcel-source": {
      "title": "© OpenStreetMap contributors · localisation ; gestionnaire / autorité locale · escale",
      "url": "https://www.ansemarcelmarina.com/",
      "license": "ODbL 1.0 (localisation)",
      "licenseUrl": "https://www.openstreetmap.org/copyright",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "mf-marina-royale-source": {
      "title": "© OpenStreetMap contributors · localisation ; gestionnaire / autorité locale · escale",
      "url": "https://www.openstreetmap.org/node/3957521204",
      "license": "ODbL 1.0 (localisation)",
      "licenseUrl": "https://www.openstreetmap.org/copyright",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "gf-degrad-des-cannes-source": {
      "title": "© OpenStreetMap contributors · localisation ; gestionnaire / autorité locale · escale",
      "url": "https://portdeguyane.fr/situation-des-ports/",
      "license": "ODbL 1.0 (localisation)",
      "licenseUrl": "https://www.openstreetmap.org/copyright",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "gf-saint-laurent-source": {
      "title": "Gestionnaire / autorité locale · données factuelles d’escale",
      "url": "https://www.odyssea.eu/data/?markerID=18624",
      "license": "Faits ponctuels publiés par le gestionnaire",
      "licenseUrl": "https://www.odyssea.eu/data/?markerID=18624",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "wf-mata-utu-source": {
      "title": "© OpenStreetMap contributors · localisation ; gestionnaire / autorité locale · escale",
      "url": "https://www.wallis-et-futuna.gouv.fr/Demarches/Espace-maritime-et-aerien/Demarches-et-consignes-a-l-attention-des-plaisanciers-et-arrivants-par-voie-maritime",
      "license": "ODbL 1.0 (localisation)",
      "licenseUrl": "https://www.openstreetmap.org/copyright",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "wf-leava-source": {
      "title": "© OpenStreetMap contributors · localisation ; gestionnaire / autorité locale · escale",
      "url": "https://www.wallis-et-futuna.gouv.fr/Demarches/Espace-maritime-et-aerien/Demarches-et-consignes-a-l-attention-des-plaisanciers-et-arrivants-par-voie-maritime",
      "license": "ODbL 1.0 (localisation)",
      "licenseUrl": "https://www.openstreetmap.org/copyright",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "wf-fakatoi-source": {
      "title": "Gestionnaire / autorité locale · données factuelles d’escale",
      "url": "https://www.wallis-et-futuna.gouv.fr/Demarches/Espace-maritime-et-aerien/Demarches-et-consignes-a-l-attention-des-plaisanciers-et-arrivants-par-voie-maritime",
      "license": "Faits ponctuels publiés par le gestionnaire",
      "licenseUrl": "https://www.wallis-et-futuna.gouv.fr/Demarches/Espace-maritime-et-aerien/Demarches-et-consignes-a-l-attention-des-plaisanciers-et-arrivants-par-voie-maritime",
      "updatedAt": "2026-10-23",
      "retrievedAt": "2026-10-23"
    },
    "dpam-hiva-2026": {
      "title": "DPAM · arrêté officiel 2026 · Hiva Oa",
      "url": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf",
      "license": "Faits et coordonnées publiés dans un acte administratif",
      "licenseUrl": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf",
      "updatedAt": "2026-03-31",
      "retrievedAt": "2026-10-23"
    },
    "dpam-uapou-2026": {
      "title": "DPAM · arrêté officiel 2026 · Ua Pou",
      "url": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf",
      "license": "Faits et coordonnées publiés dans un acte administratif",
      "licenseUrl": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf",
      "updatedAt": "2026-04-20",
      "retrievedAt": "2026-10-23"
    },
    "dpam-uahuka-2026": {
      "title": "DPAM · arrêté officiel 2026 · Ua Huka",
      "url": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-383-CM-du-31-mars-2026.pdf",
      "license": "Faits et coordonnées publiés dans un acte administratif",
      "licenseUrl": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-383-CM-du-31-mars-2026.pdf",
      "updatedAt": "2026-03-31",
      "retrievedAt": "2026-10-23"
    },
    "dpam-maupiti-2026": {
      "title": "DPAM · arrêté officiel 2026 · Maupiti",
      "url": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-399-CM-du-31-mars-2026.pdf",
      "license": "Faits et coordonnées publiés dans un acte administratif",
      "licenseUrl": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-399-CM-du-31-mars-2026.pdf",
      "updatedAt": "2026-03-31",
      "retrievedAt": "2026-10-23"
    }
  },
  "ports": [
    {
      "id": "fr-opp-1",
      "name": "Port de Marans",
      "area": "Marans · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.312835,
      "longitude": -0.998109,
      "sourceId": "1",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 180
    },
    {
      "id": "fr-opp-2",
      "name": "Port de Loix",
      "area": "Loix · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.215988,
      "longitude": -1.439231,
      "sourceId": "2",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 40
    },
    {
      "id": "fr-opp-3",
      "name": "Port de La Flotte",
      "area": "La Flotte · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.188103,
      "longitude": -1.324112,
      "sourceId": "3",
      "existingId": "la-flotte-en-re",
      "source": "opp-2026",
      "capacity": 307
    },
    {
      "id": "fr-opp-4",
      "name": "Port de Saint Martin",
      "area": "Saint Martin de Ré · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.206716,
      "longitude": -1.367265,
      "sourceId": "4",
      "existingId": "saint-martin",
      "source": "opp-2026",
      "capacity": 295
    },
    {
      "id": "fr-opp-5",
      "name": "Port d'Ars en Ré",
      "area": "Ars en Ré · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.211709,
      "longitude": -1.511863,
      "sourceId": "5",
      "existingId": "ars-en-re",
      "source": "opp-2026",
      "capacity": 550
    },
    {
      "id": "fr-opp-6",
      "name": "Port du Plomb",
      "area": "Nieul-sur-Mer · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.201836,
      "longitude": -1.200008,
      "sourceId": "6",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 90
    },
    {
      "id": "fr-opp-7",
      "name": "Port du Loiron",
      "area": "Angoulins sur Mer · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.102429,
      "longitude": -1.122977,
      "sourceId": "7",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 54
    },
    {
      "id": "fr-opp-8",
      "name": "Port de l'Ile d'Aix",
      "area": "Ile d'Aix · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.009664,
      "longitude": -1.175182,
      "sourceId": "8",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-9",
      "name": "Port de Fouras",
      "area": "Fouras · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.995829,
      "longitude": -1.098654,
      "sourceId": "9",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 266
    },
    {
      "id": "fr-opp-10",
      "name": "Port de Saint Florent",
      "area": "Saint Florent · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.681304,
      "longitude": 9.299881,
      "sourceId": "10",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 910
    },
    {
      "id": "fr-opp-11",
      "name": "Port de la Rochelle",
      "area": "La Rochelle · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.144421,
      "longitude": -1.167733,
      "sourceId": "11",
      "existingId": "la-rochelle",
      "source": "opp-2026",
      "capacity": 5267
    },
    {
      "id": "fr-opp-12",
      "name": "Port Adhoc Soubisse",
      "area": "Soubisse · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.929248,
      "longitude": -1.007044,
      "sourceId": "12",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 260
    },
    {
      "id": "fr-opp-13",
      "name": "Port le Château d'Oléron",
      "area": "Le Château d'Oléron · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.881828,
      "longitude": -1.192886,
      "sourceId": "13",
      "existingId": "chateau-oleron",
      "source": "opp-2026",
      "capacity": 161
    },
    {
      "id": "fr-opp-15",
      "name": "Port de Plaisance de Boyardville",
      "area": "Saint-Georges-d'Oléron · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.96762,
      "longitude": -1.241442,
      "sourceId": "15",
      "existingId": "boyardville",
      "source": "opp-2026",
      "capacity": 375
    },
    {
      "id": "fr-opp-16",
      "name": "Port du Douhet",
      "area": "Saint-Georges-d'Oléron · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.000531,
      "longitude": -1.322837,
      "sourceId": "16",
      "existingId": "le-douhet",
      "source": "opp-2026",
      "capacity": 300
    },
    {
      "id": "fr-opp-17",
      "name": "Chenal de la Cayenne",
      "area": "Marennes-Hiers-Brouge · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.790076,
      "longitude": -1.124942,
      "sourceId": "17",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 240
    },
    {
      "id": "fr-opp-18",
      "name": "Chenal de L'Atelier",
      "area": "La Tremblade · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.785176,
      "longitude": -1.128051,
      "sourceId": "18",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 278
    },
    {
      "id": "fr-opp-20",
      "name": "Chenal de Coux",
      "area": "Arvet - La Tremblade · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.767999,
      "longitude": -1.109252,
      "sourceId": "20",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 6
    },
    {
      "id": "fr-opp-21",
      "name": "Chenal de la Grève à Duret",
      "area": "Arvet - La Tremblade · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.761137,
      "longitude": -1.095834,
      "sourceId": "21",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 22
    },
    {
      "id": "fr-opp-22",
      "name": "Chenal d'Orivol",
      "area": "Etaules · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.753277,
      "longitude": -1.085296,
      "sourceId": "22",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 36
    },
    {
      "id": "fr-opp-23",
      "name": "Chenal des Grandes Roches",
      "area": "Etaules · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.75268,
      "longitude": -1.074985,
      "sourceId": "23",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 29
    },
    {
      "id": "fr-opp-24",
      "name": "Chenal de Chatressac",
      "area": "Chaillevette · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.736898,
      "longitude": -1.056797,
      "sourceId": "24",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 40
    },
    {
      "id": "fr-opp-25",
      "name": "Port du Chenal de Chaillevette",
      "area": "Chaillevette · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.73183,
      "longitude": -1.053248,
      "sourceId": "25",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 11
    },
    {
      "id": "fr-opp-26",
      "name": "Port de Mornac sur Seudre",
      "area": "Mornac sur Seudre · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.7135,
      "longitude": -1.02258,
      "sourceId": "26",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 44
    },
    {
      "id": "fr-opp-27",
      "name": "Port de L'Eguille sur Seudre",
      "area": "L'Eguille · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.708964,
      "longitude": -0.977104,
      "sourceId": "27",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 15
    },
    {
      "id": "fr-opp-28",
      "name": "Port de Bonne-Anse",
      "area": "La Palmyre · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.684563,
      "longitude": -1.182562,
      "sourceId": "28",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 340
    },
    {
      "id": "fr-opp-29",
      "name": "Port de Royan",
      "area": "Royan · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.619575,
      "longitude": -1.028847,
      "sourceId": "29",
      "existingId": "royan",
      "source": "opp-2026",
      "capacity": 1100
    },
    {
      "id": "fr-opp-30",
      "name": "GPMB Bassin à flot",
      "area": "Bordeaux · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.886124,
      "longitude": -0.532064,
      "sourceId": "30",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 300
    },
    {
      "id": "fr-opp-31",
      "name": "Port Bourgenay",
      "area": "Talmont-Saint-Hilaire · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.441089,
      "longitude": -1.677709,
      "sourceId": "31",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 635
    },
    {
      "id": "fr-opp-32",
      "name": "Port de Plaisance de Châtelaillon Plage",
      "area": "Châtelaillon Plage · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.062062,
      "longitude": -1.09265,
      "sourceId": "32",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 240
    },
    {
      "id": "fr-opp-33",
      "name": "Port des Boucholeurs",
      "area": "Châtelaillon Plage · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.053915,
      "longitude": -1.088648,
      "sourceId": "33",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 50
    },
    {
      "id": "fr-opp-34",
      "name": "Port de Rivedoux",
      "area": "Rivedoux · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.162351,
      "longitude": -1.277842,
      "sourceId": "34",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 20
    },
    {
      "id": "fr-opp-35",
      "name": "Port de Mortagne",
      "area": "Mortagne sur Gironde · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.476905,
      "longitude": -0.795061,
      "sourceId": "35",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 180
    },
    {
      "id": "fr-opp-36",
      "name": "Port de Meschers",
      "area": "Meschers-sur-Gironde · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.555879,
      "longitude": -0.945538,
      "sourceId": "36",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 239
    },
    {
      "id": "fr-opp-37",
      "name": "Port de Solenzara",
      "area": "Solenzara · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.858352,
      "longitude": 9.402533,
      "sourceId": "37",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 450
    },
    {
      "id": "fr-opp-38",
      "name": "Port de Saint Georges",
      "area": "Saint Georges de Didonne · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.598715,
      "longitude": -1.007523,
      "sourceId": "38",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 60
    },
    {
      "id": "fr-opp-39",
      "name": "Port de plaisance de St Denis d'Oléron",
      "area": "Saint Denis d'Oléron · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.036085,
      "longitude": -1.371846,
      "sourceId": "39",
      "existingId": "saint-denis-oleron",
      "source": "opp-2026",
      "capacity": 760
    },
    {
      "id": "fr-opp-40",
      "name": "grand port maritime de Dunkerque",
      "area": "Dunkerque · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 51.041746,
      "longitude": 2.373109,
      "sourceId": "40",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 672
    },
    {
      "id": "fr-opp-41",
      "name": "Port de Boulogne sur Mer",
      "area": "Boulogne sur Mer · Pas-de-Calais · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.729547,
      "longitude": 1.588739,
      "sourceId": "41",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 522
    },
    {
      "id": "fr-opp-42",
      "name": "Port du Tréport",
      "area": "Le Tréport · Seine-Maritime · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.060137,
      "longitude": 1.377057,
      "sourceId": "42",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 215
    },
    {
      "id": "fr-opp-43",
      "name": "Port de plaisance de Dieppe",
      "area": "Dieppe · Seine-Maritime · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.926557,
      "longitude": 1.080533,
      "sourceId": "43",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1142
    },
    {
      "id": "fr-opp-44",
      "name": "Port de Saint Valery en Caux",
      "area": "Saint Valery en Caux · Seine-Maritime · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.868685,
      "longitude": 0.711111,
      "sourceId": "44",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 556
    },
    {
      "id": "fr-opp-45",
      "name": "Port de Fécamp",
      "area": "Fécamp · Seine-Maritime · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.761481,
      "longitude": 0.367817,
      "sourceId": "45",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 992
    },
    {
      "id": "fr-opp-46",
      "name": "Port du Havre",
      "area": "Le Havre · Seine-Maritime · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.486858,
      "longitude": 0.115342,
      "sourceId": "46",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1300
    },
    {
      "id": "fr-opp-47",
      "name": "Port Lévi",
      "area": "Fermanville · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.687305,
      "longitude": -1.472546,
      "sourceId": "47",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 80
    },
    {
      "id": "fr-opp-48",
      "name": "Port d'Honfleur",
      "area": "Honfleur · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.427642,
      "longitude": 0.232791,
      "sourceId": "48",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-49",
      "name": "Port de Deauville-Trouville",
      "area": "Deauville · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.362663,
      "longitude": 0.079561,
      "sourceId": "49",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1030
    },
    {
      "id": "fr-opp-50",
      "name": "Port de Dives-Cabourg-Houlgate",
      "area": "Dives-sur-Mer · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.29449,
      "longitude": -0.093324,
      "sourceId": "50",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1025
    },
    {
      "id": "fr-opp-51",
      "name": "Port de Ouistreham Riva-Bella",
      "area": "Ouistreham Riva-Bella · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.279309,
      "longitude": -0.249036,
      "sourceId": "51",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 650
    },
    {
      "id": "fr-opp-52",
      "name": "Port de Courseulles sur Mer",
      "area": "Courseulles-sur-Mer · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.33361,
      "longitude": -0.463293,
      "sourceId": "52",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 770
    },
    {
      "id": "fr-opp-53",
      "name": "Port de Port en Bessin - Huppain",
      "area": "Port en Bessin-Huppain · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.348911,
      "longitude": -0.754893,
      "sourceId": "53",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 77
    },
    {
      "id": "fr-opp-54",
      "name": "Port de Grandcamp-Maisy",
      "area": "Grandcamp-Maisy · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.388846,
      "longitude": -1.046812,
      "sourceId": "54",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 282
    },
    {
      "id": "fr-opp-55",
      "name": "Port de Quinéville",
      "area": "Quinéville · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.51703,
      "longitude": -1.29089,
      "sourceId": "55",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 140
    },
    {
      "id": "fr-opp-56",
      "name": "Port de Saint Vaast la Hougue",
      "area": "Saint Vaast la Hougue · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.586639,
      "longitude": -1.262099,
      "sourceId": "56",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 760
    },
    {
      "id": "fr-opp-57",
      "name": "Port Barfleur",
      "area": "Barfleur · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.672755,
      "longitude": -1.259113,
      "sourceId": "57",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 125
    },
    {
      "id": "fr-opp-58",
      "name": "Port de Querqueville",
      "area": "Cherbourg-en-Cotentin · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.669205,
      "longitude": -1.681663,
      "sourceId": "58",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 80
    },
    {
      "id": "fr-opp-59",
      "name": "Port de Goury",
      "area": "La Hague · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.715603,
      "longitude": -1.94517,
      "sourceId": "59",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 40
    },
    {
      "id": "fr-opp-60",
      "name": "Port du Becquet",
      "area": "Cherbourg-en-Cotentin · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.654477,
      "longitude": -1.550365,
      "sourceId": "60",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 90
    },
    {
      "id": "fr-opp-61",
      "name": "Port des Flamands",
      "area": "Cherbourg-en-Cotentin · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.652362,
      "longitude": -1.584767,
      "sourceId": "61",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-62",
      "name": "Port Diélette",
      "area": "Tréauville · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.553377,
      "longitude": -1.858842,
      "sourceId": "62",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 420
    },
    {
      "id": "fr-opp-63",
      "name": "Port de Barneville-Carteret",
      "area": "Barneville-Carteret · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.378081,
      "longitude": -1.780659,
      "sourceId": "63",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 652
    },
    {
      "id": "fr-opp-64",
      "name": "Port de Port-Bail-sur-Mer",
      "area": "Port-Bail-sur-Mer · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.329078,
      "longitude": -1.707633,
      "sourceId": "64",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 297
    },
    {
      "id": "fr-opp-65",
      "name": "Port de Hérel",
      "area": "Granville · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.833883,
      "longitude": -1.602967,
      "sourceId": "65",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1218
    },
    {
      "id": "fr-opp-66",
      "name": "Port de Dinard",
      "area": "Dinard · Ille-et-Vilaine · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.631649,
      "longitude": -2.05108,
      "sourceId": "66",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 673
    },
    {
      "id": "fr-opp-67",
      "name": "Port de Dahouët",
      "area": "Pléneuf-Val-André · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.576902,
      "longitude": -2.564009,
      "sourceId": "67",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 499
    },
    {
      "id": "fr-opp-68",
      "name": "Port du Légué",
      "area": "Saint-Brieuc · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.523111,
      "longitude": -2.74807,
      "sourceId": "68",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 338
    },
    {
      "id": "fr-opp-69",
      "name": "Port de Paimpol",
      "area": "Paimpol · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.781825,
      "longitude": -3.043442,
      "sourceId": "69",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 370
    },
    {
      "id": "fr-opp-70",
      "name": "Port de Lézardrieux",
      "area": "Lézardrieux · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.789695,
      "longitude": -3.100067,
      "sourceId": "70",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 791
    },
    {
      "id": "fr-opp-71",
      "name": "Port Saint Cast le Guildo",
      "area": "Saint Cast Le Guildo · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.640554,
      "longitude": -2.247734,
      "sourceId": "71",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1005
    },
    {
      "id": "fr-opp-72",
      "name": "Port du centre",
      "area": "Erquy · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.636301,
      "longitude": -2.473014,
      "sourceId": "72",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 325
    },
    {
      "id": "fr-opp-73",
      "name": "Port d'Armor",
      "area": "Saint Quay Portrieux · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.647738,
      "longitude": -2.823331,
      "sourceId": "73",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1030
    },
    {
      "id": "fr-opp-74",
      "name": "Port de Perros-Guirrec",
      "area": "Perros-Guirrec · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.805224,
      "longitude": -3.442965,
      "sourceId": "74",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 612
    },
    {
      "id": "fr-opp-75",
      "name": "Port de Trébeurden",
      "area": "Trébeurden · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.769666,
      "longitude": -3.584819,
      "sourceId": "75",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 700
    },
    {
      "id": "fr-opp-76",
      "name": "Port Primel - Le Diben",
      "area": "Plougasnou · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.710893,
      "longitude": -3.830623,
      "sourceId": "76",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 325
    },
    {
      "id": "fr-opp-77",
      "name": "Port du Bloscon",
      "area": "Roscoff · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.719036,
      "longitude": -3.965719,
      "sourceId": "77",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 625
    },
    {
      "id": "fr-opp-78",
      "name": "Port L'Aber Wrac'h",
      "area": "Landeda · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.597782,
      "longitude": -4.561008,
      "sourceId": "78",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 360
    },
    {
      "id": "fr-opp-79",
      "name": "Port de Portsall",
      "area": "Ploudalmézeau · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.556847,
      "longitude": -4.699769,
      "sourceId": "79",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 344
    },
    {
      "id": "fr-opp-80",
      "name": "Port L'Aber Ildut",
      "area": "Lanildut · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.470813,
      "longitude": -4.757048,
      "sourceId": "80",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 450
    },
    {
      "id": "fr-opp-81",
      "name": "Port de Plaisance du Conquet",
      "area": "Le Conquet · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.359323,
      "longitude": -4.779361,
      "sourceId": "81",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 350
    },
    {
      "id": "fr-opp-82",
      "name": "Marina du Château",
      "area": "Brest · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.38451,
      "longitude": -4.473961,
      "sourceId": "82",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 700
    },
    {
      "id": "fr-opp-83",
      "name": "Port de Lauberc’h-Four à Chaux",
      "area": "Plougastel Daoulas · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.336882,
      "longitude": -4.414651,
      "sourceId": "83",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 181
    },
    {
      "id": "fr-opp-84",
      "name": "Port du Tinduff",
      "area": "Plougastel Daoulas · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.335631,
      "longitude": -4.367985,
      "sourceId": "84",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 220
    },
    {
      "id": "fr-opp-85",
      "name": "Port de Camaret",
      "area": "Camaret-sur-Mer · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.279316,
      "longitude": -4.598029,
      "sourceId": "85",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 600
    },
    {
      "id": "fr-opp-86",
      "name": "Port Morgat",
      "area": "Crozon · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.223186,
      "longitude": -4.497906,
      "sourceId": "86",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 775
    },
    {
      "id": "fr-opp-87",
      "name": "Port du Rosmeur",
      "area": "Douarnenez · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.096887,
      "longitude": -4.3237,
      "sourceId": "87",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 250
    },
    {
      "id": "fr-opp-88",
      "name": "Port de Tréboul",
      "area": "Douarnenez · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.098011,
      "longitude": -4.340015,
      "sourceId": "88",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 550
    },
    {
      "id": "fr-opp-89",
      "name": "Port d'Audierne",
      "area": "Audierne · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.023913,
      "longitude": -4.537537,
      "sourceId": "89",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 232
    },
    {
      "id": "fr-opp-90",
      "name": "Port de Guilvinec - Léchiagat",
      "area": "Treffiagat · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.793175,
      "longitude": -4.283028,
      "sourceId": "90",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 298
    },
    {
      "id": "fr-opp-91",
      "name": "Port de Lesconil",
      "area": "Plobannalec-Lesconil · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.795621,
      "longitude": -4.21424,
      "sourceId": "91",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 230
    },
    {
      "id": "fr-opp-92",
      "name": "Port de Loctudy",
      "area": "Loctudy · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.837029,
      "longitude": -4.176552,
      "sourceId": "92",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 750
    },
    {
      "id": "fr-opp-93",
      "name": "Port de Sainte-Marine",
      "area": "Combrit Sainte Marine · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.873846,
      "longitude": -4.118737,
      "sourceId": "93",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 770
    },
    {
      "id": "fr-opp-94",
      "name": "Port de Benodet",
      "area": "Benodet · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.881339,
      "longitude": -4.115607,
      "sourceId": "94",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 750
    },
    {
      "id": "fr-opp-95",
      "name": "Port de Concarneau",
      "area": "Concarneau · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.875521,
      "longitude": -3.910072,
      "sourceId": "95",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 808
    },
    {
      "id": "fr-opp-96",
      "name": "Port du Bélon",
      "area": "Moëlan-sur-Mer · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.81254,
      "longitude": -3.706755,
      "sourceId": "96",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 217
    },
    {
      "id": "fr-opp-97",
      "name": "Port de Brigneau",
      "area": "Moëlan-sur-Mer · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.784823,
      "longitude": -3.67065,
      "sourceId": "97",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 117
    },
    {
      "id": "fr-opp-98",
      "name": "Port de Doëlan",
      "area": "Clohars Carnoët · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.77164,
      "longitude": -3.61023,
      "sourceId": "98",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 320
    },
    {
      "id": "fr-opp-99",
      "name": "Port du Poudu Laïta - Porsmoric",
      "area": "Clohars Carnoët · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.7711,
      "longitude": -3.531707,
      "sourceId": "99",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 93
    },
    {
      "id": "fr-opp-100",
      "name": "Port-Tudy",
      "area": "Groix · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.643838,
      "longitude": -3.447101,
      "sourceId": "100",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 274
    },
    {
      "id": "fr-opp-101",
      "name": "Port de Port-Louis",
      "area": "Port-Louis · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.711324,
      "longitude": -3.356735,
      "sourceId": "101",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 450
    },
    {
      "id": "fr-opp-102",
      "name": "Port de Gâvres",
      "area": "Gavres · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.700397,
      "longitude": -3.351546,
      "sourceId": "102",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 60
    },
    {
      "id": "fr-opp-103",
      "name": "Port du Magouër",
      "area": "Plouhinec · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.659831,
      "longitude": -3.211625,
      "sourceId": "103",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 29
    },
    {
      "id": "fr-opp-104",
      "name": "Port du Vieux Passage",
      "area": "Plouhinec · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.671625,
      "longitude": -3.209367,
      "sourceId": "104",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 80
    },
    {
      "id": "fr-opp-105",
      "name": "Port Niscop",
      "area": "Etel · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.674109,
      "longitude": -3.198291,
      "sourceId": "105",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 46
    },
    {
      "id": "fr-opp-106",
      "name": "Port d'Etel",
      "area": "Etel · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.658432,
      "longitude": -3.206304,
      "sourceId": "106",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 520
    },
    {
      "id": "fr-opp-107",
      "name": "Port Haliguen",
      "area": "Quiberon · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.487644,
      "longitude": -3.103668,
      "sourceId": "107",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1300
    },
    {
      "id": "fr-opp-108",
      "name": "Port de Sauzon",
      "area": "Sauzon · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.37292,
      "longitude": -3.219606,
      "sourceId": "108",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 439
    },
    {
      "id": "fr-opp-109",
      "name": "Port du Palais Belle Ile",
      "area": "Le Palais · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.347809,
      "longitude": -3.153816,
      "sourceId": "109",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 398
    },
    {
      "id": "fr-opp-110",
      "name": "Port de l'Argol",
      "area": "Hoëdic · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.343877,
      "longitude": -2.876203,
      "sourceId": "110",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 125
    },
    {
      "id": "fr-opp-111",
      "name": "Port de La Trinité-sur-Mer",
      "area": "La Trinité-sur-Mer · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.587212,
      "longitude": -3.026622,
      "sourceId": "111",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1512
    },
    {
      "id": "fr-opp-112",
      "name": "Port de Locmariaquer",
      "area": "Locmariaquer · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.569587,
      "longitude": -2.943093,
      "sourceId": "112",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 288
    },
    {
      "id": "fr-opp-113",
      "name": "Port de Larmor Baden",
      "area": "Larmor-Baden · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.582552,
      "longitude": -2.895574,
      "sourceId": "113",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 522
    },
    {
      "id": "fr-opp-114",
      "name": "Port L'Ile aux Moines",
      "area": "L'Ile aux Moines · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.601251,
      "longitude": -2.853484,
      "sourceId": "114",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 314
    },
    {
      "id": "fr-opp-115",
      "name": "Port d'Arradon",
      "area": "Arradon · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.616183,
      "longitude": -2.82754,
      "sourceId": "115",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 496
    },
    {
      "id": "fr-opp-116",
      "name": "Port-Anna",
      "area": "Séné · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.623326,
      "longitude": -2.778299,
      "sourceId": "116",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 64
    },
    {
      "id": "fr-opp-117",
      "name": "Port Logeo",
      "area": "Sarzeau · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.546956,
      "longitude": -2.846079,
      "sourceId": "117",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 155
    },
    {
      "id": "fr-opp-118",
      "name": "Port Navalo",
      "area": "Arzon · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.548224,
      "longitude": -2.916114,
      "sourceId": "118",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 235
    },
    {
      "id": "fr-opp-119",
      "name": "Port Saint Jacques",
      "area": "Sarzeau · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.486143,
      "longitude": -2.791919,
      "sourceId": "119",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 365
    },
    {
      "id": "fr-opp-120",
      "name": "Port de Pénerf Dagman",
      "area": "Dagman · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.514365,
      "longitude": -2.623632,
      "sourceId": "120",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 75
    },
    {
      "id": "fr-opp-121",
      "name": "Port Blanc en Baden",
      "area": "L'Ile aux Moines · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.602873,
      "longitude": -2.859616,
      "sourceId": "121",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 110
    },
    {
      "id": "fr-opp-122",
      "name": "Port de Piriac sur Mer",
      "area": "Piriac-sur-Mer · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.380939,
      "longitude": -2.543156,
      "sourceId": "122",
      "existingId": "piriac-sur-mer",
      "source": "opp-2026",
      "capacity": 830
    },
    {
      "id": "fr-opp-123",
      "name": "Port la Turballe",
      "area": "La Turballe · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.344931,
      "longitude": -2.512271,
      "sourceId": "123",
      "existingId": "la-turballe",
      "source": "opp-2026",
      "capacity": 329
    },
    {
      "id": "fr-opp-124",
      "name": "Port du Croisic",
      "area": "Le Croisic · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.293713,
      "longitude": -2.508684,
      "sourceId": "124",
      "existingId": "le-croisic",
      "source": "opp-2026",
      "capacity": 363
    },
    {
      "id": "fr-opp-125",
      "name": "Port de Binic",
      "area": "Binic-Etables-sur-Mer · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.601352,
      "longitude": -2.820183,
      "sourceId": "125",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 579
    },
    {
      "id": "fr-opp-126",
      "name": "Port du Fret",
      "area": "Crozon · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.285986,
      "longitude": -4.506331,
      "sourceId": "126",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 70
    },
    {
      "id": "fr-opp-127",
      "name": "Port Vauban",
      "area": "Gravelines · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.983747,
      "longitude": 2.117225,
      "sourceId": "127",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 450
    },
    {
      "id": "fr-opp-128",
      "name": "Port Manec'h - Kerdruc",
      "area": "Névez · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.800903,
      "longitude": -3.739078,
      "sourceId": "128",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 350
    },
    {
      "id": "fr-opp-129",
      "name": "Riec-sur-Bélon-Rosbraz",
      "area": "Riec sur Bélon · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.820285,
      "longitude": -3.744448,
      "sourceId": "129",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 200
    },
    {
      "id": "fr-opp-130",
      "name": "Port de Merrien",
      "area": "Moëlan-sur-Mer · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.782251,
      "longitude": -3.647315,
      "sourceId": "130",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 102
    },
    {
      "id": "fr-opp-131",
      "name": "Port de Guidel",
      "area": "Guidel-Plages · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.772356,
      "longitude": -3.528415,
      "sourceId": "131",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 224
    },
    {
      "id": "fr-opp-132",
      "name": "Port de Kerroc'h",
      "area": "Ploemeur · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.701793,
      "longitude": -3.459254,
      "sourceId": "132",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 35
    },
    {
      "id": "fr-opp-133",
      "name": "Lomener",
      "area": "Ploemeur · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.70131,
      "longitude": -3.431329,
      "sourceId": "133",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 75
    },
    {
      "id": "fr-opp-134",
      "name": "Port de Lorient",
      "area": "Lorient · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.738759,
      "longitude": -3.355641,
      "sourceId": "134",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 370
    },
    {
      "id": "fr-opp-135",
      "name": "Port Pen Mané",
      "area": "Locmiquelic · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.734233,
      "longitude": -3.347703,
      "sourceId": "135",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 160
    },
    {
      "id": "fr-opp-136",
      "name": "Port Sainte Catherine",
      "area": "Locmiquelic · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.724611,
      "longitude": -3.348242,
      "sourceId": "136",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 512
    },
    {
      "id": "fr-opp-137",
      "name": "Port de la Croix",
      "area": "Hoëdic · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.334743,
      "longitude": -2.875606,
      "sourceId": "137",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 35
    },
    {
      "id": "fr-opp-138",
      "name": "Port des Brochets",
      "area": "Bouin · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.998205,
      "longitude": -2.032937,
      "sourceId": "138",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 89
    },
    {
      "id": "fr-opp-139",
      "name": "Port Le Crouesty",
      "area": "Arzon · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.542952,
      "longitude": -2.894722,
      "sourceId": "139",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 2032
    },
    {
      "id": "fr-opp-140",
      "name": "Port la Baule - Le Pouliguen",
      "area": "La Baule · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.274743,
      "longitude": -2.423732,
      "sourceId": "140",
      "existingId": "la-baule-le-pouliguen",
      "source": "opp-2026",
      "capacity": 830
    },
    {
      "id": "fr-opp-141",
      "name": "Port d'Echouage de Pornichet",
      "area": "Pornichet · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.261265,
      "longitude": -2.342107,
      "sourceId": "141",
      "existingId": "pornichet",
      "source": "opp-2026",
      "capacity": 511
    },
    {
      "id": "fr-opp-143",
      "name": "Port de la Plaine-sur-Mer",
      "area": "La Plaine-sur-Mer · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.156568,
      "longitude": -2.213319,
      "sourceId": "143",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 290
    },
    {
      "id": "fr-opp-144",
      "name": "Port de la Pointe Saint-Gildas",
      "area": "Préfailles · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.136136,
      "longitude": -2.244871,
      "sourceId": "144",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 291
    },
    {
      "id": "fr-opp-145",
      "name": "Port de la Noëveillard",
      "area": "Pornic · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.110458,
      "longitude": -2.111434,
      "sourceId": "145",
      "existingId": "pornic-noeveillard",
      "source": "opp-2026",
      "capacity": 910
    },
    {
      "id": "fr-opp-146",
      "name": "Port de la Ria",
      "area": "Pornic · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.110021,
      "longitude": -2.107018,
      "sourceId": "146",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 410
    },
    {
      "id": "fr-opp-147",
      "name": "Port des Champs",
      "area": "Bouin · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.969091,
      "longitude": -2.036376,
      "sourceId": "147",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 65
    },
    {
      "id": "fr-opp-148",
      "name": "Port du Bec",
      "area": "Beauvoir-sur-Mer · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.938918,
      "longitude": -2.074856,
      "sourceId": "148",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 71
    },
    {
      "id": "fr-opp-149",
      "name": "Port de l'Herbaudière",
      "area": "Ile de Noirmoutier · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.024005,
      "longitude": -2.297494,
      "sourceId": "149",
      "existingId": "herbaudiere",
      "source": "opp-2026",
      "capacity": 640
    },
    {
      "id": "fr-opp-150",
      "name": "Port de Morin",
      "area": "Ile de Noirmoutier · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.984818,
      "longitude": -2.290015,
      "sourceId": "150",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 830
    },
    {
      "id": "fr-opp-151",
      "name": "Port Joinville",
      "area": "L'île d'Yeu · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.7267,
      "longitude": -2.345364,
      "sourceId": "151",
      "existingId": "port-joinville",
      "source": "opp-2026",
      "capacity": 728
    },
    {
      "id": "fr-opp-152",
      "name": "Port la Vie",
      "area": "Saint-Gilles-Croix-de-Vie · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.694638,
      "longitude": -1.938831,
      "sourceId": "152",
      "existingId": "saint-gilles-croix-de-vie",
      "source": "opp-2026",
      "capacity": 1260
    },
    {
      "id": "fr-opp-153",
      "name": "Port Olona",
      "area": "Les Sables-d'Olonne · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.50023,
      "longitude": -1.795634,
      "sourceId": "153",
      "existingId": "port-olona",
      "source": "opp-2026",
      "capacity": 1512
    },
    {
      "id": "fr-opp-154",
      "name": "Port de Jard-sur-Mer",
      "area": "Jard-sur-Mer · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.408861,
      "longitude": -1.584951,
      "sourceId": "154",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 408
    },
    {
      "id": "fr-opp-155",
      "name": "Port de La Tranche",
      "area": "La Tranche sur Mer · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.343629,
      "longitude": -1.429077,
      "sourceId": "155",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 508
    },
    {
      "id": "fr-opp-156",
      "name": "Port de Capbreton",
      "area": "Capbreton · Landes · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.652103,
      "longitude": -1.434559,
      "sourceId": "156",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1007
    },
    {
      "id": "fr-opp-157",
      "name": "Port de La Teste",
      "area": "La Teste de Buch · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.640046,
      "longitude": -1.146144,
      "sourceId": "157",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 410
    },
    {
      "id": "fr-opp-158",
      "name": "Port de la Vigne",
      "area": "Lège Cap Ferret · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.674317,
      "longitude": -1.240772,
      "sourceId": "158",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 305
    },
    {
      "id": "fr-opp-159",
      "name": "Port du Vieux Taussat",
      "area": "Lanton · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.715968,
      "longitude": -1.069289,
      "sourceId": "159",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 69
    },
    {
      "id": "fr-opp-160",
      "name": "Port de Cassy",
      "area": "Lanton · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.710117,
      "longitude": -1.055597,
      "sourceId": "160",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 201
    },
    {
      "id": "fr-opp-161",
      "name": "Port d'Audenge",
      "area": "Audenge · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.677788,
      "longitude": -1.02451,
      "sourceId": "161",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 312
    },
    {
      "id": "fr-opp-162",
      "name": "Port de La Hume",
      "area": "La Hume · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.643821,
      "longitude": -1.116699,
      "sourceId": "162",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 482
    },
    {
      "id": "fr-opp-163",
      "name": "Port d'Arcachon",
      "area": "Arcachon · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.662192,
      "longitude": -1.151137,
      "sourceId": "163",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 2700
    },
    {
      "id": "fr-opp-164",
      "name": "Port de plaisance d'Hendaye",
      "area": "Hendaye · Pyrénées-Atlantiques · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.370233,
      "longitude": -1.787635,
      "sourceId": "164",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 890
    },
    {
      "id": "fr-opp-165",
      "name": "Port Médoc",
      "area": "Le Verdon-sur-Mer · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.558603,
      "longitude": -1.063155,
      "sourceId": "165",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 950
    },
    {
      "id": "fr-opp-166",
      "name": "Port Bloc",
      "area": "Le Verdon-sur-Mer · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.565187,
      "longitude": -1.062154,
      "sourceId": "166",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 155
    },
    {
      "id": "fr-opp-167",
      "name": "Port de Larraldenia",
      "area": "St Jean de Luz · Pyrénées-Atlantiques · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.384978,
      "longitude": -1.666053,
      "sourceId": "167",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 81
    },
    {
      "id": "fr-opp-168",
      "name": "Port du Betey",
      "area": "Andernos les Bains · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.735425,
      "longitude": -1.093938,
      "sourceId": "168",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 80
    },
    {
      "id": "fr-opp-169",
      "name": "Port de Fontainevieille",
      "area": "Lanton · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.723214,
      "longitude": -1.076165,
      "sourceId": "169",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 198
    },
    {
      "id": "fr-opp-170",
      "name": "Marina du Moulin Blanc",
      "area": "Brest · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.392155,
      "longitude": -4.433083,
      "sourceId": "170",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1460
    },
    {
      "id": "fr-opp-171",
      "name": "Port de Pont-Aven",
      "area": "Pont-Aven · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.851194,
      "longitude": -3.747444,
      "sourceId": "171",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 120
    },
    {
      "id": "fr-opp-172",
      "name": "Port Chantereyne",
      "area": "Cherbourg-en-Cotentin · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.64554,
      "longitude": -1.624049,
      "sourceId": "172",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1600
    },
    {
      "id": "fr-opp-173",
      "name": "Port la Forêt",
      "area": "La Forêt Fouesnant · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.899528,
      "longitude": -3.972969,
      "sourceId": "173",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1130
    },
    {
      "id": "fr-opp-174",
      "name": "port de Courégeant",
      "area": "Ploemeur · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.711118,
      "longitude": -3.471592,
      "sourceId": "174",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 17
    },
    {
      "id": "fr-opp-175",
      "name": "Port du Perello",
      "area": "Ploemeur · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.699878,
      "longitude": -3.444595,
      "sourceId": "175",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 38
    },
    {
      "id": "fr-opp-176",
      "name": "Port de Calais",
      "area": "Calais · Pas-de-Calais · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.967086,
      "longitude": 1.847829,
      "sourceId": "176",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 385
    },
    {
      "id": "fr-opp-177",
      "name": "Port du Crotoy",
      "area": "Le Crotoy · Somme · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.21618,
      "longitude": 1.629388,
      "sourceId": "177",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-178",
      "name": "Port de Saint Valéry sur Somme",
      "area": "Saint Valéry sur Somme · Somme · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.179303,
      "longitude": 1.644956,
      "sourceId": "178",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 250
    },
    {
      "id": "fr-opp-179",
      "name": "Port du Hourdel",
      "area": "Cayeux-sur-Mer · Somme · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.214091,
      "longitude": 1.564279,
      "sourceId": "179",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 75
    },
    {
      "id": "fr-opp-180",
      "name": "Port du Passage Neuf",
      "area": "Plouhinec · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.6771,
      "longitude": -3.202565,
      "sourceId": "180",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 5
    },
    {
      "id": "fr-opp-181",
      "name": "Port de Saint Gildas",
      "area": "Saint Gildas · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.492117,
      "longitude": -2.834089,
      "sourceId": "181",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 80
    },
    {
      "id": "fr-opp-182",
      "name": "Port de Comberge",
      "area": "Saint-Michel-Chef-Chef · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.174772,
      "longitude": -2.164953,
      "sourceId": "182",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 138
    },
    {
      "id": "fr-opp-183",
      "name": "Port de Vannes",
      "area": "Vannes · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.651422,
      "longitude": -2.757531,
      "sourceId": "183",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 300
    },
    {
      "id": "fr-opp-184",
      "name": "Port de Macinaggio",
      "area": "Rogliano · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.957513,
      "longitude": 9.455566,
      "sourceId": "184",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 605
    },
    {
      "id": "fr-opp-185",
      "name": "Marina de Luri",
      "area": "Luri · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.88805,
      "longitude": 9.474623,
      "sourceId": "185",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-186",
      "name": "Port de Toga",
      "area": "Bastia · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.708115,
      "longitude": 9.454743,
      "sourceId": "186",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 357
    },
    {
      "id": "fr-opp-187",
      "name": "Vieux Port de Bastia",
      "area": "Bastia · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.69614,
      "longitude": 9.450042,
      "sourceId": "187",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 267
    },
    {
      "id": "fr-opp-188",
      "name": "Port de Porto-Vecchio",
      "area": "Porto-Vecchio · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.590122,
      "longitude": 9.2832,
      "sourceId": "188",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 350
    },
    {
      "id": "fr-opp-189",
      "name": "Port de Bonifacio",
      "area": "Bonifacio · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.389602,
      "longitude": 9.165022,
      "sourceId": "189",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 337
    },
    {
      "id": "fr-opp-190",
      "name": "Port de Pianottoli Caldarello",
      "area": "Pianottoli Caldarello · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.475178,
      "longitude": 9.072109,
      "sourceId": "190",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 160
    },
    {
      "id": "fr-opp-191",
      "name": "Port de Tizzano",
      "area": "Sartène · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.541995,
      "longitude": 8.851216,
      "sourceId": "191",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 85
    },
    {
      "id": "fr-opp-192",
      "name": "Port de plaisance de Propriano",
      "area": "Propriano · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.676397,
      "longitude": 8.90362,
      "sourceId": "192",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 420
    },
    {
      "id": "fr-opp-193",
      "name": "Porto Pollo",
      "area": "Serra di Ferro · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.707398,
      "longitude": 8.793728,
      "sourceId": "193",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 148
    },
    {
      "id": "fr-opp-194",
      "name": "Port Tino Rossi",
      "area": "Ajaccio · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.918075,
      "longitude": 8.743105,
      "sourceId": "194",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 280
    },
    {
      "id": "fr-opp-195",
      "name": "Port de Cargèse",
      "area": "Cargèse · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 42.130343,
      "longitude": 8.595945,
      "sourceId": "195",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 235
    },
    {
      "id": "fr-opp-196",
      "name": "Port de Plaisance de Porto",
      "area": "Porto-Ota · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 42.266091,
      "longitude": 8.693662,
      "sourceId": "196",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-197",
      "name": "Port de Galéria",
      "area": "Galéria · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.414832,
      "longitude": 8.644037,
      "sourceId": "197",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 68
    },
    {
      "id": "fr-opp-198",
      "name": "Port de Calvi",
      "area": "Calvi · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.565145,
      "longitude": 8.756464,
      "sourceId": "198",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 500
    },
    {
      "id": "fr-opp-199",
      "name": "Port Eugène Ceccaldi",
      "area": "Lumio · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.603565,
      "longitude": 8.827049,
      "sourceId": "199",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 200
    },
    {
      "id": "fr-opp-200",
      "name": "Port de l'Ile Rousse",
      "area": "L'île Rousse · Haute-Corse · Corse",
      "territory": "Corse",
      "latitude": 42.640559,
      "longitude": 8.935596,
      "sourceId": "200",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 204
    },
    {
      "id": "fr-opp-201",
      "name": "Nouveau Port les Lecques",
      "area": "Saint Cyr sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.179962,
      "longitude": 5.681317,
      "sourceId": "201",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 432
    },
    {
      "id": "fr-opp-202",
      "name": "Port de la Madrague",
      "area": "Saint Cyr sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.165817,
      "longitude": 5.694356,
      "sourceId": "202",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 400
    },
    {
      "id": "fr-opp-203",
      "name": "Port de Bandol",
      "area": "Bandol · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.134576,
      "longitude": 5.757702,
      "sourceId": "203",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1600
    },
    {
      "id": "fr-opp-204",
      "name": "Port de Sanary sur Mer",
      "area": "Sanary sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.115337,
      "longitude": 5.798817,
      "sourceId": "204",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 630
    },
    {
      "id": "fr-opp-205",
      "name": "Port de la Coudoulière",
      "area": "Six-Fours-Les-Plages · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.097109,
      "longitude": 5.811614,
      "sourceId": "205",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 445
    },
    {
      "id": "fr-opp-206",
      "name": "Port du Brusc",
      "area": "Six-Fours-Les-Plages · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.074796,
      "longitude": 5.798638,
      "sourceId": "206",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 835
    },
    {
      "id": "fr-opp-207",
      "name": "Port de Saint Pierre des Embiez",
      "area": "Six-Fours-Les-Plages · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.077745,
      "longitude": 5.782998,
      "sourceId": "207",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 750
    },
    {
      "id": "fr-opp-208",
      "name": "Port de Saint Elme",
      "area": "La Seyne sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.075617,
      "longitude": 5.899381,
      "sourceId": "208",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 104
    },
    {
      "id": "fr-opp-209",
      "name": "Port de Saint Mandrier",
      "area": "Saint Mandrier sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.080304,
      "longitude": 5.923002,
      "sourceId": "209",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 780
    },
    {
      "id": "fr-opp-210",
      "name": "Port Pin Rolland",
      "area": "Saint Mandrier sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.078958,
      "longitude": 5.905433,
      "sourceId": "210",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 700
    },
    {
      "id": "fr-opp-211",
      "name": "Port du Lazaret",
      "area": "La Seyne sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.079998,
      "longitude": 5.897747,
      "sourceId": "211",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 890
    },
    {
      "id": "fr-opp-212",
      "name": "Port de la Seyne sur Mer",
      "area": "La Seyne sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.103051,
      "longitude": 5.882131,
      "sourceId": "212",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 300
    },
    {
      "id": "fr-opp-213",
      "name": "Port Toulon Vieille Darse",
      "area": "Toulon · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.11748,
      "longitude": 5.929955,
      "sourceId": "213",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 588
    },
    {
      "id": "fr-opp-214",
      "name": "Port Toulon Darse Nord",
      "area": "Toulon · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.114368,
      "longitude": 5.934322,
      "sourceId": "214",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 377
    },
    {
      "id": "fr-opp-215",
      "name": "Port des Oursinières",
      "area": "Le Pradet · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.084969,
      "longitude": 6.019151,
      "sourceId": "215",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 243
    },
    {
      "id": "fr-opp-216",
      "name": "Port les Salettes",
      "area": "Carqueiranne · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.087732,
      "longitude": 6.07818,
      "sourceId": "216",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 411
    },
    {
      "id": "fr-opp-217",
      "name": "Port du Niel",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.035836,
      "longitude": 6.126647,
      "sourceId": "217",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 103
    },
    {
      "id": "fr-opp-218",
      "name": "Port de Porquerolles",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.0032,
      "longitude": 6.200782,
      "sourceId": "218",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 990
    },
    {
      "id": "fr-opp-219",
      "name": "Port de la Capte",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.065369,
      "longitude": 6.150675,
      "sourceId": "219",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 198
    },
    {
      "id": "fr-opp-220",
      "name": "Port Auguier",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.027984,
      "longitude": 6.146694,
      "sourceId": "220",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 109
    },
    {
      "id": "fr-opp-221",
      "name": "Port Charles Ornano",
      "area": "Ajaccio · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.929465,
      "longitude": 8.740994,
      "sourceId": "221",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1007
    },
    {
      "id": "fr-opp-222",
      "name": "Port Saint Louis du Mourillon",
      "area": "Toulon · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.106854,
      "longitude": 5.938563,
      "sourceId": "222",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 271
    },
    {
      "id": "fr-opp-223",
      "name": "Port Saint Pierre",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.080061,
      "longitude": 6.157528,
      "sourceId": "223",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1432
    },
    {
      "id": "fr-opp-224",
      "name": "Port de l'Ayguade",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.101255,
      "longitude": 6.173475,
      "sourceId": "224",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 431
    },
    {
      "id": "fr-opp-225",
      "name": "Port Miramar",
      "area": "La Londe Les Maures · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.11682,
      "longitude": 6.24841,
      "sourceId": "225",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 600
    },
    {
      "id": "fr-opp-226",
      "name": "Port de Port -Cros",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.010086,
      "longitude": 6.381172,
      "sourceId": "226",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 75
    },
    {
      "id": "fr-opp-227",
      "name": "Port de Bormes les Mimosas",
      "area": "Bormes les Mimosas · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.123549,
      "longitude": 6.365543,
      "sourceId": "227",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 982
    },
    {
      "id": "fr-opp-228",
      "name": "Port du Lavandou",
      "area": "Le Lavandou · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.136493,
      "longitude": 6.373052,
      "sourceId": "228",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1021
    },
    {
      "id": "fr-opp-229",
      "name": "Port de Cavallo",
      "area": "Iles Lavezzi · Corse-du-Sud · Corse",
      "territory": "Corse",
      "latitude": 41.362752,
      "longitude": 9.265357,
      "sourceId": "229",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 30
    },
    {
      "id": "fr-opp-230",
      "name": "Port Heraclea",
      "area": "Cavalaire-sur-Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.172616,
      "longitude": 6.536634,
      "sourceId": "230",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1100
    },
    {
      "id": "fr-opp-231",
      "name": "Port de Saint-Tropez",
      "area": "Saint-Tropez · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.272532,
      "longitude": 6.636255,
      "sourceId": "231",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 734
    },
    {
      "id": "fr-opp-232",
      "name": "Les Marines de Cogolin",
      "area": "Cogolin · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.265394,
      "longitude": 6.588199,
      "sourceId": "232",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1400
    },
    {
      "id": "fr-opp-233",
      "name": "Port Grimaud",
      "area": "Grimaud · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.272297,
      "longitude": 6.58579,
      "sourceId": "233",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 2050
    },
    {
      "id": "fr-opp-234",
      "name": "Port de Sainte Maxime",
      "area": "Sainte Maxime · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.306128,
      "longitude": 6.639174,
      "sourceId": "234",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 765
    },
    {
      "id": "fr-opp-235",
      "name": "Port de San Peire les Issambres",
      "area": "Roquebrune sur Argens · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.341111,
      "longitude": 6.685682,
      "sourceId": "235",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 409
    },
    {
      "id": "fr-opp-236",
      "name": "Port Ferréol",
      "area": "Les Issambres · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.35888,
      "longitude": 6.717903,
      "sourceId": "236",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 130
    },
    {
      "id": "fr-opp-237",
      "name": "Port de Fréjus",
      "area": "Fréjus · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.391374,
      "longitude": 6.730938,
      "sourceId": "237",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 894
    },
    {
      "id": "fr-opp-238",
      "name": "Port de Saint-Aygulf",
      "area": "Fréjus · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.421276,
      "longitude": 6.749011,
      "sourceId": "238",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 235
    },
    {
      "id": "fr-opp-239",
      "name": "Vieux Port de Saint Raphaël",
      "area": "Saint Raphaël · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.422996,
      "longitude": 6.763166,
      "sourceId": "239",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 275
    },
    {
      "id": "fr-opp-240",
      "name": "Port Santa Lucia",
      "area": "Saint Raphaël · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.413413,
      "longitude": 6.780309,
      "sourceId": "240",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1630
    },
    {
      "id": "fr-opp-241",
      "name": "Port de Boulouris",
      "area": "Saint Raphaël · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.413804,
      "longitude": 6.807196,
      "sourceId": "241",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 60
    },
    {
      "id": "fr-opp-242",
      "name": "Port d'Agay",
      "area": "Saint Raphaël · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.429992,
      "longitude": 6.856738,
      "sourceId": "242",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 179
    },
    {
      "id": "fr-opp-243",
      "name": "Port de La Figueirette",
      "area": "Théoule-Sur-Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.484886,
      "longitude": 6.933756,
      "sourceId": "243",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 220
    },
    {
      "id": "fr-opp-244",
      "name": "Port la Galère",
      "area": "Théoule-sur-Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.498631,
      "longitude": 6.954929,
      "sourceId": "244",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 134
    },
    {
      "id": "fr-opp-245",
      "name": "Port de Théoule sur Mer",
      "area": "Théoule-Sur-Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.508137,
      "longitude": 6.939164,
      "sourceId": "245",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 176
    },
    {
      "id": "fr-opp-246",
      "name": "Port de la Rague",
      "area": "Mandelieu-la-Napoule · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.517258,
      "longitude": 6.939665,
      "sourceId": "246",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 473
    },
    {
      "id": "fr-opp-247",
      "name": "Port la Napoule",
      "area": "Mandelieu-la-Napoule · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.523984,
      "longitude": 6.94572,
      "sourceId": "247",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 913
    },
    {
      "id": "fr-opp-248",
      "name": "Vieux Port de Cannes",
      "area": "Cannes · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.551232,
      "longitude": 7.01609,
      "sourceId": "248",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 692
    },
    {
      "id": "fr-opp-249",
      "name": "Port Pierre Canto",
      "area": "Cannes · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.540143,
      "longitude": 7.032724,
      "sourceId": "249",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 553
    },
    {
      "id": "fr-opp-250",
      "name": "Port Pointe Croisette",
      "area": "Cannes · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.536743,
      "longitude": 7.036091,
      "sourceId": "250",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 272
    },
    {
      "id": "fr-opp-251",
      "name": "Port du Moure Rouge",
      "area": "Cannes · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.542638,
      "longitude": 7.041508,
      "sourceId": "251",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 450
    },
    {
      "id": "fr-opp-252",
      "name": "Port Camille Rayon",
      "area": "Vallauris-Golfe Juan · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.564869,
      "longitude": 7.078103,
      "sourceId": "252",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 841
    },
    {
      "id": "fr-opp-253",
      "name": "Vieux Port de Golfe Juan",
      "area": "Vallauris-Golfe Juan · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.564328,
      "longitude": 7.073993,
      "sourceId": "253",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 805
    },
    {
      "id": "fr-opp-254",
      "name": "Port Gallice",
      "area": "Antibes Juan les Pins · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.562935,
      "longitude": 7.11601,
      "sourceId": "254",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 436
    },
    {
      "id": "fr-opp-255",
      "name": "Port du Crouton",
      "area": "Antibes Juan les Pins · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.560951,
      "longitude": 7.118393,
      "sourceId": "255",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 393
    },
    {
      "id": "fr-opp-256",
      "name": "Port de la Salis",
      "area": "Antibes Juan les Pins · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.569044,
      "longitude": 7.131269,
      "sourceId": "256",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 251
    },
    {
      "id": "fr-opp-257",
      "name": "Port Vauban",
      "area": "Antibes Juan les Pins · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.585381,
      "longitude": 7.127172,
      "sourceId": "257",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1476
    },
    {
      "id": "fr-opp-258",
      "name": "Port Marina Baie des Anges",
      "area": "Villeneuve Loubet · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.634064,
      "longitude": 7.138396,
      "sourceId": "258",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 515
    },
    {
      "id": "fr-opp-259",
      "name": "Port du Cros de Cagnes",
      "area": "Cagnes-sur-Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.65703,
      "longitude": 7.171519,
      "sourceId": "259",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 60
    },
    {
      "id": "fr-opp-260",
      "name": "Port de Saint Laurent du Var",
      "area": "Saint Laurent du Var · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.65527,
      "longitude": 7.180792,
      "sourceId": "260",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1089
    },
    {
      "id": "fr-opp-261",
      "name": "Port de Nice",
      "area": "Nice · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.696818,
      "longitude": 7.284083,
      "sourceId": "261",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 509
    },
    {
      "id": "fr-opp-262",
      "name": "Port Royal de la Darse",
      "area": "Villefranche sur Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.698235,
      "longitude": 7.306959,
      "sourceId": "262",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 496
    },
    {
      "id": "fr-opp-263",
      "name": "Port Villefranche-Santé",
      "area": "Villefranche sur Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.702692,
      "longitude": 7.312118,
      "sourceId": "263",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 50
    },
    {
      "id": "fr-opp-264",
      "name": "Port de Saint Jean Cap Ferrat",
      "area": "Saint Jean Cap Ferrat · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.691233,
      "longitude": 7.33383,
      "sourceId": "264",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 562
    },
    {
      "id": "fr-opp-265",
      "name": "Port de Beaulieu Fourmis",
      "area": "Beaulieu sur Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.703713,
      "longitude": 7.331407,
      "sourceId": "265",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 243
    },
    {
      "id": "fr-opp-266",
      "name": "Port de Beaulieu sur mer",
      "area": "Beaulieu sur Mer · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.70882,
      "longitude": 7.334915,
      "sourceId": "266",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 720
    },
    {
      "id": "fr-opp-267",
      "name": "Port de Cap d'Ail",
      "area": "Cap d'Ail · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.724863,
      "longitude": 7.413469,
      "sourceId": "267",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 265
    },
    {
      "id": "fr-opp-270",
      "name": "Vieux port de Menton",
      "area": "Menton · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.775529,
      "longitude": 7.509262,
      "sourceId": "270",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 596
    },
    {
      "id": "fr-opp-271",
      "name": "Port de Garavan",
      "area": "Menton · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.784126,
      "longitude": 7.519069,
      "sourceId": "271",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 800
    },
    {
      "id": "fr-opp-272",
      "name": "Port du Cap d'Agde",
      "area": "Cap d'Agde · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.272746,
      "longitude": 3.508612,
      "sourceId": "272",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 3100
    },
    {
      "id": "fr-opp-273",
      "name": "Port Argelès sur Mer",
      "area": "Argelès-sur-Mer · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.542025,
      "longitude": 3.047716,
      "sourceId": "273",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 869
    },
    {
      "id": "fr-opp-274",
      "name": "Port Canet-en-Roussillon",
      "area": "Canet-en-Roussillon · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.703898,
      "longitude": 3.034759,
      "sourceId": "274",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1300
    },
    {
      "id": "fr-opp-275",
      "name": "Port de Frontignan",
      "area": "Frontignan · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.434953,
      "longitude": 3.775291,
      "sourceId": "275",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 750
    },
    {
      "id": "fr-opp-276",
      "name": "Port de Gruissan",
      "area": "Gruissan · Aude · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.107497,
      "longitude": 3.099243,
      "sourceId": "276",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1830
    },
    {
      "id": "fr-opp-277",
      "name": "Port de La Grande Motte",
      "area": "La Grande Motte · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.556475,
      "longitude": 4.082109,
      "sourceId": "277",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1639
    },
    {
      "id": "fr-opp-278",
      "name": "Port-Barcarès",
      "area": "Port-Barcarès · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.797791,
      "longitude": 3.039067,
      "sourceId": "278",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 857
    },
    {
      "id": "fr-opp-280",
      "name": "Port de Palavas les Flots",
      "area": "Palavas les Flots · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.525405,
      "longitude": 3.933096,
      "sourceId": "280",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1100
    },
    {
      "id": "fr-opp-281",
      "name": "Port Camargue",
      "area": "Le Grau du Roi · Gard · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.520477,
      "longitude": 4.126298,
      "sourceId": "281",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 5111
    },
    {
      "id": "fr-opp-282",
      "name": "Port-la-Nouvelle",
      "area": "Port la Nouvelle · Aude · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.014611,
      "longitude": 3.063303,
      "sourceId": "282",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 397
    },
    {
      "id": "fr-opp-283",
      "name": "Port de Port-Vendres",
      "area": "Port-Vendres · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.517556,
      "longitude": 3.108841,
      "sourceId": "283",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 270
    },
    {
      "id": "fr-opp-284",
      "name": "Port de Saint-Cyprien",
      "area": "Saint-Cyprien · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.621323,
      "longitude": 3.038833,
      "sourceId": "284",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1885
    },
    {
      "id": "fr-opp-285",
      "name": "Port de Sète sud de France",
      "area": "Sète · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.399978,
      "longitude": 3.701675,
      "sourceId": "285",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 894
    },
    {
      "id": "fr-opp-286",
      "name": "Port de Valras Plage",
      "area": "Valras Plage · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.248797,
      "longitude": 3.295825,
      "sourceId": "286",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 240
    },
    {
      "id": "fr-opp-287",
      "name": "Port de Port-Saint-Louis-du-Rhône",
      "area": "Port-Saint-Louis-du-Rhône · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.388241,
      "longitude": 4.809743,
      "sourceId": "287",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 425
    },
    {
      "id": "fr-opp-288",
      "name": "Port Gardian",
      "area": "Les Saintes Maries de la Mer · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.449267,
      "longitude": 4.421606,
      "sourceId": "288",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 375
    },
    {
      "id": "fr-opp-289",
      "name": "Port de Carro",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.329405,
      "longitude": 5.04016,
      "sourceId": "289",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 191
    },
    {
      "id": "fr-opp-290",
      "name": "Port de la Pointe Rouge",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.245175,
      "longitude": 5.36445,
      "sourceId": "290",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1480
    },
    {
      "id": "fr-opp-291",
      "name": "Port de Banyuls sur Mer",
      "area": "Banyuls-sur-Mer · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.480948,
      "longitude": 3.136709,
      "sourceId": "291",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 389
    },
    {
      "id": "fr-opp-292",
      "name": "Port de Collioure",
      "area": "Collioure · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.52661,
      "longitude": 3.085324,
      "sourceId": "292",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 106
    },
    {
      "id": "fr-opp-293",
      "name": "Port de Sainte Marie la Mer",
      "area": "Sainte-Marie-la-Mer · Pyrénées-Orientales · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.723148,
      "longitude": 3.037405,
      "sourceId": "293",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 506
    },
    {
      "id": "fr-opp-294",
      "name": "Port la Nautique",
      "area": "Narbonne · Aude · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.143051,
      "longitude": 3.006277,
      "sourceId": "294",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 270
    },
    {
      "id": "fr-opp-295",
      "name": "Les Cabanes de Fleury",
      "area": "Les Cabanes de Fleury · Aude · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.217373,
      "longitude": 3.229423,
      "sourceId": "295",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 320
    },
    {
      "id": "fr-opp-296",
      "name": "Port du Chichoulet",
      "area": "Vendres-Plage · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.220571,
      "longitude": 3.234665,
      "sourceId": "296",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 280
    },
    {
      "id": "fr-opp-297",
      "name": "Port de Sérignan",
      "area": "Sérignan · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.257333,
      "longitude": 3.301819,
      "sourceId": "297",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 320
    },
    {
      "id": "fr-opp-298",
      "name": "Port Ambonne",
      "area": "Cap d'Agde · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.295112,
      "longitude": 3.523343,
      "sourceId": "298",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 300
    },
    {
      "id": "fr-opp-299",
      "name": "Port de Marseillan-Plage",
      "area": "Marseillan Plage · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.317886,
      "longitude": 3.557381,
      "sourceId": "299",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 220
    },
    {
      "id": "fr-opp-300",
      "name": "Port de Marseillan-Ville",
      "area": "Marseillan Ville · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.352744,
      "longitude": 3.534284,
      "sourceId": "300",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 315
    },
    {
      "id": "fr-opp-301",
      "name": "Port Bouzigues",
      "area": "Bouzigues · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.446828,
      "longitude": 3.661019,
      "sourceId": "301",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 94
    },
    {
      "id": "fr-opp-302",
      "name": "Port des Quilles",
      "area": "Sète · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.393718,
      "longitude": 3.662462,
      "sourceId": "302",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 377
    },
    {
      "id": "fr-opp-303",
      "name": "Bassin Paul Riquet",
      "area": "Palavas les Flots · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.531784,
      "longitude": 3.922104,
      "sourceId": "303",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 253
    },
    {
      "id": "fr-opp-304",
      "name": "Port Carnon",
      "area": "Mauguio · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.544175,
      "longitude": 3.974085,
      "sourceId": "304",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 850
    },
    {
      "id": "fr-opp-305",
      "name": "Pérols",
      "area": "Pérols · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.552891,
      "longitude": 3.969995,
      "sourceId": "305",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 130
    },
    {
      "id": "fr-opp-306",
      "name": "Port du Grau-du-Roi",
      "area": "Le Grau du Roi · Gard · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.540479,
      "longitude": 4.137506,
      "sourceId": "306",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 140
    },
    {
      "id": "fr-opp-307",
      "name": "Port Claude Rossi",
      "area": "Fos sur Mer · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.427528,
      "longitude": 4.940852,
      "sourceId": "307",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 840
    },
    {
      "id": "fr-opp-308",
      "name": "Port Napoléon",
      "area": "Port-Saint-Louis-du-Rhône · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.377456,
      "longitude": 4.829542,
      "sourceId": "308",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1315
    },
    {
      "id": "fr-opp-309",
      "name": "port Abri Rhône « Antoine Jover »",
      "area": "Port-Saint-Louis-du-Rhône · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.388825,
      "longitude": 4.798465,
      "sourceId": "309",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 183
    },
    {
      "id": "fr-opp-310",
      "name": "Port de Carteau",
      "area": "Port-Saint-Louis-du-Rhône · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.388074,
      "longitude": 4.851375,
      "sourceId": "310",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 91
    },
    {
      "id": "fr-opp-311",
      "name": "Port d’Olga",
      "area": "Port-Saint-Louis-du-Rhône · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.389512,
      "longitude": 4.851759,
      "sourceId": "311",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 140
    },
    {
      "id": "fr-opp-312",
      "name": "Port de Port de Bouc",
      "area": "Port de Bouc · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.402784,
      "longitude": 4.982474,
      "sourceId": "312",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 516
    },
    {
      "id": "fr-opp-313",
      "name": "Port de Ferrières",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.405509,
      "longitude": 5.051611,
      "sourceId": "313",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 334
    },
    {
      "id": "fr-opp-314",
      "name": "Port de Jonquières",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.400252,
      "longitude": 5.061986,
      "sourceId": "314",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 400
    },
    {
      "id": "fr-opp-315",
      "name": "Port des Laurons",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.352918,
      "longitude": 5.023667,
      "sourceId": "315",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 75
    },
    {
      "id": "fr-opp-316",
      "name": "Port des Tamaris",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.329354,
      "longitude": 5.078451,
      "sourceId": "316",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 90
    },
    {
      "id": "fr-opp-317",
      "name": "Port Albert Samson",
      "area": "Berre l'Etang · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.472076,
      "longitude": 5.167664,
      "sourceId": "317",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 180
    },
    {
      "id": "fr-opp-318",
      "name": "Port le Sagnas",
      "area": "Saint-Chamas · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.514637,
      "longitude": 5.117873,
      "sourceId": "318",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 35
    },
    {
      "id": "fr-opp-319",
      "name": "Port de Beau Rivage - Canet",
      "area": "Saint-Chamas · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.52676,
      "longitude": 5.077199,
      "sourceId": "319",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 108
    },
    {
      "id": "fr-opp-320",
      "name": "Port Notre Dame",
      "area": "Saint-Chamas · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.545323,
      "longitude": 5.032923,
      "sourceId": "320",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 280
    },
    {
      "id": "fr-opp-321",
      "name": "Port des Heures Claires",
      "area": "Istres · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.498356,
      "longitude": 4.998016,
      "sourceId": "321",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 222
    },
    {
      "id": "fr-opp-322",
      "name": "Port de Sausset les Pins",
      "area": "Sausset-les-Pins · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.329867,
      "longitude": 5.107774,
      "sourceId": "322",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 524
    },
    {
      "id": "fr-opp-323",
      "name": "Port de Carry le Rouet",
      "area": "Carry le Rouet · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.328792,
      "longitude": 5.153354,
      "sourceId": "323",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 559
    },
    {
      "id": "fr-opp-324",
      "name": "Port du Rouet",
      "area": "Carry le Rouet · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.333145,
      "longitude": 5.172534,
      "sourceId": "324",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-325",
      "name": "Port de la Madrague de Gignac",
      "area": "Ensuès La Redonne · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.331193,
      "longitude": 5.195882,
      "sourceId": "325",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-326",
      "name": "Port de la Redonne",
      "area": "Ensuès La Redonne · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.332704,
      "longitude": 5.199822,
      "sourceId": "326",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 120
    },
    {
      "id": "fr-opp-327",
      "name": "Port de Figuières",
      "area": "Ensuès La Redonne · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.330617,
      "longitude": 5.210727,
      "sourceId": "327",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 65
    },
    {
      "id": "fr-opp-328",
      "name": "Port du Petit Méjean",
      "area": "Ensuès La Redonne · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.331388,
      "longitude": 5.217245,
      "sourceId": "328",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 74
    },
    {
      "id": "fr-opp-329",
      "name": "Port du Grand Méjean",
      "area": "Ensuès La Redonne · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.331788,
      "longitude": 5.218291,
      "sourceId": "329",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 56
    },
    {
      "id": "fr-opp-330",
      "name": "Port de Niolon",
      "area": "Le Rove · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.339584,
      "longitude": 5.258599,
      "sourceId": "330",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 57
    },
    {
      "id": "fr-opp-331",
      "name": "Port Corbières",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.360114,
      "longitude": 5.295996,
      "sourceId": "331",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 498
    },
    {
      "id": "fr-opp-332",
      "name": "Vieux port de Marseille",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.293469,
      "longitude": 5.363713,
      "sourceId": "332",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 3200
    },
    {
      "id": "fr-opp-333",
      "name": "Port des Goudes",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.216213,
      "longitude": 5.344954,
      "sourceId": "333",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 220
    },
    {
      "id": "fr-opp-334",
      "name": "Port du Vallon des Auffes",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.285339,
      "longitude": 5.35144,
      "sourceId": "334",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 88
    },
    {
      "id": "fr-opp-335",
      "name": "Port de Frioul",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.277481,
      "longitude": 5.30369,
      "sourceId": "335",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 650
    },
    {
      "id": "fr-opp-336",
      "name": "Madrague de Montredon",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.232256,
      "longitude": 5.353437,
      "sourceId": "336",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 97
    },
    {
      "id": "fr-opp-337",
      "name": "Port de Sormiou",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.211462,
      "longitude": 5.423247,
      "sourceId": "337",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 45
    },
    {
      "id": "fr-opp-338",
      "name": "Port de Morgiou",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.212623,
      "longitude": 5.44352,
      "sourceId": "338",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 146
    },
    {
      "id": "fr-opp-339",
      "name": "Port de Cassis",
      "area": "Cassis · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.213132,
      "longitude": 5.535348,
      "sourceId": "339",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 396
    },
    {
      "id": "fr-opp-340",
      "name": "Port Vieux de la Ciotat",
      "area": "La Ciotat · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.172272,
      "longitude": 5.607384,
      "sourceId": "340",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 740
    },
    {
      "id": "fr-opp-341",
      "name": "Nouveau Port de la Ciotat",
      "area": "La Ciotat · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.176364,
      "longitude": 5.612302,
      "sourceId": "341",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 640
    },
    {
      "id": "fr-opp-342",
      "name": "Port des Capucins",
      "area": "La Ciotat · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.180413,
      "longitude": 5.612651,
      "sourceId": "342",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 83
    },
    {
      "id": "fr-opp-343",
      "name": "Port Saint-Jean",
      "area": "La Ciotat · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.186751,
      "longitude": 5.627487,
      "sourceId": "343",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 140
    },
    {
      "id": "fr-opp-344",
      "name": "Port de l'Escalette",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.225293,
      "longitude": 5.348281,
      "sourceId": "344",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 16
    },
    {
      "id": "fr-opp-345",
      "name": "Port d'Eze Silva Maris",
      "area": "Eze · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.716319,
      "longitude": 7.350901,
      "sourceId": "345",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 59
    },
    {
      "id": "fr-opp-346",
      "name": "Port Aigues Mortes",
      "area": "Ports Aigues Mortes · Gard · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.566073,
      "longitude": 4.186853,
      "sourceId": "346",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 168
    },
    {
      "id": "fr-opp-347",
      "name": "Port Du Levant",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.015312,
      "longitude": 6.434669,
      "sourceId": "347",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 26
    },
    {
      "id": "fr-opp-348",
      "name": "Port de plaisance",
      "area": "La Roche Bernard · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.518123,
      "longitude": -2.305579,
      "sourceId": "348",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 773
    },
    {
      "id": "fr-opp-349",
      "name": "Port de Folleux",
      "area": "Nivillac · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.576216,
      "longitude": -2.284212,
      "sourceId": "349",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 370
    },
    {
      "id": "fr-opp-350",
      "name": "Port de Couëron",
      "area": "Nantes · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.209472,
      "longitude": -1.731186,
      "sourceId": "350",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 36
    },
    {
      "id": "fr-opp-351",
      "name": "Port de Trentemoult",
      "area": "Rezé · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.194918,
      "longitude": -1.578515,
      "sourceId": "351",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 24
    },
    {
      "id": "fr-opp-352",
      "name": "Port du Teich",
      "area": "Le Teich · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.640274,
      "longitude": -1.018747,
      "sourceId": "352",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 190
    },
    {
      "id": "fr-opp-353",
      "name": "Port de Pontrieux",
      "area": "Pontrieux · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.705899,
      "longitude": -3.157715,
      "sourceId": "353",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 173
    },
    {
      "id": "fr-opp-354",
      "name": "Port de Saint-Goustan",
      "area": "Auray · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.663993,
      "longitude": -2.976928,
      "sourceId": "354",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 189
    },
    {
      "id": "fr-opp-355",
      "name": "Port de Tréguier",
      "area": "Tréguier · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.786403,
      "longitude": -3.223147,
      "sourceId": "355",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 392
    },
    {
      "id": "fr-opp-356",
      "name": "Port du Morlaix",
      "area": "Morlaix · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.584586,
      "longitude": -3.834456,
      "sourceId": "356",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 205
    },
    {
      "id": "fr-opp-357",
      "name": "Port de Plouër-sur-Rance - La Minotais",
      "area": "Plouër-sur-Rance · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.525985,
      "longitude": -1.986028,
      "sourceId": "357",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 240
    },
    {
      "id": "fr-opp-358",
      "name": "Port de Isigny-sur-Mer",
      "area": "Isigny-sur-Mer · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.32082,
      "longitude": -1.100938,
      "sourceId": "358",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 61
    },
    {
      "id": "fr-opp-359",
      "name": "Port de Carentan",
      "area": "Carentan-les-Marais · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.307306,
      "longitude": -1.237988,
      "sourceId": "359",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 310
    },
    {
      "id": "fr-opp-360",
      "name": "Port de le Bono",
      "area": "Le Bono · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.64026,
      "longitude": -2.951441,
      "sourceId": "360",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 428
    },
    {
      "id": "fr-opp-361",
      "name": "Nautic Club Médéen",
      "area": "Châteauneuf-les-Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.402935,
      "longitude": 5.118314,
      "sourceId": "361",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 78
    },
    {
      "id": "fr-opp-362",
      "name": "Berges de l'Hérault",
      "area": "Cap d'Agde · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.292071,
      "longitude": 3.447094,
      "sourceId": "362",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 700
    },
    {
      "id": "fr-opp-363",
      "name": "Cannes Marina",
      "area": "Mandelieu-la-Napoule · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.534584,
      "longitude": 6.936945,
      "sourceId": "363",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1769
    },
    {
      "id": "fr-opp-365",
      "name": "Port de Libourne Saint-Emilion",
      "area": "Libourne · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 44.916768,
      "longitude": -0.247125,
      "sourceId": "365",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 15
    },
    {
      "id": "fr-opp-366",
      "name": "Port de Bourg",
      "area": "Bourg sur Gironde · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.037773,
      "longitude": -0.556992,
      "sourceId": "366",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 20
    },
    {
      "id": "fr-opp-367",
      "name": "Port de Pauillac",
      "area": "Pauillac · Gironde · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.199255,
      "longitude": -0.744195,
      "sourceId": "367",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 143
    },
    {
      "id": "fr-opp-368",
      "name": "Port de plaisance d'Etaples",
      "area": "Etaples sur Mer · Pas-de-Calais · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.514263,
      "longitude": 1.634305,
      "sourceId": "368",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 200
    },
    {
      "id": "fr-opp-369",
      "name": "Port de Dinan",
      "area": "Dinan · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.457479,
      "longitude": -2.037711,
      "sourceId": "369",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 75
    },
    {
      "id": "fr-opp-370",
      "name": "Port d'Arzal-Camoël",
      "area": "Arzal · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.499851,
      "longitude": -2.378588,
      "sourceId": "370",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1520
    },
    {
      "id": "fr-opp-371",
      "name": "Port de Saint-Briac-sur-Mer",
      "area": "Saint-Briac-Sur-Mer · Ille-et-Vilaine · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.617982,
      "longitude": -2.136737,
      "sourceId": "371",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 755
    },
    {
      "id": "fr-opp-372",
      "name": "Port de Hennebont",
      "area": "Hennebont · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.799871,
      "longitude": -3.277053,
      "sourceId": "372",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 167
    },
    {
      "id": "fr-opp-373",
      "name": "Port de Paluden",
      "area": "Lannilis · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.588194,
      "longitude": -4.52155,
      "sourceId": "373",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 126
    },
    {
      "id": "fr-opp-374",
      "name": "Port de Plaisance de Rochefort",
      "area": "Rochefort · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.944107,
      "longitude": -0.957836,
      "sourceId": "374",
      "existingId": "rochefort",
      "source": "opp-2026",
      "capacity": 450
    },
    {
      "id": "fr-opp-375",
      "name": "Port du Brise Lame",
      "area": "Anglet · Pyrénées-Atlantiques · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.525431,
      "longitude": -1.507262,
      "sourceId": "375",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 424
    },
    {
      "id": "fr-opp-376",
      "name": "port du bassin de la Marine",
      "area": "Dunkerque · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 51.035496,
      "longitude": 2.368537,
      "sourceId": "376",
      "existingId": null,
      "source": "opp-2026",
      "capacity": null
    },
    {
      "id": "fr-opp-377",
      "name": "port du Grand Large",
      "area": "Dunkerque · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 51.04699,
      "longitude": 2.374131,
      "sourceId": "377",
      "existingId": null,
      "source": "opp-2026",
      "capacity": null
    },
    {
      "id": "fr-opp-378",
      "name": "port du bassin du Commerce",
      "area": "Dunkerque · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 51.039054,
      "longitude": 2.374366,
      "sourceId": "378",
      "existingId": null,
      "source": "opp-2026",
      "capacity": null
    },
    {
      "id": "fr-opp-379",
      "name": "Yacht Club de la Mer du Nord",
      "area": "Dunkerque · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 51.043357,
      "longitude": 2.371422,
      "sourceId": "379",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 270
    },
    {
      "id": "fr-opp-380",
      "name": "port des Loups de mer dunkerquois",
      "area": "Dunkerque · Nord · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 51.040543,
      "longitude": 2.37639,
      "sourceId": "380",
      "existingId": null,
      "source": "opp-2026",
      "capacity": null
    },
    {
      "id": "fr-opp-381",
      "name": "Port Anse de la reserve",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.293297,
      "longitude": 5.36199,
      "sourceId": "381",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 250
    },
    {
      "id": "fr-opp-382",
      "name": "Port de Narbone-Plage",
      "area": "Narbonne-Plage · Aude · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.170232,
      "longitude": 3.181716,
      "sourceId": "382",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 607
    },
    {
      "id": "fr-opp-383",
      "name": "Port à échouage du Touquet",
      "area": "Le Touquet · Pas-de-Calais · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.535397,
      "longitude": 1.593887,
      "sourceId": "383",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 80
    },
    {
      "id": "fr-opp-384",
      "name": "Port de la Madelon",
      "area": "Waben · Pas-de-Calais · Hauts-de-France · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 50.370997,
      "longitude": 1.625668,
      "sourceId": "384",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 8
    },
    {
      "id": "fr-opp-389",
      "name": "Port de plaisance",
      "area": "Rouen · Seine-Maritime · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.448284,
      "longitude": 1.05566,
      "sourceId": "389",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 200
    },
    {
      "id": "fr-opp-390",
      "name": "Port de Caen - Bassin Saint Pierre",
      "area": "Caen · Calvados · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.183267,
      "longitude": -0.354662,
      "sourceId": "390",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 92
    },
    {
      "id": "fr-opp-391",
      "name": "Port Racine",
      "area": "La Hague · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.712137,
      "longitude": -1.896604,
      "sourceId": "391",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 27
    },
    {
      "id": "fr-opp-392",
      "name": "Port Omonville-la rogue",
      "area": "La Hague · Manche · Normandie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 49.705632,
      "longitude": -1.834369,
      "sourceId": "392",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 66
    },
    {
      "id": "fr-opp-393",
      "name": "Port de Cancale",
      "area": "Cancale · Ille-et-Vilaine · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.669574,
      "longitude": -1.852212,
      "sourceId": "393",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 365
    },
    {
      "id": "fr-opp-394",
      "name": "Port les Sablons",
      "area": "Saint-Malo · Ille-et-Vilaine · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.638825,
      "longitude": -2.025691,
      "sourceId": "394",
      "existingId": "saint-malo-sablons",
      "source": "opp-2026",
      "capacity": 1200
    },
    {
      "id": "fr-opp-397",
      "name": "Port Saint Suliac",
      "area": "Saint-Suliac · Ille-et-Vilaine · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.565961,
      "longitude": -1.972868,
      "sourceId": "397",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 105
    },
    {
      "id": "fr-opp-398",
      "name": "Port de Lyvet",
      "area": "La Vicomté-sur-Rance · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.489061,
      "longitude": -2.00072,
      "sourceId": "398",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 254
    },
    {
      "id": "fr-opp-399",
      "name": "Port de l'Islet",
      "area": "Lancieux · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.61899,
      "longitude": -2.150634,
      "sourceId": "399",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 400
    },
    {
      "id": "fr-opp-400",
      "name": "Port de Saint-Jacut-de-la-Mer",
      "area": "Saint-Jacut-de-la-Mer · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.605066,
      "longitude": -2.184171,
      "sourceId": "400",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 339
    },
    {
      "id": "fr-opp-401",
      "name": "Port des Hôpitaux",
      "area": "Erquy · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.646444,
      "longitude": -2.417933,
      "sourceId": "401",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 116
    },
    {
      "id": "fr-opp-402",
      "name": "Port d'Echouage",
      "area": "Saint Quay Portrieux · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.644676,
      "longitude": -2.826133,
      "sourceId": "402",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 380
    },
    {
      "id": "fr-opp-404",
      "name": "Port de la Chambre",
      "area": "Bréhat · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.838906,
      "longitude": -2.995099,
      "sourceId": "404",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-405",
      "name": "Port de la Corderie",
      "area": "Bréhat · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.85271,
      "longitude": -3.005787,
      "sourceId": "405",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-406",
      "name": "Port de Loguivy",
      "area": "Ploubazlanec · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.820526,
      "longitude": -3.062724,
      "sourceId": "406",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 210
    },
    {
      "id": "fr-opp-407",
      "name": "Port Blanc",
      "area": "Penvénan · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.837555,
      "longitude": -3.306588,
      "sourceId": "407",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 262
    },
    {
      "id": "fr-opp-408",
      "name": "Port Ploumanac'h",
      "area": "Perros-Guirrec · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.828242,
      "longitude": -3.487254,
      "sourceId": "408",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 340
    },
    {
      "id": "fr-opp-409",
      "name": "Port de Trozoul",
      "area": "Trébeurden · Côtes-d’Armor · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.773022,
      "longitude": -3.584193,
      "sourceId": "409",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 190
    },
    {
      "id": "fr-opp-411",
      "name": "Port d'échouage de Locquirec",
      "area": "Locquirec · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.690105,
      "longitude": -3.647831,
      "sourceId": "411",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 433
    },
    {
      "id": "fr-opp-412",
      "name": "Vieux port de Roscoff",
      "area": "Roscoff · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.726021,
      "longitude": -3.982057,
      "sourceId": "412",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 300
    },
    {
      "id": "fr-opp-413",
      "name": "Port de Pontusval",
      "area": "Plounéour-Brignogan-Plage · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.671896,
      "longitude": -4.325622,
      "sourceId": "413",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 118
    },
    {
      "id": "fr-opp-414",
      "name": "Port de Roscanvel",
      "area": "Roscanvel · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.314273,
      "longitude": -4.545287,
      "sourceId": "414",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 50
    },
    {
      "id": "fr-opp-415",
      "name": "Port Rhu",
      "area": "Douarnenez · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 48.088904,
      "longitude": -4.332005,
      "sourceId": "415",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 500
    },
    {
      "id": "fr-opp-416",
      "name": "Port de Saint - Guénolé",
      "area": "Penmarc'h · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.817152,
      "longitude": -4.377345,
      "sourceId": "416",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 84
    },
    {
      "id": "fr-opp-417",
      "name": "Port de l'Ile-Tudy",
      "area": "Pont l'Abbé · Finistère · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.841009,
      "longitude": -4.171003,
      "sourceId": "417",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 250
    },
    {
      "id": "fr-opp-418",
      "name": "Anse du Stole",
      "area": "Ploemeur · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.70222,
      "longitude": -3.426435,
      "sourceId": "418",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 110
    },
    {
      "id": "fr-opp-419",
      "name": "Port de Kernevel",
      "area": "Larmor-Plage · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.719001,
      "longitude": -3.368907,
      "sourceId": "419",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1000
    },
    {
      "id": "fr-opp-423",
      "name": "Port de La Ville Aubin",
      "area": "Nivillac · Morbihan · Bretagne · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.534317,
      "longitude": -2.299612,
      "sourceId": "423",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 70
    },
    {
      "id": "fr-opp-426",
      "name": "Port de Cordemais",
      "area": "Cordemais · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.282518,
      "longitude": -1.885266,
      "sourceId": "426",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 60
    },
    {
      "id": "fr-opp-428",
      "name": "Port de Plaisance de Pornichet",
      "area": "Pornichet · Loire-Atlantique · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 47.258587,
      "longitude": -2.346475,
      "sourceId": "428",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1165
    },
    {
      "id": "fr-opp-429",
      "name": "Port du Pont Neuf",
      "area": "La Barre de Monts · Vendée · Pays de la Loire · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 46.889852,
      "longitude": -2.109354,
      "sourceId": "429",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 96
    },
    {
      "id": "fr-opp-433",
      "name": "Port de Socoa",
      "area": "St Jean de Luz · Pyrénées-Atlantiques · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.394964,
      "longitude": -1.684744,
      "sourceId": "433",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 135
    },
    {
      "id": "fr-opp-434",
      "name": "Port Leucate",
      "area": "Leucate · Aude · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 42.859299,
      "longitude": 3.037403,
      "sourceId": "434",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 1382
    },
    {
      "id": "fr-opp-436",
      "name": "Port Nautic Service",
      "area": "Cap d'Agde · Hérault · Occitanie · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.296434,
      "longitude": 3.453038,
      "sourceId": "436",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 185
    },
    {
      "id": "fr-opp-441",
      "name": "Port de Pertuis",
      "area": "Saint-Chamas · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.548137,
      "longitude": 5.031241,
      "sourceId": "441",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 19
    },
    {
      "id": "fr-opp-442",
      "name": "Port du Jaï",
      "area": "Marignane · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.437107,
      "longitude": 5.194667,
      "sourceId": "442",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 25
    },
    {
      "id": "fr-opp-444",
      "name": "Port du Canal Saint Sebastien",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.405065,
      "longitude": 5.05369,
      "sourceId": "444",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 253
    },
    {
      "id": "fr-opp-445",
      "name": "Port du Miroir aux oiseaux",
      "area": "Martigues · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.404848,
      "longitude": 5.05536,
      "sourceId": "445",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 51
    },
    {
      "id": "fr-opp-447",
      "name": "Société Nautique Estaque",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.360652,
      "longitude": 5.312567,
      "sourceId": "447",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 650
    },
    {
      "id": "fr-opp-448",
      "name": "Port privé Servaux",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.360386,
      "longitude": 5.316896,
      "sourceId": "448",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 370
    },
    {
      "id": "fr-opp-449",
      "name": "Lou Sard",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.359389,
      "longitude": 5.316031,
      "sourceId": "449",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 254
    },
    {
      "id": "fr-opp-450",
      "name": "Les Pescadous de l'Estaque",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.360276,
      "longitude": 5.314237,
      "sourceId": "450",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 250
    },
    {
      "id": "fr-opp-451",
      "name": "Cercle de l'aviron de Marseille",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.359245,
      "longitude": 5.316862,
      "sourceId": "451",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150,
      "accessNote": "Port associatif du Cercle de l’Aviron de Marseille, section plaisance confirmée par le gestionnaire. Accueil des visiteurs à confirmer auprès du club avant l’arrivée. Position indicative, non utilisable comme point d’entrée."
    },
    {
      "id": "fr-opp-452",
      "name": "Port Ouest Marseille",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.35975,
      "longitude": 5.293781,
      "sourceId": "452",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 600
    },
    {
      "id": "fr-opp-453",
      "name": "Port de la Fausse Monnaie",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.280734,
      "longitude": 5.353219,
      "sourceId": "453",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 52
    },
    {
      "id": "fr-opp-457",
      "name": "Port des Croisettes",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.213912,
      "longitude": 5.337707,
      "sourceId": "457",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 16
    },
    {
      "id": "fr-opp-458",
      "name": "Port de Malmousque",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.282428,
      "longitude": 5.348109,
      "sourceId": "458",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 55
    },
    {
      "id": "fr-opp-459",
      "name": "Port de Callelongue",
      "area": "Marseille · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.212415,
      "longitude": 5.353442,
      "sourceId": "459",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 57
    },
    {
      "id": "fr-opp-460",
      "name": "Port de la Calanque de Port Miou",
      "area": "Cassis · Bouches-du-Rhône · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.208258,
      "longitude": 5.517804,
      "sourceId": "460",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 380
    },
    {
      "id": "fr-opp-461",
      "name": "Vieux Port",
      "area": "Saint Cyr sur Mer · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.179719,
      "longitude": 5.68384,
      "sourceId": "461",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 203
    },
    {
      "id": "fr-opp-466",
      "name": "Port de la Tour Fondue",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.027418,
      "longitude": 6.154801,
      "sourceId": "466",
      "existingId": null,
      "source": "opp-2026",
      "capacity": null
    },
    {
      "id": "fr-opp-467",
      "name": "Port de la Madrague de Giens",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.040024,
      "longitude": 6.109877,
      "sourceId": "467",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 165
    },
    {
      "id": "fr-opp-468",
      "name": "Port du Gapeau",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.111546,
      "longitude": 6.191724,
      "sourceId": "468",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 410
    },
    {
      "id": "fr-opp-469",
      "name": "Port Pothuau",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.116111,
      "longitude": 6.201105,
      "sourceId": "469",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 40
    },
    {
      "id": "fr-opp-470",
      "name": "S-Cape Plaisance",
      "area": "Hyères les Palmiers · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.10805,
      "longitude": 6.172488,
      "sourceId": "470",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 42
    },
    {
      "id": "fr-opp-471",
      "name": "Port Maravenne",
      "area": "La Londe Les Maures · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.119772,
      "longitude": 6.248186,
      "sourceId": "471",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 540
    },
    {
      "id": "fr-opp-472",
      "name": "Port du Pradet",
      "area": "Bormes les Mimosas · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.091795,
      "longitude": 6.366517,
      "sourceId": "472",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 84
    },
    {
      "id": "fr-opp-474",
      "name": "Port Cogolin",
      "area": "Cogolin · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.267309,
      "longitude": 6.577559,
      "sourceId": "474",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-475",
      "name": "Port Grimaud 2",
      "area": "Grimaud · Var · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.269745,
      "longitude": 6.576003,
      "sourceId": "475",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 130
    },
    {
      "id": "fr-opp-476",
      "name": "Port Marina Park",
      "area": "Mandelieu-la-Napoule · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.544899,
      "longitude": 6.942927,
      "sourceId": "476",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 95
    },
    {
      "id": "fr-opp-477",
      "name": "Port du Marco Polo",
      "area": "Mandelieu-la-Napoule · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.54237,
      "longitude": 6.944001,
      "sourceId": "477",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 250
    },
    {
      "id": "fr-opp-479",
      "name": "Port abri du Riou",
      "area": "Mandelieu-la-Napoule · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.527378,
      "longitude": 6.944118,
      "sourceId": "479",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 122
    },
    {
      "id": "fr-opp-480",
      "name": "Port Abri du Beal",
      "area": "Cannes · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.536382,
      "longitude": 6.9528,
      "sourceId": "480",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 359
    },
    {
      "id": "fr-opp-484",
      "name": "Port abri de l'Olivette",
      "area": "Antibes Juan les Pins · Alpes-Maritimes · Provence-Alpes-Côte d’Azur · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 43.5512,
      "longitude": 7.120481,
      "sourceId": "484",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 43
    },
    {
      "id": "fr-opp-486",
      "name": "Bassin à Flot de Marennes",
      "area": "Marennes-Hiers-Brouge · Charente-Maritime · Nouvelle-Aquitaine · France métropolitaine",
      "territory": "France métropolitaine",
      "latitude": 45.818786,
      "longitude": -1.111497,
      "sourceId": "486",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 150
    },
    {
      "id": "fr-opp-496",
      "name": "Port de Saint - Gilles",
      "area": "Saint Gilles · La Réunion",
      "territory": "La Réunion",
      "latitude": -21.054406,
      "longitude": 55.22512,
      "sourceId": "496",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 370
    },
    {
      "id": "fr-opp-497",
      "name": "Port de Saint Leu",
      "area": "Saint-Leu · La Réunion",
      "territory": "La Réunion",
      "latitude": -21.168496,
      "longitude": 55.28639,
      "sourceId": "497",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 136
    },
    {
      "id": "fr-opp-498",
      "name": "Port de Sainte - Marie",
      "area": "Sainte - Marie · La Réunion",
      "territory": "La Réunion",
      "latitude": -20.892345,
      "longitude": 55.535582,
      "sourceId": "498",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 303
    },
    {
      "id": "fr-opp-499",
      "name": "Port de Sainte-Rose",
      "area": "Sainte-Rose · La Réunion",
      "territory": "La Réunion",
      "latitude": -21.125379,
      "longitude": 55.78827,
      "sourceId": "499",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-500",
      "name": "Port de Saint Pierre",
      "area": "Saint-Pierre · La Réunion",
      "territory": "La Réunion",
      "latitude": -21.344019,
      "longitude": 55.475383,
      "sourceId": "500",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 400
    },
    {
      "id": "fr-opp-530",
      "name": "Port de la Pointe des Galets",
      "area": "Le Port · La Réunion",
      "territory": "La Réunion",
      "latitude": -20.942976,
      "longitude": 55.282294,
      "sourceId": "530",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 550
    },
    {
      "id": "fr-opp-501",
      "name": "Marina de Port Ouenghi",
      "area": "Boulouparis · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -21.905828,
      "longitude": 166.065581,
      "sourceId": "501",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-502",
      "name": "Port Boulari",
      "area": "Le Mont-Dore · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -22.232442,
      "longitude": 166.524919,
      "sourceId": "502",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 200
    },
    {
      "id": "fr-opp-503",
      "name": "Port du Sud Marina",
      "area": "Nouméa · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -22.284436,
      "longitude": 166.442222,
      "sourceId": "503",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 329
    },
    {
      "id": "fr-opp-504",
      "name": "Port Moselle",
      "area": "Nouméa · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -22.277607,
      "longitude": 166.440591,
      "sourceId": "504",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 790
    },
    {
      "id": "fr-opp-505",
      "name": "Port Brunelet (Cercle Nautique Calédonien)",
      "area": "Nouméa · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -22.290088,
      "longitude": 166.438113,
      "sourceId": "505",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 120
    },
    {
      "id": "fr-opp-506",
      "name": "Port Garnier",
      "area": "Nouméa · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -22.289623,
      "longitude": 166.439937,
      "sourceId": "506",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 90
    },
    {
      "id": "fr-opp-507",
      "name": "Marina de Wé",
      "area": "Wé · NC Lifou · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -20.919389,
      "longitude": 167.278547,
      "sourceId": "507",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 42
    },
    {
      "id": "fr-opp-508",
      "name": "Port de Pandop",
      "area": "Koumac · NC Grande Terre · Nouvelle-Calédonie",
      "territory": "Nouvelle-Calédonie",
      "latitude": -20.578936,
      "longitude": 164.274041,
      "sourceId": "508",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 62
    },
    {
      "id": "fr-opp-509",
      "name": "Marina Taina",
      "area": "Punaauia · PF Tahiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -17.584375,
      "longitude": -149.615972,
      "sourceId": "509",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 795
    },
    {
      "id": "fr-opp-510",
      "name": "Marina de Uturoa",
      "area": "Uturoa · PF Raiatea · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -16.725415,
      "longitude": -151.446478,
      "sourceId": "510",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 20
    },
    {
      "id": "fr-opp-511",
      "name": "Marina Apooiti",
      "area": "Uturoa · PF Raiatea · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -16.727473,
      "longitude": -151.477379,
      "sourceId": "511",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 90
    },
    {
      "id": "fr-opp-512",
      "name": "Marina Tehoro",
      "area": "Teva I Uta · PF Tahiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -17.771745,
      "longitude": -149.434389,
      "sourceId": "512",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 11
    },
    {
      "id": "fr-opp-513",
      "name": "Marina de Taravao",
      "area": "Taiarapu Est · PF Tahiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -17.730439,
      "longitude": -149.331649,
      "sourceId": "513",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 40
    },
    {
      "id": "fr-opp-514",
      "name": "Yacht Club de Tahiti",
      "area": "Arue · PF Tahiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -17.524429,
      "longitude": -149.533904,
      "sourceId": "514",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 160
    },
    {
      "id": "fr-opp-531",
      "name": "Marina de Papeete",
      "area": "Papeete · PF Tahiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -17.540631,
      "longitude": -149.571313,
      "sourceId": "531",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 87
    },
    {
      "id": "fr-opp-532",
      "name": "Marina de Vaiare",
      "area": "Vaiare · PF Moorea · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -17.52422,
      "longitude": -149.777037,
      "sourceId": "532",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 120
    },
    {
      "id": "fr-opp-488",
      "name": "Port de Saint-Pierre",
      "area": "Saint Pierre · Saint Pierre et Miquelon · Saint-Pierre-et-Miquelon",
      "territory": "Saint-Pierre-et-Miquelon",
      "latitude": 46.775764,
      "longitude": -56.18043,
      "sourceId": "488",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 330
    },
    {
      "id": "fr-opp-489",
      "name": "Port de Miquelon",
      "area": "Miquelon · Saint Pierre et Miquelon · Saint-Pierre-et-Miquelon",
      "territory": "Saint-Pierre-et-Miquelon",
      "latitude": 47.100395,
      "longitude": -56.375732,
      "sourceId": "489",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 60
    },
    {
      "id": "fr-opp-528",
      "name": "Port de plaisance de Mamoudzou",
      "area": "Mamoudzou · Mayotte",
      "territory": "Mayotte",
      "latitude": -12.779515,
      "longitude": 45.232828,
      "sourceId": "528",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 88
    },
    {
      "id": "fr-opp-529",
      "name": "Port de plaisance de Dzaoudzi",
      "area": "Dzaoudzi · Mayotte",
      "territory": "Mayotte",
      "latitude": -12.782533,
      "longitude": 45.258151,
      "sourceId": "529",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 40
    },
    {
      "id": "fr-opp-490",
      "name": "Port de Gustavia",
      "area": "Gustavia · St Barthelemy · Saint-Barthélemy",
      "territory": "Saint-Barthélemy",
      "latitude": 17.897838,
      "longitude": -62.849906,
      "sourceId": "490",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-491",
      "name": "Marina du François",
      "area": "Le François · Martinique",
      "territory": "Martinique",
      "latitude": 14.619379,
      "longitude": -60.889665,
      "sourceId": "491",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 210
    },
    {
      "id": "fr-opp-492",
      "name": "Marina du Marin",
      "area": "Le Marin · Martinique",
      "territory": "Martinique",
      "latitude": 14.469245,
      "longitude": -60.864624,
      "sourceId": "492",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 930
    },
    {
      "id": "fr-opp-493",
      "name": "Port de Port Louis",
      "area": "Port Louis · Guadeloupe",
      "territory": "Guadeloupe",
      "latitude": 16.411404,
      "longitude": -61.531371,
      "sourceId": "493",
      "existingId": "gp-port-louis",
      "source": "opp-2026",
      "capacity": 227
    },
    {
      "id": "fr-opp-495",
      "name": "Port de Sainte Rose",
      "area": "Sainte Rose · Guadeloupe",
      "territory": "Guadeloupe",
      "latitude": 16.334521,
      "longitude": -61.696875,
      "sourceId": "495",
      "existingId": "gp-sainte-rose",
      "source": "opp-2026",
      "capacity": null
    },
    {
      "id": "fr-opp-515",
      "name": "Etang Z'Abricots",
      "area": "Fort de France · Martinique",
      "territory": "Martinique",
      "latitude": 14.594873,
      "longitude": -61.043066,
      "sourceId": "515",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 440
    },
    {
      "id": "fr-opp-516",
      "name": "Port Cohé",
      "area": "Le Lamentin · Martinique",
      "territory": "Martinique",
      "latitude": 14.592743,
      "longitude": -61.015359,
      "sourceId": "516",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 170
    },
    {
      "id": "fr-opp-517",
      "name": "Marina du Robert",
      "area": "Le Robert · Martinique",
      "territory": "Martinique",
      "latitude": 14.652384,
      "longitude": -60.928464,
      "sourceId": "517",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 180
    },
    {
      "id": "fr-opp-518",
      "name": "Marina Pointe du Bout",
      "area": "Trois Ilets · Martinique",
      "territory": "Martinique",
      "latitude": 14.557976,
      "longitude": -61.051588,
      "sourceId": "518",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 115
    },
    {
      "id": "fr-opp-519",
      "name": "Martinique Yacht Club",
      "area": "Fort de France · Martinique",
      "territory": "Martinique",
      "latitude": 14.602679,
      "longitude": -61.066295,
      "sourceId": "519",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 100
    },
    {
      "id": "fr-opp-520",
      "name": "Port de Poirier",
      "area": "Rivière Pilote · Martinique",
      "territory": "Martinique",
      "latitude": 14.464361,
      "longitude": -60.911448,
      "sourceId": "520",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 90
    },
    {
      "id": "fr-opp-521",
      "name": "Marina Bas du Fort",
      "area": "Pointe à Pitre · Guadeloupe",
      "territory": "Guadeloupe",
      "latitude": 16.220239,
      "longitude": -61.529743,
      "sourceId": "521",
      "existingId": "gp-bas-du-fort",
      "source": "opp-2026",
      "capacity": 1260
    },
    {
      "id": "fr-opp-522",
      "name": "Marina de Saint François",
      "area": "Saint- François · Guadeloupe",
      "territory": "Guadeloupe",
      "latitude": 16.252597,
      "longitude": -61.266698,
      "sourceId": "522",
      "existingId": "gp-saint-francois",
      "source": "opp-2026",
      "capacity": 211
    },
    {
      "id": "fr-opp-523",
      "name": "Marina de Rivière-Sens",
      "area": "Gourbeyre · Guadeloupe",
      "territory": "Guadeloupe",
      "latitude": 15.981842,
      "longitude": -61.71549,
      "sourceId": "523",
      "existingId": "gp-riviere-sens",
      "source": "opp-2026",
      "capacity": 330
    },
    {
      "id": "fr-opp-524",
      "name": "Port de plaisance de Baie Mahault",
      "area": "Baie Mahault · Guadeloupe",
      "territory": "Guadeloupe",
      "latitude": 16.269547,
      "longitude": -61.585872,
      "sourceId": "524",
      "existingId": null,
      "source": "opp-2026",
      "capacity": 200
    },
    {
      "id": "mf-fort-louis",
      "name": "Marina Fort Louis",
      "area": "Marigot · Saint-Martin",
      "territory": "Saint-Martin",
      "latitude": 18.069901,
      "longitude": -63.087788,
      "source": "mf-fort-louis-source",
      "sourceId": "mf-fort-louis",
      "existingId": null,
      "capacity": null,
      "coordinateSource": null
    },
    {
      "id": "mf-anse-marcel",
      "name": "Marina Anse Marcel — Port de Lonvilliers",
      "area": "Anse Marcel · Saint-Martin",
      "territory": "Saint-Martin",
      "latitude": 18.113853,
      "longitude": -63.037778,
      "source": "mf-anse-marcel-source",
      "sourceId": "https://www.openstreetmap.org/relation/9565442",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.openstreetmap.org/relation/9565442"
    },
    {
      "id": "mf-marina-royale",
      "name": "Marina Royale",
      "area": "Marigot · Saint-Martin",
      "territory": "Saint-Martin",
      "latitude": 18.064857,
      "longitude": -63.08726,
      "source": "mf-marina-royale-source",
      "sourceId": "https://www.openstreetmap.org/node/3957521204",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.openstreetmap.org/node/3957521204"
    },
    {
      "id": "gf-degrad-des-cannes",
      "name": "Marina de Dégrad des Cannes",
      "area": "Rémire-Montjoly · Guyane",
      "territory": "Guyane",
      "latitude": 4.852646,
      "longitude": -52.282676,
      "source": "gf-degrad-des-cannes-source",
      "sourceId": "https://www.openstreetmap.org/way/500223293",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.openstreetmap.org/way/500223293"
    },
    {
      "id": "gf-saint-laurent",
      "name": "Marina de Saint-Laurent-du-Maroni",
      "area": "Saint-Laurent-du-Maroni · Guyane",
      "territory": "Guyane",
      "latitude": 5.506008,
      "longitude": -54.032017,
      "source": "gf-saint-laurent-source",
      "sourceId": "gf-saint-laurent",
      "existingId": null,
      "capacity": null,
      "coordinateSource": null
    },
    {
      "id": "wf-mata-utu",
      "name": "Escale de Mata’Utu",
      "area": "Wallis · Wallis-et-Futuna",
      "territory": "Wallis-et-Futuna",
      "latitude": -13.284838,
      "longitude": -176.169148,
      "source": "wf-mata-utu-source",
      "sourceId": "https://www.openstreetmap.org/way/1262088844",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.openstreetmap.org/way/1262088844"
    },
    {
      "id": "wf-leava",
      "name": "Escale de Leava — baie de Sigave",
      "area": "Futuna · Wallis-et-Futuna",
      "territory": "Wallis-et-Futuna",
      "latitude": -14.295095,
      "longitude": -178.161361,
      "source": "wf-leava-source",
      "sourceId": "https://www.openstreetmap.org/node/11824564097",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.openstreetmap.org/node/11824564097"
    },
    {
      "id": "wf-fakatoi",
      "name": "Mouillage de Fakatoi",
      "area": "Halalo · Wallis · Wallis-et-Futuna",
      "territory": "Wallis-et-Futuna",
      "latitude": -13.336017,
      "longitude": -176.223,
      "source": "wf-fakatoi-source",
      "sourceId": "wf-fakatoi",
      "existingId": null,
      "capacity": null,
      "coordinateSource": null
    },
    {
      "id": "pf-hiva-t1",
      "name": "Mouillage réglementé de Tahauku 1",
      "area": "Hiva Oa · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.803042,
      "longitude": -139.031125,
      "source": "dpam-hiva-2026",
      "sourceId": "pf-hiva-t1",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-hiva-t2",
      "name": "Mouillage réglementé de Tahauku 2",
      "area": "Hiva Oa · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.807792,
      "longitude": -139.032625,
      "source": "dpam-hiva-2026",
      "sourceId": "pf-hiva-t2",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-hiva-hm",
      "name": "Mouillage réglementé de Hanamenu",
      "area": "Hiva Oa · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.763833,
      "longitude": -139.140167,
      "source": "dpam-hiva-2026",
      "sourceId": "pf-hiva-hm",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-hiva-hp",
      "name": "Mouillage réglementé de Hanaiapa",
      "area": "Hiva Oa · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.71525,
      "longitude": -139.0165,
      "source": "dpam-hiva-2026",
      "sourceId": "pf-hiva-hp",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-hiva-na",
      "name": "Mouillage réglementé de Nahoe",
      "area": "Hiva Oa · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.737056,
      "longitude": -138.922278,
      "source": "dpam-hiva-2026",
      "sourceId": "pf-hiva-na",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-hiva-pm",
      "name": "Mouillage réglementé de Puamau",
      "area": "Hiva Oa · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.761125,
      "longitude": -138.8745,
      "source": "dpam-hiva-2026",
      "sourceId": "pf-hiva-pm",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-384-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uapou-hk",
      "name": "Mouillage réglementé de Hakahau",
      "area": "Ua Pou · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.3585,
      "longitude": -140.047708,
      "source": "dpam-uapou-2026",
      "sourceId": "pf-uapou-hk",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uapou-ht",
      "name": "Mouillage réglementé de Hakahetau",
      "area": "Ua Pou · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.357,
      "longitude": -140.105333,
      "source": "dpam-uapou-2026",
      "sourceId": "pf-uapou-ht",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uapou-va",
      "name": "Mouillage réglementé de Vaiehu",
      "area": "Ua Pou · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.387458,
      "longitude": -140.128333,
      "source": "dpam-uapou-2026",
      "sourceId": "pf-uapou-va",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uapou-ho",
      "name": "Mouillage réglementé de Hakaotu",
      "area": "Ua Pou · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.397333,
      "longitude": -140.128333,
      "source": "dpam-uapou-2026",
      "sourceId": "pf-uapou-ho",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uapou-ua",
      "name": "Mouillage réglementé de Uapo",
      "area": "Ua Pou · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -9.444467,
      "longitude": -140.090067,
      "source": "dpam-uapou-2026",
      "sourceId": "pf-uapou-ua",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-500-CM-du-20-avril-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uahuka-ha",
      "name": "Mouillage réglementé de Hane",
      "area": "Ua Huka · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -8.928042,
      "longitude": -139.533875,
      "source": "dpam-uahuka-2026",
      "sourceId": "pf-uahuka-ha",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-383-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-uahuka-va",
      "name": "Mouillage réglementé de Vaipaee",
      "area": "Ua Huka · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -8.940583,
      "longitude": -139.572542,
      "source": "dpam-uahuka-2026",
      "sourceId": "pf-uahuka-va",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-383-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-maupiti-pt",
      "name": "Mouillage réglementé de Petei",
      "area": "Maupiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -16.446,
      "longitude": -152.243208,
      "source": "dpam-maupiti-2026",
      "sourceId": "pf-maupiti-pt",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-399-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    },
    {
      "id": "pf-maupiti-mn",
      "name": "Mouillage réglementé de Manuea",
      "area": "Maupiti · Polynésie française",
      "territory": "Polynésie française",
      "latitude": -16.470833,
      "longitude": -152.256583,
      "source": "dpam-maupiti-2026",
      "sourceId": "pf-maupiti-mn",
      "existingId": null,
      "capacity": null,
      "coordinateSource": "https://www.service-public.pf/dpam/wp-content/uploads/sites/20/2026/04/Arrete-n%C2%B0-399-CM-du-31-mars-2026.pdf#article-9",
      "coordinateMethod": "Moyenne des sommets officiels de la zone ; repère de catalogue uniquement, pas une position de mouillage.",
      "accessNote": "Zone réglementée pour les navires de moins de 20 m. Autorisation préalable de la DPAM requise : préparer la demande sur escales.gov.pf. Vérifier disponibilité, durée, redevance et consignes avant l’arrivée. Le repère localise la zone ; il ne désigne ni un point d’entrée ni une place de mouillage."
    }
  ],
  "coverage": {
    "scope": "Ports maritimes de plaisance et escales, incluant les escales estuariennes du référentiel national. Hors catalogue fluvial/lacustre et ports à sec.",
    "exhaustive": false,
    "note": "Référentiel national janvier 2026 complété par des escales documentées. Couverture non exhaustive des mouillages et des îles ultramarines ; aucune place ni accessibilité garanties.",
    "retrievedAt": "2026-10-23"
  },
  "license": {
    "name": "ODbL 1.0",
    "url": "https://opendatacommons.org/licenses/odbl/1-0/",
    "attribution": "© OpenStreetMap contributors ; © Ministère en charge de l’environnement / DGAMPA, Cerema / GéoLittoral. Sources et dates détaillées dans sources.",
    "note": "Catalogue dérivé distribué sous ODbL ; sources GéoLittoral sous Licence Ouverte 2.0."
  }
}
