Сохранение широты как -90 с PostGIS RGeo Lat/Lng Points

Я работаю с геопространственными координатами и тестирую свое кодирование в консоли рельсов.

Похоже, он меняет мою долготу на -90,0 вместо того, что должно быть -93,291557312011719.

Любая помощь будет оценена по достоинству .. попробовала только

"ТОЧКА(#{длинное} #{широта})"

А также

"POINT(#{lng.to_f} #{lat.to_f})"

Информация о сервере

CentOS 6.4
PostgreSQL 9.3
PostGIS 2.1  With Extensions of adminpack, fuzzystrmatch, pg_trgm, plpgsql

IRB-консоль

1.9.3-p547 :001 > city = "springfield"                                                                                                                            
 => "springfield" 
1.9.3-p547 :002 > state = "mo"                                                                                                
 => "mo" 
1.9.3-p547 :003 > lng = "37.208969116210938"                                                                                                
 => "37.208969116210938" 
1.9.3-p547 :004 > lat = "-93.291557312011719"                                                                                                
 => "-93.291557312011719" 
1.9.3-p547 :005 > l = Location.new({:city => city, :state => state, :coords => "POINT(#{lng.to_f} #{lat.to_f})", :cs => "#{city}, #{state}"})
2014-07-25 08:31:02 DEBUG --    (18.5ms)  SELECT * FROM geometry_columns WHERE f_table_name='locations'
 => #<Location id: nil, coords: #<RGeo::Geographic::SphericalPointImpl:0x56eb2f2 "POINT (37.20896911621094 -90.0)">, city: "springfield", state: "mo", zip: nil, created_at: nil, updated_at: nil, cs: "springfield, mo", alt: nil> 

Но если я не пытаюсь сохранить в БД, я получаю это

l = "POINT(#{lng.to_f} #{lat.to_f})"                              
 => "POINT(37.20896911621094 -93.291557312011719)" 

Вот моя таблица местоположений

 create_table "locations", :force => true do |t|
    t.spatial  "coords",     :limit => {:srid=>4326, :type=>"point", :geographic=>true}
    t.string   "city"
    t.string   "state"
    t.string   "zip"
    t.datetime "created_at",                                                             :null => false
    t.datetime "updated_at",                                                             :null => false
    t.string   "cs"
    t.text     "alt"
  end

person Big Al Ruby Newbie    schedule 25.07.2014    source источник
comment
Потому что в вашем примере кода вы присвоили -93,29 широте, а не долготе, которая была округлена до -90, нижней возможной границы широты?   -  person John Powell    schedule 25.07.2014
comment
Спасибо, я вижу, что теперь ... я назначил неправильную переменную ... спасибо, если вы опубликуете ответ, я приму его. Спасибо за помощь   -  person Big Al Ruby Newbie    schedule 25.07.2014
comment
Ну вот. Иногда нужна еще пара глаз :D   -  person John Powell    schedule 25.07.2014


Ответы (1)


Потому что в вашем примере кода вы присвоили -93,29 широте, а не долготе, которая была округлена до -90, нижней возможной границы широты. Предположительно, RGeo достаточно умен, чтобы округлить до ближайшего приемлемого значения, а не выдавать ошибку.

person John Powell    schedule 25.07.2014