ruby-on-rails - 从 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
解决方案
最后,我找到了如下解决方案
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)
推荐阅读
- r - 如何在 R 中修改数据框中的现有值
- android - Google Play 商店内部测试链接不起作用
- r - 如何将分类变量从数据集转换为数值?
- matlab - for loop-Matlab 中的错误
- apache-spark - Spark SQL 限制与 Hive SQL 限制之间的区别
- google-cloud-run - 在 Cloud Code 中调试时访问 computeMetadata
- .net - 为什么在 .NET4.6 中很少有分析器规则将其有效严重性设置为抑制
- c++ - 如何正确创建合并排序函数?
- git - Git ssh url 到特定文件夹
- google-cloud-platform - 是否可以在本地模拟 Google Cloud Task?