【发布时间】:2015-08-04 05:23:58
【问题描述】:
我的地理空间查询返回远离纬度和经度坐标的位置。
这是我的模型的样子:
geometry = models.PointField(srid=4326)
geography = models.PointField(srid=3857, null= True)
我正在尝试使用地理字段,因此我可以使用米来表示距离,这就是查询的样子:
pnt = fromstr("POINT(%s %s)" % (lat, lng), srid=3857)
Location.objects.filter(geography__dwithin=(pnt, 3500)).distance(pnt).order_by('distance')[:75]
【问题讨论】:
-
把你的 (lat, lng) 换成另一种方式,所以它是 (X, Y)
-
您需要像这样创建点:
pnt = fromstr("POINT(%s %s)" % (lng, lat), srid=4326)然后转换为 3857。 -
我是否将该点保存到数据库然后转换?这就是我在模型 self.geography = fromstr("POINT(%s %s)" % (self.lng, self.lat), srid=3857) 的 save 方法中生成它的方式
-
感谢 jonaz!