Created
February 28, 2017 23:59
-
-
Save ornerymoose/cddf65270bf865978be91e93a7aae3b0 to your computer and use it in GitHub Desktop.
trying to only return a uniq cust with the minimum distance
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'csv' | |
require 'haversine' | |
#this could be put into one file, works as is | |
fib_lat = CSV.read("swfl_fiber_lat.csv") | |
fib_long = CSV.read("swfl_fiber_long.csv") | |
#use zip to read both arrays at the same time | |
fib_coords = fib_lat.map(&:last).zip(fib_long.map(&:last)) | |
#multiple column CSV with customer data, headers turned on | |
customers = CSV.read("swfl_1a_geocoded.csv", headers:true) | |
CSV.open('swfl-output-data-within-1mile.csv','w', :write_headers=> true, :headers => ['First Name','Last Name','Latitude','Longitude','Feet to Fiber','Address','City','State','Zip','County','Company','Title Code Description','PrimarySIC6 Description','Business Status Code Description','Phone Number','Tollfree Phonenumber','EmployeeSize Location Description','Sales Volume Location Decode','Telecommunications Expense','Email Address']) do |csv_object| | |
fib_coords.each do |fib_lat, fib_long| | |
customers.each do |cust| | |
if (Haversine.distance(cust[2].to_f, cust[3].to_f, fib_lat.to_f, fib_long.to_f).to_feet < 5280) | |
data_out = ["#{cust[0]},#{cust[1]},#{cust[2].to_f},#{cust[3].to_f}, #{Haversine.distance(cust[2].to_f, cust[3].to_f, fib_lat.to_f, fib_long.to_f).to_feet.round(2)},#{cust[5]},#{cust[6]},#{cust[7]},#{cust[8]},#{cust[9]},#{cust[10]},#{cust[11]},#{cust[12]},#{cust[13]},#{cust[14]},#{cust[15]},#{cust[16]},#{cust[17]},#{cust[18]}"] | |
csv_object << data_out | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment