0

我用过

RGEO_FACTORY = RGeo::Geographic.simple_mercator_factory
RGEO_FACTORY.point(lon, lat).projection

但是现在我想用sql来实现它。我在 postgis 数据库中有点(几何)。

我应该怎么做 ?

4

1 回答 1

0

RGeo 简单的墨卡托工厂文档声明它使用 SRID 4326 存储点,使用 SRID 3785 进行投影。PostGIS 有ST_Transform。这是一个涵盖该主题的不错的教程。假设您将 geom 字段存储在“nodes”表中,并且它位于 SRID 4326 中,那么您可以使用 ST_Transform 获得与 RGeo 简单墨卡托相同的投影。使用 ST_SRID 了解您的 geom 字段的 srid:

select geom, ST_SRID(geom) from nodes limit 1;
                        geom                        | st_srid 
----------------------------------------------------+---------
 0101000020E61000004A97FE25A9523E40B6B9D683EEE74D40 |    4326

select ST_Transform(geom, 3785) from nodes limit 1;
                    st_transform                    
----------------------------------------------------
 0101000020C90E0000FE8D2A88D4C04941A418472F1AE25F41

如果您尝试将 geom 转换为相同的 srid,它不会改变:

select ST_Transform(geom, 4326) from nodes limit 1;
                    st_transform                    
----------------------------------------------------
 0101000020E61000004A97FE25A9523E40B6B9D683EEE74D40
于 2013-03-12T16:13:21.107 回答