Object in 100 m distance, Error: Operation on mixed SRID geometries

Object in 100 m distance, Error: Operation on mixed SRID geometries

我执行以下查询:

SELECT * FROM "houses" WHERE (ST_Distance(coordinates, 'POINT(-0.374930 39.478400)'::geometry) < 100)

要查找距离以下 100 米左右的房屋:39.478400,-0.374930

我收到以下错误:

PG::InternalError: ERROR: Operation on mixed SRID geometries

这里有什么问题?

"Coordinates" is of type: geometry "coordinates", limit: {:srid=>4326, :type=>"geometry"}

几何文字 'POINT(-0.374930 39.478400)'::geometry 没有 SRID,而 houses.coordinates 中的几何具有 4326 的 SRID。您需要传递具有相同 SRID 的几何图形,即使用 ST_GeomFromText:

...
WHERE ST_Distance(coordinates, ST_GeomFromText('POINT(-0.374930 39.478400)', 4326)) < 100

但请记住,返回的距离以 SRID 为单位,对于 SRID 4326 是 而不是 。要检索以米为单位的距离,您可以使用 ST_DistanceSphere.