背景:我有两个包含几何图形(多边形和多边形)的表。一张桌子包含接触但不重叠的大多边形(它们实际上是管理边界)。另一个包含较小的多边形(在这种情况下,它们是一块土地)。
在大多数情况下,第二个表中的每个较小的多边形将完全包含在第一个表中的一个较大的多边形中。确定空间查询(ST_WITHIN)十分简单。但是,有些会与两个(或理论上更多)管理区域多边形重叠。
问题是,对于那些与两个大多边形重叠的较小多边形,我怎么知道哪一个最大呢?
此图说明了这种情况。地块A全部在Leftshire内,而B全部在Rightshire内。这是一个简单的ST_WITHIN空间查询。我可以确定C与Leftshire和Rightshire都重叠,因为ST_WITHIN将为false,但ST_OVERLAP对它们两者均为true。但是如何确定左郡的C比右郡的C多呢?
作为参考,我正在使用MariaDB 5.5.64。如果使用其他版本(甚至使用不同的数据库)更容易解决问题,那将是一个可以接受的回退,但我理想情况下希望尽可能使用自己需要的工具来解决问题。
[编辑:一种简单的解决方案是检查较小区域的质心落入哪个较大区域。如示例中所示,这将非常适合矩形。但是,形状复杂的地方将不可靠,而且即使对于复杂的多边形,我也需要这样做,因为在现实生活中,行政区域和地块都不可靠!]