Suite

Créer des liens entre des points sur CartoDB

Créer des liens entre des points sur CartoDB


J'ai deux tables sur CartoDB.

Le premier (avec le nom "points_table") a 4 colonnes.

  1. Nom du pays (nom : pays)
  2. Lat (nom : lat)
  3. Long (nom : long)
  4. the_geom (lat + long)

Le second (avec le nom "links_table") a 2 colonnes.

  1. Nom du pays A (nom : pays1)
  2. Nom du pays B (nom : pays2)

Le second démontre les liens entre deux pays. Je suis nouveau sur CartoDB. J'ai trouvé comment visualiser le premier tableau, mais je ne trouve toujours pas comment créer des liens de courbe entre les pays à partir du tableau 2.

Éditer

SELECTIONNER 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

Le résultat des vues SQL contient la colonne cartodb_id, une colonne avec les deux pays et un "the_geom_webmercator" avec le contenu comme "ligne". Si je survole, j'ai le titre "linestring".

Cependant, lorsque j'essaie la vue MAP, le site Web s'affiche sur « Chargement des tuiles… » et au bout de quelques secondes, j'ai un problème de connexion Internet. Des idées comment je peux le résoudre?


Voyez d'abord si la jointure fonctionne…

SÉLECTIONNER l.pays || ' - ' || 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;

Espérons que vous obtiendrez un nombre fini de résultats (en fait, exactement le même nombre de résultats que votre table de liens). Si ce n'est pas le cas, vos clés de pays ne correspondent peut-être pas réellement.

Pour générer les lignes de connexion pour tous les liens, vous aurez besoin de quelque chose comme ceci :

SELECT 10000 * a.cartodb_id + b.cartodb_id AS cartodb_id, l.country || ' - ' || 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;

La partie magique est en bas, où vous joignez deux fois la table des points aux liens, en utilisant des colonnes différentes, pour obtenir les points d'extrémité des liens.

L'autre partie magique est le grand nid de fonctions, qui crée une simple ligne point à point, puis bascule en géographie, segmente pour obtenir un grand itinéraire circulaire, retourne à la géométrie et reprojette vers Mercator pour la cartographie dans CartoDB.


Voir la vidéo: Easy Map Visualization - CartoDB