API Carte
L'API Carte fournit les donnees geospatiales pour la cartographie interactive du systeme.
Vue d'ensemble
| Endpoint | Methode | Description |
|---|---|---|
/api/carte/menages | GET | Menages geolocalisees |
/api/carte/beneficiaires | GET | Beneficiaires geolocalisees |
/api/carte/plaintes | GET | Plaintes geolocalisees |
/api/carte/hierarchy | GET | Hierarchie geographique |
/api/carte/stats/regions | GET | Stats par region |
/api/carte/stats/secteurs | GET | Stats par secteur |
/api/carte/config | GET | Configuration carte |
/api/carte/export/geojson | GET | Export GeoJSON |
/api/carte/layers | GET | Compteurs par couche |
/api/carte/asc | GET | Agents sante communautaire |
/api/carte/services-sante | GET | Services de sante |
/api/carte/polices-judiciaires | GET | Services juridiques |
/api/carte/services-vbg | GET | Services VBG |
/api/carte/acteurs-locaux | GET | Points focaux, chefs village |
/api/carte/tabancas | GET | Localites/villages |
/api/carte/ecoles | GET | Ecoles |
/api/carte/ecoles/stats | GET | Stats ecoles |
/api/carte/points-eau | GET | Points d'eau |
/api/carte/assistant | POST | Assistant IA geographique |
/api/carte/analyse/proximite | POST | Analyse de proximite |
/api/carte/analyse/couverture | POST | Analyse de couverture |
/api/carte/analyse/densite | GET | Analyse de densite |
/api/carte/analyse/ecoles-proches/{menageId} | GET | Ecoles proches d'un menage |
/api/carte/analyse/localite-proximite/{localiteId} | GET | Proximite localite |
Permissions requises
ROLE_USER: Acces a tous les endpoints
Menages geolocalisees
Endpoint
GET /api/carte/menages
Parametres de requete
| Parametre | Type | Requis | Description |
|---|---|---|---|
region | UUID | Non | Filtrer par region |
secteur | UUID | Non | Filtrer par secteur (multi: separes par virgules) |
localite | UUID | Non | Filtrer par localite (multi: separes par virgules) |
categorie | string | Non | Filtrer par categorie de pauvrete |
eligible | boolean | Non | Filtrer par eligibilite |
milieu | string | Non | Filtrer 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
statut | string | Non | Filtrer par statut d'enrolement |
region | UUID | Non | Filtrer par region |
secteur | UUID | Non | Filtrer par secteur |
localite | UUID | Non | Filtrer 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
statut | string | Non | Filtrer par statut |
priorite | string | Non | Filtrer par priorite |
region | UUID | Non | Filtrer par region |
secteur | UUID | Non | Filtrer par secteur |
localite | UUID | Non | Filtrer 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
region | UUID | Non | Filtrer 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
region | UUID | Non | Filtrer par region |
secteur | UUID | Non | Filtrer par secteur |
pilote | boolean | Non | Ecoles 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
type | string | Non | Type de service |
region | UUID | Non | Filtrer par region |
secteur | UUID | Non | Filtrer 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
annee | string | Non | Annee 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
| Parametre | Type | Requis | Description |
|---|---|---|---|
type | string | Non | Type 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"
]
}
}