Punto più vicino su polilinea
Per il punto 40.73, -74.01 e un percorso di tre vertici, il luogo più vicino sulla linea è 40.7227030704, -73.9972969296, sul secondo tratto. Saprà anche a che distanza dall'inizio del percorso si trova e quanto lei ne è lontano. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Latitudine
- 40,73
- Longitudine
- -74,01
- Latitudine
- 40,7227030704
- Longitudine
- -73,9972969296
- Latitudine richiesta
- 40,73
- Longitudine richiesta
- -74,01
Trovare il punto più vicino di una polilinea a una latitudine e longitudine libere è un primitivo centrale di GIS e routing: le app cartografiche proiettano un fix GPS sull'asse di una via, gli strumenti logistici misurano quanto un veicolo sia lontano da un corridoio pianificato e gli script di rilievo indicano quanto Lei abbia già avanzato lungo un percorso. Questo strumento del punto più vicino su polilinea accetta una coordinata WGS84 di interrogazione e un elenco ordinato di vertici, li proietta in un riferimento equirettangolare locale in metri e restituisce la posizione più vicina su qualsiasi segmento finito. Ottiene la latitudine e longitudine proiettate, l'indice di segmento base zero, la posizione frazionaria su quel segmento, la distanza lungo la linea dal primo vertice, la lunghezza totale della polilinea e la distanza a terra dalla query al punto di ancoraggio.
Cosa significa il punto più vicino su polilinea per i percorsi geografici
Una polilinea è una catena ordinata di segmenti retti tra vertici. Nello spazio geografico ogni vertice è una latitudine e una longitudine sulla sfera WGS84, e ogni segmento è la corda corta tra due vertici consecutivi dopo una proiezione cartografica locale. Dato un punto di interrogazione libero che può restare fuori dal percorso, il punto più vicino sulla polilinea è la posizione su uno di quei segmenti che minimizza la distanza a terra fino alla query.
Tale posizione può cadere all'interno di un segmento, su un vertice dove due segmenti si incontrano, o a una delle estremità del percorso completo quando la query supera l'inizio o la fine. L'indice di segmento identifica quale arco detiene l'ancoraggio, contando da zero al primo vertice. La distanza lungo la linea misura quanto Lei avrebbe percorso dal primo vertice all'ancoraggio se camminasse sulla polilinea stessa, ed è diversa dalla distanza in linea retta dalla query all'ancoraggio.
Insieme questi campi rispondono sia a «dove sul percorso sono più vicino?» sia a «a che distanza lungo il percorso si trova quel luogo?» senza richiedere un grafo di routing completo né una base di rete stradale.
Quando conviene agganciare un punto a un percorso
I prodotti mobili e di flotta proiettano campioni GPS rumorosi su un corridoio pianificato affinché l'interfaccia mostri il progresso lungo un percorso piuttosto che un fix libero instabile. Le operazioni di campo e le utilities misurano quanto un equipaggio o un asset sia lontano da una condotta, un sentiero o una linea elettrica senza erigere un motore completo di topologia di rete.
I siti di contenuti e formazione che puntano al termine punto più vicino su polilinea beneficiano di uno strumento gratuito dal vivo nel browser le cui risposte coincidono con l'automazione a pagamento sullo stesso modulo puro. Preferisca vertici abbastanza densi sulle curve affinché ogni segmento resti corto dove l'approssimazione equirettangolare è più forte; per polilinee continentali di migliaia di chilometri valuti densificazione o suddivisione se conta la precisione assoluta al metro agli estremi.
Fissi i campi arrotondati nei test e otterrà ancoraggi riproducibili per mappe, laboratori LMS e worker all'edge senza ospitare il proprio stack GIS.
Casi d'uso
Ancoraggio GPS sull'asse di via o sentiero
Proietti un fix GPS libero su una polilinea di percorso ordinata e mostri lat/lon ancorati più quanto l'utente abbia avanzato lungo il tracciato.
Report di scostamento dal corridoio e di catena
Misuri la distanza a terra da asset a una condotta o allineamento di sentiero e riporti la catena (distanza lungo) nei ticket di manutenzione.
Domande frequenti
Come trovo il punto più vicino di una polilinea a un lat/lon?
Invii lat e lon di interrogazione più un array polyline di almeno due vertici {lat, lon}.
Cosa succede se la mia polilinea ha un solo punto?
Una polilinea richiede almeno due vertici per definire un segmento. Anche le coordinate fuori intervallo falliscono senza fatturazione.
Che differenza c'è tra la distanza lungo il percorso e la distanza dal percorso?
La distanza lungo il percorso è quanto camminerebbe sulla linea stessa dal primo vertice fino al punto agganciato. La distanza dal percorso è lo scarto in linea retta sul terreno tra il suo punto e quel punto agganciato.
Il punto più vicino può essere un vertice o un'estremità del percorso?
Sì. Il luogo più vicino può cadere all'interno di un tratto, su un vertice dove si incontrano due tratti, oppure all'inizio o alla fine del percorso quando il suo punto si trova oltre una delle estremità.
Quanto è preciso su percorsi molto lunghi?
Ogni tratto viene misurato in un piano locale, che rende meglio con tratti brevi. Metta abbastanza vertici sulle strade con curve e suddivida o infittisca i percorsi di migliaia di chilometri se le serve una precisione al metro.
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/nearest-point-on-polyline \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":40.7128,"lon":-74.006,"polyline":[{"lat":40.7,"lon":-74.02},{"lat":40.72,"lon":-74},{"lat":40.74,"lon":-73.98}]}'const res = await fetch("https://api.kit.forhosting.com/geo/nearest-point-on-polyline", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 40.7128,
"lon": -74.006,
"polyline": [
{
"lat": 40.7,
"lon": -74.02
},
{
"lat": 40.72,
"lon": -74
},
{
"lat": 40.74,
"lon": -73.98
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/nearest-point-on-polyline",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 40.7128,
"lon": -74.006,
"polyline": [
{
"lat": 40.7,
"lon": -74.02
},
{
"lat": 40.72,
"lon": -74
},
{
"lat": 40.74,
"lon": -73.98
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/nearest-point-on-polyline", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":40.7128,"lon":-74.006,"polyline":[{"lat":40.7,"lon":-74.02},{"lat":40.72,"lon":-74},{"lat":40.74,"lon":-73.98}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":40.7128,"lon":-74.006,"polyline":[{"lat":40.7,"lon":-74.02},{"lat":40.72,"lon":-74},{"lat":40.74,"lon":-73.98}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/nearest-point-on-polyline", 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
{
"lat": 40.7128,
"lon": -74.006,
"polyline": [
{
"lat": 40.7,
"lon": -74.02
},
{
"lat": 40.72,
"lon": -74
},
{
"lat": 40.74,
"lon": -73.98
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.nearest_point_on_polyline",
"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
Contratto di ingresso, algoritmo, forma della risposta ed errori
Internamente il solutore prende la media dei vertici della polilinea come origine equirettangolare, converte ogni vertice e la query in metri est-nord locali e, per ogni segmento finito, proietta la query sulla retta infinita e limita il parametro t all'intervallo unitario chiuso così che il candidato resti sul segmento. Tra tutti i segmenti conserva la distanza al quadrato minima e, in pareggi esatti, preferisce il segmento precedente per un contratto stabile. I duplicati consecutivi di lunghezza zero vengono saltati una volta che esiste un segmento reale. Invii un corpo JSON con lat e lon del punto di interrogazione, entrambi numeri finiti negli intervalli WGS84 abituali da meno novanta a novanta e da meno centottanta a centottanta, più polyline come array ordinato di almeno due vertici con lat e lon ciascuno. L'opzionale radius_m ha valore predefinito di sei milioni trecentosettantunomila metri per la scala della Terra media. Sono accettati alias di campo come latitude, longitude, lng, vertices, points e path affinché i payload GIS esistenti richiedano meno riscrittura. Il successo restituisce lat e lon dell'ancoraggio, query_lat e query_lon ecoati, segment_index, t, distance_along_m e distance_along_km, distance_to_m e distance_to_km, lunghezza della polilinea in entrambe le unità, vertex_count, segment_count, on_vertex, radius_m e method equirectangular_polyline. Coordinate fuori intervallo, meno di due vertici, numeri non finiti e polilinea assente sollevano invalid_input e non vengono fatturati.
Dove un'API del punto più vicino su polilinea produce valore
Le pipeline di dati che puliscono tracce importate usano l'ancoraggio più distance_along_m per riparametrizzare i punti come catena lungo un allineamento di progetto. Poiché l'implementazione è parse puro di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello né rete in uscita, e la validazione fallita non consuma il saldo.
Casi di integrazione
Pulizia di tracce e demo cartografiche
Riparametrizzi punti di traccia rumorosi come distanza lungo una polilinea di progetto in script ETL o widget educativi di mappa dal vivo.
Domande tecniche
Cos'è segment_index?
Un indice base zero dell'arco della polilinea che contiene il punto più vicino. Il segmento 0 va dal primo vertice al secondo, il 1 dal secondo al terzo, e così via.
Come si misura la distanza lungo la linea?
distance_along_m è la lunghezza a terra dal primo vertice al punto di ancoraggio seguendo i segmenti della polilinea, non la distanza in linea retta dalla query all'ancoraggio.
Quanto costa lo strumento del punto più vicino su polilinea?
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.