Visibilité entre deux points sur un profil de terrain
Le test de visibilité entre deux points détermine si une cible peut être vue depuis un observateur le long du profil de terrain fourni.
Lancer gratuitement
Il trace une ligne droite entre les altitudes de l’observateur et de la cible, en tenant compte de leurs hauteurs au-dessus du sol, puis compare chaque échantillon intermédiaire du terrain à cette ligne. Le résultat indique si la cible est visible, repère le point offrant le plus faible dégagement et fournit à cet endroit le dégagement vertical signé. Le calcul est ainsi transparent et reproductible pour la topographie, la planification radio, l’évaluation de sites et l’analyse cartographique du relief.
Préparez un profil de terrain ordonné
Fournissez les échantillons du terrain dans l’ordre du trajet entre l’observateur et la cible. La première distance doit être nulle, chaque distance suivante doit être supérieure à la précédente et le dernier échantillon représente l’emplacement de la cible. Les distances et altitudes peuvent être exprimées en mètres, en pieds ou dans une autre unité linéaire, mais toutes les valeurs doivent employer la même unité, car le calcul les compare directement. Ajoutez la hauteur de l’observateur et celle de la cible au-dessus de leurs altitudes de terrain respectives. La hauteur de l’observateur peut correspondre au niveau des yeux, au centre d’une antenne ou à un instrument monté sur trépied. Celle de la cible peut représenter une personne, un mât, une structure, ou être nulle si vous étudiez la visibilité du point au sol lui-même. Ajoutez si possible des échantillons aux ruptures de pente et aux sommets locaux. Le test ne peut évaluer que le profil fourni : une crête située entre des échantillons trop espacés ne sera ni créée ni déduite. Les données ordonnées transmettent donc au résultat le modèle du terrain et les limites de son échantillonnage.
Comprenez le test de ligne de visée rectiligne
Le calcul ajoute d’abord la hauteur de l’observateur à l’altitude du terrain à la distance zéro, puis la hauteur de la cible à l’altitude de la distance finale. Ces deux altitudes absolues définissent une droite. Pour chaque échantillon intermédiaire, une interpolation linéaire donne l’altitude de cette droite à la distance concernée. L’altitude du terrain est ensuite soustraite à celle de la ligne de visée pour obtenir le dégagement. Un dégagement positif signifie que la ligne passe au-dessus du sol échantillonné, zéro qu’elle le touche, et une valeur négative que l’échantillon dépasse la ligne et bloque la visibilité. La cible n’est déclarée visible que si tous les dégagements intermédiaires sont supérieurs ou égaux à zéro. La sortie renvoie également le point critique, c’est-à-dire l’échantillon au dégagement minimal, avec sa distance, l’altitude du terrain, l’altitude de la ligne de visée et le dégagement. Cette valeur signée dépasse une simple réponse affirmative ou négative : elle indique la hauteur supplémentaire nécessaire au point critique ou l’étroitesse de la marge disponible.
Interprétez le résultat dans les limites du modèle
Considérez le résultat comme un test point à point sur le profil fourni, et non comme une grille géographique complète de visibilité. Il évalue uniquement la section verticale rectiligne reliant les deux emplacements. La courbure terrestre et la réfraction atmosphérique ne sont pas appliquées ; les longues liaisons peuvent donc nécessiter une analyse distincte avec Terre courbe ou rayon effectif. Les bâtiments, arbres, véhicules, feuillages saisonniers et autres objets de surface sont absents, sauf si leur hauteur figure déjà dans les altitudes fournies. Le calcul n’interpole pas non plus une surface de terrain continue entre les échantillons ; un échantillonnage plus dense autour des crêtes donne généralement une réponse plus fiable. Un résultat visible assorti d’un très faible dégagement positif doit donc être jugé sensible aux erreurs d’altitude et aux obstacles omis, tandis qu’une grande marge positive est plus robuste. Un dégagement minimal négatif révèle une obstruction certaine dans les données fournies, et son point critique aide à cibler une vérification sur le terrain ou une modification de conception. La même entrée déterministe reproduit toujours la même sortie, ce qui convient aux processus d’évaluation documentés et aux comparaisons automatisées.
Cas d’usage
Évaluez une liaison radio
Vérifiez si le terrain échantillonné coupe la ligne directe entre deux hauteurs d’antenne avant une étude de propagation plus complète.
Contrôlez un profil topographique
Testez la visibilité au niveau des yeux ou d’un instrument entre des stations mesurées et repérez celle dont le dégagement est minimal.
Comparez des sites candidats
Réalisez des tests de terrain point à point cohérents pour plusieurs positions d’observation et conservez la preuve du dégagement avec chaque résultat.
Questions fréquentes
Que signifie visible ?
Aucun échantillon intermédiaire du terrain ne dépasse la droite reliant les hauteurs de l’observateur et de la cible. Un terrain qui touche exactement cette ligne est considéré comme visible.
Les distances et altitudes doivent-elles être en mètres ?
Non. Toute unité linéaire convient si toutes les distances, altitudes et hauteurs de l’observateur et de la cible utilisent cette même unité.
Le test inclut-il la courbure terrestre ou la réfraction ?
Non. Il utilise un profil rectiligne dans une section verticale plane. Corrigez d’abord les altitudes d’entrée lorsque ces effets comptent.
Tient-il compte des arbres et des bâtiments ?
Uniquement si leurs hauteurs sont déjà incluses dans les altitudes du profil fourni. La capacité n’ajoute pas automatiquement les objets de surface.
Qu’est-ce que le point critique ?
Il s’agit de l’échantillon testé offrant le plus faible dégagement de ligne de visée. Une valeur négative indique l’obstruction échantillonnée la plus forte.
Quel est le coût d’une requête API ?
Chaque requête API coûte $0.002. Le même calcul déterministe peut être exécuté dans le navigateur comme capacité de niveau A.
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/viewshed-point-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"terrain_profile":[{"distance":0,"elevation":100},{"distance":500,"elevation":112},{"distance":1000,"elevation":108}]}'const res = await fetch("https://api.kit.forhosting.com/geo/viewshed-point-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"terrain_profile": [
{
"distance": 0,
"elevation": 100
},
{
"distance": 500,
"elevation": 112
},
{
"distance": 1000,
"elevation": 108
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/viewshed-point-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"terrain_profile": [
{
"distance": 0,
"elevation": 100
},
{
"distance": 500,
"elevation": 112
},
{
"distance": 1000,
"elevation": 108
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/viewshed-point-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"terrain_profile":[{"distance":0,"elevation":100},{"distance":500,"elevation":112},{"distance":1000,"elevation":108}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"terrain_profile":[{"distance":0,"elevation":100},{"distance":500,"elevation":112},{"distance":1000,"elevation":108}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/viewshed-point-test", 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
{
"terrain_profile": [
{
"distance": 0,
"elevation": 100
},
{
"distance": 500,
"elevation": 112
},
{
"distance": 1000,
"elevation": 108
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.viewshed_point_test",
"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
max_points | 10000 |
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. |