我用过
RGEO_FACTORY = RGeo::Geographic.simple_mercator_factory
RGEO_FACTORY.point(lon, lat).projection
但是现在我想用sql来实现它。我在postgis数据库中有点(几何)。
我该怎么办?
答案 0 :(得分:0)
RGeo simple mercator factory docs表示它使用SRID 4326来存储点,使用SRID 3785进行投影。 PostGIS有ST_Transform。这是一个很好的tutorial,涵盖了这个主题。假设您将geom字段存储在'nodes'表中并且它在SRID 4326中,那么您可以使用ST_Transform获得与RGeo simple mercator相同的投影。使用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