0

我有一个简单的数据集,其中包含 2 个不同的记录坐标。

在此处输入图像描述

(dem_latitude 和 dem_longitude 是一个坐标, html_latitude 和 html_longitude 是另一个坐标)

我的主要目的是查看每对坐标之间的距离有多大。

作为澄清,我不想将距离视为一个数字,而是在地图中以易于识别的 2 个坐标(形成一对)表示。

我可以想象但我不知道如何开发的解决方案:

  1. 我可以看到每个坐标是它的伙伴,也许是通过一条线。

  2. 单击一个坐标等事件会突出显示合作伙伴坐标。

关于如何实施任何这些解决方案或任何其他建议以实现我的“主要目的”的任何建议?

如果解决方案使用 WYSIWYG CartoDB 编辑器更好:)

4

2 回答 2

2

CartoDB UI 和 CartoDB WYSIWYG 非常好且直观,但在每行使用单个几何图形时。我不是专家,但我认为在这种情况下,您需要使用开发人员的超能力,并且:

1 - 更改表架构并添加新的列距离

2 - 运行一个简单的查询以根据点信息更新该列值:

UPDATE <table_name> SET distance = (SELECT ST_Distance(
    ST_GeographyFromText(
      'SRID=4326;POINT(' || dem_longitude || ' ' || dem_latitude || ')'
    ),
    ST_GeographyFromText(
      'SRID=4326;POINT(' || html_longitude || ' ' || html_latitude || ')'
    )
  )
);

请记住,您可以使用 API 运行查询,因此很容易将此查询集成到任何向表中添加数据以保持更新的回调中。

于 2015-10-16T10:49:59.713 回答
0

受到@blat答案的启发,在处理了许多使用SRID 代码the_geom_webmercator vs the_geom的奇怪错误之后,我得到了这个解决方案:

select
  st_transform(
    st_makeline(
      st_setsrid(st_makepoint(html_longitude,html_latitude), 4326),
      st_setsrid(st_makepoint(dem_longitude,dem_latitude), 4326)
    ),
    3857 
  ) as the_geom_webmercator
from the_data_set

如果您还想显示初始点和结束点,则必须为每个坐标对创建额外的图层,然后执行以下操作:

select
  cartodb_id,
  st_transform(
    st_setsrid(st_makepoint(dem_longitude,dem_latitude), 4326),
    3857 
  ) as the_geom_webmercator
from the_data_set

结果如下所示:

在此处输入图像描述

于 2015-10-16T17:50:01.227 回答