我遇到了postgres的几何函数问题。基本上我有一个存储在postgres数据库中的多边形类型,我想检查我所拥有的点是否位于此多边形内。 Postgres有一个内置函数,但我在语法方面遇到了一些麻烦。真的不应该那么难以弄清楚,但我希望有人在这之前或者恰好知道这些功能。我对SQL有点新手,所以它可能只是一些普遍的问题。
答案 0 :(得分:1)
文档中有一个示例,请参阅http://www.postgresql.org/docs/9.1/static/functions-geometry.html,表9-30。
至于语法,你可能正在寻找
行的内容SELECT * FROM yourtable WHERE yourcolumn @> point('1,1');
答案 1 :(得分:1)
ST_Contains可与st_geomfromtext结合使用,以确定您的点是否在该多边形中。我有一个表格,其中'poly'列包含一个多边形,另一个表中包含要检查的lat / lon值列表在该多边形内。您将包含多边形的表连接到保持列表1 = 1的表(在返回的每一行上给出lat / lon / poly),然后构建st_语句。
st_contains(poly, point)
这将定义点并检查它是否在多边形中(我称之为'poly')。如果该点在该多边形内,则返回“t”。
st_geomfromtext('POINT' st_geomfromtext('POINT('||lon||' ' ||lat ||')')
这需要一个lat和lon值并将其转换为一个点。
将两者放在一个where子句中:
where st_contains(poly, st_geomfromtext('POINT('||lon||' ' ||lat ||')')) = 't'
然后,这只是构建select子句的问题......我可以帮助解决这个问题,但是你忽略了问题中的模式。