如何表示两个坐标之间的距离
How to represent distances between two coordinates
我有一个简单的数据集,按记录有 2 个不同的坐标。
(dem_latitude&dem_longitude是一个坐标,html_latitude&html_longitude是另一个坐标)
我的主要目的是看看每对坐标之间的距离有多大。
澄清一下,我不想将距离视为数字,而是在地图中用易于识别的 2 个坐标(构成一对坐标)表示。
我能想到但不知道如何开发的解决方案:
我可以看到每个坐标是它的伙伴,也许通过一条线。
点击一个坐标等事件使伙伴坐标高亮
关于如何实施任何此解决方案的任何建议或实现我的 "main purpose" 的任何其他建议?
如果解决方案是使用所见即所得的 CartoDB 编辑器更好:)
CartoDB UI 和 CartoDB 所见即所得非常好且直观,但是当每行处理一个几何图形时。我不是专家,但我认为在这种情况下您需要使用您的开发人员超能力并且:
1 - 更改 table 架构并添加新列 distance
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 运行 查询,因此可以轻松地将此查询集成到任何向 table 添加数据以保持更新的回调中。
受@blat 的 启发,并在使用SRID 代码 和the_geom_webmercator[ 处理了很多奇怪的错误之后=26=] 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
结果如下所示:
我有一个简单的数据集,按记录有 2 个不同的坐标。
(dem_latitude&dem_longitude是一个坐标,html_latitude&html_longitude是另一个坐标)
我的主要目的是看看每对坐标之间的距离有多大。
澄清一下,我不想将距离视为数字,而是在地图中用易于识别的 2 个坐标(构成一对坐标)表示。
我能想到但不知道如何开发的解决方案:
我可以看到每个坐标是它的伙伴,也许通过一条线。
点击一个坐标等事件使伙伴坐标高亮
关于如何实施任何此解决方案的任何建议或实现我的 "main purpose" 的任何其他建议?
如果解决方案是使用所见即所得的 CartoDB 编辑器更好:)
CartoDB UI 和 CartoDB 所见即所得非常好且直观,但是当每行处理一个几何图形时。我不是专家,但我认为在这种情况下您需要使用您的开发人员超能力并且:
1 - 更改 table 架构并添加新列 distance
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 运行 查询,因此可以轻松地将此查询集成到任何向 table 添加数据以保持更新的回调中。
受@blat 的
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
结果如下所示: