【问题标题】:From PostgreSQL to Postgis从 PostgreSQL 到 Postgis
【发布时间】:2014-03-06 10:56:26
【问题描述】:

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

【问题讨论】:

标签: postgresql postgis


【解决方案1】:

一般来说,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_Spheroidgeometry

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2013-09-29
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多