首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按距离查询点排序地理空间查询

如何按距离查询点排序地理空间查询
EN

Stack Overflow用户
提问于 2015-03-12 15:26:08
回答 1查看 1.5K关注 0票数 4

我试着在网上搜索这个问题,但没有用。似乎是一项基本任务。我使用PostGresql通过SQLAlchemy和Geoalchemy进行地理空间查询。从技术上讲,我使用的是“水瓶-SQLAlchemy”。我可以做地理空间查询。例如:

代码语言:javascript
复制
from geoalchemy2 import func
cls.db.session.query(cls).filter(func.ST_DWithin(cls.geoLoc, geo, meters))

其中cls是我要查询的类。geo是表示查询中心的Geography点,meters是返回结果的最大距离。此查询工作正常,但返回结果为任意顺序。我希望它们在从查询点增加(减少也可以)的距离中返回。

我想我需要在查询结束时使用一个.order_by(...),但是我不知道在其中放什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 18:04:04

好吧,我想出来了,但是哇,这并不明显,尤其是如果你对Geoalchemy2不太熟悉的话。

在我上面的例子中,你必须修改:

代码语言:javascript
复制
.order_by(func.ST_Distance(cls.geoLoc, geo))

直到我问题中的代码的结尾。基本上,ST_Distance是一个函数,它接收两个点并返回它们之间的距离。因此,cls.geoLoc指的是表中的每个对象,而geo是我按距离排序的中心。这基本上是计算每个元素到geo的距离,然后根据它进行排序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29013805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档