Cartodb SQL:ST_MakeLine 转换

Cartodb SQL: ST_MakeLine Conversion

我正在使用 Cartodb 绘制一些 GPS 点,我想用线连接唯一 ID。我在写我的 SQL 时使用这个 site 作为参考。 SQL 执行没有任何错误,但我的地图没有生成。

这是我的 CSV 数据集我 运行 SQL 在:

X           Y         track_fid       track_seg_point_id    time
-87.5999    41.7083     0              0                   2/17/2018 16:10
-87.74214   41.91581    0              0                   2/17/2018 16:11
-87.6005    41.7081     0              0                   2/17/2018 16:14
-87.6584    41.8265     0              1                   2/17/2018 16:41
-87.63029   41.85842    0              1                   2/17/2018 16:59
-87.7308    41.8893     0              1                   2/17/2018 17:07
-87.59857   41.708393   0              2                   2/17/2018 17:08
-87.5995    41.7081     0              2                   2/17/2018 17:15
-87.68106   41.799088   0              2                   2/17/2018 17:47

这是我的 SQL:

SELECT 
    ST_MakeLine(the_geom_webmercator ORDER BY time ASC) AS the_geom_webmercator,
    extract(hour from time) as hour,
    track_seg_point_id AS cartodb_id


    FROM snow_plow_data

    GROUP BY
    track_seg_point_id,
    hour

这是我 SQL 的结果 table:

Hour       cartodb_id
16         0
16         1
17         1
17         2

关于为什么我的地图点没有显示为线的任何想法或建议都会很好。

如果您正在使用 BUILDER UI,您可以添加 Create Lines from Points analysis,按 time 排序并按 track_fid 字段对行进行分组(还是track_seg_point_id,不知道你要用哪个字段):

另一方面,如果您想使用 SQL 控制台进行操作。 CARTO BUILDER 现在不仅需要 cartodb_idthe_geom_webmercator,还需要 the_geom 列。因此,您需要将最后一个字段添加到您的查询中。这样的事情应该有效:

WITH lines as (
  SELECT 
      ST_MakeLine(the_geom_webmercator ORDER BY time ASC) AS the_geom_webmercator,
      ROW_NUMBER() OVER() as cartodb_id
  FROM 
      tracks
  GROUP BY
      track_seg_point_id)

SELECT
    ST_Transform(the_geom_webmercator, 4326) as the_geom,
    *
FROM
    lines