检查点是否位于PHP PostGIS中的几何体内部

检查点是否位于PHP PostGIS中的几何体内部,php,coordinates,polygon,postgis,geometry,Php,Coordinates,Polygon,Postgis,Geometry,我已定义了几何体类型,并且多边形和圆都已输入到其中。多边形是使用以下类型的查询输入的: ST_GeomFromText('POLYGON$polygon') 其中$polygon包含点 我在同一列中输入了圆圈,如下所示: ST_Buffer((ST_GeomFromText('POINT($longitude $latitude)')), $radius) 现在我需要检查给定的点是否位于几何体的内部和外部 有人能帮我吗 我已尝试使用此查询: ST_CONTAINS(shape,ST_Geom

我已定义了几何体类型,并且多边形和圆都已输入到其中。多边形是使用以下类型的查询输入的:

ST_GeomFromText('POLYGON$polygon')
其中$polygon包含点

我在同一列中输入了圆圈,如下所示:

ST_Buffer((ST_GeomFromText('POINT($longitude $latitude)')), $radius)
现在我需要检查给定的点是否位于几何体的内部和外部

有人能帮我吗

我已尝试使用此查询:

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

其中shape是类型Geometry的列名。但这让我知道,即使圆在圆之外,也始终适用于圆。

查看注释,您使用的是几何体类型和空间参照系统,该系统使用单位为度SRID=4326。做一个半径为5000度的圆是一个巨大的圆,它将包含地球上的一切


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

一个示例圆和点会很有帮助。您是指POSTGIS中的圆吗?我输入了0,0表示lon、lat和rad=85,275000的圆是的,如果您可以放置一个圆的WKT样本和一个您认为应该在圆之外的点,然后我们可以测试。我想我的SRID系统对于圆输入查询和半径单位是错误的。你能告诉我正确的查询吗?你可以建议使用地理类型的SQL,然后转换它的T_BufferST_MakePoint85,27::geography,5000::geometryI这样做了,但当我试图找到圆的质心时,它给出的结果与我给出的不同。为什么?因为ST_质心假设了一个平坦的地球几何体;目前没有任何用于地理类型的形心函数。质心到原点的距离为0.2367 m。