在Postgis获取距离公里

问题描述 投票:0回答:1

我有2张桌子:城市和河流。

City: ID, city_name, the_geom (poin)
River: id, name, the_geom (multiline)

对于每条河流,我想知道距离最远的城市及其距离。

例如......我有查询

Select city1.city_name, st_distance(city1.the_geom, river1.the_geom)
from city city1, river river1
where 
river1.name = 'Albany' 
order by st_distance(city1.the_geom, river1.the_geom) desc
limit 1

在这种情况下,我得到了距离奥尔巴尼河最远的城市。这是查询的最佳方式吗?

我得到这个结果:

City_name; distance
"Topeka";  13.2534798131185

但我不知道结果是否以km为单位......如果不是......我怎样才能得到km的结果?

sql gis postgis
1个回答
1
投票

st_distance返回的单位是空间参考单位 - 假设您使用纬度/经度(EPSG 4326),这些单位将是十进制度数。

您有两种选择 - 以米为单位投影到合适的坐标系,或使用地理类型。

以下是使用地理位置的查询:

SELECT city1.city_name, 

 st_distance(city1.the_geom::geography, river1.the_geom::geography) /1000 -- convert m to km

  FROM city city1, river river1
  WHERE
         river1.name = 'Albany' 
  ORDER by st_distance(city1.the_geom::geography, river1.the_geom::geography) desc 
  LIMIT 1

(注意:我不确定按语句顺序转换为地理位置的价值)。

© www.soinside.com 2019 - 2024. All rights reserved.