Warm tip: This article is reproduced from serverfault.com, please click

geolocation-如何在Django中按自定义区域过滤位置?

(geolocation - How to filter locations by custom area in django?)

发布于 2020-12-04 19:17:51

我允许用户在前端(波动)上绘制其自定义区域,并将其传递给后端(django + postgis),该后端必须返回PointField位于曲线内部的s列表因此,我应该以哪种格式将曲线传递到背景,如何正确过滤位置查询集?

Questioner
Vassily
Viewed
0
Simon Charette 2021-01-02 07:38:03

假设你有一个模型定义为

class Place(models.Model):
    location = PointField()

你应该能够使用within查询检索与包含在用户提供的几何位置的所有地方

Place.objects.filter(location__within=geometry)

我建议你从前端将用户选择导出为GeoJSON并将POST导出到后端。在Django方面,你应该能够从提供的数据中创建一个GEOSGeometry

geometry = GEOSGeometry(request.POST['selection'])
Place.objects.filter(location__within=geometry)

你将要验证selection有效的GeoJSON,但这至少应该使你入门。