我需要查询多边形中的点,该多边形存储在不同的表中。下面的查询可以工作并完成以下工作:
SET @b := PolyFromText((SELECT AsText(boundaries.geometry)
FROM boundaries_users
LEFT JOIN boundaries
ON boundaries_users.boundary_id = boundaries.id
WHERE boundaries_users.boundary_name = 'name'));
SELECT
id,
addr_lon,
addr_lat,
ST_Contains(@b, POINT(addr_lat, addr_lon))
FROM buildings
WHERE ST_Contains(@b, POINT(addr_lon, addr_lat));在这里,boundaries.geometry是几何型的。然而,我不明白为什么我要把几何学转换成文字,然后再转换成几何学。当删除双重解析时,@b将显示为一组奇怪的符号,而ST_Contains对任何点都返回False。
MySQL 5.6
发布于 2017-11-03 15:17:52
我猜您正在加入多个几何图形,所以您的两个查询生成不同的几何图形。
检查您是否实际使用相同的几何学:
SET @b := With double parsing and without parsing然后看看AsText(@b)生成了什么。
https://stackoverflow.com/questions/47098034
复制相似问题