我有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的结果?
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
(注意:我不确定按语句顺序转换为地理位置的价值)。