在边界框内获取点数

mar*_*rek 3 php pdo postgis

我正在尝试从我的postgis db中选择位于某个边界框内的位置.我试图用这个查询来完成这个:

//latlong - latitude, longitude of a place

SELECT * FROM places WHERE St_Contains(St_GeomFromText('Polygon((:top_left_long :top_left_lat, :bottom_right_long :bottom_right_lat))'), latlong);
Run Code Online (Sandbox Code Playgroud)

首先 - 我收到以下错误:

 Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: :top_left_lat 
Run Code Online (Sandbox Code Playgroud)

这是什么意思?第二个问题 - 我是否按顺序提供这些参数?我的意思是 - 先经度,然后是纬度?

j_f*_*yre 6

这是我在旧项目中使用的查询:

SELECT param1, param2, ... 
FROM messages 
WHERE ST_Contains( 
    ST_SetSRID(
        ST_MakeBox2D(
            ST_Point(0, 50), ST_Point(50,0)
        ), 
        4326
    ), 
    the_geom
)
Run Code Online (Sandbox Code Playgroud)

the_geom是我的几何列注意:MakeBox2D采用左上角和右下角