2014-09-26 67 views
0

在PostGIS的几何里面我已经几何类型定义,并且两个多边形和圆圈分别enteried到this.Polygon使用以下类型的查询enteried:检查点是否从PHP

ST_GeomFromText('POLYGON$polygon') 

其中$多边形包含点。

而且我已经进入圈中的同一列:

ST_Buffer((ST_GeomFromText('POINT($longitude $latitude)')), $radius) 

现在,我需要检查,如果给定的点位于内部和几何形状。

任何人都可以帮助我吗?

我已经使用这个查询尝试:

ST_CONTAINS(shape,ST_GeomFromText('POINT($longitude $latitude)')) 

其中形状几何型我列名。但是,即使他们在圈子之外,这也让我对于圈子总是如此。

+0

圆圈和点的示例会很有帮助。 – 2014-09-26 06:03:04

+0

你的意思是POSTGIS中的一个圈子吗? – 2014-09-26 09:06:20

+0

我为lon,lat和rad =(85,27,5000) – 2014-09-26 09:15:20

回答

0

查看注释,您正在使用具有空间参照系的几何类型,该系统使用角度单位(SRID = 4326)。制作一个半径为5000度的圆是一个巨大的圆,它将包含地球上的一切。

您可能希望使用单位为米的投影空间参照系,或者您可能要考虑使用地理类型。您还可以使用地理类型缓冲一个圆,然后将其转换回几何类型。

+0

你可以建议SQL使用地理类型,然后将其转换为 – 2014-09-28 03:46:12

+0

'ST_Buffer(ST_MakePoint(85,27):: geography,5000):: geometry' – 2014-09-28 21:09:38

+0

我这样做了,但是当我试图找到它的圆心时,与我所给予的不同。那是什么? – 2014-09-29 04:07:26