我有一个烧瓶应用程序,它首先从 Google Maps API 获取位置,并试图在我拥有的数据库中找到 1500 米内更接近它的位置。
这是我的场所模型。
class Places(db.Model):
uuid = db.Column(UUID(as_uuid=True),
primary_key=True,
server_default=text("uuid_generate_v4()"))
name = db.Column(db.String(80), nullable=False)
# For Near Location Querying
geometric_point = db.Column(
Geometry(geometry_type='POINT', srid=4326), nullable=False)
我有这个查询来查找在提交地点附近lng
且lat
在 1500 米内的条目。
def get_nearby_aqi_node(lat, lng):
distance_in_meters = 1500
geo_wkb = func.Geometry(func.ST_GeographyFromText(
'POINT({} {})'.format(lng, lat)))
point = db.session.query(Places.name,
Places.uuid).\
filter(func.ST_DFullyWithin(Places.geometric_point, geo_wkb, distance_in_meters)).\
order_by(
Comparator.distance_centroid(Places.geometric_point, geo_wkb)).limit(1).first()
return point
我得到的是更接近该地点的单点,但它不在 1500 米的限制范围内。我得到与.filter()
删除相同的结果。