postgresql - 从 PostGIS 点获取纬度/经度

标签 postgresql postgis

我有一个 PostGIS 表,其中包含 SRID 3857 数据的几何字段。我想将几何的质心作为纬度/经度坐标,但似乎无法正确转换值:

SELECT 
ST_X(ST_CENTROID(geometry)),
ST_Y(ST_CENTROID(geometry)),
ST_X(ST_TRANSFORM(ST_CENTROID(geometry),3857)) AS LONG, 
ST_Y(ST_CENTROID(ST_TRANSFORM(geometry,3857))) AS LAT
FROM my_table

=> -8220067.19453888107, 4997528.08142071683, -8220067.19453888107, 4997528.08142071683

最佳答案

您正在使用 3857 projection (伪墨卡托)不是以经/纬度为单位,而是以米为单位。

要获取经/纬度值,您需要使用 4326 projection :

db=# SELECT
ST_X(ST_Centroid(geometry)),
ST_Y(ST_Centroid(geometry)),
ST_X(ST_Centroid(ST_Transform(geometry, 4326))) AS long,
ST_Y(ST_Centroid(ST_Transform(geometry, 4326))) AS lat
FROM my_table;
       st_x        |       st_y       |       long        |       lat
-------------------+------------------+-------------------+------------------
 -8220067.19453888 | 4997528.08142072 | -73.8421199734375 | 40.8994922746749
(1 row)

关于postgresql - 从 PostGIS 点获取纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56720419/

相关文章:

sql - 具有字符串路径的分层数据 - 查询节点,获取所有父节点及其节点的第一级

postgresql - PSQL 正在推断模式,但如何推断?

python - Postgres 数据库安全 : what to store in environment variables?

gis - 使用 PGRouting 基于 GTFS 的交通规划

sql-server-2008 - 插入地理 : The specified input does not represent a valid geography instance because it exceeds a single hemisphere

Postgresql:无法访问文件 « $libdir/postgis-2.1 » 没有这样的文件或目录

postgresql - Postgres 跨多个磁盘分布数据

postgresql - 如何以半自动方式在 SQLAlchemy for PostgreSQL 中迁移新的 Python Enum 成员?

sql - 许多相交的 ST_ExteriorRing(圆)上的 ST_Union()与 ST_Node(ST_Collect())

sequelize.js - 使用 Sequelize ORM 插入/更新 PostGis 几何图形