我这里有麻烦了。我在postgres有两张桌子,列“lat”和“lon”。如何将它们转换为后地理(点),并计算这些点之间的距离?我是新手,所以请帮帮我:)
发布于 2014-03-06 20:57:44
一般来说,see this answer (甚至this one)。
-- Add a spatial column with EPSG:4326 (WGS84)
ALTER TABLE some_table ADD COLUMN geom geometry(Point, 4326);
-- Use coordinates to create point geometries
UPDATE some_table SET
geom = ST_SetSRID(ST_MakePoint(lon, lat), 4326);
然后,要计算每个点到另一个点的距离,请使用如下所示:
SELECT t1.gid, t2.gid, ST_Distance(t1.geom, t2.geom)
FROM some_table t1, some_table t2
WHERE t1.gid > t2.gid;
要知道距离是笛卡儿的,基于程度,所以实际上是没有意义的.考虑使用geography
类型(而不是geometry
)来获得以米为单位的距离结果,或者在geometry
中使用ST_Distance_Sphere
或ST_Distance_Spheroid
。
https://stackoverflow.com/questions/22222359
复制相似问题