Ruby on rails 通过偏移实现多边形列
我正在尝试将我的Ruby on rails 通过偏移实现多边形列,ruby-on-rails,postgresql,migration,polygon,postgis,Ruby On Rails,Postgresql,Migration,Polygon,Postgis,我正在尝试将我的多边形列类型更改为多多边形列类型 我的代码很简单 change_column :messages, :area_shape, :multipolygon, srid: 3785 但是Postgres不知道这种类型。我想我在我的PostGIS配置中遗漏了一些东西,但我看不到 这就是我的错误: rake aborted! PG::UndefinedObject: ERROR: type "multipolygon" does not exist : ALTER TABLE "me
多边形
列类型更改为多多边形
列类型
我的代码很简单
change_column :messages, :area_shape, :multipolygon, srid: 3785
但是Postgres
不知道这种类型。我想我在我的PostGIS
配置中遗漏了一些东西,但我看不到
这就是我的错误:
rake aborted!
PG::UndefinedObject: ERROR: type "multipolygon" does not exist
: ALTER TABLE "messages" ALTER COLUMN "area_shape" TYPE multipolygon
这就是我如何将我的区域\u形状
创建为多边形
类型的方法:
add_column :messages, :area_shape, :polygon, srid: 3785
谢谢您的帮助。我不知道
RGeo
如何尝试实现change\u column
(是否有相关文档?)
如果您可以从以下位置直接访问PostgreSQL,请使用此DDL:
ALTER TABLE my_table
ALTER COLUMN area_shape TYPE geometry(MultiPolygon,3785)
USING ST_Multi(area_shape);
最后,我不得不删除并重新创建我的专栏:
remove_column :messages, :area_shape
add_column :messages, :area_shape, :multi_polygon, srid: 3785
我想我现在可以理解为什么不可能了。事实上,在不丢失数据逻辑的情况下,将多边形
类型更改为多多边形
类型似乎很困难
如果您真的需要更改类型,您可以使用@Mike(手动)所说的内容,创建一个小方法将多边形
转换为多多边形
,但在我看来这并不安全。
提示:一个
multi_polygon
类型是一个可枚举的
,意思是multi_polygon
接受数组
类型。它工作得非常好谢谢!顺便说一句,我确实需要使用迁移,因为我可以在我的开发环境中这样做,但对于生产环境,我不能。我会尝试找到这个迁移的解决方案,如果我找到了,我会在这里添加解决方案。我担心,你把postgres自己的多边形
类型(第一个链接)和postgis的几何体
类型(第二个链接)弄混了。有同样的问题。奇怪的是,它说类型不存在,而不是说它无法转换。