Skip to main content

API Carte

L'API Carte fournit les donnees geospatiales pour la cartographie interactive du systeme.

Vue d'ensemble

EndpointMethodeDescription
/api/carte/menagesGETMenages geolocalisees
/api/carte/beneficiairesGETBeneficiaires geolocalisees
/api/carte/plaintesGETPlaintes geolocalisees
/api/carte/hierarchyGETHierarchie geographique
/api/carte/stats/regionsGETStats par region
/api/carte/stats/secteursGETStats par secteur
/api/carte/configGETConfiguration carte
/api/carte/export/geojsonGETExport GeoJSON
/api/carte/layersGETCompteurs par couche
/api/carte/ascGETAgents sante communautaire
/api/carte/services-santeGETServices de sante
/api/carte/polices-judiciairesGETServices juridiques
/api/carte/services-vbgGETServices VBG
/api/carte/acteurs-locauxGETPoints focaux, chefs village
/api/carte/tabancasGETLocalites/villages
/api/carte/ecolesGETEcoles
/api/carte/ecoles/statsGETStats ecoles
/api/carte/points-eauGETPoints d'eau
/api/carte/assistantPOSTAssistant IA geographique
/api/carte/analyse/proximitePOSTAnalyse de proximite
/api/carte/analyse/couverturePOSTAnalyse de couverture
/api/carte/analyse/densiteGETAnalyse de densite
/api/carte/analyse/ecoles-proches/{menageId}GETEcoles proches d'un menage
/api/carte/analyse/localite-proximite/{localiteId}GETProximite localite

Permissions requises

  • ROLE_USER : Acces a tous les endpoints

Menages geolocalisees

Endpoint

GET /api/carte/menages

Parametres de requete

ParametreTypeRequisDescription
regionUUIDNonFiltrer par region
secteurUUIDNonFiltrer par secteur (multi: separes par virgules)
localiteUUIDNonFiltrer par localite (multi: separes par virgules)
categoriestringNonFiltrer par categorie de pauvrete
eligiblebooleanNonFiltrer par eligibilite
milieustringNonFiltrer par milieu (rural/urbain)

Reponse

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"codeMenage": "MEN-OIO-001",
"latitude": 12.345678,
"longitude": -15.678901,
"chefMenage": {"nomComplet": "Mamadou Diallo"},
"region": "Oio",
"secteur": "Farim",
"localite": "Farim Centro",
"milieu": "rural",
"tailleMenage": 5,
"scorePmt": 35.5,
"categoriePauvrete": "pauvre",
"eligibleProgramme": true
}
],
"total": 5000
}

Beneficiaires geolocalisees

Endpoint

GET /api/carte/beneficiaires

Parametres de requete

ParametreTypeRequisDescription
statutstringNonFiltrer par statut d'enrolement
regionUUIDNonFiltrer par region
secteurUUIDNonFiltrer par secteur
localiteUUIDNonFiltrer par localite

Reponse

{
"success": true,
"data": [
{
"id": "...",
"nomComplet": "Mamadou Diallo",
"telephone": "+245955123456",
"statut": "actif",
"actif": true,
"latitude": 12.345678,
"longitude": -15.678901,
"menageCode": "MEN-OIO-001",
"region": "Oio",
"secteur": "Farim"
}
],
"total": 3500
}

Plaintes geolocalisees

Endpoint

GET /api/carte/plaintes

Parametres de requete

ParametreTypeRequisDescription
statutstringNonFiltrer par statut
prioritestringNonFiltrer par priorite
regionUUIDNonFiltrer par region
secteurUUIDNonFiltrer par secteur
localiteUUIDNonFiltrer par localite

Reponse

{
"success": true,
"data": [
{
"id": "...",
"reference": "PLT-2025-001234",
"plaignant": "Mamadou Diallo",
"objet": "Paiement non recu",
"categorie": "retard_paiement",
"priorite": "moyenne",
"statut": "en_cours",
"latitude": 12.345678,
"longitude": -15.678901,
"dateCreation": "2025-01-15"
}
],
"total": 150
}

