python postgis ST_Contains查询失败

时间:2011-12-15 13:05:01

标签: python postgis

我一直在尝试以下但总是失败,

roomTypeSQL = "SELECT spftype FROM cameron_toll_spatialfeatures WHERE ST_Contains(ST_GeomFromText(%s), ST_geomFromWKB(geometry)) = 'True';"
roomTypeData = (pointTested) # "POINT(-3.164005 55.926378)"
.execute(roomTypeSQL, roomTypeData)

我想从我的表中获取包含特定点的多边形。我也试过了ST_Within也失败了。我认为我的问题与点和多边形的格式有关,但我已经尝试了几乎所有的组合,没有任何工作。我尝试定义我的多边形并且它工作但我必须使用数据库中的多边形。我的postgresql日志文件也不是特别有帮助.. 任何人都可以看到出错吗? 提前谢谢!

2 个答案:

答案 0 :(得分:0)

可能是一个简单的答案...... st_contains返回't'而不是'true'。 Postgres是上限敏感的,确保不是T

答案 1 :(得分:0)

这与python运营商有关。我正确地使用python%运算符输入了所有的sql参数,并且它工作正常。像这样,

roomTypeSQL = "SELECT spftype FROM cameron_toll_spatialfeatures WHERE ST_Contains(ST_GeomFromText(%s),ST_geomFromWKB(geometry))=%s;"

roomTypeData = (pointTested,'t') # "POINT(-3.164005 55.926378)"

.execute(roomTypeSQL, roomTypeData)

python运算符有时候非常令人沮丧。它并不总是按预期工作。我有一些SQL命令的例子,我必须将参数直接放在SQL命令中。虽然在Python文档中不可取,但这种方法很有效。