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_id
和 the_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
我正在使用 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_id
和 the_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