У меня есть лист Excel (файл .csv) с lat
s и long
s для различных местоположений камеры слежения, и я создал программу Ruby, которая использует гемы haversine
и geocoder
, чтобы найтирасстояние между адресом, который вводит пользователь, и различными местоположениями камеры в файле CSV, затем распечатывает ближайшую камеру по адресу, предоставленному пользователем.
Моя проблема в том, что она распечатывает всю строку информации для ближайшей камеры, и я хотел бы, чтобы она просто распечатывала первое значение в строке (пересечение местоположения ближайшей камеры слежения за дорожным движением).
Файл CSV похож на этот:
Местоположение Широта Долгота Оперативный Ст.Charles @ Washington Ave.29,93102 -90,086 Y
Итак, мой вопрос, чтобы упростить, как мне заставить его распечатать:
St. Charles @ Washington Ave. is 1.0351466822038633 miles away!
Вместо:
St. Charles @ Washington Ave.,30.015934,-90.075197,Y is 1.0351466822038633 miles away!
Донне нужно выводить дополнительные значения, такие как lat
, long
и рабочее состояние (Y), только имя пересечения камеры.
Вот фрагмент кода (без указанияслишком много моего кода, в случае, если другие студенты получат такое же задание в будущем и им нужно будет это выяснить самостоятельно):
require 'csv'
require 'haversine'
require 'geocoder'
# ***missing code that does all of the work converting the distance between the given address
# and the addresses in the .CSV file and finds the closest traffic camera***
min_num = distance #in miles, calculated by Haversine and Geocoder
# reads the line of the CSV file with the shortest distance to the input address and assigns value to the variable 'closest_cam'
closest_cam = CSV.readlines("./cameras.csv", headers: true)[index_num]
# prints the closest camera to the given address and how far away it is (in miles),
# the problem is that it prints the entire row, with lats, longs, etc. instead of just the name of the closest camera intersection.. ):<
puts "#{closest_cam} is #{min_num} miles away!"