我试着在网上搜索这个问题,但没有用。似乎是一项基本任务。我使用PostGresql通过SQLAlchemy和Geoalchemy进行地理空间查询。从技术上讲,我使用的是“水瓶-SQLAlchemy”。我可以做地理空间查询。例如:
from geoalchemy2 import func
cls.db.session.query(cls).filter(func.ST_DWithin(cls.geoLoc, geo, meters))其中cls是我要查询的类。geo是表示查询中心的Geography点,meters是返回结果的最大距离。此查询工作正常,但返回结果为任意顺序。我希望它们在从查询点增加(减少也可以)的距离中返回。
我想我需要在查询结束时使用一个.order_by(...),但是我不知道在其中放什么。
发布于 2015-03-12 18:04:04
好吧,我想出来了,但是哇,这并不明显,尤其是如果你对Geoalchemy2不太熟悉的话。
在我上面的例子中,你必须修改:
.order_by(func.ST_Distance(cls.geoLoc, geo))直到我问题中的代码的结尾。基本上,ST_Distance是一个函数,它接收两个点并返回它们之间的距离。因此,cls.geoLoc指的是表中的每个对象,而geo是我按距离排序的中心。这基本上是计算每个元素到geo的距离,然后根据它进行排序。
https://stackoverflow.com/questions/29013805
复制相似问题