Raggruppamento di punti su griglia
Il raggruppamento di punti su griglia trasforma un lungo elenco di coordinate in un riepilogo compatto della densità senza eseguire un modello iterativo.
Esegui gratis nel browser
Scelga la dimensione della cella quadrata in gradi decimali, invii record di latitudine e longitudine e riceverà ogni cella occupata con limiti geografici, conteggio e indici originali. La griglia ha un ancoraggio globale, quindi chiamate con la stessa dimensione sono confrontabili e combinabili. L’elaborazione è deterministica, locale e rapida: nessun fornitore di mappe, accesso alla rete, seme casuale o archivio modifica il risultato.
Scelga una griglia adatta alla domanda
Una cella è una suddivisione spaziale, non la prova che tutti i suoi membri costituiscano un gruppo naturale. cell_size stabilisce altezza e larghezza in gradi decimali. Un valore maggiore produce poche celle e una panoramica; uno minore conserva più variazioni locali e genera solitamente più celle occupate. Poiché un grado di longitudine copre meno distanza fisica vicino ai poli, le celle sono quadrati angolari, non aree terrestri uguali. Consideri questo aspetto quando confronta densità a latitudini lontane. Per dati urbani inizi con una frazione moderata di grado e la regoli osservando i limiti restituiti. Se servono aree fisiche uguali in tutto il mondo, proietti prima le coordinate in un sistema adeguato. Questa capacità accetta soltanto latitudine e longitudine geografiche. L’ancoraggio è fisso a latitudine -90 e longitudine -180: la stessa dimensione crea sempre gli stessi confini, utili per report, cache, test e partizioni gestite da processi indipendenti.
Legga conteggi, limiti e appartenenza
Ogni cella comprende riga e colonna numerate da zero, limiti sud, ovest, nord ed est, un conteggio e member_indices. Gli indici corrispondono alle posizioni nell’array points inviato, a partire da zero, così Lei può recuperare i record originali senza duplicarne le etichette. Le celle sono ordinate prima da sud a nord e poi da ovest a est; i membri conservano l’ordine di ingresso. Una coordinata su un confine interno entra nella cella subito a nord o a est; latitudine 90 e longitudine 180 vengono assegnate all’ultima cella valida. point_count conferma il totale elaborato, occupied_cell_count il numero compatto di celle non vuote. Le celle vuote non sono incluse. Le celle terminali possono essere più strette quando la dimensione non divide esattamente 180 o 360. Per disegnare rettangoli o compilare report, utilizzi i limiti restituiti invece di ricalcolarli con aritmetica in virgola mobile non verificata.
Realizzi flussi di densità riproducibili
L’aggregazione su griglia è una prima analisi pratica per mappe, sensori, consegne, osservazioni sul campo e controlli di qualità. L’assegnazione è lineare e solo le celle occupate vengono poi ordinate: è indicata quando una tabella rapida conta più della ricerca di forme irregolari. Un cruscotto può colorare ogni rettangolo in base al conteggio; una pipeline può instradare i record tramite riga e colonna; i test possono confrontare versioni; un’analisi può applicare metodi costosi soltanto alle zone dense. L’algoritmo non calcola centroidi, distanze, adiacenze o soglie e non unisce celle confinanti. Non geocodifica nomi, non corregge coordinate scambiate e non interpreta i duplicati. I valori non validi vengono respinti. Per combinare lotti usi lo stesso cell_size e sommi i conteggi con riga e colonna uguali. L’uso interattivo è gratuito; una richiesta API riuscita costa $0.002. Input JSON identici producono sempre output identici, senza rete, casualità, orologio o stato condiviso.
Casi d'uso
Crei un livello di densità cartografico
Trasformi le coordinate degli eventi in rettangoli occupati e colori ogni cella secondo il conteggio.
Suddivida i record di posizione
Usi identificatori stabili di riga e colonna per instradare record vicini in partizioni ripetibili.
Esamini un grande insieme spaziale
Individui rapidamente aree dense o rade prima di analizzare per distanza i sottoinsiemi scelti.
Domande frequenti
Quanto costa una richiesta API?
Una richiesta riuscita costa $0.002. Lei può anche eseguire gratuitamente lo stesso calcolo nel browser.
La dimensione della cella è in chilometri?
No. È espressa in gradi decimali di latitudine e longitudine, quindi la larghezza fisica varia con la latitudine.
Dove è ancorata la griglia?
Le righe iniziano alla latitudine -90 e le colonne alla longitudine -180. L’ancoraggio non cambia tra richieste.
Che cosa accade a un punto sul confine?
Un confine interno assegna il punto alla cella a nord o a est. Latitudine 90 e longitudine 180 entrano nell’ultima cella valida.
Vengono restituite le celle vuote?
No. La risposta comprende solo le celle occupate, così i risultati di griglie fini restano compatti.
Trova gruppi irregolari o basati sulla distanza?
No. Conta i punti in celle angolari fisse e non unisce celle vicine né calcola distanze fra punti.
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/point-cluster-grid \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"points":[{"lat":40.7128,"lon":-74.006},{"lat":40.7306,"lon":-73.9352},{"lat":34.0522,"lon":-118.2437}],"cell_size":1}'const res = await fetch("https://api.kit.forhosting.com/geo/point-cluster-grid", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"points": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 40.7306,
"lon": -73.9352
},
{
"lat": 34.0522,
"lon": -118.2437
}
],
"cell_size": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/point-cluster-grid",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"points": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 40.7306,
"lon": -73.9352
},
{
"lat": 34.0522,
"lon": -118.2437
}
],
"cell_size": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/point-cluster-grid", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"points":[{"lat":40.7128,"lon":-74.006},{"lat":40.7306,"lon":-73.9352},{"lat":34.0522,"lon":-118.2437}],"cell_size":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"points":[{"lat":40.7128,"lon":-74.006},{"lat":40.7306,"lon":-73.9352},{"lat":34.0522,"lon":-118.2437}],"cell_size":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/point-cluster-grid", 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
{
"points": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 40.7306,
"lon": -73.9352
},
{
"lat": 34.0522,
"lon": -118.2437
}
],
"cell_size": 1
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.point_cluster_grid",
"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 | 100000 |
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. |