我有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
但是我不知道结果是否以公里为单位...如果不是...我如何以公里为单位获得结果?
答案 0 :(得分: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
(注意:我不确定按语句顺序对地理进行投射的价值)。