首页 > 解决方案 > 在 PostGIS / PostgreSQL 中使用 st_transform 从质心坐标创建新列

问题描述

我有几何数据,我试图将其转换为 lon lat 并存储在新列中。我创建了一个名为“坐标”的新列并编写了以下查询:

UPDATE places_centroids
SET coordinates = st_y(st_transform(new_centroid, 4326)) AS lat,
st_x(st_transform(new_centroid, 4326)) AS lon;

但它返回: ERROR: ERROR: syntax error at or near LINE 2: ...coordinates = st_y(st_transform(new_centroid, 4326)) AS lat,

但是,当我使用 select 语句编写查询时,它工作正常:

SELECT st_y(st_transform(new_centroid, 4326)) AS lat,
         st_x(st_transform(new_centroid, 4326)) AS lon
FROM places_centroids;

谁能看到我的查询有什么问题?

标签: postgresqlsql-updatepostgis

解决方案


您可以创建两列,例如双精度类型的 lat 和 lng 并执行以下操作:

UPDATE places_centroids 
SET lat = st_y(st_transform(new_centroid, 4326)),
lng= st_x(st_transform(new_centroid, 4326));

或将坐标定义为原生点类型:

UPDATE places_centroids
SET coordinates = point(st_y(st_transform(new_centroid, 4326)),
st_x(st_transform(new_centroid, 4326)));

我个人更喜欢存储在两列中。

最好的问候,
Bjarni


推荐阅读