我在DB2 / MySQL空间函数之间进行一些性能比较。但是,在将DB2空间查询转换为MySQL方言后,它会抱怨语法错误(错误:函数交集不存在)。查询非常简单,如下所示:
SELECT Area(Intersection(a.outline, b.outline) )/Area(Union( a.outline, b.outline)) AS area_ratio, Distance(Centroid(b.outline), Centroid(a.outline) ) AS centroid_distance
FROM spatial_table1 A, spatial_table2 B ............
在查看文档之后,我发现MySQL中没有实现精确的空间函数(Intersection,Union)。是这样吗 ? 有解决方法吗?
答案 0 :(得分:1)
MBRIntersects()
它不是100%相同,因为它测试看边界是否相交,但它是否接近。
MySQL文档:http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html
MySQL中的几何函数:http://dev.mysql.com/doc/refman/5.0/en/geometry-property-functions.html
请注意,只有MyISAM表支持空间索引。
用于GIS的UDF,对您的问题没有用处抱歉:
MySQL UDF用于球体上的距离:http://www.lenzg.net/archives/220-New-UDF-for-MySQL-5.1-provides-GIS-functions-distance_sphere-and-distance_spheroid.html
用于UTM功能的MySQL UDF:http://www.mysqludf.org/lib_mysqludf_fPROJ4/index.php
答案 1 :(得分:0)
有一个开发快照,伴随着“Holyfoot”实现的精确空间功能。这是5.1.35快照。