0
RGEO_FACTORY = RGeo::Geographic.simple_mercator_factory
RGEO_FACTORY.point(lon, lat).projection
但現在我想用SQL來實現它。我在postgis數據庫中有一個點(幾何)。
我該怎麼辦?
RGEO_FACTORY = RGeo::Geographic.simple_mercator_factory
RGEO_FACTORY.point(lon, lat).projection
但現在我想用SQL來實現它。我在postgis數據庫中有一個點(幾何)。
我該怎麼辦?
RGeo simple mercator factory docs表明它使用SRID 4326來存儲投影的點和SRID 3785。 PostGIS有ST_Transform。這裏有一個很好的tutorial涵蓋了這個話題。假設您將geom字段存儲在'nodes'表中,並且它位於SRID 4326中,那麼可以使用ST_Transform獲得與RGeo簡單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