我已经为此努力了几个小时,但由于我对 PostgreSQL 和 PostGIS 比较陌生,所以我找不到解决方案。我正在尝试创建一个存储过程(函数),它将返回其指定点几何在指定多边形内的所有位置。
这是我的 PostgreSQL 函数:
CREATE OR REPLACE FUNCTION public.spGeoPoly(polystring text) RETURNS setof locations
AS $$
BEGIN
RETURN QUERY
SELECT * FROM locations
WHERE ST_Contains(ST_GeomFromText('POLYGON((polystring))', 4326), point_geom);
END;
$$ LANGUAGE plpgsql;
我已经使用硬编码的多字符串对此进行了测试,它可以工作,但作为带有输入字符串的函数,例如:
SELECT spGeoPoly('50.4 8.2,50.3 9.3,49.9 9.5,49.7 8.8,49.9 7.8,50.4 8.2');
我收到一个错误:
ERROR: parse error - invalid geometry
HINT: "polygon((" <-- parse error at position 9 within geometry
我假设我的输入文本没有正确转换为创建多边形所需的格式,因为位置 9 是多边形参数字符串的开始。如何修复文本参数?
我正在使用 PostgreSQL 8.4.13 和 PostGIS 1.5.8。