Rasterbasierte Punktgruppierung
Die rasterbasierte Punktgruppierung verwandelt eine lange Koordinatenliste ohne iteratives Modell in eine kompakte Dichteübersicht.
Im Browser ausführen – kostenlos
Wählen Sie die quadratische Zellengröße in Dezimalgrad, senden Sie Breiten- und Längengrade und erhalten Sie jede belegte Zelle mit geografischen Grenzen, Anzahl und ursprünglichen Indizes. Das Raster ist global verankert, sodass Aufrufe mit gleicher Größe verglichen oder zusammengeführt werden können. Die Verarbeitung ist deterministisch, lokal und schnell: Weder Kartenanbieter noch Netzwerkabfrage, Zufallswert oder gespeicherter Datensatz beeinflussen das Ergebnis.
Wählen Sie die Zellengröße passend zur Fragestellung
Eine Rastergruppe ist eine räumliche Einteilung und keine Aussage darüber, ob ihre Mitglieder eine natürliche Gemeinschaft bilden. cell_size legt Höhe und Breite in Dezimalgrad fest. Ein größerer Wert erzeugt wenige, breite Zellen für Übersichten; ein kleinerer Wert bewahrt lokale Unterschiede und führt meist zu mehr belegten Zellen. Da ein Längengrad nahe den Polen eine geringere reale Strecke abdeckt, sind die Zellen Winkelquadrate und keine flächengleichen Quadrate am Boden. Berücksichtigen Sie dies beim Vergleich weit auseinanderliegender Breitengrade. Beginnen Sie für Stadtdaten mit einem angemessenen Bruchteil eines Grades und passen Sie ihn anhand der ausgegebenen Grenzen an. Wenn weltweit gleiche Flächen erforderlich sind, projizieren Sie die Koordinaten zuerst in ein geeignetes System. Diese Funktion verarbeitet ausschließlich gewöhnliche geografische Breiten- und Längengrade. Ihr Anker liegt fest bei Breitengrad -90 und Längengrad -180. Daher erzeugt dieselbe Größe immer dieselben Grenzen und ermöglicht reproduzierbare Berichte, Cache-Schlüssel, Tests und Partitionen über unabhängige Prozesse hinweg.
Lesen Sie Anzahlen, Grenzen und Mitgliedschaften
Jede Zelle enthält eine bei null beginnende Zeilen- und Spaltennummer, Süd-, West-, Nord- und Ostgrenze, count sowie member_indices. Diese Indizes beziehen sich ab null auf das übergebene points-Array. So können Sie die Quelldatensätze wiederfinden, ohne Beschriftungen in die Antwort zu kopieren. Zellen werden zuerst von Süden nach Norden und danach von Westen nach Osten sortiert; Mitglieder behalten ihre Eingabereihenfolge. Eine Koordinate auf einer inneren Grenze gelangt in die unmittelbar nördliche oder östliche Zelle. Breitengrad 90 und Längengrad 180 werden der letzten gültigen Zeile beziehungsweise Spalte zugeordnet. point_count bestätigt die verarbeitete Menge, occupied_cell_count die kompakte Zahl nicht leerer Zellen. Leere Zellen werden ausgelassen. Wenn die Größe 180 oder 360 nicht genau teilt, kann die letzte Zelle im Norden oder Osten schmaler sein. Verwenden Sie beim Zeichnen oder Beschriften die ausgegebenen Grenzen, statt sie mit ungeprüfter Gleitkommaarithmetik neu zu berechnen.
Erstellen Sie reproduzierbare Dichteabläufe
Rasteraggregation eignet sich als erster Durchlauf für Karten, Sensordaten, Lieferereignisse, Feldbeobachtungen und Qualitätskontrollen. Die Zuordnung ist linear; anschließend werden nur belegte Zellen stabil sortiert. Das ist ideal, wenn eine schnelle Dichtetabelle wichtiger ist als unregelmäßige Gruppenformen. Ein Dashboard kann Rechtecke nach Anzahl einfärben, eine Pipeline Datensätze über Zeile und Spalte verteilen, ein Test Zellen zwischen Versionen vergleichen und eine Analyse teure Verfahren auf dichte Gebiete beschränken. Der Algorithmus berechnet keine Schwerpunkte, Abstände, Nachbarschaften oder Schwellenwerte und verbindet keine angrenzenden Zellen. Er geokodiert keine Namen, berichtigt keine vertauschten Koordinaten, normalisiert keine Längengrade und bewertet keine Duplikate. Ungültige Werte werden abgelehnt. Nutzen Sie für kombinierbare Stapel dasselbe cell_size und addieren Sie Anzahlen gleicher Zeilen und Spalten. Die Browsernutzung ist kostenlos; ein erfolgreicher API-Aufruf kostet $0.002. Identische JSON-Eingaben liefern ohne Netzwerk, Zufall, Uhrzeit oder veränderlichen gemeinsamen Zustand stets identische Antworten.
Anwendungsfälle
Erstellen Sie eine Kartendichteebene
Wandeln Sie Ereigniskoordinaten in belegte Rechtecke um und färben Sie jede Zelle nach ihrer Anzahl ein.
Partitionieren Sie Standortdatensätze
Verteilen Sie nahe Datensätze mit stabilen Zeilen- und Spaltenkennungen auf reproduzierbare Partitionen.
Prüfen Sie große räumliche Datenmengen
Finden Sie schnell dichte und dünne Bereiche, bevor Sie ausgewählte Teilmengen abstandsbasiert analysieren.
Häufige Fragen
Was kostet eine API-Anfrage?
Eine erfolgreiche API-Anfrage kostet $0.002. Dieselbe deterministische Berechnung können Sie im Browser kostenlos ausführen.
Wird die Zellengröße in Kilometern angegeben?
Nein. Sie wird für Breiten- und Längengrad in Dezimalgrad angegeben; die reale Breite hängt daher vom Breitengrad ab.
Wo ist das Raster verankert?
Zeilen beginnen bei Breitengrad -90 und Spalten bei Längengrad -180. Der Anker bleibt bei allen Anfragen gleich.
Was geschieht mit einem Punkt auf einer Grenze?
An einer inneren Grenze gelangt er in die nördliche oder östliche Zelle. 90 beziehungsweise 180 kommen in die letzte gültige Zelle.
Werden leere Zellen ausgegeben?
Nein. Nur belegte Zellen erscheinen, damit Ergebnisse feiner Raster kompakt bleiben.
Erkennt das Werkzeug unregelmäßige oder abstandsbasierte Gruppen?
Nein. Es zählt Punkte in festen Winkelzellen, verbindet keine Nachbarzellen und berechnet keine Punktabstände.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"points": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 40.7306,
"lon": -73.9352
},
{
"lat": 34.0522,
"lon": -118.2437
}
],
"cell_size": 1
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.point_cluster_grid",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_points | 100000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |