1

我是 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:名称“mpoint”未定义

注意:mpoint 是我的 Table 中的一列,也是我的 Node 类中 models.py 中的一个字段

任何帮助将不胜感激!

4

1 回答 1

2

你的语法不正确,你应该像这样切换'poly'和'mpoint':

节点 = Nodes.objects.filter(mpoint__contains=poly)

于 2013-09-04T12:01:09.197 回答