如何搜索相交的多边形内的所有点?

How to search for all points inside multi polygons which have intersect?

我正在 MySQL 中处理空间对象。我有一个 table 将数据库中的房地产位置保存为 "longitude" 和 "latitude",并且我在用户请求的多边形内搜索这些房地产。我在 MySQL 中使用 st_contains 函数,像这样:

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

在代码段中 region 具有以下格式:

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

当多边形彼此不重叠时一切正常。但是,如果多边形有重叠,MySQL 会减去重叠区域并且不会检索重叠区域中的庄园。我添加这张图片以获得更多解释:

即使是重叠的多边形,如何使此搜索正常工作?

在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)))"