好的,我有一个相当复杂的查询,它检查一个点变量是否包含在一个多边形中,其中包含一组latitude+longitude坐标(为了可读性,我用-41.000000 & 174.000000替换了它),这个多边形是从我的名为squares的表创建的(它包含2.25m行坐标,表示正方形的左上角,然后我通过向每个坐标添加0.5 / 60来外推它,以创建一个正方形)。它使用MySQL MBRContains函数检查是否匹配。唯一的问题是,它根本不起作用,我只是得到了这样的信息:
MySQL returned an empty result set (i.e. zero rows).
下面是查询:
SELECT `square_id` FROM `squares` WHERE
MBRContains(
GeomFromText(
CONCAT(
'POLYGON((',
`coord_lat`,' ',`coord_long`,',',
`coord_lat`,' ',(`coord_long` + (0.5 / 60)),',',
(`coord_lat` + (0.5 / 60)),' ',(`coord_long` + (0.5 / 60)),',',
(`coord_lat` + (0.5 / 60)),' ',`coord_long`,
'))'
)
),
GeomFromText('POINT(-41.000000 174.000000)')
)知道为什么会这样吗?在我的point对象中肯定有一个包含坐标的正方形,并且我在SQL语法中看不到任何明显的错误。有什么想法?
发布于 2013-08-24 23:39:14
这里有两件事:
与纬度/经度不同,WKT定义中的
SELECT
square\_idFROMsquaresWHERE MBRContains( GeomFromText( 'POLYGON((',coord\_lat,‘',coord\_long,',',coord\_lat,’',(coord\_long+ (0.5 / 60)),',',(coord\_lat+ (0.5 / 60)),‘',(coord\_long+ (0.5 /60 ),',',(coord\_lat+ (0.5 / 60)),’',coord\_long,',',coord\_lat,‘',coord\_long’)‘)),点(‘GeomFromText(-41.000000 174.000000)' )
https://stackoverflow.com/questions/18297006
复制相似问题