我是POSTGIS和GeoDjango的新手。我有一个在POSTGIS中工作的查询,但是,我很难将其转换为GeoDjango查询。
我的表world_node
包含两列:node
- 整数和mpoint
- 几何点
POSTGIS SQL查询(工作):
SELECT * FROM world_node
WHERE ST_CONTAINS(ST_GeomFromText('POLYGON((-100 0, 0 150, 150 0, 0 -100, -100 0))', 4326), mpoint);
我正在尝试获取指定多边形中包含的所有点,并且它可以正常工作。
请帮助我使用GeoDjango语法。到目前为止,这是我的代码:
poly = GEOSGeometry('Polygon((-100 0, 0 150, 150 0, 0 -100, -100 0))', 4326)
nodes = Nodes.objects.filter(poly__contains=mpoint)
我收到以下错误:
NameError: name 'mpoint' is not defined
注意:mpoint是我表中的一列,也是models.py
中我的Node类中的一个字段任何帮助将不胜感激!
答案 0 :(得分:2)
你的语法不正确,你应该像这样切换'poly'和'mpoint':
nodes = Nodes.objects.filter(mpoint__contains = poly)