我正在尝试从我的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)
这是什么意思?第二个问题 - 我是否按顺序提供这些参数?我的意思是 - 先经度,然后是纬度?
这是我在旧项目中使用的查询:
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采用左上角和右下角