TABLE = [
{a: 40.000..47.95, b: -95.0..-74.01, p1: 12.8, p2: 6.5, p3: 177.82, p4: 0.9150, p5: 68.62, p6: 0.9020},
{a: 42.000..47.95, b: -68.0..-59.50, p1: 11.0, p2: 5.8, p3: 185.20, p4: 0.9377, p5: -11.80, p6: 0.9538},
{a: 44.000..47.95, b: -74.2..-68.05, p1: 12.8, p2: 6.5, p3: 157.45, p4: 0.9194, p5: 37.55, p6: 0.9297},
{a: 46.000..66.00, b: -59.5..-51.00, p1: 8.8, p2: 3.7, p3: 164.96, p4: 0.9465, p5: -207.54, p6: 1.0342},
{a: 47.951..66.00, b: -79.0..-59.55, p1: 12.8, p2: 6.5, p3: 157.45, p4: 0.9194, p5: 37.55, p6: 0.9297},
{a: 47.951..66.00, b: -95.0..-79.01, p1: 12.8, p2: 6.5, p3: 177.82, p4: 0.9150, p5: 68.62, p6: 0.9020},
];
def params(a:, b:)
TABLE.detect {|h| h[:a].cover?(a) && h[:b].cover?(b) }
end
irb2.2.3> params(a: 45.2, b: -70)
#2.2.3 => {:a=>44.0..47.95, :b=>-74.2..-68.05, :p1=>12.8, :p2=>6.5, :p3=>157.45, :p4=>0.9194, :p5=>37.55, :p6=>0.9297}
Obviously build your table as big as you need, but you might have to think about a more suitable data structure if this crude linear search through an array isn't fast enough.
-Rob