从PostgreSQL到Postgis

时间:2014-03-06 10:56:26

标签: postgresql postgis

我在这里遇到了麻烦。我在postgres中有两个表'lat'和'lon'。如何将它们转换为postgis geom(Point)并计算这些点之间的距离?我是新手,所以请帮助我:)。

1 个答案:

答案 0 :(得分:2)

一般来说,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)来获取以米为单位的距离结果,或者使用ST_Distance_SphereST_Distance_Spheroid使用geometry