2015-11-04 41 views
1

我正在使用MySQL中的空间对象。我有一张表格,将数据库中的遗产位置保存为“经度”和“纬度”,然后在用户请求的多边形内搜索这些遗产。我现在用的是st_contains功能在MySQL中,就像这样:如何搜索多边形内相交的所有点?

select * from estate where ST_CONTAINS(GEOMFROMTEXT(region),POINT(plat,plon))); 

中的代码片段区域具有以下格式:

"POLYGON((lat1 lng1,lat2 lng2,lat3 lng3,lat4 lng4,lat1 lng1),(lat6 lng6,lat7 lng7,lat8 lng8,lat9 lng9,lat6 lng6))" 

工作一切良好,当多边形具有相互不重叠。但是,如果多边形有重叠,MySQL会减去重叠区域,并且不会检索重叠区域中的区域。我添加此图片为更多的解释:

enter image description here

如何正确地做这个找工作,即使有重叠的多边形?

+0

我发现关于这个多边形(http://dev.mysql.com/doc/search/?d=12&p=1&q=polygon)文档在MySQL中。这描述我的错误...现在我正在寻找一种搜索多个多边形里面的方法 –

回答

2

在MySQL中,我们的类型为MULTIPOLYGON。您可以在MySQL Spatial Data Types中看到完整的文档。

region需要被这样定义:

"MULTIPOLYGON(((lat1 lng1,lat2 lng2,lat3 lng3,lat4 lng4,lat1 lng1)),((lat6 lng6,lat7 lng7,lat8 lng8,lat9 lng9,lat6 lng6)))" 
+1

哦,我的上帝.....你让我的一天......宝贝 –

+1

我现在在哭...我今天看到了我的英雄,我离你很远......这是一个充满感情的时刻 –