在我的模型中,我有一个多边形字段。 在我的查询中,我想计算此字段与预定圆之间的交点面积,以便找到可通过我的Polygon模型字段恢复的圆面积的比例。
这是我的模型定义:
class WDPA(models.Model):
site_code = models.CharField(max_length=200, primary_key=True)
site_name = models.CharField(max_length=300)
iucn = models.IntegerField(default=0)
geom = models.MultiPolygonField()
这是我的查询:
tile = Tiles.objects.filter(start_long__gte=float(form.cleaned_data.get("latitude")),
end_long__lte=float(form.cleaned_data.get("latitude")),
start_lat__lte=float(form.cleaned_data.get("longitude")),
end_lat__gte=float(form.cleaned_data.get("longitude"))
)[0]
tiles = [tile.tile_id, tile.near_0, tile.near_1, tile.near_2, tile.near_3, tile.near_4, tile.near_5, tile.near_6, tile.near_7]
center = Point(float(form.cleaned_data.get("longitude")), float(form.cleaned_data.get("latitude")), srid=4326)
circle = center.buffer(0.01802)
zones = WDPA.objects.filter(tiles__in=tiles).annotate(
distance=Distance('geom', center)
).order_by('distance').filter(distance__lte=2000).annotate(
intersection=ExpressionWrapper(F('geom'), output_field=PolygonField()).intersection(circle).area
)
但是我无法调用.intersection()方法,它会导致此错误:
AttributeError: 'ExpressionWrapper' object has no attribute 'intersection'
我也尝试使用Intersection对象,但是在注释中也无法调用该区域。
请问作为一种解决方案吗? 预先感谢