Distance totale par paires de points géographiques
Le calculateur de distance totale par paires mesure la distance orthodromique de chaque paire non ordonnée d’un ensemble de points géographiques, puis additionne ces mesures.
Lancer gratuitement
Il convient à l’analyse de connectivité, à la comparaison de réseaux de sites, au diagnostic de regroupements et à tout traitement nécessitant une mesure reproductible de la dispersion géographique. Saisissez des coordonnées décimales de latitude et de longitude : le résultat indique le nombre de points, le nombre de paires évaluées et la distance cumulée en kilomètres, miles et mètres.
Ce que révèle la distance totale par paires
La distance totale par paires ramène à une seule valeur toutes les séparations géographiques directes d’un ensemble de points. Pour chaque point, le calculateur l’associe à tous ceux qui le suivent, mesure le trajet le plus court sur une Terre sphérique et ajoute cette mesure une seule fois. Quatre sites forment par exemple six paires non ordonnées ; inverser une paire ne crée aucune contribution supplémentaire. Le résultat répond aux questions portant sur la dispersion spatiale globale, plutôt que sur un itinéraire, un périmètre ou la distance depuis un centre choisi. Un groupe compact produit un total inférieur à celui d’un groupe très dispersé contenant autant de sites. Puisque le total augmente aussi avec l’ajout de points, comparez des ensembles de même taille pour confronter directement leur dispersion, ou utilisez le nombre de paires fourni afin de calculer séparément une distance moyenne par paire. Les coordonnées dupliquées sont acceptées et leur paire apporte une distance nulle, ce qui conserve les observations répétées au lieu de les supprimer silencieusement.
Fonctionnement du calcul
Chaque paire est évaluée avec la formule de Haversine et un rayon terrestre moyen de 6,371.0088 kilomètres. La latitude et la longitude passent des degrés décimaux aux radians, leurs différences sont injectées dans la formule sphérique, puis l’angle au centre obtenu est multiplié par ce rayon. On calcule ainsi une distance orthodromique : le trajet de surface le plus court sur une sphère, et non une ligne droite traversant la Terre ni une distance routière, pédestre ou de réseau. L’implémentation borne la valeur intermédiaire de Haversine à son domaine mathématique, évitant les problèmes de virgule flottante pour des points presque identiques ou presque antipodaux. Elle cumule ensuite les valeurs kilométriques non arrondies avant de produire des totaux stables et arrondis en kilomètres, miles et mètres. Les longitudes peuvent aller de -180 à 180 ; les paires traversant l’antiméridien sont donc traitées naturellement par le calcul trigonométrique périodique. Ce modèle sphérique est cohérent et adapté à une analyse générale de connectivité, mais un levé de haute précision doit employer une méthode géodésique ellipsoïdale.
Préparer les points et interpréter le résultat
Fournissez entre deux et 1,000 enregistrements, chacun avec des champs numériques de latitude et de longitude. La latitude doit être comprise entre -90 et 90 degrés, et la longitude entre -180 et 180 degrés. Employez des degrés décimaux signés : les coordonnées nord et est sont positives, tandis que les coordonnées sud et ouest sont négatives. N’ajoutez ni symbole de degré, ni lettre de point cardinal, ni chaîne numérique, car la validation stricte empêche les conversions ambiguës. Le calculateur annonce n(n−1)/2 paires, ce qui permet de confirmer que l’ensemble complet a été évalué. Gardez à l’esprit que le total dépend à la fois de la dispersion géographique et du nombre d’observations : doubler un échantillon distribué de façon similaire peut créer bien plus de deux fois plus de paires. Pour comparer des ensembles de tailles différentes, divisez la distance totale par le nombre de paires afin d’obtenir leur distance moyenne, ou conservez les deux valeurs dans votre analyse. À la limite de 1,000 points, le calculateur évalue 499,500 paires, bornant efficacement le travail quadratique tout en prenant en charge d’importants jeux de sites, capteurs ou zones de service.
Cas d’usage
Comparer des réseaux de sites
Déterminez si des ensembles de même taille d’entrepôts, de cliniques ou de bureaux sont géographiquement concentrés ou dispersés.
Évaluer la cohésion des groupes
Utilisez la somme et le nombre de paires pour établir un diagnostic reproductible fondé sur la distance moyenne d’un regroupement géographique.
Suivre l’étendue d’un réseau de capteurs
Comparez des instantanés comportant autant d’appareils afin de savoir si un réseau de terrain s’est étendu ou resserré.
Questions fréquentes
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. Le calculateur du navigateur peut exécuter localement la même logique déterministe.
Chaque paire est-elle comptée deux fois ?
Non. Chaque paire non ordonnée contribue une seule fois ; n points produisent donc n(n−1)/2 calculs de distance.
Quel modèle de distance est utilisé ?
Le calculateur utilise la formule de Haversine et un rayon terrestre moyen de 6,371.0088 kilomètres.
Puis-je inclure des coordonnées dupliquées ?
Oui. Les enregistrements dupliqués restent dans l’ensemble et la distance entre coordonnées identiques contribue pour zéro.
S’agit-il d’une distance routière ou de trajet ?
Non. La mesure suit la plus courte distance orthodromique de surface, sans emprunter les routes, frontières, reliefs ou réseaux de transport.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/geo/total-pairwise-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"points":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":0}]}'const res = await fetch("https://api.kit.forhosting.com/geo/total-pairwise-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"points": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/total-pairwise-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"points": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/total-pairwise-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"points":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"points":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/total-pairwise-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"points": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.total_pairwise_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
min_points | 2 |
max_points | 1000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |