比方说,用户绘制多边形并请求到后端进行过滤。因为我可以通过边界框进行过滤,但是geodjango queryset可以在绘图区域内进行过滤吗?
例如,我在multilinestring
字段中有一个带有数据的对象。
class Datasets(models.Model):
name = models.CharField(max_length=100)
multipoint = models.MultiPointField(blank=True, null=True, srid=4326)
multilinestring = models.MultiLineStringField(srid=4326, blank=True, null=True)
multipoly = models.MultiPolygonField(blank=True, null=True, srid=4326)
objects = GeoManager()
答案 0 :(得分:0)
我们应该结合给定(绘制)的select
mso_device
, 100 max_value
, coalesce(mso_oee, 0) value
from
(select
mso_device
, mso_oee
from
mes_oee
where
mso_device = :p5_device
and mso_date = to_date(:p5_date, :APP_NLS_DATE_FORMAT)
union all
select
null
, null
from
dual
where
:p5_device is null
or :p5_date is null)
ORDER BY 2 DESC;
考虑数据(multilinestring
的两种可能性:
Polygon
intersects
我们的数据。
然后查询应如下所示:
Polygon
数据完全是within
和Datasets.objects.filter(multilinestring__intersects=Polygon)
。
然后查询应如下所示:
Polygon
我们甚至可以将2结合起来并搜索给定Datasets.objects.filter(multilinestring__within=Polygon)
的{{1}} 或 within
的数据。为此,我们可以使用Django的Q() object
和intersect
运算符,如下所示:
Polygon