Click here to Skip to main content
15,891,951 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Python
import math
import csv
import numpy

from math import radians, sin, cos, acos

class venue:
    venueGeoLat = []
    venueGeoLon = []
    venueName = []
    def __init__(self,name,latitude,longitude):
        self.name = name
        self.latitude = latitude
        self.longitude = longitude

    with open('venueData.csv') as csvDataFile:
        csvReader = csv.reader(csvDataFile)
        for row in csvReader:
            venueGeoLat.append(row[1])
            venueGeoLon.append(row[2])
            venueName.append(row[0])

class masterTrainer:  #class generated for the master trainers for the whole state
    distanceFromVenues = []
    nearestVenues = []
    latitude = None
    longitude = None
    def __init__(self,name,location,subject,latitude,longitude):
        self.name = name
        self.location = location
        self.subject = subject
        self.latitude = latitude
        self.longitude = longitude
    i = 1
    j = 1
    while i < 2:
        while j < len(venue.venueGeoLat):
            masterTrainer.distanceFromVenues.append(masterTrainer.distanceCalculator(float(masterTrainer.latitude),float(masterTrainer.longitude),float(venue.venueGeoLat[j]),float(venue.venueGeoLon[j])))
            j = j + 1
        i = i + 1
            
    MAX = 100000
    firstmin = MAX
    secmin = MAX
    thirdmin = MAX
    k = 0
    l = 0
    m = 0
    for i in range(0, len(distanceFromVenues)):
        if distanceFromVenues[i] < firstmin:
            thirdmin = secmin
            secmin = firstmin
            firstmin = distanceFromVenues[i]
            k = i

        elif distanceFromVenues[i] < secmin:
            thirdmin = secmin
            secmin = distanceFromVenues[i]
            l = i

        elif distanceFromVenues[i] < thirdmin:
            thirdmin = distanceFromVenues[i]
            m = i
    nearestVenues.append(venue.venueName[k+1])
    nearestVenues.append(venue.venueName[l+1])
    nearestVenues.append(venue.venueName[m+1])

    def distanceCalculator(latitude1,longitude1,latitude2,longitude2):
        slat = radians(latitude1)
        slon = radians(longitude1)
        elat = radians(latitude2)
        elon = radians(longitude2)
        dist = 6371.01 * acos(sin(slat)*sin(elat) + cos(slat)*cos(elat)*cos(slon - elon))
        return dist

    



#mt1 = masterTrainer("Suhit Kumar", "Kanpur","Mathematics","30.7996","75.9042")
#print(mt1.distanceFromVenues)
#print(mt1.nearestVenues)
masters = []
with open('mtData.csv') as csvDataFile:
    csvReader = csv.reader(csvDataFile)
    for row in csvReader:
        masters.append(masterTrainer(row[0],row[1],row[4],row[2],row[3]))


#for m in masters:
    #print(m.distanceFromVenues)
print(masters[1].nearestVenues)


What I have tried:

When I tried to compile this code then I got attribute error saying

AttributeError: type object 'masterTrainer' has no attribute 'latitude'
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900