Hierarchie geographique

Endpoint

GET /api/carte/hierarchy

Retourne la hierarchie complete: regions > secteurs > localites avec statistiques. Cache: 10 minutes.

Reponse

{
"success": true,
"data": [
{
"id": "...",
"nom": "Oio",
"code": "OIO",
"totalMenages": 5000,
"menagesEligibles": 4200,
"totalBeneficiaires": 3500,
"totalLocalites": 150,
"totalMenagesLocalites": 12000,
"secteursCount": 8,
"secteurs": [
{
"id": "...",
"nom": "Farim",
"code": "FAR",
"localitesCount": 25,
"totalMenages": 800,
"nbMenagesLocalites": 2000,
"localites": [
{
"id": "...",
"nom": "Farim Centro",
"code": "FAR-001",
"nbMenages": 150,
"population": 750,
"latitude": 12.345,
"longitude": -15.678,
"distanceEcoleEI": 2.5,
"distancePointEau": 0.5,
"distanceServiceSante": 3.0
}
]
}
]
}
]
}

Statistiques par region

Endpoint

GET /api/carte/stats/regions

Reponse

{
"success": true,
"data": [
{
"id": "...",
"nom": "Oio",
"totalMenages": 5000,
"menagesEligibles": 4200,
"scorePmtMoyen": 35.5
}
]
}

Statistiques par secteur

Endpoint

GET /api/carte/stats/secteurs

Parametres

ParametreTypeRequisDescription
regionUUIDNonFiltrer par region

Reponse

{
"success": true,
"data": [
{
"id": "...",
"nom": "Farim",
"code": "FAR",
"region": "Oio",
"localitesCount": 25,
"totalMenages": 800,
"menagesEligibles": 680,
"concentrationRate": 0.85,
"scorePmtMoyen": 32.5,
"centerLatitude": 12.345,
"centerLongitude": -15.678
}
]
}

Configuration carte

Endpoint

GET /api/carte/config

Reponse

{
"success": true,
"data": {
"center": {
"lat": 12.1,
"lng": -15.0
},
"zoom": 9,
"bounds": {
"north": 12.7,
"south": 11.5,
"east": -13.5,
"west": -16.5
},
"tileLayers": [
{
"name": "OpenStreetMap",
"url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"attribution": "© OpenStreetMap contributors"
},
{
"name": "Satellite",
"url": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
"attribution": "Tiles © Esri"
},
{
"name": "Terrain",
"url": "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png",
"attribution": "© OpenTopoMap"
}
]
}
}

Compteurs par couche

Endpoint

GET /api/carte/layers

Cache: 5 minutes.

Reponse

{
"success": true,
"data": {
"menages": 5000,
"menagesRegistered": 5000,
"menagesLocalites": 15000,
"beneficiaires": 3500,
"asc": 45,
"plaintes": 150,
"pointsFocaux": 80,
"chefsVillage": 120,
"ecoles": 95,
"ecolesPilote": 25,
"tabancas": 350,
"servicesSante": 15,
"policesJudiciaires": 8,
"servicesVBG": 12,
"pointsEau": 200
}
}

Ecoles

Endpoint

GET /api/carte/ecoles

Parametres

ParametreTypeRequisDescription
regionUUIDNonFiltrer par region
secteurUUIDNonFiltrer par secteur
pilotebooleanNonEcoles pilotes seulement

Reponse

{
"success": true,
"data": [
{
"id": "...",
"nom": "Ecole Primaire Farim",
"code": "FAR-EP-001",
"type": "primaire",
"typology": "complete",
"secteur": "Farim",
"region": "Oio",
"communaute": "Farim Centro",
"latitude": 12.345,
"longitude": -15.678,
"prescolaire": true,
"niveauMax": "6eme",
"menagesEstimes": 150,
"distanceMansoa": 45.5,
"pilote": true,
"idDgepase": "DGEP-001"
}
],
"total": 95
}

Services de sante

Endpoint

GET /api/carte/services-sante

Parametres

