Linea di vista sul terreno
Verifichi se una linea di vista diritta supera il terreno tra osservatore e bersaglio: sul profilo 100, 105, 120, 110 e 95 m con l'occhio a 1,7 m, il raggio è bloccato e passa 21,65 m sotto la cresta di 120 m. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
La linea di vista sul terreno è la domanda geometrica dietro collegamenti radio, poligoni di tiro, telecamere di sentiero, traiettorie di droni e semplici controlli di visibilità quando Lei dispone già di un profilo di quote lungo un percorso. Questo calcolatore di linea di vista accetta una serie ordinata di quote del suolo dall'osservatore al bersaglio, più l'altezza dell'occhio o dell'antenna sopra il primo campione e quella dell'oggetto sopra l'ultimo, e indica se il raggio retto supera ogni campione intermedio. Il modello è a Terra piatta con spaziatura orizzontale uguale tra i punti del profilo — rapido, deterministico e facile da collegare a script che hanno già estratto elevazioni da un DEM o da un rilievo. Quando il raggio scende sotto il suolo in un campione, la risposta segna il percorso bloccato e nomina il primo indice bloccante.
Come funziona il modello di linea di vista sul terreno
Immagini di percorrere una traccia rettilinea al suolo da un osservatore a un bersaglio campionando l'elevazione a passi orizzontali regolari. Il primo campione è il suolo sotto l'osservatore; l'ultimo, il suolo sotto il bersaglio; ogni valore intermedio è terreno interposto. Su uno schizzo a Terra piatta, il raggio libero è la retta che unisce quei due punti elevati.
All'indice di campione i su n campioni totali, la distanza frazionaria lungo il percorso è t uguale a i diviso n meno uno. L'altezza geometrica della linea di vista a quella frazione è eye0 più t per (eye1 meno eye0), dove eye0 e eye1 sono gli estremi elevati. Il franco al campione i è quell'altezza geometrica meno l'elevazione del terreno in i.
Se ogni franco è maggiore o uguale a zero, il percorso è libero — compreso il contatto di striscio che sfiora appena una cresta. Se un franco è strettamente negativo, il raggio è bloccato dal suolo in quel campione. Curvatura della Terra, rifrazione e vegetazione restano deliberatamente fuori ambito: fornisca un profilo che includa già quelle correzioni se il Suo standard di ingegneria le richiede, oppure usi questo strumento come nucleo geometrico puro di una pipeline più ampia.
Chi usa la verifica della linea di vista
I taccuini di rilievo e GIS spesso contengono già un elenco di campioni DEM lungo un salto a microonde pianificato, un azimut di telecamera di sentiero o un belvedere di escursione; questo calcolatore risponde alla domanda binaria libero o bloccato senza montare un intero stack di viewshed. I pianificatori radio possono elaborare a lotti migliaia di percorsi candidati in edge worker perché l'algoritmo è aritmetica pura senza rete in uscita.
Strumenti di gioco e simulazione che memorizzano mappe di altezza possono esportare una sezione 1-D e riutilizzare lo stesso contratto per controlli di visibilità di IA. La validazione fallita non consuma saldo. Tenga i profili sotto cinquemila campioni, fissi i franchi arrotondati nei test e otterrà decisioni di LOS riproducibili per kit di campo, demo LMS e pipeline di produzione senza un server GIS proprio.
Casi d'uso
Controlli di percorsi radio e microonde
Fornisca campioni DEM lungo un salto più altezze d'antenna per vedere se il raggio geometrico supera il terreno intermedio prima di un bilanciamento di collegamento completo.
Posizionamento di poligono, sentiero e telecamera
Verifichi se una cresta blocca la linea da un osservatore in piedi o su bipiede verso un bersaglio, una bandiera o un soggetto di telecamera di sentiero con un breve profilo di elevazione.
Sezioni di visibilità in simulazione e giochi
Esporti una sezione 1-D della mappa di altezza tra due entità e riutilizzi il contratto libero/bloccato per test deterministici di linea di vista di IA.
Domande frequenti
Quali unità devo usare per il profilo e le altezze?
Metri per ogni campo di elevazione e altezza. Mantenga il profilo e le altezze nello stesso sistema di unità; la matematica è coerente finché non mescola piedi e metri.
Lo strumento tiene conto della curvatura terrestre o della rifrazione?
No. Il modello è geometria a Terra piatta sul profilo che Lei fornisce.
Cosa succede se il mio profilo ha solo due punti?
È valido: il franco si controlla solo agli estremi (occhio dell'osservatore e punta del bersaglio sopra i rispettivi suoli). Con altezze non negative il percorso è sempre libero per due campioni; il terreno interposto richiede campioni intermedi.
Che cosa indica il franco minimo?
È la distanza più piccola tra la linea di vista e il suolo lungo il profilo, con il campione in cui si verifica. Un valore negativo significa che il terreno supera il raggio: nell'esempio è −21,65 m sulla cresta di 120 m, così vede quanto manca.
Un raggio che sfiora una cresta conta come libero?
Sì. La vista è libera quando il raggio resta all'altezza di ogni campione o sopra, quindi toccare esattamente una cresta conta ancora come libero. È bloccata solo quando il terreno sale strettamente sopra il raggio in qualche punto.
Strumenti correlati
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/line-of-sight \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"profile":[100,105,120,110,95],"observer_height":1.7,"target_height":0}'const res = await fetch("https://api.kit.forhosting.com/geo/line-of-sight", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"profile": [
100,
105,
120,
110,
95
],
"observer_height": 1.7,
"target_height": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/line-of-sight",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"profile": [
100,
105,
120,
110,
95
],
"observer_height": 1.7,
"target_height": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/line-of-sight", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"profile":[100,105,120,110,95],"observer_height":1.7,"target_height":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"profile":[100,105,120,110,95],"observer_height":1.7,"target_height":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/line-of-sight", 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
{
"profile": [
100,
105,
120,
110,
95
],
"observer_height": 1.7,
"target_height": 0
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.line_of_sight",
"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.
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. |
Note tecniche
Come funziona il modello di linea di vista sul terreno
L'occhio dell'osservatore (o il punto di alimentazione dell'antenna) si trova observer_height metri sopra il primo campione, e la punta del bersaglio, target_height metri sopra l'ultimo. Questo endpoint restituisce il franco minimo globale e il suo indice così Lei vede quanto è stato vicino un quasi-errore e, su un percorso bloccato, anche il primo indice bloccante con le elevazioni del terreno e della linea di vista lì. Il distance_m opzionale scala il rapporto affinché la spaziatura dei campioni appaia in metri; non cambia la decisione libero o bloccato, perché la spaziatura uguale è già assunta nelle frazioni di indice.
Contratto di ingresso, campi di risposta e validazione
Esempio: profilo cento, centocinque, centoventi, centodieci, novantacinque con altezza osservatore uno virgola sette metri, altezza bersaglio zero e distanza mille metri segnalerà bloccato se la cresta a centoventi metri perfora il raggio, o libero se le altezze sollevano il raggio sopra ogni picco. Invii un corpo JSON con profile, un array di almeno due numeri finiti con elevazioni del terreno in metri dal suolo dell'osservatore a quello del bersaglio; observer_height, un numero finito non negativo di metri di occhio o antenna sopra il primo campione; e target_height, un numero finito non negativo di metri di altezza dell'oggetto sopra l'ultimo campione. Il distance_m opzionale è la lunghezza orizzontale totale del percorso in metri quando Lei desidera sample_spacing_m nella risposta. Gli alias accettati per comodità includono terrain, elevations e samples per il profilo; observer_h, h_obs e eye_height per l'osservatore; target_h, h_tgt e object_height per il bersaglio; e distance, range_m o path_length_m per la lunghezza del percorso. Campi obbligatori assenti, valori non finiti, altezze negative, un profilo più corto di due campioni o oltre cinquemila campioni falliscono con invalid_input nominando il problema; tali fallimenti non vengono fatturati. In caso di successo il corpo include sempre clear (booleano), sample_count, observer_eye_elev e target_eye_elev (elevazioni assolute degli estremi del raggio), min_clearance_m e min_clearance_index (il campione più stretto, che può ancora essere positivo su un percorso libero) e una breve stringa di formula che riformula il test. Quando distance_m è stato fornito, distance_m e sample_spacing_m vengono ecoati e derivati. Quando clear è false, blocked_at_index, terrain_elev_at_block e los_elev_at_block identificano il primo campione in cui il franco è diventato negativo.
Dove un'API di LOS sul terreno conviene
Educatori all'aperto e responsabili di poligono possono incollare una breve serie di elevazioni da un'app del telefono e vedere se una cresta blocca la linea verso una bandiera o un bersaglio, regolando observer_height per bipiede rispetto a in piedi e target_height per una piastra d'acciaio rispetto a un picchetto a terra. Poiché l'implementazione è parse puro di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza servizio di elevazione di terze parti — Lei fornisce il profilo.
Domande tecniche
Come decide il calcolatore di linea di vista se è libero o bloccato?
Costruisce un raggio retto da profile[0]+observer_height a profile[n−1]+target_height e controlla il franco a ogni campione equispaziato. Se un campione ha los_z − terrain < 0, il percorso è bloccato; altrimenti è libero (lo striscio conta come libero).
Quanto costa lo strumento di linea di vista sul terreno?
Lo strumento del browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'input non valido non viene fatturato.