我目前正在尝试获取一个半径内的点列表,但是我无法让它正常工作。以下是我目前视图的代码:
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import Distance
class AreaInfoViewSet(viewsets.ViewSet):
queryset = models.AreaInfoRequest.objects.all()
serializer_class = serializers.AreaInfoRequestRequestSerializer
def list(self, request):
center_point = 'POINT(48.80033 2.49175)'
radius = "50.0"
data = {"center_point": center_point, "radius": radius, "source_ip": utils.get_client_ip(request)}
serializer = serializers.AreaInfoRequestRequestSerializer(data=data)
serializer.is_valid(raise_exception=True)
serializer.save()
# Contains an object with field "from_location"="SRID=4326;POINT (48.80029 2.49157)"
objs = models.PointsResult.objects.all()
float_radius = serializer.data["radius"]
center_point = serializer.data["center_point"] # Point object
res = models.PointsResult.objects.filter(from_location__distance_lte=(
center_point, Distance({"meter": float_radius})))
# Here the res doesn't contain the unique object in the db even if it's within the radius
return Response(res)
有什么想法为什么它不起作用吗?谢谢。
center_point = 'SRID=4326;POINT(48.80033 2.49175)'
也不起作用,我相信默认情况下所有我创建的Point
对象都使用SRID=4326
。 - E-Kamiobjs = models.PointsResult.objects.all()
- E-Kami