How to get the nearest location entries from a database? How to get the nearest location entries from a database? sqlite sqlite

How to get the nearest location entries from a database?


You should use GeoDjango. It allows you to perform distance queries on your geographic database entries.

from django.contrib.gis.measure import Dfrom django.contrib.gis.geos import *from myapp.models import MyResultpnt = fromstr('POINT(48.796777 2.371140 )', srid=4326)qs = MyResult.objects.filter(point__distance_lte=(pnt, D(km=20)))


You can use geopy

from geopy import distance  _, ne = g.geocode('Newport, RI')  _, cl = g.geocode('Cleveland, OH')  distance.distance(ne, cl).miles  # 538.37173614757057

To optimize a bit you can filter user objects to get a rough estimate of nearby users first. This way you don't have to loop over all the users in the db. This rough estimate is optional. To meet all your project requirements you maybe have to write some extra logic:

#The location of your user.lat, lng = 41.512107999999998, -81.607044999999999 min_lat = lat - 1 # You have to calculate this offsets based on the user location.max_lat = lat + 1 # Because the distance of one degree varies over the planet.min_lng = lng - 1max_lng = lng + 1    users = User.objects.filter(lat__gt=min_lat, lat__lt=max__lat, lat__gt=min_lat, lat__lt=max__lat)# If not 20 fall back to all users.if users.count() <= 20:    users = User.objects.all()


try this code.i am using python, sqlalchemy

this sqlalchemy query return nearest objects in given point.its work correct.but this query return all models.but its work fine.

my model class

#
class City(Base):   __tablename__ = "tbl_City"  city_id = Column(Integer, primary_key=True, unique=True)   geo_coordinates = Column(Geometry('POINT', srid=4326))

my query

#
point = city.geo_coordinatesnear_citylist = City.query.order_by(City.geo_coordinates.distance_box(point))