kee*_*kee 2 postgis geospatial
我的表中有纬度/经度点,我想计算它们之间的距离(以英里为单位)。
显然,只是调用 ST_Distance (point1, point2) 会返回我不想要的东西(同样,point1 和 point2 位于经纬度)。我被建议使用 ST_Transform,它允许我进行坐标参考系统转换。但是我对这个领域很陌生,我迷路了。请赐教(希望有一些例子)
一种方法是选择适合您感兴趣区域的坐标系。其中一些以英尺为单位,另一些以米为单位。在这两种情况下,您都需要将找到的距离转换为英里。
示例,其中 xxxx 是使用米的坐标系,例如 UTM:
select
st_distance(
st_transform(point1.geom, 4326, xxxx),
st_transform(point2.geom, 4326, xxxx)
) * 0.000621371192 as dist_miles;
Run Code Online (Sandbox Code Playgroud)
由于您提到您是新手,因此选择合适的坐标系可能有些困难。然后更容易恢复使用geography数据类型计算距离,即测量圆形地球上的距离,而不是它的平面表示。结果也以米为单位,需要转换为英里。
select
st_distance(
point1.geom::geography,
point2.geom::geography
) * 0.000621371192 as dist_miles;
Run Code Online (Sandbox Code Playgroud)