Visibilità tra punti su un profilo del terreno
Il test di visibilità tra punti determina se un bersaglio può essere visto da un osservatore lungo un profilo del terreno fornito.
Esegui gratis nel browser
Traccia una linea retta tra le quote dell’osservatore e del bersaglio, includendo le rispettive altezze dal suolo, quindi confronta con essa ogni campione intermedio del terreno. Il risultato indica se il bersaglio è visibile, individua il punto con il margine minimo e riporta in quel punto il margine verticale con segno. Il calcolo diventa così trasparente e ripetibile per rilievi, pianificazione radio, valutazione dei siti e analisi cartografica del territorio.
Prepari un profilo del terreno ordinato
Fornisca i campioni del terreno nell’ordine del percorso dall’osservatore al bersaglio. La prima distanza deve essere zero, ogni distanza successiva deve superare la precedente e l’ultimo campione rappresenta la posizione del bersaglio. Distanze e quote possono essere espresse in metri, piedi o un’altra unità lineare, ma tutti i valori devono usare la stessa unità perché il calcolo li confronta direttamente. Aggiunga l’altezza dell’osservatore e quella del bersaglio come distanze sopra le rispettive quote del terreno. L’altezza dell’osservatore può rappresentare il livello degli occhi, il centro di un’antenna o uno strumento montato su treppiede. L’altezza del bersaglio può rappresentare una persona, un palo, una struttura oppure essere zero se interessa la visibilità del punto a terra. Inserisca campioni in corrispondenza dei cambi di pendenza e dei rilievi locali quando possibile. Il test valuta soltanto il profilo fornito: non inventa né deduce una cresta situata tra campioni molto distanti. L’input ordinato trasferisce quindi nel risultato sia il modello del terreno sia i limiti del campionamento.
Comprenda il test della linea di vista rettilinea
Il calcolo somma innanzitutto l’altezza dell’osservatore alla quota del terreno alla distanza zero e l’altezza del bersaglio alla quota della distanza finale. Queste due quote assolute definiscono una retta. Per ogni campione intermedio, l’interpolazione lineare determina la quota della retta alla distanza del campione. La quota del terreno viene poi sottratta a quella della linea di vista per ottenere il margine. Un margine positivo indica che la linea passa sopra il terreno campionato, zero indica che lo tocca, mentre un valore negativo segnala che il campione supera la linea e blocca la visibilità. Il bersaglio è dichiarato visibile solo quando tutti i margini intermedi sono uguali o superiori a zero. L’output restituisce anche il punto critico, ossia il campione con il margine minimo, insieme a distanza, quota del terreno, quota della linea di vista e margine. Questo valore con segno offre più di una risposta sì o no: mostra quanta altezza aggiuntiva servirebbe nella posizione critica o quanto sia ridotto il margine disponibile.
Interpreti i risultati entro i limiti del modello
Consideri il risultato come un test punto a punto sul profilo fornito, non come una griglia geografica completa del campo visivo. Viene valutata soltanto la sezione verticale rettilinea che unisce le due posizioni. La curvatura terrestre e la rifrazione atmosferica non vengono applicate, quindi i collegamenti lunghi possono richiedere un’analisi separata con Terra curva o raggio efficace. Edifici, alberi, veicoli, chiome stagionali e altri oggetti in superficie sono assenti, salvo che le loro altezze siano già rappresentate nelle quote fornite. Il calcolo non interpola neppure una superficie continua tra i campioni; una campionatura più fitta attorno alle creste produce in genere una risposta più affidabile. Un risultato visibile con un margine positivo molto piccolo va quindi considerato sensibile agli errori di quota e agli ostacoli omessi, mentre un ampio margine positivo è più solido. Un margine minimo negativo identifica un’ostruzione certa nei dati forniti e il punto critico aiuta a indirizzare una verifica sul campo o una modifica del progetto. Lo stesso input deterministico restituisce sempre lo stesso output, risultando adatto a procedure documentate e confronti automatizzati.
Casi d'uso
Valuti un collegamento radio
Verifichi se il terreno campionato interseca la linea diretta tra due altezze d’antenna prima di uno studio di propagazione più completo.
Esamini un profilo topografico
Verifichi la visibilità all’altezza degli occhi o di uno strumento tra stazioni misurate e individui quella con il margine minimo.
Confronti siti candidati
Esegua test del terreno punto a punto coerenti per diverse posizioni dell’osservatore e conservi i dati sul margine con ogni risultato.
Domande frequenti
Che cosa significa visibile?
Nessun campione intermedio del terreno supera la retta tra le altezze dell’osservatore e del bersaglio. Il terreno che tocca esattamente la linea è considerato visibile.
Distanze e quote devono essere espresse in metri?
No. Va bene qualsiasi unità lineare, purché tutte le distanze, quote e altezze dell’osservatore e del bersaglio usino la stessa unità.
Il test include curvatura terrestre o rifrazione?
No. Usa un profilo rettilineo in una sezione verticale piana. Corregga prima le quote di input quando tali effetti sono rilevanti.
Tiene conto di alberi ed edifici?
Solo se le loro altezze sono già incluse nelle quote del profilo fornito. La capacità non aggiunge automaticamente gli oggetti in superficie.
Che cos’è il punto critico?
È il campione verificato con il margine minimo della linea di vista. Un valore negativo individua l’ostruzione campionata più pronunciata.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lo stesso calcolo deterministico può essere eseguito nel browser come capacità di livello A.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"terrain_profile": [
{
"distance": 0,
"elevation": 100
},
{
"distance": 500,
"elevation": 112
},
{
"distance": 1000,
"elevation": 108
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.viewshed_point_test",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_points | 10000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |