Estoy tratando de dibujar un vuelo mapa en CartoDB. Mi punto de partida es una sola lat long point. Vamos a pretender que es este:
ST_GeomFromText('POINT(-71.060316 48.432044)', 4326)
Y quiero dibujar líneas entre ese punto y los puntos en mi CartoDB tabla. Tuve un tiempo difícil incluso conseguir comenzado, pero alguien me señaló a este mapa:
http://bl.ocks.org/andrewxhill/raw/8406976/
Lo que es más elegante que lo que yo necesito (no tengo necesidad de volver a dibujar cada vez que haga clic en algún lugar), sino que incluye la consulta básica:
SELECT ST_Transform(ST_Segmentize(ST_MakeLine(
ST_Transform(the_geom, 953027),
ST_Transform(
(SELECT ST_PointOnSurface(the_geom)
FROM lower_48_zips
WHERE cartodb_id = "+data.cartodb_id+"), 953027)), 100000), 4326)
the_geom FROM us_ski_areas WHERE mindist < 1000
Alguien también me señaló hacia un ejemplo que utiliza una consulta similar:
UPDATE experimental.airroutes
SET the_geom =
(SELECT ST_Transform(ST_Segmentize(ST_MakeLine(
ST_Transform(a.the_geom, 953027),
ST_Transform(b.the_geom, 953027)
), 100000 ), 4326 )
FROM experimental.airports a, experimental.airports b
WHERE a.id = airroutes.source_id
AND b.id = airroutes.dest_id
);
Pero estoy teniendo problemas para tirar de cualquiera de estos aparte. Estoy decentemente versado en MySQL pero totalmente nuevo a PostGIS y me encantaría ayudar a tomar distancia de lo que está sucediendo aquí y sustitución de source_id con un punto específico.
Pensé que podría hacer algo como
UPDATE my_table
SET the_geom =
(SELECT ST_Transform(ST_Segmentize(ST_MakeLine(
ST_Transform(my_table.the_geom, 953027),
ST_Transform(ST_GeomFromText('POINT(-71.060316 48.432044)', 4326), 953027)
), 100000 ), 4326 )
FROM my_table
);
Pero sé que tengo una cláusula "where" y ni siquiera estoy seguro de lo que debe ser.