source

Rails 5 커스텀 데이터베이스 타입GIS + Maria의 경우DB

gigabyte 2022. 10. 20. 21:54
반응형

Rails 5 커스텀 데이터베이스 타입GIS + Maria의 경우DB

프로젝트에서 GIS 작업을 10번째로 해야 하는데, 그 과정에서 필요한 것은 위도/긴 데이터 타입과 Solr 또는 다른 것을 사용하여 처리하면 됩니다.이렇게 하고 싶지 않고 MariaDB/Mysql GIS 기능을 사용할 수 있게 되고 싶습니다.

직접 쿼리를 작성하는 것은 문제 없습니다.뭔가를 입수할 필요가 있을 때는 좋지만, 작성이나 갱신을 하고 싶을 때는 Rails로 인해 생활이 어려워집니다.

따라서 데이터를 올바르게 해석하기 위해 Rails에서 DB로, DB에서 Rails 파트에서 코드를 추가하는 방법을 아는 사람이 있는지 물어봅니다.

예:

테이블에 POLYGON(폴리곤)을 넣고 싶다.

create_table :venues, options: 'ENGINE=MyISAM DEFAULT CHARSET=utf8' do |t|
    t.column :name, :string
    t.column :geofence, :geometry
    t.timestamps
end

문제 없습니다. 잠시 Rails를 버리고 일반 삽입, 즉 케이크 피스(peace a peace of cake:

INSERT INTO venues (name, geofence) VALUES ('A Name', PolygonFromText('POLYGON((25.774 -80.190,18.466 -66.118,32.321 -64.757,32.321 -64.757,25.774 -80.190))'));

Rails에서는 할 수 없습니다.왜냐하면 이 기능은:geometry스트링처럼 되어 있기 때문에, 다음의 어느 것도 할 수 없습니다.

v = Venue.new(name: 'hello')
v.geofence = "PolygonFromText('POLYGON((25.774 -80.190,18.466 -66.118,32.321 -64.757,32.321 -64.757,25.774 -80.190))')"
v.save

삽입 및 업데이트에 인용문 등을 추가할 것이기 때문입니다.다음과 같이 합니다.

INSERT INTO venues (name, geofence, created_at, updated_at) VALUES ('A name', 'PolygonFromText(\"POLYGON((25.774 -80.190,18.466 -66.118,32.321 -64.757,32.321 -64.757,25.774 -80.190))\")', '2016-09-21 16:56:23', '2016-09-21 16:56:23')

따라서 Rails가 이러한 추가 작업을 하지 않도록 하고 삽입 작업을 정확히 할당할 수 있도록 하고 싶습니다.

고마워요, 여러분. 도와주셨으면 좋겠어요.

언급URL : https://stackoverflow.com/questions/39627982/rails-5-custom-database-types-for-gis-mariadb

반응형