如何在 Django 中按自定义区域过滤位置?
How to filter locations by custom area in django?
我允许用户在前端(flutter)绘制他的自定义区域并将其传递给后端(django +postgis),后端必须 return PointField
列表位于其中曲线。那么,我应该以哪种格式将曲线传递给后端以及如何正确过滤地点查询集?
假设您的模型定义为
class Place(models.Model):
location = PointField()
您应该能够使用 the within
lookup 来检索位置包含在用户提供的几何图形中的所有地点
Place.objects.filter(location__within=geometry)
我建议您从前端将用户选择导出为 GeoJSON,然后 POST
将其导出到后端。在 Django 方面,您应该能够 create a GEOSGeometry
from the provided data
geometry = GEOSGeometry(request.POST['selection'])
Place.objects.filter(location__within=geometry)
您需要验证 selection
是否有效 GeoJSON 但这至少应该让您入门。
我允许用户在前端(flutter)绘制他的自定义区域并将其传递给后端(django +postgis),后端必须 return PointField
列表位于其中曲线。那么,我应该以哪种格式将曲线传递给后端以及如何正确过滤地点查询集?
假设您的模型定义为
class Place(models.Model):
location = PointField()
您应该能够使用 the within
lookup 来检索位置包含在用户提供的几何图形中的所有地点
Place.objects.filter(location__within=geometry)
我建议您从前端将用户选择导出为 GeoJSON,然后 POST
将其导出到后端。在 Django 方面,您应该能够 create a GEOSGeometry
from the provided data
geometry = GEOSGeometry(request.POST['selection'])
Place.objects.filter(location__within=geometry)
您需要验证 selection
是否有效 GeoJSON 但这至少应该让您入门。