在我建設的網站中,我用城市的外鍵存儲了事件。就像這樣:有必要使用GeoDjango來查詢Django中的距離嗎?
class Event(models.Model):
name = models.CharField(max_length=255)
...
ciudad = models.ForeignKey(City)
class City(models.Model):
name = models.CharField(max_length=500)
...
lat = models.FloatField()
lon = models.FloatField()
我想在的一些城市一些公里到查詢事件。 我實際上做的是:
# isInRange takes two cities and a distance in kms and calculates
# if the distance between the cities (by the fields lat and lon and
# one nice formula) is minor than the given distance.
results = []
for event in Event.objects.all():
if isInRange(city, event.city, kms):
results.append(event)
我知道,是非常低效的。我知道GeoDjango可以做到這一點,但這是我在整個項目中必須做的唯一「地理事物」。我必須毫無理由地使用那種「複雜」的解決方案,或者有辦法以更高效的方式來做到這一點?
很好的答案!我明白錯誤的事情。這是因爲距離應該是一個圓形,這會計算一個僞矩形,不是嗎?無論如何,我會使用這種方法。如果我注意到錯誤太多,我將切換到GeoDjango。再次,很好的回答和謝謝! – sanfilippopablo 2013-03-05 18:02:18