PostgreSQL几何类型

时间:2011-12-03 10:06:11

标签: postgresql postgis

我遇到了postgres的几何函数问题。基本上我有一个存储在postgres数据库中的多边形类型,我想检查我所拥有的点是否位于此多边形内。 Postgres有一个内置函数,但我在语法方面遇到了一些麻烦。真的不应该那么难以弄清楚,但我希望有人在这之前或者恰好知道这些功能。我对SQL有点新手,所以它可能只是一些普遍的问题。

2 个答案:

答案 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子句的问题......我可以帮助解决这个问题,但是你忽略了问题中的模式。