ParametreTypeRequisDescription
typestringNonType de service
regionUUIDNonFiltrer par region
secteurUUIDNonFiltrer par secteur

Reponse

{
"success": true,
"data": [
{
"id": "...",
"code": "CS-FAR-001",
"nom": "Centre de Sante Farim",
"type": "centre_sante",
"typeLabel": "Centre de Santé",
"statut": "actif",
"adresse": "Quartier Central",
"telephone": "+245955000001",
"responsable": "Dr. Mamadou Diallo",
"latitude": 12.345,
"longitude": -15.678,
"urgences24h": true,
"maternite": true,
"laboratoire": false,
"pharmacie": true,
"capaciteLits": 20,
"nombrePersonnel": 15,
"region": "Oio"
}
],
"total": 15
}

Analyse de proximite

Endpoint

POST /api/carte/analyse/proximite

Corps de la requete

{
"lat": 12.345678,
"lng": -15.678901,
"radius": 5000,
"types": ["menages", "ecoles", "services_sante"]
}

Reponse

{
"success": true,
"data": {
"menages": {
"count": 150,
"items": [...]
},
"ecoles": {
"count": 3,
"items": [...]
},
"services_sante": {
"count": 1,
"items": [...]
}
}
}

Ecoles proches d'un menage

Endpoint

GET /api/carte/analyse/ecoles-proches/{menageId}

Parametres

ParametreTypeRequisDescription
anneestringNonAnnee scolaire

Reponse

{
"success": true,
"data": {
"prescolaire": [
{
"ecole": {
"id": "...",
"nom": "Ecole Primaire Farim",
"code": "FAR-EP-001",
"type": "primaire",
"secteur": "Farim",
"prescolaire": true,
"niveauxEnseignes": "Prescolaire, 1ere, 2eme, 3eme"
},
"distance": 1500,
"distanceFormattee": "1.5 km",
"estInscrit": false,
"nbEnfantsInscrits": 0
}
],
"primaire": [...]
},
"cached": true
}

Proximite localite

Endpoint

GET /api/carte/analyse/localite-proximite/{localiteId}

Calcule les distances vers l'ecole, le point d'eau et le service de sante les plus proches.

Reponse

{
"success": true,
"data": {
"ecole": {
"id": "...",
"nom": "Ecole Primaire Farim",
"type": "primaire",
"secteur": "Farim",
"distance": 2500,
"distanceFormattee": "2,5 km"
},
"pointEau": {
"id": "...",
"nom": "Puits Farim Centro",
"type": "water_well",
"typeLabel": "Puits",
"secteur": "Farim",
"fonctionnel": true,
"distance": 500,
"distanceFormattee": "500 m"
},
"serviceSante": {
"id": "...",
"nom": "Centre de Sante Farim",
"type": "centre_sante",
"typeLabel": "Centre de Santé",
"statut": "actif",
"telephone": "+245955000001",
"urgences24h": true,
"maternite": true,
"distance": 3000,
"distanceFormattee": "3,0 km"
}
}
}

Export GeoJSON

Endpoint

GET /api/carte/export/geojson

Parametres

ParametreTypeRequisDescription
typestringNonType de donnees (defaut: menages)

Reponse

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-15.678901, 12.345678]
},
"properties": {
"id": "...",
"codeMenage": "MEN-OIO-001",
"tailleMenage": 5,
"scorePmt": 35.5,
"categoriePauvrete": "pauvre",
"eligible": true,
"milieu": "rural"
}
}
]
}

Assistant IA geographique

Endpoint

POST /api/carte/assistant

Corps de la requete

{
"question": "Quels sont les villages les plus eloignes des ecoles dans la region Oio?",
"context": {
"region": "Oio",
"layers": ["tabancas", "ecoles"]
},
"language": "fr"
}

Reponse

{
"success": true,
"data": {
"answer": "Dans la region Oio, les 5 villages les plus eloignes des ecoles sont...",
"data": [...],
"suggestions": [
"Afficher ces villages sur la carte",
"Voir les ecoles pilotes"
]
}
}