首页 > 解决方案 > 从 ESPG 4326 转换为 ESPG 3758

问题描述

我在我的 rails 应用程序项目中转换几何数据时遇到问题。目前,我有一个使用 SRID 4326 存储数据的数据库,我需要将其移动到另一个使用 SRID 3758 的数据库。我正在使用 RGeo 库,但我不知道如何将其转换为不同的 SRID。

irb(main):031:0> Location.find_by(zip_code: "02020406").geom
#<RGeo::Geos::CAPIPointImpl:0xf9b0 "POINT (103.1408295 13.09251827)">
irb(main):031:0> Location.find_by(zip_code: "02020406").geom.srid
4326

irb(main):031:0> Location.find_by(zip_code: "02020406").geom
#<RGeo::Geos::CAPIMultiPointImpl:0xf690 "MULTIPOINT ((11481584.619935852 1470304.24217379))">
irb(main):031:0> Location.find_by(zip_code: "02020406").geom.srid
3758

标签: ruby-on-railsrgeo

解决方案


最后,我找到了如下解决方案

gem "rgeo-proj4"

我的实现

geom = Location.find_by(zip_code: "02020406").geom
factory_3758 = RGeo::Geographic.projected_factory(projection_proj4:"EPSG:3857", projection_srid: 3857)                                                                                                                                                                                                                        
geom_3857 = factory_3758.point(geom.x, geom.y)                                                                                                               
RGeo::Feature.cast(geom_3857.projection, type: RGeo::Feature::MultiPoint)

推荐阅读