4

我尝试在网上搜索此问题,但无济于事。似乎是一项基本任务。我通过 SQLAlchemy 和 Geoalchemy 使用 PostGresql 来进行地理空间查询。从技术上讲,我使用的是`Flask-SQLAlchemy。我可以进行地理空间查询。例如:

from geoalchemy2 import func
cls.db.session.query(cls).filter(func.ST_DWithin(cls.geoLoc, geo, meters))

cls我要查询的课程 在哪里。geoGeography表示查询中心的点,meters是返回结果的最大距离。此查询有效,但以任意顺序返回结果。我希望它们从查询点的距离增加(减少也可以)返回。

我假设我需要.order_by(...)在查询末尾使用 an ,但我不知道该放什么。

4

1 回答 1

3

好吧,我想通了,但这并不明显,尤其是如果您对 Geoalchemy2 不是很熟悉的话。

在我上面的例子中,你必须解决:

.order_by(func.ST_Distance(cls.geoLoc, geo))

到我的问题中的代码的末尾。基本上,ST_Distance是一个接收两个点并返回它们之间距离的函数。所以cls.geoLoc指的是表格中的每个有问题的对象,并且geo是我按距离排序的中心。这基本上计算每个元素到的距离,geo然后按它排序。

于 2015-03-12T18:04:04.850 回答