好的,所以我有一个非常大的属性(property)信息数据库,包括完整的地理坐标。我需要做的是运行一个查询,询问“给我给定矩形或多边形内的所有属性”。用户界面将允许用户定义矩形或多边形的点(使用 map 系统)。这些坐标将进入查询,sql 应该返回该区域的属性列表。如果多边形不可能,至少一个矩形会有所帮助。我已经知道如何进行半径搜索。
感谢您提供的任何帮助。
最佳答案
你的sql代码一定是这样的
SQL查询
SELECT
*
FROM areas area
WHERE
ST_CONTAINS(`area`.`polygon`, GEOMFROMTEXT('POINT(34.262714 56.262714)')) = 1
表格
CREATE TABLE IF NOT EXISTS `areas` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`polygon` polygon NOT NULL,
`area_name` varchar(70) NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `polygon` (`polygon`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
还要小心,对于大表你必须使用 MyISAM,
因为 InnoDB 不支持 SPATIAL 索引。
注意 MySQL 从 5.6+ 版本开始支持 ST_CONTAINS。
有关更多信息,请查看这篇有用的文章
http://www.mysqlperformanceblog.com/2013/10/21/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/
关于mysql - sql查询多边形/矩形中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838230/