【问题标题】:MySQL 5.6 - avoid parsing geometry twice?MySQL 5.6 - 避免两次解析几何?
【发布时间】:2017-11-03 14:23:31
【问题描述】:

我需要查询存储在不同表中的多边形内的点。下面的查询有效并且有效:

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 是 GEOMETRY 类型。但是,我不明白为什么必须将几何图形转换为文本并返回几何图形才能这样做。去除双重解析后,@b 显示为一组奇怪的符号,ST_Contains 对任何点都返回 False。

MySQL 5.6

【问题讨论】:

  • 该查询返回单个边界还是多个边界?

标签: mysql mysql-5.6


【解决方案1】:

我的猜测是您要加入多个几何,因此您的两个查询会生成不同的几何。

检查您是否实际使用相同的几何体:

 SET @b := With double parsing and without parsing

然后看看AsText(@b)生成了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多