postgresql - 在 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;
谁能看到我的查询有什么问题?
解决方案
您可以创建两列,例如双精度类型的 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
推荐阅读
- java - 如何在一周中的特定日期和时间分别创建多个预定通知
- python - 根据周和年获取给定周的所有日期?
- entity-framework - 使用 Cosmos Document db 的最佳方式是什么?EF Core 与 Cosmos SDK
- shell - YYYYMMDD 格式的 Korn Shell 增量日期
- node.js - 我必须使用谷歌云存储进行批量注释吗?
- c++ - 如何从函数中获取对象?
- r - 在 R 中下载文件时是否可以使用 GUI?
- c# - 使用 is 关键字检查可空对象是否不为空
- react-native - React-Native-Admob 插页式广告和奖励广告未按预期显示
- docker - 如何使用容器入口点参数调用 gcloud 计算实例 create-with-container