Mehr

Erstellen Sie Verknüpfungen zwischen Punkten auf CartoDB

Erstellen Sie Verknüpfungen zwischen Punkten auf CartoDB


Ich habe zwei Tabellen auf CartoDB.

Der erste (mit dem Namen "points_table") hat 4 Spalten.

  1. Ländername (Name: Land)
  2. Lat (Name: Lat)
  3. lang (Name: lang)
  4. the_geom (lat + lang)

Der zweite (mit dem Namen "links_table") hat 2 Spalten.

  1. Ländername A (Name: Land1)
  2. Ländername B (Name: Land2)

Die zweite zeigt Verbindungen zwischen zwei Ländern. Ich bin neu bei CartoDB. Ich habe gefunden, wie man die erste Tabelle visualisiert, aber ich kann immer noch nicht finden, wie ich aus Tabelle 2 Kurvenverbindungen zwischen Ländern erstellen kann.

Bearbeiten

SELECT a.cartodb_id AS cartodb_id, l.country1 || ' - ' || l.country2 AS link, ST_Transform( Geometry( ST_Segmentize( Geography( ST_SetSRID( ST_MakeLine(a.the_geom, b.the_geom), 4326)), 100000)), 3857) AS the_geom_webmercator FROM points_table a JOIN links_table l ON a.country = l.country1 JOIN points_table b ON b.country = l.country2

Das Ergebnis von SQL Views enthält die Spalte cartodb_id, eine Spalte mit den beiden Ländern und einen "the_geom_webmercator" mit Inhalt als "line". Wenn ich mit der Maus darauf fahre, habe ich den Titel "Linestring".

Wenn ich jedoch die MAP-Ansicht versuche, stapelt sich die Website auf "Kacheln werden geladen…" und nach ein paar Sekunden habe ich ein Problem mit der Internetverbindung. Irgendwelche Ideen, wie ich es lösen kann?


Sehen Sie zuerst, ob die Verbindung funktioniert…

WÄHLEN Sie l.Land || ' - ' || l.country2 AS link, FROM points_table a JOIN links_table l ON a.country = l.country JOIN points_table b ON b.country = l.country2;

Hoffentlich erhalten Sie eine endliche Anzahl von Ergebnissen (eigentlich genau die gleiche Anzahl von Ergebnissen wie Ihre Link-Tabelle). Wenn nicht, stimmen Ihre Länderschlüssel möglicherweise nicht überein.

Um die Verbindungslinien für alle Links zu generieren, benötigen Sie etwa Folgendes:

SELECT 10000 * a.cartodb_id + b.cartodb_id AS cartodb_id, l.Land || ' - ' || l.country2 AS-Link, ST_Transform( Geometry( ST_Segmentize( Geography( ST_SetSRID( ST_MakeLine(ST_MakePoint(a.long, a.lat), ST_MakePoint(b.long, b.lat)), 4326)), 100000)), 3857 ) AS the_geom_webmercator FROM points_table a JOIN links_table l ON a.country = l.country JOIN points_table b ON b.country = l.country2;

Der magische Teil ist der untere Teil, wo Sie die Punktetabelle zweimal mit verschiedenen Spalten mit den Links verbinden, um die Endpunkte der Links zu erhalten.

Der andere magische Teil ist das große Nest von Funktionen, die eine einfache Punkt-zu-Punkt-Linie erstellen, dann in die Geographie springen, segmentieren, um eine Großkreisroute zu erhalten, zurück zur Geometrie springen und zum Mapping in CartoDB auf Mercator reprojizieren.


Schau das Video: Carto: CartoCSS