2 votos

Carto Editor SQL

Estoy cartografiando miles de conciertos de Iron Maiden en un Carto mapa utilizando Carto Editor . Estaba buscando soluciones para mostrar varias entradas en el mismo punto y me encontré con la solución de "apilar fichas". compartido por Carto .

Utilizando la respuesta a esta pregunta relacionada en Stack Overflow He aplicado el SQL y consigo que se muestre y se ve muy bien.

Sin embargo, me gustaría reordenar las fichas en las columnas para que se muestren en orden de cuándo ocurrieron los conciertos, de modo que los conciertos más recientes estarían en la parte superior de las pilas, los más antiguos en la parte inferior.

Mi mapa se encuentra aquí .

Esta es mi consulta SQL:

WITH 

data as (

SELECT 

cartodb_id, 

ST_SnapToGrid(the_geom,.5) as the_geom

FROM iron_maiden

),

m AS (

SELECT array_agg(cartodb_id) id_list, the_geom, ST_Y(the_geom) y 

FROM data 

GROUP BY the_geom

ORDER BY y DESC

),

f AS (

SELECT  generate_series(1, array_length(id_list,1)) p, unnest(id_list) cartodb_id, the_geom 

FROM m

)

SELECT      

ST_Transform(ST_Translate(

  f.the_geom,

  0,

  f.p*.22

),3857) the_geom_webmercator, 

f.cartodb_id, 

q.Header,
q.Date,
q.Tour,
q.City,
q.Country,
q.Venue,
q.Long,
q.Lat,
q.Wikipedia,
q.Official_website,
q.Footer

FROM f, iron_maiden q

WHERE f.cartodb_id = q.cartodb_id 

Disculpe si es una pregunta sencilla, pero no soy programador.

1voto

Murtuza Vadharia Puntos 655

Puede añadir ORDER BY q.Date al final de la consulta, y ASC o DESC en función de su elección. Añadir esto a la subconsulta también debería funcionar.

1voto

BrianA Puntos 1106

Su columna de fecha es una cadena como "31 de marzo de 1985", por lo que no se puede ordenar directamente. También he sustituido el array_agg/unnest/generate_series por la función de ventana row_number() OVER (). Prueba esta consulta:

WITH snap as (SELECT
    cartodb_id,
    Date,
    ST_SnapToGrid(the_geom, 0.5) as the_geom
    FROM iron_maiden),
sort as (SELECT
    cartodb_id, 
    row_number() OVER (PARTITION BY the_geom ORDER BY cast(Date as date)) as p,
    the_geom
    FROM snap)
SELECT
    q.cartodb_id, 
    q.Header,
    q.Date,
    q.Tour,
    q.City,
    q.Country,
    q.Venue,
    q.Long,
    q.Lat,
    q.Wikipedia,
    q.Official_website,
    q.Footer,
    ST_Transform(ST_Translate(s.the_geom, 0, s.p * 0.22), 3857) the_geom_webmercator
    FROM iron_maiden q, sort s
    WHERE s.cartodb_id = q.cartodb_id
    ORDER BY s.p;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X