我有一个简单的DataSet,它有2个不同的坐标记录。
(dem_latitude& dem_longitude是一个坐标,html_latitude& html_longitude是另一个坐标)
我的主要目的是看每对坐标之间的距离有多大。
作为澄清,我不想将距离看作数字,而是在地图中用2坐标(形成一对)来表示。
解决方案我可以想象,但我不知道如何发展:
我可以看到每个坐标是它的伙伴,也许是通过一条线。
点击一个坐标等事件会使合作伙伴坐标突出显示。
有关如何实施任何此解决方案或任何其他建议以实现我的主要目的的任何建议"?
如果解决方案更好地使用WYSIWYG CartoDB编辑器:)
答案 0 :(得分: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运行查询,因此很容易将此查询集成到任何回调中,该回调会将数据添加到表中以保持更新。
答案 1 :(得分:0)
受到@ blat answer的启发,以及使用 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
结果如下: