KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have the following model. class Location(models.Model): name = models.CharField(max_length = 128, blank = True) address =models.CharField(max_length = 200, blank= True) latitude = models.DecimalField(max_digits=6, decimal_places=3) longitude = models.DecimalField(max_digits=6, decimal_places=3) def __unicode__(self): return self.name If my current latitude & longitude is: current_lat = 43.648 current_long = 79.404 I did some research and came across the Haversine Equation which calculates the distance between two location coordinates. Below is the equation I found: import math def distance(origin, destination): lat1, lon1 = origin lat2, lon2 = destination radius = 6371 # km dlat = math.radians(lat2-lat1) dlon = math.radians(lon2-lon1) a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \ * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2) c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a)) d = radius * c return d I would like to return all the Location objects that fall within a 10 km radius, how can I filter it in such a way that it will only return all the Location objects that fall within this 10 km radius? LocationsNearMe = Location.objects.filter(#This is where I am stuck) Is there anyway I can implement the Haversine equation into the filtering so that it only returns the location objects that fall within a 10 km radius? I'm looking for a well detailed answer. Appreciate the help.
Tags (comma-separated)
Save Edits
Cancel